Files
Alejandro Gutiérrez 3527e732d4 feat: turbostarter boilerplate
Production-ready Next.js boilerplate with:
- Runtime env validation (fail-fast on missing vars)
- Feature-gated config (S3, Stripe, email, OAuth)
- Docker + Coolify deployment pipeline
- PostgreSQL + pgvector, MinIO S3, Better Auth
- TypeScript strict mode (no ignoreBuildErrors)
- i18n (en/es), AI modules, billing, monitoring

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 01:01:55 +01:00

1.3 KiB

title, description, url
title description url
Webhooks Handle webhooks from your billing provider. /docs/web/billing/webhooks

Webhooks

TurboStarter handles billing webhooks to update customer data based on events received from the billing provider.

Occasionally, you may need to set up additional webhooks or perform custom actions with webhooks.

In such cases, you can customize the billing webhook handler in the billing router at packages/api/src/modules/billing/router.ts.

By default, the webhook handler is configured to be as straightforward as possible:

import { webhookHandler } from "@turbostarter/billing/server";

export const billingRouter = new Hono().post("/webhook", (c) =>
  webhookHandler(c.req.raw),
);

However, you can extend it using the callbacks provided from @turbostarter/billing package:

import { webhookHandler } from "@turbostarter/billing/server";

export const billingRouter = new Hono().post("/webhook", (c) =>
  webhookHandler(c.req.raw, {
    onCheckoutSessionCompleted: (sessionId) => {},
    onSubscriptionCreated: (subscriptionId) => {},
    onSubscriptionUpdated: (subscriptionId) => {},
    onSubscriptionDeleted: (subscriptionId) => {},
    onEvent: (rawEvent) => {},
  }),
);

You can provide one or more of the callbacks to handle the events you are interested in.