integration
Relaypath
Optional Relaypath-backed outbound webhook dispatch without making it a required transport.
Verify provider requests from raw bytes, claim events transactionally, enqueue normalized work exactly once, and keep provider parsing outside domain handlers.
available
Verify signatures against untouched request bytes through provider adapters before parsing or trusting payloads.
Packages
available
Claim provider event IDs and enqueue normalized work in one application-owned persistence transaction.
available
Translate GitHub, Stripe, or custom event envelopes into one stable receipt shape while leaving domain interpretation to consumers.
integration
Optional Relaypath-backed outbound webhook dispatch without making it a required transport.
framework
Compose Playstack server contracts, React bindings, SSR handoff, and route adapters at the Next.js application edge.
framework
Connect portable Playstack capabilities to dependency injection, guards, decorators, request context, workers, and lifecycle hooks.
integration
Connect OAuth credentials, GitHub App installation tokens, and verified webhook delivery through explicit Playstack boundaries.
integration
Create hosted subscription and one-time checkout, then reconcile verified Stripe events into separate billing and payment projections.
integration
Persist Playstack capabilities through explicit application-owned Prisma clients, transactions, and managed schema fragments.
integration
Dispatch and process typed Playstack jobs through BullMQ with explicit Redis ownership and native queue access.
integration
Dispatch portable Playstack queue jobs through Inngest and serve the generated functions from Next.js, NestJS, or another supported framework.
Signature verification happens before JSON parsing, body transformation, or domain dispatch. Framework adapters must expose the original bytes and normalized headers at this boundary.
import {
createWebhooks,
githubWebhookProvider,
} from '@playstack/webhooks'
const webhooks = createWebhooks({
providers: [githubWebhookProvider({ secret: config.github.webhookSecret })],
persistence,
queue,
clock,
})
const result = await webhooks.receive('github', {
headers: requestHeaders,
body: rawBody,
})The receipt claim and queue handoff use the same transaction kind. A provider retry returns duplicate rather than creating another job, while a rolled-back enqueue leaves the event claim available for the next attempt.
The provider adapter identifies the provider, event ID, event type, verified payload, and receipt time. Billing, repository automation, delivery feedback, and other consumers remain responsible for interpreting the event under their own policies.