EmailTimer.App

Countdown timers and personalized images for ActiveCampaign email

Your subscribers see how long is left on the offer, counted from the moment they open the message, and it goes into the ActiveCampaign campaign you have already built. One snippet, in the merge syntax ActiveCampaign already uses.

Animated countdown in the digital style, reading 02 days 03 hours 34 minutes 12 seconds and counting down
A render from the engine at 600 by 200, the size that goes into a ActiveCampaign image block.

ActiveCampaign merge syntax

The tags you already use, around the image

The same merge fields that put a subscriber's name in your subject line go in the link and the alt text around the image, where ActiveCampaign fills them in as it sends. They never go inside the image address, for the reason in the warning further down. A name or a deadline drawn inside the image itself comes from an address signed for each subscriber, held in a contact field.

First name
%FIRSTNAME%
Coupon code
%COUPON%
Deadline
%DEADLINE_UNIX%
Email address
%EMAIL%

The snippet to paste into ActiveCampaign

Put it in html content block in activecampaign email designer. There are two shapes, and which one you want depends on whether every subscriber gets the same deadline or their own. The editor generates whichever you pick, already filled in with your ids.

One thing to know before you paste anything. A merge tag cannot go inside the image address. The address is signed, and the signature covers every part of it, so if ActiveCampaign swaps a name into it after signing, the signature no longer matches and every subscriber gets the fallback graphic instead of your timer. It happens quietly, because the image service always answers with a valid picture rather than an error. Both snippets below put the merge tags in the link and the alt text, where they belong and where they work.

One image for the whole send

On every plan, including the free one. Everybody requests the same address, and the clock is worked out at the moment each person opens, which is what lets one address show a different time to every reader. The name and the code go in the link and the alt text.

<a href="https://yourstore.com/sale?code=%COUPON%" target="_blank" rel="noopener">
  <img src="https://img.emailtimer.app/i/k7mQ2pXd.gif?w=w_8ha3fq&v=3&sig=YOUR_SIGNATURE" alt="%FIRSTNAME%, your 25% off ends at midnight tonight" width="600" height="200" border="0" style="display:block; width:100%; max-width:600px; height:auto; border:0;" />
</a>

A different image for each subscriber

On Growth and Agency. Generate one signed address per subscriber, import the column into ActiveCampaign as a contact field called ET_IMAGE_URL, and point the snippet at that field. This is the only way a deadline that differs per subscriber can work, because the deadline is inside the signature too. A contact whose field is empty gets no image, so check the field is filled across the whole segment before you send.

<a href="https://yourstore.com/sale?code=%COUPON%" target="_blank" rel="noopener">
  <img src="%ET_IMAGE_URL%" alt="%FIRSTNAME%, your 25% off ends at midnight tonight" width="600" height="200" border="0" style="display:block; width:100%; max-width:600px; height:auto; border:0;" />
</a>

The addresses come from the batch endpoint in the REST API, or from a CSV export if you would rather not write code.

Setting it up in ActiveCampaign

Four steps, and the longest one is deciding what the timer should look like.

  1. 1

    Select ActiveCampaign export

    Build your timer style and configure dynamic layers with ActiveCampaign %TAG% placeholders.

  2. 2

    Copy the ready HTML code

    Get the exact image tag formatted with percent-sign merge syntax for campaigns and automations.

  3. 3

    Paste into an HTML block

    In ActiveCampaign email builder, insert an HTML content block and paste the generated snippet.

  4. 4

    Test through an automation workflow

    Trigger a test contact through your automation step to verify dynamic dates and recipient tags.

Things that only matter in ActiveCampaign

ActiveCampaign supports custom contact fields surrounded by percent symbols (%CUSTOM_FIELD%). A per-contact deadline reaches the image through a recipient list or an address signed for that contact, so write dates in that list as ISO 8601.

What your ActiveCampaign subscribers will actually see

Apple Mail Privacy Protection caches images on receipt. For evergreen automation funnels, count from send time rather than from open, so the delivery prefetch does not shorten the window.

What each client is documented to do

Email client Fetch moment Cache lifetime GIF animation What EmailTimer.App does Basis
Apple Mail (iOS 15+, macOS Monterey+) Apple Mail Privacy Protection (MPP) Delivery time (pre-fetched by Apple server) Testing reports 2 to 3 days Full 30-second live animation The timer counts down from the time remaining at delivery. A fixed deadline, such as 23:59 UTC, is still the right deadline. Documented by Apple
Gmail (web, iOS, Android) Google image proxy First open by recipient Not published by Google Full 30-second live animation First open displays a real-time countdown. A re-open can be served from the copy the proxy already holds. Documented by Google
Outlook on Windows (2016 to 2024) Word rendering engine Open time Not documented First frame only (static image) Frame 1 is a complete image with the time left at the fetch, so a reader who sees only that frame sees a correct still countdown. Expected, not yet documented or tested
Outlook on the web and mobile (iOS, Android) Native browser or app engine Open time Not documented Full 30-second live animation Expected to play the animation, 30 frames at one frame per second by default. Expected, not yet documented or tested
Yahoo Mail and AOL Yahoo image proxy Open time Not documented Full 30-second live animation Expected to fetch the image when the message is opened and play the animation. Expected, not yet documented or tested

The Apple and Gmail rows rest on Apple's and Google's published documentation and on third-party testing. Neither company publishes a cache lifetime: Apple documents the prefetch, Google documents the proxy, and the two to three days is FreshInbox's 2021 testing. The Outlook and Yahoo rows are what we expect those clients to do, with no vendor document behind them. No row comes from a test by us yet, and we will publish dated screenshots when we have them. Sources: Apple on Mail Privacy Protection, Google on the Gmail image proxy, FreshInbox on Mail Privacy Protection image caching.

