Evergreen
Personal deadline
Per-visitor evergreen. First touch starts the clock for that buyer.
trigger: first_visit
deadline: 72h
surface: checkout + email Build real urgency around each buyer with deadlines that resolve to the right price, coupon, and countdown. Timers fully integrates with Plandalf checkout, and can also render on your site, Stripe page, or inside email.
The argument
Deadline type, coupon rules, visual treatment, test mode, and checkout handoff all read from the same promo record, so the timer cannot drift from the sale.
Time-based scarcity that's actually real
The countdown isn't theater. It's bound to a coupon's `expires_at` and a promo tier's window — so when zero hits, the next price resolves and the discount actually stops.
Visible everywhere your customer is
The same deadline renders on the checkout, on the marketing page, and inside the inbox. One source of truth, three surfaces.
Wired into your checkout
The same resolve call returns price, coupon, seconds_remaining and a redirect — so the engine fits a Plandalf checkout, Stripe Checkout, Shopify, or a custom form.
Set it and trust it
Test the promo end-to-end with a stub timeline. Once it's live, the deadline takes care of itself.
Variants
Theme any one of them. Drop into checkout, landing page, or email GIF — same engine.
Offer ends in
variant: clean
Offer ends in
variant: boxed
HURRY! Ends in
variant: urgent
Offer ends in
variant: minimal
Offer ends in
variant: neon
Offer ends in
variant: purple
Offer ends in
variant: light
Doors close in
variant: sunset
Early bird ends
variant: mint
Live now
variant: ocean
Offer ends in
variant: slate
Flash sale ends
variant: cherry
VIP pricing ends
variant: gold
Subscriptions close
variant: paper
> countdown.tick
variant: terminal
Pre-order ends in
variant: rose
Doors close at midnight
variant: midnight
Theme every variant down to color, font, and size. Same promo source — SVG on the web, animated GIF in email, both ticking the same deadline.
How it compares
Offers is built around the whole buying moment: layout, payment, pricing, add-ons, promotions, testing, and follow-up stay in the same offer engine.
Bound to a participant record — survives incognito, devices, and cleared cookies.
Cookie-based. Resets on incognito, on a new device, or when the user clears storage.
When zero hits, the next price tier resolves. The checkout sells the new price.
Timer hits zero, banner hides, page still sells at the same price.
Same engine renders an animated GIF. Per-recipient deadline via merge tag.
Separate add-on or different SaaS — and the deadline drifts from the on-site one.
Seven named styles (clean, boxed, urgent, minimal, neon, purple, light) — theme-able to color, font, and size.
One or two templates with a logo swap. Anything else is a custom dev job.
Launch promo combines both — price moves on date AND on units sold.
One dimension only. Pick a clock or a counter.
Same resolve call returns price, coupon, and seconds_remaining — route to any checkout you already run.
Vendor-locked. Lives inside one funnel builder.
Real `expires_at` on the coupon. When the timer hits zero, the code stops working.
Timer expires, coupon stays redeemable for weeks. Customers learn to wait.
Rehearse the full promo — tier resolution, countdown, coupon — with a stub timeline before flipping live.
Hope it works. Refund the test charges later.
capabilities compared across checkout design, pricing, promos, testing, and embedding.
Categories are honest summaries of how templated countdown tools behave today. We don't name names — you've used them.
A timer without an Offer is a clock with nothing behind it. A great Plandalf setup pairs an Offer (the checkout your customer sees) with a Timer (the promo that resolves the price). One record in Plandalf, one source of truth, one deadline across every surface.
Don’t add a timer to an offer that doesn’t actually have a deadline. Customers notice fake urgency, and a fake countdown poisons the well for the real ones later. Use timers when the deadline is real and worth communicating.
Use cases
Use case
Open enrollment for a week, close it cleanly, and redirect post-window traffic to a waitlist.
Guide
Stack an expiring coupon with a visible countdown and a promo banner. Test mode lets you rehearse before traffic shows up.
Guide
Embed a countdown GIF in the campaign — the same deadline that's enforced on the checkout.
Platforms
Timers plugs into the payment processors and platforms you already run. Each integration page lists supported capabilities, so builders can connect checkout, payment, invoices, webhooks, API work, and automation without guessing.
FAQ
Free playbook
The 10-step playbook for running a real launch window — sequencing the promo, the coupon, the email countdown, and the post-deadline redirect without any of them drifting out of sync.
Better together with Offers
Drives any checkout — Stripe Checkout, SamCart, Shopify, custom form. Deepest fit: Plandalf Timers + Plandalf Offers.
Stage 1 · Timers
Returns price, coupon, seconds_remaining, spots_remaining.
Stage 2 · Offers
Hosted page, bump, upsell, theme. Renders the resolved decision to the buyer.
Stage 3 · Save flow
Save offer reads the same live promo state — no second tool, no drift.
Timer types
Same resolve call. Different conditions. The engine returns the right price, the right coupon, and (where it makes sense) the right countdown.
Personal deadline
Per-visitor evergreen. First touch starts the clock for that buyer.
trigger: first_visit
deadline: 72h
surface: checkout + email Post opt-in
Short-window upsell right after opt-in. Great for the first hour.
trigger: subscribed
deadline: 60m
offer: one_time Shared deadline
Open cart, close cart. Everyone sees the same launch window.
starts: launch_open
ends: launch_close
mode: shared Segment push
Fixed window for everyone — Black Friday, day-of, weekend-only.
segment: warm_leads
deadline: 6h
coupon: FLASH Quantity or time
Ends on quantity or time, whichever happens first.
limit: 50
deadline: 24h
end_when: either Win-back
Bring a lost buyer back with a deadline that follows the cart.
trigger: cart_left
deadline: 23h
channel: email Video anchored
Timer opens and expires from the moment they watch.
trigger: video_75
deadline: 30m
surface: replay Page trigger
Starts when someone lands on a specific page or private link.
trigger: page_view
path: /private-offer
deadline: 48h Sitewide
A sitewide banner points every visitor to the campaign state.
surface: top_bar
deadline: shared
cta: /checkout Recurring
Recurring date range every year — summer, holiday, end-of-season.
season:
from: "06-01"
to: "08-31" Rolling
Weekly or monthly rolling deadlines without manual resets.
cadence: weekly
cohort: signup_week
deadline: sunday Launch waves
Multi-tier launch waves for waitlists, partners, and VIP cohorts.
waves:
- vip
- waitlist
- public
One resolve call. The engine returns price, coupon_code, seconds_remaining, spots_remaining, and an optional redirect_url.
Playbooks
Same engine, different shapes. Each one runs on a real promo tier — not a styled banner.
Flash sale ends
One sitewide deadline. Coupon dies at the same second the banner does.
VIP pricing ends
First 100 get founding price. After that, deadline closes the door.
Offer ends in
First touch starts a 48-hour clock that survives incognito and new devices.
Doors close at midnight
Same deadline ticks in the inbox and on the checkout — to the second.
Integrations
Promo resolves in Plandalf, ticks in your inbox, on your landing page, and at checkout — same record.
Plus a fully documented REST API and webhook layer for whatever's not in the list.
For developers
// Resolve a promo for the current visitor.
// Survives incognito, new devices, cleared cookies.
const promo = await plandalf.promos.resolve('launch_cohort_03', {
participant: 'visitor_8f2c4a',
});
// {
// price: 'price_founding_249',
// coupon_code: 'EARLY100',
// seconds_remaining: 7423,
// redirect_url: null,
// tier: 'founding_member'
// }
// Same call resolves identically on the checkout,
// the landing page, and the email GIF generator.
Switching over
Most templated tools have one promo type. Pick the matching Plandalf type — deadline, flash sale, early bird — and copy the deadline across.
One OAuth click. Coupons sync from your existing catalog so you don't lose attribution.
Pick one of the named variants or theme down to color, font, and size. This is the step that takes the longest — usually 20 minutes.
Drop the email GIF tag into your campaign. Webhooks update HubSpot, Klaviyo, or your CRM when a tier resolves.
Most teams have their first real promo live the same day. Nothing on the old tool stops working while you cut over.
Proof
11 min
First promo live
PLACEHOLDER — confirm. Median time from sign-up to first deadline going live.
8
Promo types out of the box
Deadline · launch · flash sale · early bird · seasonal · coupon · bundle · referral.
17
Countdown variants
Every one theme-able. Renders as live SVG or animated GIF.
0
Drift between surfaces
One promo record. Same deadline on the page, the email, the checkout.
In the wild
Drop counters at the market, expiring coupons at the cafe, launch windows on the founder's pitch — same promo engine, same source of truth.
Stock-aware early-bird tier — when the first 50 are gone, the price steps up automatically.
Coupon `expires_at` and the displayed countdown read the same record — they can't drift.
Animated GIF countdown in the campaign matches the banner on the checkout — to the second.
Pricing
Implementation paths
Use these paths when a builder needs to connect Timers to the right features, docs, integrations, stack guides, and comparison pages without guessing where the next implementation detail lives.
A deadline should change checkout behavior: coupon, price, redirect, quantity, save offer, or launch window. Keep the timer tied to the record that controls the offer.
Use embedded promos, email countdown GIFs, hosted landing pages, and checkout links from the same deadline state so the buyer sees one consistent campaign.
Timers works best when the resolved promo state lands in a Plandalf Offer with products, prices, coupons, order bumps, upsells, invoices, and automation.
Coupon expiration, usage limits, discount type, and deadline campaigns should live together so the promo cannot keep promising a price that checkout no longer honors.
When a timer expires, the resolved state can route into checkout, redirects, webhooks, automations, and sequences instead of stopping at a visual countdown.
Use the docs when a builder needs deadline campaigns, countdowns, coupon expiry, price tiers, and campaign state explained.
Create the promo record before wiring a launch window, flash sale, evergreen deadline, or expiring coupon into checkout.
Render the same deadline campaign on a site, app page, offer page, or checkout surface.
Use CTA links when the timer should move the buyer into a checkout, hosted landing page, or offer flow.
Use hosted landing pages when the campaign needs a deadline-aware page without rebuilding the whole site.
Use this stack to connect coupons, deadline campaigns, Offers, checkout behavior, email timers, and follow-up sequences.
Route the resolved promo state into Offers so products, prices, coupons, invoices, order bumps, and upsells stay aligned.
Compare Timers and Offers when the campaign needs both a deadline engine and a buying surface.
Take payment with