Mailjet ships a Countdown Timer block in its editor. For a fixed-date offer with a simple design, it may be all you need. This page covers what that block doesn't, going by its documentation: styles and fonts beyond the web-safe set, your own message when time runs out, and a separate deadline for each contact. You build the timer here and paste it into an HTML block.
Based on Mailjet's official documentation, reviewed on October 1, 2026.
Which block to use
Mailjet's Countdown Timer. You pick the end date and time zone, which units show, colors, separator and labels. Mailjet renders it as an image. It only supports web-safe fonts (Arial, Georgia, Helvetica and so on), and when it reaches zero it stays at 00:00:00:00. Its documentation doesn't mention per-contact deadlines.
HTML block with the Kauntodaun timer. This is the one you need for everything else. You paste a table holding the timer image, which is requested from our server every time someone opens the email. When time runs out, it shows the text you choose or disappears. Mailjet's documentation doesn't tie this block to any plan.
Not the Image Gallery. If you upload the GIF to the gallery, even with "import from URL", Mailjet stores a copy with the frame from that moment and the timer freezes. The image block also has an option to link an image that's already online, but the documentation doesn't say whether Mailjet copies it. Use the HTML block.
Step by step in a campaign
- Build the timer in the generator with your end date and time zone. If your template is 600 px wide, keep the width at 600 or less.
- Copy the code from the HTML tab.
- In Mailjet, go to Campaigns and click Create a Campaign, or open a draft, and go into the design with the drag-and-drop editor.
- Drag an HTML Block to where you want the timer, for example right below the header.
- Click the button in the block's toolbar to open the HTML editor and paste the code.
- Save and check the result in Preview & Test.
The code already has its & escaped and the background color set on the table and the cell, so you won't get white edges around the GIF.
Put the deadline in the copy too, for example "Ends Sunday, November 29 at 11:59 p.m. Eastern." Anyone who only sees the first frame, or has images blocked, still knows when the offer ends.
In an automation
In Mailjet's automation builder, the email comes from the Send Email block. Click Edit design to open the editor, drag in an HTML Block and repeat steps 4 to 6.
According to Mailjet, automations are only on the Premium and Custom plans. If you downgrade to a plan without them, active workflows pause.
With a fixed date, the workflow can send the email on any day: the GIF is rendered at open and shows what's left until that date. For workflows where each contact gets their own window (a welcome email with a 72-hour coupon, an abandoned cart), use an evergreen timer with the contact tag.
An evergreen timer counts a duration, say 72 hours. What changes is when it starts:
- Without a contact (free plan). It starts at each open. Someone who opens the email the next day sees the full window again.
- With a contact (Starter plan). That contact's first open sets the start, and later opens show what they have left.
For the second option, add the tag to the image URL inside the code:
https://kauntodaun.com/t/k3x9q2m7ab.gif?rid={{mj:contact.ID}}
According to Mailjet's template language reference, {{mj:contact.ID}} returns the Mailjet contact ID. It's a predefined variable, and Mailjet asks you to write those starting with mj: in double curly braces. There's also {{mj:contact.email}}, but we prefer the ID so the email address doesn't end up in the image URL.
Mailjet also explains that its template language works inside HTML blocks, which is where the code goes. We store the ID as a hash. If the tag arrives empty or unreplaced, the engine ignores it and counts from that moment.
How to test before you send
- Preview. In Preview & Test, the preview shows the design on desktop and mobile. Use it to confirm the image loads.
- Test email. From Preview & Test, send a test to up to 10 addresses. Mailjet's documentation doesn't say whether contact variables get replaced in tests; if they don't, the timer will count from each open.
- Live send to your own list. Your account comes with a list called MyFirstTest that holds your email address. Send the campaign to that list, or to one with two or three of your own addresses, and open the email twice a few minutes apart. With a per-contact timer, the second open should show less time.
- Email clients. The Email Preview feature renders the email in different clients. Mailjet says it's on every paid plan except Starter.
- Outlook. Microsoft says Outlook for Microsoft 365, 2021 and 2024 animate the GIF when Windows animations are on; otherwise you'll see the first frame with the time left.
Known issues
- The timer doesn't move. Check that you pasted the code into an HTML Block and didn't upload the GIF to the gallery.
- Braces, not brackets. Mailjet uses square brackets for contact properties (
[[data:…]]) but asks for double curly braces for mj: variables. Type {{mj:contact.ID}} exactly as shown.
- Apple Mail. With Mail Privacy Protection on, Apple downloads images when the email arrives, whether or not it's opened. For a per-contact timer, the window may start at delivery.
- One timer in several emails. If you edit the timer after sending, the change shows up in every email that uses it.
See also the guides for Brevo, ActiveCampaign, Klaviyo and Mailchimp. For dated campaigns, the Black Friday and Cyber Monday countdowns are ready to go.