Abandoned cart emails

The abandoned cart email countdown timer that starts when each shopper opens

An abandoned cart email countdown timer gives each shopper their own deadline, starting the first time they open your reminder. Pair it with a discount that really expires and your recovery flow stops saying “come back sometime” and starts saying “your code ends Thursday at 9pm”. Below: the flow timing, the copy, and the setup.

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

Your store

The sale ends soon. Don't miss it.

Offer ends in

Abandoned cart email countdown timer counting down the hours left on a shopper's cart discountShop the sale

Step by step

Set up an abandoned cart countdown in five steps

  1. Create an evergreen timer that starts on open

    In the editor, open Timing, pick Evergreen and choose Starts on open. Set the window to match how long your cart code really lasts, usually 24 or 48 hours. Evergreen timers are on Basic and up. If you connected Shopify (Pro and up), flashtimer creates a starter timer called “Abandoned Cart Recovery” the first time a checkout is started in your store, once Shopify sends flashtimer checkout events: it only does that after the connection is approved for protected customer data. The starter is set to 30 minutes, so lengthen it to match your offer.

  2. Style it to sit under the cart contents

    Pick a layout. Compact and minimal sit neatly under a product image, while boxes and circles suit a bolder last-chance email. Apply your brand kit colors and font so the timer looks like part of the email, not an ad. Set the label language, or choose “auto” to pick it per reader.

  3. Decide what late openers see

    Write the expiry message, for example “This code has expired. Your cart is still saved.” On Basic and up you can upload your own fallback image instead. A shopper who opens the email after their window closes never sees a countdown to an offer they can no longer use.

  4. Paste the snippet into your flow email

    Copy the embed snippet into an HTML or code block in the second and third emails of your flow. Where your platform has a per-recipient merge tag, such as {{ person.KlaviyoID }} in Klaviyo or *|UNIQID|* in Mailchimp, the snippet already carries it, which is what gives each shopper their own clock; on one without, such as Braze, shoppers share one countdown. One-click insertion adds the timer to a draft campaign you pick, not to a flow, so for automated flows, paste the snippet.

  5. Test with a real profile, then switch the flow on

    Trigger the flow with a test address, open the email on your phone, then open it again an hour later on desktop. The second open should show an hour less, not a fresh countdown. Check classic Outlook on Windows too, and confirm your text deadline matches the timer before you turn the flow live.

How an abandoned cart countdown timer works

A fixed timer counts to one date for everyone, which is wrong for cart recovery: shoppers abandon on different days, so a shared deadline is already over for some and weeks away for others. An evergreen timer that starts on open solves this. The first time a shopper opens the email, their own countdown begins, for example 48 hours, and it keeps running from that moment no matter how often they reopen.

That last part matters. A countdown that restarts on every open always says 48 hours. Shoppers notice, and a deadline that never arrives stops working. With flashtimer the second open shows the time actually left. The per-recipient value in the link is hashed before it is stored.

The timer is an animated GIF rendered at the moment of opening, so it always shows the real time left. Because it is just an image link, it works in any platform that shows images. Read more about evergreen countdown timers that start on each reader's first open.

Abandoned cart email sequence timing: 1 hour, 24 hours, 48 hours

According to the Baymard Institute's cart abandonment research, the documented average online cart abandonment rate is 70.22%, and 42% of US shoppers say they were “just browsing” when they left. Many shoppers who abandon will come back without a discount, so save the countdown for the emails where a deadline actually exists.

A three-email flow is the common starting point. Treat these delays as defaults to test against your own data, not fixed rules:

  • Email 1, about 1 hour after abandonment. A plain reminder: product image, price, “Return to cart” button. No discount, no timer. Subject: “Still thinking it over?”
  • Email 2, about 24 hours. Introduce the offer, for example 10% off with a code that expires 48 hours later, with the evergreen timer under the button. Subject: “10% off your cart, for 48 hours”.
  • Email 3, about 48–72 hours. Last chance. Embed the same timer: because it started at the shopper's first open of email 2, it now shows only the hours they have left. Subject: “Your code ends tonight”.
  • Exit condition. Make sure the flow stops as soon as the shopper places an order, so nobody gets a countdown for something they already bought.

Abandoned cart email copy that pairs with a timer

The timer does the urgent part, so the copy can stay calm and specific. Lead with the cart itself, then the offer, then the deadline in plain text. For example: “You left the Linen Throw in your cart. Use CART10 for 10% off. Your code expires 48 hours after you open this email.” Then the timer, then the button.

Always restate the deadline in words. Classic Outlook for Windows (2007–2019, and newer versions with Windows animations turned off) shows only the first frame of a GIF, which is still the correct time left at the moment of opening but does not tick. Text also covers readers who block images. Put the deadline in the preheader as well, for example “Your 10% code expires in 48 hours.”

For more subject line patterns, see our subject lines for time-limited sales. Keep them short, name the product or the offer, and never promise a deadline that does not exist.

Honest urgency in cart recovery emails

A countdown is a promise. If the discount still works the day after the timer hits zero, shoppers learn your deadlines are decoration, and every later countdown loses its pull. Only add a timer when the code really expires on the same window. If your platform generates unique discount codes, set their expiry to match the timer's length.

No discount in the flow? Then skip the timer, or count to something real, like the end of a sitewide sale that is already running. Do not use a countdown to suggest you are holding stock unless your store actually reserves it. We cover the reasoning in the psychology of urgency in email.

Shopify and Klaviyo abandoned cart countdown timer setup

Klaviyo. Open your Abandoned Cart flow, add a block to email 2 and email 3, and paste the snippet. It uses {{ person.KlaviyoID }}, so every profile gets its own countdown. See the full Klaviyo countdown timer setup.

Shopify. Connect your store on Pro and up and flashtimer creates the starter abandoned-cart timer on your first started checkout, once Shopify has approved the connection for protected customer data (until then it doesn't send checkout events). It only uses the checkout event as a signal and never reads customer or cart data. Embed it in whichever platform sends your recovery emails. In Shopify Messaging, paste the HTML snippet into a Custom Liquid section rather than an image section, which would upload a frozen copy. For a per-shopper countdown, check that your platform's snippet includes a per-recipient merge tag. More in the Shopify email countdown timer guide.

Any other platform. Omnisend, Mailchimp, HubSpot, ActiveCampaign, Brevo and the other platforms with a per-recipient merge tag each have a ready-made snippet that includes it. Paste it into an HTML block and test with two different addresses to confirm each gets its own clock.

Email client caveats for cart recovery timers

Gmail, Apple Mail, Yahoo and Outlook on the web, Mac and mobile all animate the timer. Gmail caches images through its proxy, so flashtimer serves the timer with no-cache headers and a reopen shows the current time.

Apple Mail Privacy Protection pre-fetches images before the shopper reads the email. By default those fetches get the live countdown, which starts an evergreen clock at delivery. On Pro and up, Apple Mail options let you show those loads a fixed message, your fallback image or nothing instead, so cached opens never show a stale countdown. Classic Outlook on Windows shows the first frame only, which is why the text deadline is not optional.

Questions

Answered before you ask.