Datos Blog

Learn about business automation and operations

How to Send Dynamic Time-Based Email Reminders with ActiveCampaign

Out of the box, ActiveCampaign provides a way to send emails based on a dynamic date field (such as sending a reminder one day before a call). But it doesn’t provide a way to send email reminders a set amount of time before a dynamic event, such as a call or webinar. For any event you don’t have a specific date and time for, there is no option for sending a 1 hour reminder.

Let’s say you have people booking calls through Calendly and want to send reminders from ActiveCampaign (Yes, Calendly has reminder options but sometimes you want to customize things further).

This will require Zapier, a few new fields in ActiveCampaign, and some setting tweaks.

First, make sure your Zapier, Calendly, and ActiveCampaign timezone settings are all set to the same timezone. Next, add two additional fields to the ActiveCampaign list you’ll be using – one date field for call date and one text field for just the hour of the call time (for example, if your call is at 9:00am, this would be “09”). We named these fields “Call Date” and “Call Time Hour” respectively. It’s important not to make the date field a date/time field—for some reason ActiveCampaign does not let you use date/time fields for date-based dynamic triggers.

Then start with a basic Zap: when someone books a call through Calendly, add the contact information, including their call date and time, to ActiveCampaign.

Optional: If you want to use these fields to personalize the confirmation and reminder email copy, add another text field for “Call Time” in ActiveCampaign and add these with the “Event Invitee Start Time” in Zapier so it appears in the email copy in the recipient’s timezone.

Then add a Code by Zapier step in the middle of your Zap to grab just the call time hour (in your account timezone) and change it to military time. Then you can add that to the Call Time Hour field in the ActiveCampaign step of the Zap.

For the code step, you’ll need to add “Event Start Time Pretty” as the “accountTimeInput” input and choose JavaScript. Use the following code:

var accountHour = input.accountTimeInput.split(':');
var splitAccountTime = input.accountTimeInput.split(' ');
var amPm = splitAccountTime[0].slice(-2);

if (amPm == "pm" && accountHour[0] != "12") {
  var accountTimeOutput = parseInt(accountHour[0]) + 12;
else {
 var accountTimeOutput = accountHour[0]; 

if (splitAccountTime[0] == "12:00am") {
 accountTimeOutput = "0"; 

Once the Zap is tested and the correct data is going to ActiveCampaign, create two automations in ActiveCampaign—one to send the reminder email and one to set up the internal logic. Unfortunately, the only way to do this is the “hard” way.

In the logic automation, create 24 goals—one for each hour of the day. Each goal will look like this:

Note: the code step in the Zap will format single-digit AM hours for the “pretty time” with as 0, as in “08” instead of “8”, and the code step formats 12am as “0”.

It’s important to choose the “Wait until conditions are met” option, otherwise this will be triggered immediately.

If you want the email to send 1 hour before the call, set a goal for when the current time is a certain time and the call time is 1 hour later. For example, if the call is at 2pm, you want to send the reminder email when the current time is 1pm and the call time is at 2pm. After each goal, set the automation to add a tag:

In your reminder automation, add an action for when the “Call Reminder” tag goal is achieved to send the reminder email.

This should send a reminder email to people an hour before their booked call time!

Let us know what you think of this workaround and what you come up with using this technique.

Skip forward

Never miss a post from Datos