Outbound webhooks
An outbound webhook posts to a URL you control whenever something you’ve chosen happens. It’s the usual way people connect Custom One to a CRM, an internal tool, or an automation platform.
Where to set one up
Section titled “Where to set one up”| Where | Covers |
|---|---|
| Integrations → Webhooks | the custom you choose — and lists the webhooks of all your customs |
| A custom’s Automation tab | that custom — on Outreach customs, and in beta on Quiz customs |
Both are views of the same thing: a webhook you add in Automation shows up in Integrations → Webhooks, and the other way round.
What you need
Section titled “What you need”A URL that accepts a POST request, starting with https://. Every automation
platform gives you one — in Make it’s a custom webhook trigger, in Zapier a Catch
Hook, in n8n a Webhook node. If you’re sending to your own application, it’s
whatever endpoint you’ve built.
Setting one up
Section titled “Setting one up”- Open Integrations → Webhooks and click New webhook — or, in a custom, open Automation and click New automation.
- In Integrations, choose the custom. Paste your URL.
- Choose which events should trigger it.
- Save it (Create webhook, or Turn on in Automation), then click Test: it sends a sample lead, as the first event the webhook listens for, so you can map the fields. Test webhook sent means we sent it — check that your tool received it.
A webhook works as soon as it is saved — it doesn’t wait for you to publish. One webhook can listen for several events, and you can have several webhooks.
The events you can choose
Section titled “The events you can choose”| Event | Fires when | event in the payload |
|---|---|---|
| Quiz completed | someone finishes answering | diagnostic.submitted |
| Video ready | their video has finished processing | diagnostic.completed |
| Lead started the video | they pressed play on their video | lead.video_started |
| Lead watched the video | they watched past the point that counts as watched | lead.video_watched |
| Lead clicked the CTA | they clicked the button under their video | lead.cta_clicked |
| Confirmation email sent | the Instant reply email went out | email.confirmation_sent |
| Result email sent | the Video delivery email went out | email.result_sent |
| Result SMS sent | the Delivery SMS went out | sms.result_sent |
| Lead marked as purchased | you marked the lead as purchased, through the API | lead.purchased |
On an Outreach custom, the Automation tab leaves out Quiz completed and Confirmation email sent: there is no quiz to complete.
Lead marked as purchased is a marker for tracking your own sales. You set it on a lead through the API; Custom One never sets it and does nothing with it. Neither screen offers it: only a webhook created through the API can listen for it.
Three of these fire once and only once
Section titled “Three of these fire once and only once”Lead started the video, Lead watched the video and Lead clicked the CTA each fire at most once per person, no matter how many times they reload the page or press play again.
That’s deliberate: it makes them a genuine engagement signal rather than a count of interactions. If you need every interaction, these events are the wrong source.
Quiz completed and Video ready are not the same moment
Section titled “Quiz completed and Video ready are not the same moment”Quiz completed fires as soon as someone finishes answering. Video ready fires when their video has finished being made, which is later.
If you’re sending someone their result, listen for Video ready — reacting to Quiz completed means acting before there’s anything to send.
When something doesn’t arrive
Section titled “When something doesn’t arrive”- Check the event, not the webhook. Most “it isn’t firing” turns out to be a webhook listening for an event that didn’t happen — waiting on Video ready for a custom where no video is produced, for instance.
- Check your endpoint accepts POST and answers within 10 seconds. An endpoint that takes longer looks like a failure from this side.
- Look for Stopped automatically in Integrations → Webhooks, or We stopped this automation in Automation. After ten failed deliveries in a row we switch the webhook off and email the workspace owners. Events that happen while it is off aren’t queued. Fix the destination, then switch it back on.
- Go through your own custom rather than waiting for a real visitor. It’s the fastest way to produce a real event.