Integration recipes

Integration recipes

Stack-specific checks and remedies for the integrations that break the most. Click a recipe to see what we look for and how to fix it.

Recipes are educational checks — they don't mean a provider is connected. See Connections for live integrations.

Advanced recipes unlock on Pro.Upgrade

Supabase

Auth, RLS and the service-role key are where most Supabase apps break in production.

What we check
  • NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY are present and match the project ref.
  • SUPABASE_SERVICE_ROLE_KEY is referenced only in server code paths, never under NEXT_PUBLIC_.
  • Tables enabled for the Data API have RLS turned on and at least one policy per CRUD action used by the app.
  • Auth redirect URLs include every preview, production and custom domain.
  • GRANT statements exist for every public table — RLS without grants returns a permission error from PostgREST.
How to fix
  1. Move service-role usage behind a server function or route handler and rotate the key if it was ever bundled.
  2. Add `auth.uid() = user_id` policies for SELECT/INSERT/UPDATE/DELETE on every user-scoped table.
  3. Register every preview domain (e.g. *.vercel.app) in Authentication → URL Configuration.
Run a diagnosis

Stripe Webhooks

Pro

Most Stripe outages in deploys are signature mismatches, wrong endpoint mode, or the wrong webhook secret per environment.

Unlock on Pro

OpenAI & Anthropic

Pro

AI provider failures in production are almost always missing keys, wrong project scope, or rate-limit blowups without backoff.

Unlock on Pro

Clerk & Auth0

Pro

Auth providers usually fail in production because of mismatched URLs, JWT template drift, or middleware that runs in the wrong runtime.

Unlock on Pro