Cart-recovery emails work best with a concrete reason to act now: "your cart is held for 24 hours", "your 10% code expires tonight". UrgencyKit puts that deadline in the email as a live countdown image — and because every shopper abandons at a different moment, each one sees a countdown to their own deadline.
Your cart-recovery flow already knows when each shopper abandoned. Store their deadline —
abandonment time plus your hold window — in a profile or event property, and swap the embed's
?end= value for that merge tag:
In Klaviyo that's a profile or event property; in
Mailchimp a merge field; in
Brevo a contact attribute. The ?end= value accepts a
Unix timestamp or ISO 8601 date. Every open renders that shopper's remaining time — this is an
evergreen countdown, so the flow never needs a shared
campaign deadline.
?end= is supplied.?end= value for your flow's deadline property.Most flows send two or three recovery emails. The same personalized embed works in all of them — the one-hour-later email shows nearly the full window, the next-day email shows the final hours, and both stay accurate if the shopper reopens them. When the hold expires, the timer switches to a custom expired state — an invitation back to the store instead of a dead countdown promising a hold that's gone.
Copy the UrgencyKit embed into your recovery flow, and swap the ?end= value for the
property where your flow stores each shopper's deadline.
Yes — the countdown renders against each recipient's own deadline, counting from their own abandonment.
The timer switches to a custom expired state, so late opens see an invitation back instead of a lapsed countdown.
Klaviyo, Mailchimp, Brevo, HubSpot, ActiveCampaign — any platform whose flows can insert a per-recipient deadline as a merge tag.