Skip to main content
Inngest runs the durable workflows that power the payment lifecycle. Instead of cron jobs or long-running workers, Inngest provides event-driven step functions that survive server restarts, network failures, and cold starts.

Why Inngest

Without Inngest, you’d need:
  • A polling cron to check pending sessions
  • A background worker for payment verification
  • A retry queue for webhook delivery
Inngest replaces all of these. The app defines 5 functions; Inngest manages their execution.

The 5 functions

Getting started

  1. Create a free account at app.inngest.com.
  2. Create a new project.
  3. Go to Manage → Event Keys and copy your Event Key.
  4. Go to Manage → Signing Keys and copy your Signing Key.

Environment variables

Without these, the app runs in local dev mode (uses pnpm inngest:dev) and won’t connect to Inngest Cloud.

Registering the app

After your first Vercel deployment:
  1. In the Inngest dashboard, click Add app.
  2. Enter your app URL: https://your-app.vercel.app/api/inngest
  3. Inngest will discover all 5 functions automatically.
Every subsequent Vercel deployment re-registers the functions — no manual step needed.

Pricing

Inngest charges per step. One complete payment flow uses approximately 4 steps:
  • 1 step in sessionLifecycle (subscribe address + sleep)
  • 1–2 steps in paymentVerify (verify + finalize)
  • 1 step in webhookDeliver (deliver event)
The free tier includes ~50,000 steps/month — enough for roughly 12,000 payments.

Local development

For local development, start the Inngest dev server alongside the web app:
Visit http://localhost:8288 to see function runs, replay events, and debug workflows.

Recovery after an outage

If Inngest is unavailable during active sessions, re-emit lifecycle events after it recovers:
This re-emits session/created events for all in-flight sessions. Each event is deduplicated by session-{id} so running it multiple times is safe.