Give every subscriber their own discount code. It really expires.
Expiring Codes adds an Expiring offer step to your Kit automations. Each subscriber gets a one-use code made in your Stripe or Paddle account, with a deadline set right there. When the time is up, checkout refuses the code.

Connect your checkout
Paste a Stripe restricted key or a Paddle API key that can only make discounts.
Add the step
Drop "Expiring offer" into a Visual Automation. Pick the discount and how many hours it lasts.
Send the email
Add the "Expiring code" block to the next email. Each reader sees their own code and the exact deadline.
Why a code and not just a timer?
A countdown timer only changes what a page shows. The checkout behind it keeps taking the discount, and one shared code can be passed around long after the deadline.
Here, Stripe or Paddle holds the expiry date and the one-use limit. The deadline in your email is the same one your checkout uses, to the minute.

Questions
Which checkouts work?
Stripe (Payment Links, Checkout, invoices: anywhere a customer can enter a promotion code) and Paddle Billing.
What does Kit get?
Three custom fields on each subscriber: offer_code, offer_expires_at and offer_expires_text (like "Fri, Oct 10, 6:00 PM EDT", in your Kit time zone). Use them anywhere Kit takes merge tags, or drop in the ready-made email block.
What if someone goes through the automation twice?
They get the same code and the same deadline back. One subscriber, one code per offer.
Do you see my subscribers' emails?
No. Kit sends us subscriber ID numbers only. Details in the privacy policy.
What does it cost?
Free for 25 codes a month. Starter is $19 a month for 1,000 codes. Pro is $39 a month for 10,000. See pricing.