Customers complain their plan didn't upgrade. You check logs. Webhooks came through. You check the DB. Old plan. You check Stripe. New plan. What.
Payment succeeds Subscription created invoice.paid
arrives before c.subscription.created
. Good luck.
Why is invoice in_1MtHbEdIOzzPMv
showing up as PAID in Stripe but OPEN in our app?
Is this webhook a retry of the one from 3 minutes ago, or a new event? Time to check if you've seen this event.id
before…
Let's run a script to fetch all new customers records and patch our DB. Actually, screw it. Let's just re-sync all data from Stripe. Again.
We talk more about it here.
Every day spent debugging Stripe webhooks is a day not spent growing your business
You'll get a single unified webhook covering the entire sequence of events. Or, skip webhooks entirely using Instant Access or Deep Sync mode.
Whether we get the same webhook once, twice or a 100 times, your app will get it once. No duplicates. No out of order events. No fuss.
Want LIVE Stripe data? Done. Want to fetch 1000 customers or subscriptions per second? Done. Want it within 100ms? Done.
Duh. Let's start with not pissing off customers who just paid you by showing that they PAID instead of PENDING because of webhook glitches.
If there is state drift, let Sanebase handle it. You can stay in bed, knowing that your app is always in sync.