Webhooks
Receive webhook calls from third-party services and send them from your generated apps. Covered by primitives you already use: workflows, functions, and custom handlers.
Receiving Webhooks
Three options, pick by how much code you want to write:
Workflow trigger (zero code)
Create a workflow with a Webhook Trigger node. You get a stable URL; incoming requests fire the workflow. Best when you want to route, branch, send notifications, or chain calls without writing code.
Custom handler (lightweight)
Ask the generator for a webhook receiver and it emits a custom handler at /api/custom/{appId}/{name}. Best for one-shot processing co-located with your app.
Function (most control)
Write a Function in TypeScript or Python. You get full request access, can verify signing secrets, and can call other SDKs. Best when the webhook needs nontrivial validation or downstream calls.
Sending Webhooks
To call an outbound webhook from your app:
- From a workflow: use the HTTP Request node, configure method / URL / headers / body, and run it on whatever trigger fits (manual, schedule, event from another node).
- From a Function or custom handler: standard
fetch()in TypeScript orhttpx/requestsin Python. - From a scheduled agent: the agent is just Python; call your destination directly.
Security
A few non-negotiables for production webhook receivers:
- Verify the signing secret on every inbound request. Stripe, GitHub, Slack, etc. each ship one; reject if it does not match.
- Idempotency: third-party providers retry. Record the event ID before processing and short-circuit on duplicates (see the Stripe Connect handler pattern in the platform).
- Fast acks: respond 2xx quickly. If you have heavy work, enqueue it and process out-of-band.
- Allowlist source IPs where the provider publishes them.
Patterns
- Stripe webhook: Function that verifies the Stripe-Signature header and updates a row in your products table on
checkout.session.completed. - GitHub deploy hook: workflow that listens for push events on main and triggers a redeploy via an agent step.
- Form bounce: custom handler that receives a SendGrid bounce, marks the address invalid in your users table, and emails an admin.
FAQs
Does GenMB have a dedicated webhooks UI?▾
Which receiver should I pick?▾
How do I verify a Stripe / GitHub signing secret?▾
Can I send a webhook on a schedule?▾
Ready to build?
Create your first app for free, no credit card required.