Examples
Example 1 — Stripe Payment Webhook
Stripe sends a webhook on every payment event (success, failure, refund). This configuration accepts the POST from Stripe, validates it using an API key stored as a BizFirstAI credential, and immediately responds with 200 so Stripe does not retry. The workflow then processes the event asynchronously.
{
"node_type": "WebhookTrigger",
"name": "Stripe Payment Event",
"config": {
"path": "/integrations/stripe/payments",
"method": "POST",
"authentication": "apiKey",
"credential_id": "cred_stripe_webhook_secret",
"response_mode": "onReceived",
"response_status_code": 200,
"response_data": {
"received": true,
"execution_id": "{{ $trigger.execution_id }}"
},
"raw_body": false,
"max_payload_size": 1048576
}
}
payment_intent.succeeded event. BizFirstAI acknowledges immediately with {"received": true, "execution_id": "exec_..."}}. Downstream nodes update the accounts receivable system, send a customer receipt email, and log the transaction in the audit database — all without blocking Stripe's webhook delivery.
Example 2 — GitHub Push Event for CI/CD
GitHub sends a webhook when code is pushed to a repository. This configuration listens on a dedicated path, validates using GitHub's HMAC signature (stored as a Bearer credential), and waits for the full workflow result before responding — allowing BizFirstAI to return a deployment job ID to GitHub's webhook delivery log.
{
"node_type": "WebhookTrigger",
"name": "GitHub Push Event",
"config": {
"path": "/ci/github/push",
"method": "POST",
"authentication": "bearerToken",
"credential_id": "cred_github_webhook_hmac",
"response_mode": "lastNode",
"response_status_code": 200,
"response_headers": {
"X-BizFirst-Pipeline": "github-ci",
"X-Workflow-Version": "2.1"
},
"raw_body": false,
"max_payload_size": 2097152
}
}
200 with the job reference.
Example 3 — SAP ERP Inventory Change Sync
An SAP system fires a webhook whenever an inventory record is updated. The path uses a named parameter to capture the plant code, enabling a single workflow to handle updates from multiple facilities. Basic Auth ensures only the SAP integration middleware can call this endpoint.
{
"node_type": "WebhookTrigger",
"name": "SAP Inventory Update",
"config": {
"path": "/erp/sap/inventory/:plantCode",
"method": "PUT",
"authentication": "basicAuth",
"credential_id": "cred_sap_webhook_basic",
"response_mode": "onReceived",
"response_status_code": 202,
"response_data": {
"status": "queued",
"plant": "{{ $trigger.params.plantCode }}",
"queued_at": "{{ $trigger.received_at }}"
},
"raw_body": false,
"max_payload_size": 5242880
}
}
PLANT-EU-03 to /erp/sap/inventory/PLANT-EU-03. BizFirstAI extracts the plant code from the path, responds 202 Accepted, and then asynchronously syncs the changes to the WMS and e-commerce platform's inventory feed.
Example 4 — Shopify New Order Processing
Shopify posts an order creation webhook whenever a customer completes checkout. This configuration receives the full order object and immediately starts the fulfillment workflow while returning a minimal acknowledgment to Shopify.
{
"node_type": "WebhookTrigger",
"name": "Shopify New Order",
"config": {
"path": "/ecommerce/shopify/orders/created",
"method": "POST",
"authentication": "apiKey",
"credential_id": "cred_shopify_hmac_key",
"response_mode": "onReceived",
"response_status_code": 200,
"response_data": {
"ok": true
},
"raw_body": false,
"max_payload_size": 2097152
}
}
Example 5 — Datadog Alert Escalation
A Datadog monitoring alert fires when a critical metric threshold is breached. This configuration receives the alert payload and immediately routes it to the on-call team via PagerDuty, creates a JIRA incident ticket, and sends an SMS to the infrastructure lead.
{
"node_type": "WebhookTrigger",
"name": "Datadog Critical Alert",
"config": {
"path": "/monitoring/datadog/alerts",
"method": "POST",
"authentication": "apiKey",
"credential_id": "cred_datadog_webhook_key",
"response_mode": "onReceived",
"response_status_code": 200,
"response_data": {
"alert_received": true,
"escalation_started": true,
"execution_id": "{{ $trigger.execution_id }}"
},
"raw_body": false,
"max_payload_size": 524288
}
}