EmailTimer.App

Why your email timer is stuck

By Danish Mohammed, founder. 7 min read

A stuck email timer is nearly always one of five things, and two minutes of questions will tell you which. The five: a client that plays one frame, a copy fetched at delivery and reused for days, a proxy replaying an earlier render, an animation out of frames, a wrong deadline. Work down the tree in order and stop at the first branch that matches.

Step 1. Check whether a number is showing at all

If the image is missing, shows a broken-image icon or shows alt text, this is not a timer problem. It is an image delivery problem, and the causes are different: images switched off in the client, a blocked proxy, or an ESP that rewrote the image URL. Fix that first: why your countdown timer is not appearing at all works through each cause, and the client-by-client picture is on email clients.

If a number is showing, continue.

Step 2. Identify the client

Ask this before anything else, because three of the five causes are client-specific. Get the actual client and version from the person reporting it, not from your own inbox.

Classic Outlook on Windows. Go to step 3.

Apple Mail on iPhone, iPad or Mac. Go to step 4.

Gmail, web or app. Go to step 5.

Something else. Go to step 6.

Step 3. Outlook, and the number never moves

This is the expected behaviour, not a fault. Classic Outlook on Windows renders HTML through the Word engine, documented by Microsoft since Outlook 2007, and animation is controlled by a setting outside Outlook in current builds. Microsoft’s support page states the diagnosis: “If only the first frame of the animation appears, you have animations, or animated GIFs, disabled.”

The Outlook on the desktop preview card, marked Right, showing the timer with a One frame, held label.
The Outlook preview in the publish dialog: one frame, held, with the number correct for the moment of the fetch.

The check: is the number correct, even though it is frozen? If the still frame shows the right remaining time for the moment that person opened the message, the timer is working as designed. They are simply not being shown the animation. If the still frame is hours out, there is a caching problem as well, and step 7 applies.

The fix is not to make Outlook animate. It is to make the frozen frame carry the answer. Full version detail is on countdown timers in Outlook.

Step 4. Apple Mail, and the clock is behind

Apple Mail with Mail Privacy Protection fetches remote images when the message arrives rather than when the person reads it. Apple states that Protect Mail Activity “downloads remote content in the background by default”, regardless of whether the recipient engages with the message, and routes it “through two separate relays operated by different entities”.

The Apple Mail with privacy preview card, marked 4 hours out, showing the timer at 01 04 16 38 and the line 1 day 4 hours on the clock.
The Apple Mail preview in the publish dialog, 4 hours out for a reader who opens 4 hours after delivery.

Two consequences produce the symptom you are seeing. The render is made at delivery, so a recipient who opens a day later sees a day-old starting point. And once fetched, the copy is reused. FreshInbox’s testing from 2021 reports that images are cached for two to three days and that the caching “does not respect the ‘Cache-Control’ headers that specify when a cached image should expire”.

The check: is the deadline absolute or relative? If you set a fixed deadline, the numbers are still correct about when the offer ends and only the animation’s starting point is stale. If you set an evergreen timer that starts on open, the countdown started at Apple’s prefetch, which means it may already be finished before the recipient looks. That is the case people describe as a timer stuck on zero in Apple Mail.

The mechanics, including what Apple documents and what is only reported, are in Apple MPP and the shared image cache.

Step 5. Gmail, and the second open is wrong

Gmail serves images through Google’s proxy. Google does not publish when the proxy refetches, and vendors report that a later open can replay the copy it already holds. MotionMail’s own help centre describes it from the vendor side: Gmail “downloads this ‘old’ image instead of loading the timer new”, so users “will see an older countdown clock instead of loading a brand new one, as intended”.

The Gmail, opened again preview card, marked 20 hours out.
The Gmail second open preview in the publish dialog, for a reader who opens again 20 hours later.

The check: did the person open this message once before? If yes, this is the proxy cache and there is nothing to fix on a message already sent. If this is genuinely their first open and the number is wrong, the problem is the deadline itself, so go to step 7.

