Authorization header, Mio finds or creates the contact by email, and every live automation bound to that URL starts for them.
Set it up
- Create the webhook. In the API,
POST /api/v1/teams/{team_id}/hubs/{hub_id}/inbound-webhookswith a name. The response carriesattributes.url, and once,attributes.secretandattributes.header. The secret is shown only this one time, so copy it now. The URL holds no secret and can be shown again. Your assistant can do the same with thecreate_inbound_webhooktool. - Bind an automation to it. Create an automation whose trigger has
event_typeautomation.inbound_webhook.receivedandinbound_webhook_idset to the webhook’sid. The webhook must belong to the same hub. - Publish and activate the automation before you test. A request that arrives while no live automation is bound is still answered
202, because202only means received. Nobody is enrolled, and that request is not replayed later. - Point Zapier or Make at the URL. Use a Webhooks action with method
POST, payload type JSON, the URL from step 1, and one header:Authorizationwith the valueBearer whk_<secret>(the response’sattributes.headergives the exact line). In Zapier that is Webhooks by Zapier → POST → Payload Type: json, withAuthorizationunder Headers; in Make it is the HTTP → Make a request module with body type Raw, content type JSON, andAuthorizationadded under Headers. - Map the fields (below), send a test, and check the automation’s enrollments.
What to send
One flat JSON object, up to 64 KiB.email is required; every other key is optional.
Mapping happens in Zapier or Make: name the keys after your custom field slugs. A text field takes a string, a number field a number, a yes/no field
true or false, a date field YYYY-MM-DD, and a single or multiple choice field the option id (an array of ids for multiple). Because the values are on the contact, a later branch step, an entry filter or a segment can use them.
Avoid enrolling someone twice
Zapier and Make retry on errors. Send anIdempotency-Key header with the id of the source record, for example the Typeform response id. Mio uses it per webhook: a repeat of the same key answers 202 with the original id and writes nothing, even if the body changed.
What the answers mean
If the secret leaks
The secret is the credential: anyone who holds it, together with the webhook’s URL, can create contacts in that hub and start its automations. The URL alone does nothing. If the secret appears somewhere it should not:- Rotate it.
POST .../inbound-webhooks/{id}/rotate(orrotate_inbound_webhook) returns a new secret once, and the old one stops working at once. The URL stays the same. Update theAuthorizationheader in Zapier or Make. - Or switch it off.
PATCHthe webhook withenabled: false. A switched-off webhook answers404. token_prefixis the first 12 characters of the secret. It is safe to show and lets you tell your webhooks apart.
Admin API
inbound_webhooks.
A sequence (drip campaign) cannot start on this event. Use an automation with an inbound webhook trigger and an
enroll_in_sequence step.