An inbound webhook lets any external tool start a Speak AI automation by sending it an HTTP request. Tools like Zapier, GoHighLevel, Make, or your own script can POST data to a unique URL, and your automation runs with that data available to every later step. For the basics of building automations, see How to use automations in Speak AI.
Add the inbound webhook trigger
Open the automation canvas and add a trigger step.
Choose Catch inbound webhook from the trigger list.
Save the automation. The Inbound URL field generates a unique URL for this automation. Until you save, the field shows Save this automation to generate the URL.
Copy the Inbound URL
After saving, the Inbound URL field shows a copyable link with a Copy button. It looks like this:
https://api.speakai.co/v1/webhook/in/<your-token>
The URL is unique to this one automation. Keep it private. Anyone with the URL can trigger the automation.
Send the data as an HTTP POST request to this URL.
Send a sample request so Speak AI learns the payload
Open the test step in the canvas. Under Send a request to this URL, the helper text reads Send a sample request to this URL so Speak AI can learn the payload shape. Send one real request from your external tool. Speak AI captures the fields from that request so you can reference them in later steps.
Use payload data in later steps
Once a field is captured, reference it with a token in any later step. The token format is:
{{trigger.payload.<path>}}
For example, if your request sends a contact object with an email, you can use {{trigger.payload.contact.email}} in a later step. Nested fields use a dot path.
View recent deliveries
The trigger shows a Recent deliveries list of incoming requests, newest first. Each delivery shows a status badge:
Captured: the request was received and its payload was captured as a sample.
Ran: the request was accepted and the automation ran.
Rejected: the request was refused, for example a failed signature check.
Error: another error occurred, shown with its code.
If No deliveries yet shows, no request has reached the URL. Deliveries are kept for 90 days.
Limits and optional signature checking
Rate limit: up to 60 requests per minute per URL and sending IP address. Extra requests get an HTTP
429response with the message Too many requests. Please retry shortly.Optional signature verification: if a signing secret is set on the webhook, each request must include an
x-speak-timestampheader and anx-speak-signatureheader in the formsha256=<hex-digest>. The signature is HMAC-SHA256 over the timestamp and the raw request body, and the timestamp must be within 5 minutes. Failed checks return an HTTP401. If no signing secret is set, the unguessable URL is the only control.
Next, chain a Speak Upload step after this trigger to transcribe a file URL from the payload automatically.
The fastest way to reach us is the live chat in the app (the chat bubble in the bottom corner). You can also email [email protected].
