Skip to main content
Supabase is the engine. It holds the database every other system reads, runs the sync with Zoho in both directions, and runs the workers that talk to QuickBooks, Twilio, Stripe, Resend and the app. The app, the pay page and the website talk only to it.

The parts

When Zoho refuses the login refresh

The engine holds one Zoho login token, shared by every worker and refreshed when it expires. Zoho refuses a refresh when too many arrive in a row, and scripts run by hand against Zoho use the same allowance.
  • A blocked refresh shows as one urgent Deliveries and logins condition, “oauth: credential rotation is blocked”, so one Sentry issue and one email.
  • A queued message gets 10 tries with a growing pause between them, so the queue rides out a brief refusal on its own. Past the tenth try the message becomes a dead letter; see Redrive a dead letter.
Two scripts refreshing the Zoho login within a few minutes of each other trip the CRM’s limit, and inbound sync stalls until the refusal lifts.

Backups

Supabase keeps a daily physical backup of the database. Point-in-time recovery is switched off. A plain logical dump does not include the queue tables, because they belong to the queue extension rather than to our schema, so a restore rehearsal must start from a physical backup.