Details, including why a cache-busting parameter cannot help after a send, are on countdown timers in Gmail.

Step 6. Motion that stopped after about a minute

If the animation ran and then stopped on a number while the message was still open, it reached the end of its frames. Every vendor has a ceiling and most do not advertise it. MotionMail documents 45 seconds: “we optimize the size of our timer images by limiting the duration to 45 seconds”, and adds that “every time your email is re-opened, the countdown timer will start ticking down again”. Customer.io documents a hard cap: “The countdown timer GIF cannot contain more than 60 frames”, and warns that with a seconds resolution “the counter will stop 60 seconds after the image loads”.

This is not a bug and there is no setting that removes it. A GIF is a finite list of pictures, and one frame per second means one second of bytes per second of motion.

The check: did it stop on the correct number for that moment? If yes, the timer worked and simply ran out of frames. If it stopped on an obviously wrong number, go to step 7. The cross-vendor comparison is in GIF frame limits in email timers.

Step 7. Rule out the deadline itself

Everything above assumes the deadline is right. If a fresh fetch in a client with no caching still produces the wrong number, the problem is in the URL or the template rather than in the inbox. The usual causes: a timestamp written without a time zone, a deadline set in the account’s zone rather than the one you meant, or a deadline already in the past when the campaign went out.

Take the timer’s image URL out of the sent message, paste it into a browser, and reload it twice. The browser is the only environment in this whole chain with no email proxy in front of it. If the number changes correctly on reload, the renderer is fine and every remaining problem is a cache. If the number is wrong in the browser too, it is the deadline, and why your timer shows the wrong time covers the cases.

What to do about it

  1. Put the deadline in body text, next to the image. One line with the time zone written out. It is correct in every branch of the tree above, including the ones you cannot fix.
  2. Switch broadcasts to a fixed absolute deadline. A stale copy of a fixed-deadline render is still telling the truth about the cut-off. A stale copy of a start-on-open render is not.
  3. For a flow, compute the deadline in the flow and sign it into an address per recipient. Cart recovery and trial expiry sequences know the trigger time. Generate each recipient’s image address through the API with that deadline, rather than asking the image to infer it or adding a merge tag the signature will reject.
  4. Set the expired image now. The single ugliest outcome in this whole area is a counter parked on zeros days after a sale closed. An automatic swap to a closed-sale graphic costs one upload.
  5. Match the resolution to the horizon. Seconds on a three-day countdown guarantee the complaint in step 6. Hours and minutes stay correct for the whole animation and read better when frozen.
  6. Decide loop or hold on purpose. Holding the last frame leaves a correct number on screen. Looping sends the reader back to a number that is already a minute old, twice.
  7. Send a test to yourself and open it three times over an hour. Note every number. That is the fastest way to learn what your own list will experience, and it costs nothing. What the renderer guarantees per client is listed on features.

Questions and answers

Why is my countdown timer frozen in Outlook?

Because animation is disabled, by the Outlook option in older builds or by the Windows “Show animations” setting from Microsoft 365 version 2008 onward. The number on the frozen frame should still be correct for that fetch.

Why does my timer show a different time to two different people?

Because their clients fetched the image at different moments, and one of them may be seeing a cached copy. Same message, same URL, two different render instants.

My timer stopped after a minute while I was watching it. Is that broken?

No. The GIF ran out of frames. Every vendor caps it somewhere: MotionMail documents 45 seconds and Customer.io documents a hard 60-frame limit.

Can I clear the cache in Gmail or Apple Mail?

No. Neither offers a purge for proxied images, and the URL in a delivered message cannot be changed. Design the deadline so a cached copy is still correct.

Does a per-recipient image URL help?

It stops one cached copy from being reused across many recipients, which limits the damage. It does not refresh anything between two opens of the same message.

Sources

Related

Put a countdown in the campaign you are writing now

The free plan covers 5,000 opens a month with no card. Starter is $19 a month for 250,000.