Codapult
PricingPluginsBlogDocsDemo

The SaaS Boilerplate for Builders

© 2026 Codapult. All rights reserved.

Built with Codapult

Product

  • Pricing
  • Plugins
  • Documentation
  • SaaS template comparison

About

  • Contact

Legal

  • Privacy Policy
  • Terms of Service
All articles

Getting Started

  • Introduction
  • Quick Start
  • Project Structure
  • License and Permitted Use

Configuration

  • Environment Variables
  • App Configuration

Authentication

  • Authentication
  • OAuth Providers
  • Two-Factor & Passwordless
  • Enterprise SSO (SAML)

Database

  • Database
  • Migrations

Teams

  • Teams & Organizations
  • Permissions & RBAC
  • SCIM Provisioning

Payments

  • Payments & Billing
  • Stripe Setup
  • LemonSqueezy Setup
  • Polar Setup
  • Payment Webhooks

Api

  • API Layer
  • tRPC
  • GraphQL

Ai

  • AI Features
  • Streaming Chat
  • RAG and Semantic Search
  • Quotas and Memory

Email

  • Email
  • Email Templates

Infrastructure

  • Infrastructure
  • Self-Hosting
  • File Storage
  • Docker
  • Background Jobs
  • Terraform & Pulumi
  • Kubernetes

Ui

  • UI & Theming

I18n

  • Internationalization

Content Management

  • Content Management

Admin

  • Admin Panel

Security

  • Security

Monitoring

  • Analytics & Monitoring

Modules

  • Module Architecture
  • Waitlist
  • Audit Log
  • White-Labeling
  • Workflow Automation
  • A/B Testing
  • Welcome Page
  • Referrals
  • GDPR Export and Deletion
  • Outgoing Webhooks

Plugins

  • Plugin System
  • AI Kit Plugin
  • CRM Plugin
  • Helpdesk Plugin
  • Email Marketing Plugin

Deployment

  • Deployment
  • Troubleshooting

Upgrading

  • Upgrading Codapult

Developer Tools

  • AI Agents & IDEs
  • MCP Server
  • Testing
Modules

Outgoing Webhooks

Let users subscribe to product events with HMAC-signed delivery, retries, and dead-letter replay.

Outgoing webhooks let your customers receive product events in their own systems. Codapult includes subscription management, HMAC signing, delivery records, retries, and dead-letter replay.

Key files

FilePurpose
src/lib/outgoing-webhooks/index.tsSubscription, dispatch, retry, and replay helpers
src/app/api/webhooks/outgoing/route.tsList/create webhook subscriptions
src/app/api/webhooks/outgoing/dead-letter/route.tsDead-letter queue and replay API
outgoing_webhook tableSubscription records
outgoing_webhook_delivery tableDelivery attempts and results

Dispatching an event

import { dispatchEvent } from '@/lib/outgoing-webhooks';

await dispatchEvent('subscription.created', {
  userId,
  subscriptionId,
  plan: 'pro',
});

Matching rules:

  • * receives every event.
  • user.* receives every user event.
  • payment.completed receives only that exact event.

Delivery format

Each delivery sends JSON with an event ID, event name, payload, and timestamp. Requests include:

HeaderPurpose
X-Webhook-IdSubscription ID
X-Webhook-SignatureHMAC-SHA256 signature
X-Webhook-EventEvent type

Retries and dead letters

Failed deliveries are retried with exponential backoff up to the configured maximum attempts. Deliveries that still fail are marked as dead-lettered and can be replayed from the admin endpoint.

Feature flag

ENABLE_WEBHOOKS="false"

When disabled, webhook dashboard and API surfaces return 404.

GDPR Export and DeletionPlugin System