How it actually works
Verify the events: subscription created, skipped, paused, cancelled, charge failed. Map each to a profile property. Then exclusions: subscribers out of first-order discounts and out of win-back that assumes they left.
Dunning: email/SMS on fail, a retry window, a human task if they reply 'cancel.' Access or next box follows the rule you wrote — not a surprise on the doorstep.
Subscriber vs one-time is a hard split. Acquire coupons never hit paying subscribers. Skip and pause are states. Dunning is a finite path with a human if they reply. Placed Order and subscription events must both be trustworthy.
Subscribers get acquire coupons; one-time buyers get nothing that matches a clock — that is two missing wires. Subscriber vs one-time is a hard split. Dunning has a human save path. Skip/pause is a state, not a lost customer, and acquire coupons never hit paying subscribers. Recharge (or equivalent) is the billing truth; Klaviyo must read those properties or it will lie.
Wire subscription events: created, paused, skipped, cancelled, charged, failed. Each updates the profile. Flows: onboarding for new subs (different from one-time post-purchase), dunning, cancellation save, skip reminder. Campaigns exclude active subs from first-order discounts. One-time replenish remains for people not on sub. Do not mash them.
Two databases: Recharge portal emails and Klaviyo both dunning, plus Shopify notifications. Pick owners per job. The intern creates, pauses, and cancels a test sub. They do not plan a 'subscriber VIP brand moment' until exclusions are true. A VIP moment that is a coupon is still an acquire coupon. Paying people notice.