Step by step
How to add a countdown timer to a Braze email
Create the timer
Describe the offer and Create with AI drafts it (Basic and up), or use the editor: multiple layouts, your brand colors, a transparent background if your email has a colored band. Choose the timer type that fits your send (see below).
Copy the Braze snippet
Click Embed in the timer editor; for an evergreen or dynamic timer, choose Braze as the email platform there. Copy the image URL or the HTML
<img>snippet. There is no one-click insert for Braze; the snippet is the way in.Paste it into your Braze message
In the drag-and-drop editor, add an HTML block and paste the snippet, or use an image block with the timer URL. In the HTML editor, paste the snippet where the countdown belongs. Link the image; never upload the GIF, which would freeze it.
Use Liquid only in the HTML block
Braze's own docs say Liquid personalization is not supported in image block fields. If your URL carries a Liquid tag (a dynamic timer's
?end=), paste the snippet into an HTML block or the HTML editor so Braze renders it.Preview as a user and send a test
Use Preview & Test with a real user so any Liquid resolves, then send a test to Gmail, Apple Mail and Outlook. Add the deadline in text under the timer.
Choosing the right timer type for Braze
Many platforms let flashtimer give each recipient their own evergreen countdown through a per-recipient merge tag. flashtimer's Braze snippet does not include one. That means an evergreen "starts on open" timer sent from Braze will not be per user: everyone who gets the email shares one countdown, started by the first open. We would rather tell you that here than have you find out after a send.
Braze teams have three options that do work as intended:
- Fixed: one deadline for everyone, such as a Black Friday sale ending Monday at midnight. No tag needed. Free plan and up.
- Evergreen, starts on send: everyone in one send shares a countdown that starts at the send, via a signed send link you create right before sending.
- Dynamic: each user counts down to a date on their profile, via a Liquid tag in the URL (Pro and up). This is the per-user option for Braze.
Per-user deadlines with Liquid and dynamic timers
Most Braze programs already store the deadline that matters: a trial end date, a subscription renewal, a points expiry. A dynamic timer reads that date from the URL. Type the custom attribute's name in the embed dialog and flashtimer writes Braze's tag for you, for example ?end={{custom_attribute.${trial_end}}}, following the custom attribute syntax in Braze's documentation.
The timer accepts ISO 8601 with or without a time zone, a plain date, a date and time followed by UTC, or Unix seconds and milliseconds. A missing or past date shows the expired frame and an unreadable one a neutral "currently unavailable" image, never a wrong countdown. See personalized countdown timer email for formats and use cases.
Countdown timers in Braze Canvas
In a Canvas, users reach a Message step at different times, so the timer type matters more than in a one-off campaign. A fixed timer fits a Canvas with a hard end date, such as a launch or a seasonal sale; see the Black Friday countdown timer email setup. A dynamic timer fits onboarding, trial and renewal journeys, because the deadline travels with each user.
If the same deadline repeats on a schedule, like a weekly drop every Thursday at 6pm, a recurring countdown timer resets on that wall-clock rule in your time zone and never needs editing between sends.
What users see in Gmail, Apple Mail and Outlook
The timer animates in Gmail, Apple Mail, Yahoo, and Outlook on the web, Mac and mobile. Classic Outlook for Windows (2007–2019, and newer versions with Windows animations turned off) shows only the first frame of a GIF. That frame is rendered at open time, so the number is right, but it does not tick. Restate the deadline in text.
Apple Mail Privacy Protection pre-fetches images. By default those loads get the live countdown as it stood then; on Pro and up, Apple Mail options can show them a message, your fallback image or nothing instead, so cached opens never show a stale time. Gmail proxies images, so the timer is served with no-cache headers and a reopen shows the current time.
After the deadline, and troubleshooting
When time runs out, users see your expiry message, or your own fallback image on Basic and up. Nobody who opens late sees a countdown to an offer that has ended.
Timer shows as expired for everyone? Open a sent test and check the image URL: if ?end= is empty, the attribute is missing on that user or the snippet sits in an image block where Braze did not render Liquid. Timer not showing at all? Braze requires image URLs to start with https://, which flashtimer URLs always do, so check the snippet was pasted whole.
Questions
Answered before you ask.
Keep reading
- Dynamic timersPersonalized countdown timer email: every reader counts to their own dateSend a personalized countdown timer email where each reader counts down to their own date: trial end, renewal or appointment, from a merge field. Try it free.
- Black Friday & Cyber MondayBlack Friday countdown timer email: the 2026 playbookPlan your Black Friday countdown timer email for 2026: teaser, launch and last-chance sends, Cyber Monday timers and fallbacks after the sale. Start free.
- Iterable integrationIterable countdown timer for templates, campaigns and journeysAdd a live Iterable countdown timer to email templates and journeys. Per-user evergreen timers via {{email}}, one-click template insert on Pro. Start free.
- SendGrid integrationSendGrid countdown timer for dynamic templates and campaignsAdd a live SendGrid countdown timer to Dynamic Templates or Single Sends. Per-recipient timers via {{email}}, one-click template insert, REST API. Start free.
- DevelopersCountdown timer API & MCP serverCreate and embed timers from code, Claude, ChatGPT, Gemini or Grok.
