SendGrid integration

SendGrid countdown timer for dynamic templates and campaigns

A SendGrid countdown timer from flashtimer is an image URL that renders a live GIF at the moment each email is opened. It works in Dynamic Templates sent through the Mail Send API and in Marketing Campaigns. Paste it on the free plan, or let flashtimer insert it into a dynamic template in one click on Pro.

Free plan · 20,000 views a month · No card

Your store

The sale ends soon. Don't miss it.

Offer ends in

Dark electronics-style SendGrid countdown timer counting down to a sale deadlineShop the sale

Step by step

How to add a countdown timer to SendGrid

  1. Create the timer

    Build it in the editor, draft it with Create with AI (Basic and up), or create it from code with the countdown timer API (Pro and up). Choose Fixed for one deadline, Evergreen for a per-recipient window, or Dynamic to count to a date you pass in.

  2. Copy the SendGrid embed

    Click Embed in the timer editor. For an evergreen timer that starts on open, or a dynamic one, choose SendGrid as the email platform there; an evergreen timer's image URL then ends in ?vid={{email}}. Copy the URL for an image module, or the HTML <img> snippet for code.

  3. One click: insert into a dynamic template (Pro and up)

    Connect SendGrid under Settings → Integrations with an API key that can read and edit templates. In the timer editor, Send to ESP lists your dynamic templates; pick one and a position, and flashtimer writes the timer into the template's active version as a table row.

  4. Or paste it (every plan, including Free)

    In the Code Editor, paste the <img> snippet where the timer goes. In the Design Editor, add an Image module and use the URL rather than uploading the GIF, or drop the snippet into a Code module. The same works for a Single Send in Marketing Campaigns.

  5. Pass the data and test

    For transactional sends, include email in dynamic_template_data so {{email}} has a value. Send a test, open it in Gmail and Outlook, and confirm the countdown and the deadline text underneath agree.

Dynamic Templates vs Marketing Campaigns

SendGrid has two ways to send, and the timer works in both. Dynamic Templates are Handlebars templates you send through the v3 Mail Send API with your own data: order confirmations, trial reminders, cart emails triggered by your app. Marketing Campaigns sends Single Sends and Automations to contact lists from the SendGrid UI.

flashtimer's one-click insert targets dynamic templates. For a Single Send, paste the image URL or snippet into the editor; it takes a minute and works on every plan. Either way the image is fetched from flashtimer at open time, so nothing about the timer depends on how the email was sent.

Per-recipient evergreen timers with {{email}}

An evergreen timer gives each recipient their own countdown, for example 24 hours from their first open. flashtimer tells recipients apart with the vid parameter, and for SendGrid it uses {{email}}: ?vid={{email}}. The value is hashed before storage.

Here is the catch most guides skip. In a dynamic template, Handlebars only knows the data you send. SendGrid does not fill {{email}} with the recipient address on its own, so add "email" to dynamic_template_data for each personalization. If it is missing, every recipient shares one countdown, started by the first open. Read more about evergreen countdown timer email setups.

  • Fixed: no data needed.
  • Evergreen, starts on open: ?vid={{email}} plus email in your template data (Basic and up).
  • Dynamic: ?end= with a date you pass, such as {{trial_end}} (Pro and up).

Countdown timers in transactional and triggered email

Transactional email is where per-recipient deadlines live: a cart that expires, a trial that ends, a quote valid for seven days. A personalized countdown timer email counts to a date in each message. Send it as ISO 8601 (2026-11-28T23:59:00Z), a plain date, or Unix seconds, and reference it in the URL as ?end={{your_field}}. The embed dialog leaves YOUR_MERGE_TAG in the URL for you to replace with your Handlebars variable.

A missing or past date shows the expired frame and an unreadable one a neutral "currently unavailable" image, never a wrong countdown. For cart recovery specifically, see the abandoned cart email countdown timer setup. Developers can create, update and archive timers through the REST API or the MCP server documented on the developers page.

How the timer renders in Outlook, Apple Mail and Gmail

The GIF 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. That frame is rendered at open time, so the number is right; it just does not tick. Put the deadline in text beside the timer.

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 the deadline passes the image becomes your expiry message, or your own fallback image on Basic and up, so a late open never shows a countdown to a deal that is over.

Everyone sees the same evergreen countdown? Check the sent email's image URL: if it ends in ?vid= with nothing after it, email was missing from your template data. One-click insert edited a live template? It writes to the active version, so duplicate the template first if production traffic uses it.

Questions

Answered before you ask.