Delaying the delivery of an email if a contact has recently received one already
SOLVE
I seemed to have exhausted every workflow option I could come up with. What I am trying to do is to not have a single contact receive too many marketing emails within a certain period of time (1 per 2 days, etc). I'm aware of the send frequency limitation tool, which I have been using. My issue is that I still want contacts to receive these emails, just not too many at once. I'm looking to see if anyone has a solution to this. My goal is to have some sort of workflow that stops an email from sending to certain contacts if they have recently received one. However, I would like this email to then be "Held" or put into a "Queue" until enough time has passed, and then have automatically sent.
HubSpot doesn't offer an out-of-the-box solution here, but you could consider using the Last marketing email send date contact property. That's the only option I can think of.
In an if/then branch, check whether the Last marketing email send date is less than X days ago. If it is, delay, then jump to other action. If it is more than X days ago, continue and send next email.
You would have to set this up in each workflow where you want to apply this rule.
Hope this helps!
Karsten Köhler HubSpot Freelancer | RevOps & CRM Consultant | Community Hall of Famer
Delaying the delivery of an email if a contact has recently received one already
SOLVE
This should be much easier. Marketo has this field so that you aren't spamming too much. Such an easy field for any product team to invent. Why does Hubspot not offer this basic feature? Stupid. Marketo has had this field for 15 years.
Delaying the delivery of an email if a contact has recently received one already
SOLVE
Another way you could try, (depending on how many free workflows/lists you have) is to create a workflow that increments a numeric field, let's call it delay control, from 0 to 1 and the after a delay resets that property back to zero. Create an active list, of contacts with the 1 property. Then at the head of the email workflow have an if then delay until condition is met, condition being not 1, and then after both branches of that if then add them to the incrementor workflow.
I also recommend building a template workflow for this, or for Karsten's method, so you can just duplicate the master and not have to re-enter the logic.
This will work until you have them in more than one queue, if you are going to have them in more than one queue then there is a solution, but it gets a bit messy, and unworkable if you have too many potential marketing emails that they could receive.
You would need to create a carousel drip, Personally I'd use either numeric coding or simple campaign codes to refer to the emails in question. then you need to create a bunch of fields for the carousel, let's say 5 for the sake of argument.
Your email workflow sets the code to a carousel holding field.
The holding field having a value triggers entry to a workflow that stages the carousel and adds content to the end of the queue by incrementally checking each field and adding the code to the end. After the holding field value is copied to the right place the holding field is cleared so it can be populated by another email workflow that then retriggers the carousel. At the end of this workflow we increment a queue counter field. This field does two things, firstly it is used in conditional logic in a subsequent workflow, and secondly if a contact hits five in the queue we want to send an internal communication email identifying the person, and alerting you that you might need to add more seats on the carousel (either in this workflow or a standalone).
The next workflow moves the carousel with a lift and shift. What I mean by this is it copies the carousel 1 position to a field let's call it email send code and enters them in the next workflow, which is our send workflow, and then clears queue position 1 and copies 2 to 1, 3 to 2, 4 to 3 and 5 to 4. It then decrements the queue counter.
Our next workflow is an if then send workflow, looking at their email send codes and sending the relevant email, and then clearing the email send code.
Once this is all built then when creating a new email all you have to do is create a workflow to populate the carousel holding field with the email code, and add the email code to the if then branch of the send workflow to trigger the correct email to be sent.
I've missed one crucial step, you need the delay control workflow that resets the delay field after your specified time so that you can use a conditional entry to the carousel send workflow that is something like if delay control is 0 and carousel queue is greater than 0.
Delaying the delivery of an email if a contact has recently received one already
SOLVE
Thank you for the response, Karsten. I was able to get to this step as well. As you explained, the main issue here is that we are trying have every email we send automatically go through this workflow. That doesn't seem to be possible.
Delaying the delivery of an email if a contact has recently received one already
SOLVE
You're correct, @BCole1, this would have to be managed in a general setting, not within each workflow. Unfortunately not possible at this stage. (As always, you could request that this be added to HubSpot by submitting a post in the HubSpot Ideas section of the community.)
Best regards!
Karsten Köhler HubSpot Freelancer | RevOps & CRM Consultant | Community Hall of Famer
HubSpot doesn't offer an out-of-the-box solution here, but you could consider using the Last marketing email send date contact property. That's the only option I can think of.
In an if/then branch, check whether the Last marketing email send date is less than X days ago. If it is, delay, then jump to other action. If it is more than X days ago, continue and send next email.
You would have to set this up in each workflow where you want to apply this rule.
Hope this helps!
Karsten Köhler HubSpot Freelancer | RevOps & CRM Consultant | Community Hall of Famer