Skip to main content

Documentation Index

Fetch the complete documentation index at: https://help.maestra.io/llms.txt

Use this file to discover all available pages before exploring further.

A webhook is a small, automated message Maestra fires off to another service the instant something happens — a customer signs up, places an order, hits a loyalty tier, abandons a cart. Instead of the other service constantly asking “anything new yet?”, Maestra Platform tells it directly.

What you can do with webhooks

Trigger external workflows

Notify your helpdesk, warehouse, or any other tool the moment a customer takes an action.

Sync data in real time

Push customer attributes, order details, or loyalty status to any third-party tool.

Send to custom channels

Reach Telegram, WhatsApp Business, voice bots, or any service with an API.

Pull data into flows

Use the webhook’s response to branch a flow or personalize the next message.

How it works

Setting up a webhook in Maestra Platform is a two-part job:
1

Create an integration

The integration holds everything shared across your webhooks for a given service: the base URL, auth headers, and rate limits.
2

Create the webhook itself

The webhook defines the specific endpoint, HTTP method, request body, and what to do with the response. You can have many webhooks under one integration.
Think of the integration as the “account connection” and the webhook as an individual “action.”

Part 1: Create the integration

1

Open Integrations and click Add Integration

Add integration button
2

Pick the Webhook Integration preset

Webhook integration preset
3

Name your integration

Use something a teammate will recognize three months from now — for example, Shopify Order Sync or Zendesk Ticket Webhooks.
4

Set the root URL

This is the base URL all webhooks in this integration will share. You can either:
  • Put the full URL here and leave the path blank on individual webhooks, or
  • Put only the root here and let each webhook add its own path.
Example: Maestra’s own API uses https://api.maestra.io/v3/operations/ as a root. You’d set that once on the integration, then each webhook only needs to add the specific operation ID.
Root URL setup
5

Set a request rate limit (optional)

If the receiving service has a rate cap, set the max requests per second here. All webhooks in this integration share this budget.
The actual rate can vary slightly due to network delays. Set the limit a little below what the service can handle to stay safely under the cap.
Rate limit setting
6

Add headers

Headers that apply to every webhook in this integration go here. The most common ones:
HeaderPurpose
AuthorizationAPI key, bearer token, or basic auth credentials
Content-TypeUsually application/json for modern APIs
Custom headersAnything else the receiving service requires
Mark any header containing a token or secret as private. Teammates without integration access won’t be able to see the value when they’re building webhooks.
Headers setup
7

Save

Your integration is now ready, and you can start adding webhooks to it.Saved integration

Part 2: Create the webhook

1

Add a new webhook

Open it from the integration page, or go to Integrations → Webhooks.Add webhook from integrationWebhooks list
2

Fill in the basics

FieldWhat it’s for
NameWhat teammates will see in the flow builder and campaigns list.
System nameA unique ID used to reference this webhook’s response. Use lowercase and hyphens, e.g. shopify-create-order.
DescriptionOptional. Drop a sentence here so future-you remembers why this exists.
MethodGET, POST, PUT, PATCH, or DELETE — whatever the receiving service expects.
URLThe path that gets appended to the root URL from your integration. Leave blank if the integration already has the full URL.
URL previewShows the full assembled URL. Read-only — just for sanity-checking.
Webhook basic settings
3

Add an idempotency key (recommended)

By default, a webhook is sent once. If the receiving service returns a 5xx or 429 error, the request is gone.Adding an idempotency key tells Maestra Platform to safely retry — up to 3 times over 6 minutes — without the receiving service treating the retries as new, duplicate events.Use the template variable:
${WebhookRequest.TransactionalId}
You can put it in the URL, a header, or the request body. Where it goes depends on what the receiving service expects.
Check your service’s API docs before adding this. Some services expect a specific parameter name (Idempotency-Key, request_id, etc.) or a particular format. If the service doesn’t recognize it, you won’t get retry protection.
Append it after a ?:Idempotency key as first query paramIf the URL already has query parameters, use & instead:Idempotency key as additional query param
Many APIs (Stripe-style) expect it as a header like Idempotency-Key: ${WebhookRequest.TransactionalId}.
Drop it into your JSON payload as a field the receiving service expects, e.g. "request_id": "${WebhookRequest.TransactionalId}".
4

Set webhook-specific headers

Headers from the integration are inherited automatically. You can:
  • Turn off an inherited header by unchecking Use.
  • Add extra headers that only apply to this webhook.
Both inherited and webhook-specific headers go out with the request.Webhook headersIn the example above, the final headers sent are:
Content-Type: application/json
webhookHeader: test
5

Build the request body

Drop in a JSON payload and pull in customer data using dynamic parameters from the message template engine.You can use:The right-hand sidebar has the full variable picker.Request body editor
6

Capture the response (optional)

If the receiving service sends back data you want to use later in your flow — an order number, a status, a tracking link — capture it here.Once captured, you can:
  • Branch the flow based on whether the call succeeded
  • Personalize the next message with values from the response Webhook response capture
For the full walkthrough, see How to use webhook responses in flows.
7

Save

Save webhook

Cloning a webhook

If you need a near-duplicate (same auth, different endpoint or payload), open the webhook’s menu and click Copy — faster than rebuilding from scratch. Copy webhook

Troubleshooting and monitoring

Once your webhook is live, the Webhook Logs view is your source of truth for what was actually sent, what came back, and where things went wrong.

Use webhook responses in flows

Branch flows or personalize messages with data the receiving service sends back.

Webhook logs

Inspect every request and response for debugging and auditing.

Webhook-powered campaign content

Pull live data from an external service into your campaign content.

Message template engine

Reference for variables, conditionals, and loops in your request body.