Brevo (formerly Sendinblue) doesn't have a countdown block in its email editor. Its help center points to the HTML block instead, which Brevo says is meant for widgets, countdown timers and code from outside tools. You paste in a table holding the timer image, and that image is requested from our server every time someone opens the email.
Based on Brevo's official documentation, reviewed on October 1, 2026.
Which block to use
HTML block. This is the one we recommend. You drag it into the design, paste the code and Brevo shows it on the canvas right away. Brevo recommends it for advanced users because badly built HTML can break the layout in some email clients; our code is a table with one image and no JavaScript. Brevo's help center doesn't tie this block to any plan.
Image block with a URL. This also works for a fixed-date timer. Paste the GIF's address (the URL tab in the generator) into the Image URL field. According to Brevo, that image isn't saved to your library and loads from the URL every time the email is opened. If you drag the file in or upload it to the library instead, Brevo stores a copy with the frame from that moment and the timer freezes.
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 Brevo, create or open the email campaign and go to the Design step with the Drag & Drop editor.
- Drag an HTML block to where you want the timer. Right below the header or just above the main button usually works.
- Replace the block's content with your code. In the new editor, you edit the block from the left panel.
- Save and check the design 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.
Before you schedule the send, check the campaign's additional settings. Leave Embed images in the email off: it puts the images inside the email, so the GIF would travel with the frame from the send. For NiftyImages personalized images, which work the same way as the timer, Brevo also asks you to set Hide Images URL to No; do the same here.
Put the deadline in the copy near the timer 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 an automation, the email comes from the Send an email step: you add the step, create a new message or pick an existing one, and design it in the same Drag & Drop editor. Repeat steps 4 to 6.
Watch out for synced messages. If several steps share the same message, Brevo applies any change to all of them.
With a fixed date, the automation can send the email on any day and the GIF will show what's left until that date. If each contact needs their own window (a 48-hour welcome coupon, an abandoned cart), use an evergreen timer with the contact tag. Brevo says up to 2,000 unique contacts can enter your active automations on the Free plan.
An evergreen timer counts a duration, say 48 hours. What changes is when it starts:
- Without a contact (free plan). It starts at each open. If the person opens the email the next day, they see 48 hours 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={{ contact.EMAIL }}
Brevo writes contact variables as {{ contact.ATTRIBUTE }}, using the attribute's exact name. We'd rather use an internal ID than the email, since the email travels in the image URL. Brevo does store a CONTACT_ID for each contact, but its help center says it can only be retrieved by exporting your contacts and doesn't list it as a variable for emails. So we use {{ contact.EMAIL }}, which is documented. Brevo describes this exact setup (an outside image with {{contact.ATTRIBUTE}} in its URL, inside an HTML block) in its NiftyImages guide.
The engine hashes the value and never stores the email in plain text. If the tag arrives empty or unreplaced, the engine ignores it and counts from that moment.
How to test before you send
- Preview as a customer. In Preview & test, on the Preview tab, pick a contact and Brevo fills in the variables with their data. For a per-contact timer, pick your own contact: if the preview loads the image with a real customer's email, their window starts right then.
- Test email. From the Send test email tab, send it to your test list. According to Brevo, each recipient gets it as if they were a customer, with their own attributes, so the tag gets replaced. Open the email twice a few minutes apart: with a per-contact timer, the second open should show less time.
- Email clients. The View in inbox tab renders the email in different clients. Brevo says it's only on the Starter, Standard, Professional and Enterprise plans.
- 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 the GIF is in an HTML block or the Image URL field, that you didn't upload it to the library, and that Embed images in the email is off.
- 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 rather than when the email is read.
- White edges. If you see a border around the timer, make sure the timer's background color matches the section's.
- 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 Mailjet, ActiveCampaign, Klaviyo and Mailchimp. For dated campaigns, the Black Friday and Cyber Monday countdowns are ready to go.