ActiveCampaign in practice

ActiveCampaign countdown timer guide

By Danish Mohammed, founder. 5 min read

ActiveCampaign is one of the few platforms in this directory that already gives you a timer. That changes the job of this page. The useful question here is when the built-in one stops being enough.

Does ActiveCampaign have its own countdown timer

Yes. The email designer carries a Timer block. ActiveCampaign’s help centre refused every automated request while I was writing this. So the description here comes from ActiveCampaign’s own community rather than from its documentation. I would rather say that than cite a page I could not read.

A community post from 1 May 2024 gives the click path: “In the new email designer, open the content tab and scroll through the building blocks until you find the timer block.” The settings it lists are an end date and time, a time zone, font choices, a background colour, label styling, a label language, and an expiration message.

That is a fixed-date timer with a calendar deadline and a single time zone for the whole send. It covers a flash sale announced to everybody at once, which is a large share of what people want a timer for.

The gap opens with everything else. ActiveCampaign also lists third-party timer services in its own app directory. Its CountdownMail listing, read on 23 September 2026, describes the alternative model: “Use the CountdownMail app is an automation action to start a countdown timer when a contact passes through this action in your automation.” A platform that already had per-contact deadlines covered would not need that listing.

Where the snippet goes

A server-rendered timer arrives as an image tag in an HTML block, dropped into the layout from the same content list that holds the Timer block. Paste the snippet in whole, including the surrounding link and the alt text.

Merge tags use percent signs on both sides of the field name. ActiveCampaign turns standard and custom fields into tags automatically, so a first name is %FIRSTNAME% and a custom field named ET_IMAGE_URL is %ET_IMAGE_URL%. A community tip from 12 March 2026 names the failure mode you will meet first: “Without a default value, tags like %FIRSTNAME% just leave a blank space.” Set a default on every field you put in a link or in alt text.

A per-contact deadline cannot ride in the query string. The signature covers every parameter on a timer URL, so a tag substituted after signing invalidates the URL for the entire send. Store a pre-signed URL on a custom field and use the field as the source:

<img src="%ET_IMAGE_URL%" width="600" height="200" border="0" alt="Your cart expires soon" />

That is the shape that gives each contact a deadline measured from their own trigger event rather than from a date you picked in advance.

What breaks in automations and flows

The native Timer block takes a calendar date, which is exactly the wrong input for an automation. An abandoned-cart series runs every day of the year, and a timer inside it pointing at 31 October counts down correctly for a few weeks and then counts up forever. Either swap the block out before the date passes, or use an image whose deadline is set per contact at the moment the automation enrols them.

A blank field is the second problem, and it is quiet. A tag with no value and no default renders as nothing, so an image source built from an empty field becomes an empty source attribute. The recipient sees a broken image and no system anywhere logs an error. Defaults fix the visible symptom; populating the field as an automation action fixes the cause.

The third is sequence. Whatever writes the per-contact URL has to run before the email step, not in parallel with it. In practice that means a wait step or an explicit field-update action ahead of the send. Test it by pushing one contact through the automation by hand.

What your recipients will see

Both timers, the native block and a pasted image, land in the recipient’s mail client as pixels, and the client decides what to do with them. Classic Outlook on Windows draws HTML through the Word engine and shows a single frame of an animated GIF rather than playing it. Apple Mail with Mail Privacy Protection fetches remote images around the time the message is delivered, so the figure reflects delivery instead of the open. Gmail proxies images and can return a copy it already holds when the same person opens the message twice.

That is documented client behaviour rather than something I have photographed in an inbox, and the per-version detail is on the email client support page. One design consequence follows from it directly. Whatever draws frame one has to make frame one correct on its own, because for a meaningful share of your list frame one is the only frame that will ever be seen.

Test before you send

Push a real contact through the automation rather than previewing the email in isolation. ActiveCampaign resolves merge tags against contact data, so a preview on a contact with an empty field tells you nothing useful about a contact who has one.

Send the resulting message to two inboxes, one on Gmail and one on Outlook for Windows. The preview inside the builder renders in a browser and will animate happily. Outlook is where you find out whether the still image says what you needed it to say.

Questions and answers

Does ActiveCampaign have a native countdown timer?

Yes, a Timer block in the email designer, documented on ActiveCampaign’s community as taking an end date and a time zone. It is a fixed-date timer.

When is the native Timer block not enough?

When each contact needs a deadline of their own, or when the same design has to run in another platform as well. A design that exists as a Photoshop file is the third case, since the block cannot take one and an imported PSD keeps the designer’s pixels.

How do I run an evergreen deadline in an automation?

Write a pre-signed image URL to a custom field as an automation action, then reference %ET_IMAGE_URL% in the image source. The countdown is then anchored to that contact’s own enrolment.

Why is the timer image missing for some contacts?

Because the custom field it reads is empty for them, which produces an empty source attribute. ActiveCampaign’s own community warns that a tag with no default value simply leaves a blank space.

What does this cost alongside ActiveCampaign?

The free plan here is 5,000 image opens a month with no watermark, and timers and personalized images run on the same plan rather than on two. The tiers are on pricing, and there is a free generator if you want to try one before signing up.

Sources

Related

Campaigns to build in ActiveCampaign

Each playbook says which timing model the campaign needs, which snippet it takes, and what to get right before you send it.

Setting this up on another platform

The snippet is the same everywhere. Only the merge syntax changes, and each page below carries the exact syntax that platform expects.

All 21 platform setup guides

Put a timer in your next ActiveCampaign send

Free for 5,000 opens a month, $19 for 250,000, and the snippet above is the whole integration.