ActiveCampaign logo

ActiveCampaign is one of the few platforms that took countdowns seriously enough to build a block. Drag Timer into the Email Designer, set an end date, time and time zone, pick a size and font, and you have a countdown. You can even upload an expired-timer image to swap in once the deadline passes. For a single broadcast counting to one shared moment, that is genuinely all an ActiveCampaign countdown timer needs to be, and reaching for a second tool would be silly.

The block has two hard limits, though, and they matter more in ActiveCampaign than elsewhere because so much of what people send is automated. It counts to one date for every contact, and it cannot read that date from the contact. ActiveCampaign’s own block documentation also warns that the time zone you set “will not necessarily reflect the contact’s local time”. This guide covers the cases the block leaves out, with an Alterable countdown timer in the HTML block.

When the built-in Timer isn’t enough

Three situations, in the order I see them come up:

  • Automations with no shared deadline. A trial-expiry or cart-recovery automation sends to each contact on a different day. One fixed date is wrong for almost everyone in it. An evergreen timer starts from each contact’s first open instead.
  • The deadline lives on the contact. A renewal date, a quote expiry, a booking window. A merge tag timer reads it from a field, so every contact counts to their own date.
  • The same clock in more than one place. The Alterable timer is an image URL. It works in ActiveCampaign, in a transactional email from elsewhere, and on a landing page, all showing the same time left.

If none of those apply, use the Timer block and stop reading.

Step 1: Create the timer in Alterable

1. Open the Alterable countdown timer page.

2. Choose Evergreen for the automation case or Merge tag for a deadline held on the contact. Standard is there too, though for a fixed date the built-in block is the simpler choice.

3. Set the duration or deadline and its timezone, then match the fonts and colours to your template.

4. Click Create and copy the embed: a link wrapped around an image.

Step 2: Add the countdown timer to your ActiveCampaign email

1. In the Email Designer, open the Blocks menu and scroll to HTML.

2. Drag it into the layout where the countdown should sit.

3. Click the block to open the code editor and paste the Alterable embed.

4. Save. The timer shows in the design as an image.

The Email Designer is available in both Campaigns and Automations, so the same steps apply to an automation email. ActiveCampaign strips script, iframe, form and a few other tags from the HTML block, none of which a timer uses. On the older Classic Designer, the equivalent is the HTML content block, which opens a modal for the code.

Per-contact deadlines with ActiveCampaign personalization tags

An evergreen timer needs to know who’s opening, so Alterable can start and keep that contact’s clock. Pass the email address:

<img src="https://next.alterable.com/countdown-timers/YOUR-TIMER-ID.png?uid=%EMAIL%" />

A merge tag timer takes the deadline itself, as an ISO date such as 2026-10-01T18:00:00Z. The offset travels with the date, so 2026-10-01T00:00:00-07:00 is midnight Pacific for that contact, which is the only honest way to give each reader a deadline in their own time zone. ActiveCampaign’s date fields can’t produce that: they store a date without a time, and the only modifiers its personalization tags accept change capitalization, not format. The clean route is a custom text field, say Offer End, which ActiveCampaign exposes as %OFFEREND%, filled by an automation or by the system that owns the deadline:

<img src="https://next.alterable.com/countdown-timers/YOUR-TIMER-ID.png?d=%OFFEREND%" />

Give the field a default value. A contact with the field empty otherwise gets an empty parameter, and a timer with no deadline has nothing to draw.

Previewing an ActiveCampaign countdown timer

ActiveCampaign says plainly that some personalization tags won’t work in test emails, because there’s no contact behind a test. So a URL containing %EMAIL% or %OFFEREND% can arrive with the tag still in it. Use the desktop preview for a specific contact, or send the campaign to a short test list, and the tag resolves. A standard timer has no tag in it and renders fine in any test.

One nice consequence of open-time rendering: when the deadline passes, the timer holds at zero, or shows the message or image you chose in Alterable as its expiry placeholder. There’s no expired-timer image to upload into every campaign, because the timer itself already knows it has ended.