For the complete documentation index, see llms.txt. This page is also available as Markdown.

Webhooks

A webhook is a way for one app to automatically send information to another the instant something happens. When something occurs with your Digital Mind, like a conversation wrapping up or a new contact arriving, Delphi packages up the full details of that event and delivers them straight to another tool of your choosing, in real time.

People use webhooks to keep everything in sync without lifting a finger: add every new contact to your CRM the second it appears, post to a Slack channel when someone important reaches out, or kick off an automation when a conversation ends. You pick what to listen for, and you pick where the news goes.

How to set one up

Setting up a webhook takes just a few minutes. Here is each step.

1. Give it a name

This is simply a label for your own reference, so you can recognize it later in your list. For example, "New contacts to HubSpot."

2. Add your endpoint URL

This is the web address where Delphi will send the information, and it is the bridge to your other tool. You can paste in a webhook URL from Zapier or Make, or point it at your own app or server. The address has to start with https:// for security.

3. Choose the events to listen for

Events are the specific things that can happen with your Digital Mind. Pick one or more to act as the trigger for this webhook:

Event
Fires when

Thread Session Ended

A conversation has settled and the full session is ready to fetch.

Visitor Message Sent

A visitor sent a message in chat. This is the only event that carries the actual message text.

Contact Created

A new contact was created from an import, the API, or conversation capture.

Contact Updated

A contact's profile, tags, or custom properties changed.

Contact Deleted

A contact was removed from the owner account.

Alert Triggered

An alert's condition matched a conversation.

Affiliate Product Mentioned

An affiliate product was recommended in an assistant message.

Phone Number Captured

A linked contact gained a phone number.

Contact Became Inactive

A contact crossed a whole-day inactivity threshold that you set.

4. Add filters (optional)

By default, every event of the type you picked is delivered. If you only care about some of them, add a filter so Delphi sends just the ones that match. Each event gets its own filter, with two modes:

  • Simple is the no-code option. For most events, you can deliver only when the person has certain tags, matching ANY of the tags you list or ALL of them. For Alert Triggered, you instead pick which specific alerts count, like "Founder Pitch" or "Customer Request"

  • Advanced is for fine-grained control, where you write an expression that spells out exactly what to match. Your Simple choices actually build this expression for you behind the scenes, so you can start Simple and peek at the Advanced version anytime.

Filters are checked the moment you save, so a typo gets caught right away. And if a filter ever fails, Delphi skips that delivery rather than sending you everything, so you never get a surprise flood.

5. Test against a sample event

Before you rely on it, click Test Against a Sample Event. Delphi sends a realistic example to your endpoint URL so you can confirm the connection works and your other tool receives what you expect. No need to wait for a real conversation to happen.

6. Save, then watch the delivery log

Once saved, your webhook is live. Every delivery is recorded in the delivery log, where you can see whether each one was delivered, failed, or skipped by a filter, along with the timing and the exact data that was sent. It is the place to confirm things are flowing, and the first place to look if they are not.

Frequently asked questions

  • How do I know a webhook really came from Delphi?

    The first webhook you create generates a signing secret, shown only once. Your app uses it to confirm each delivery genuinely came from Delphi and not someone pretending to be us, so save it somewhere safe. You can rotate it later, with a 72-hour overlap so nothing breaks mid-switch.

  • What happens if my endpoint is down when an event fires?

    Delphi keeps trying. If your endpoint is briefly down, Delphi retries up to 12 times with growing gaps between attempts, and your endpoint has 60 seconds to respond each time. After 5 failures in a row, it is paused as "unhealthy" until you turn it back on, so a broken tool cannot pile up forever.

  • Could I receive the same event more than once?

    Yes, on rare occasions. Delphi promises to deliver at least once, which sometimes means a duplicate. Each delivery carries a unique event id, so your tool can safely ignore one it has already seen. Zapier and most tools handle this for you.

  • How long can I see past deliveries?

    Each delivery record, including what was sent and what came back, is kept for 7 days in the delivery log.

Last updated