Skip to main content

Webhooks: Send Ellipsend Events to Your Own Tools

Get a notification in your own system the moment something happens in Ellipsend: a new message, a label added, a stage change, a follow-up coming due.

A webhook sends a notification from Ellipsend to a web address you choose, the moment something happens to a contact. Your CRM, your Slack, your own dashboard, or an AI agent can react to it right away. You pick which events you want, and Ellipsend posts each one to your endpoint as it happens.

Webhooks live in Settings → Integrations → Webhook. The page has two cards: API Keys, where you create the key that lets you manage your webhooks, and Subscriptions, where you set up what gets sent where.

In this guide

Create an API Key

Your API key is what identifies your account when you manage subscriptions, whether you do it from this page or from the API. Create one on the API Keys card and store it somewhere safe. Treat it like a password: anyone with the key can change where your events go.

Subscribe to Events

On the Subscriptions card, add a subscription with three things.

  • Target URL. The HTTPS address Ellipsend should post to.

  • Secret. A string you choose. Ellipsend signs every delivery with it, so your endpoint can confirm the event came from Ellipsend and not from someone who guessed your URL.

  • Events. Tick the events you want. Each contact-change family (labels, assignments, relationships, stages, campaigns, activities) has Created, Updated, Deleted, and All changes.

Behind the scenes, Ellipsend stores one subscription per event, all pointing at the same URL and secret. That's why the list on the card shows one row per event: you can pause or delete a single event without touching the rest.

The Events You Can Subscribe To

Conversation events

  • new_message, new_comment, new_story_reply, new_button_clicked. A contact DMs you, comments on a post, replies to a story, or taps a button you sent.

  • message_sent_outbound. An echo of your own outgoing messages. Don't trigger a send from this one, or you'll loop.

  • new_followup_due. A scheduled follow-up has come due. Carries the contact, the draft, and the saved response if one was attached. See Schedule Follow-Ups.

Contact-change events

  • email_changed, phone_changed. A contact's email or phone number was captured or updated.

  • Labels, assignments, relationships, stages, campaigns, activities. Choose All changes to get every change in that family as one event (label_changed, assignment_changed, and so on), or choose only Created, Updated, or Deleted to hear about one kind of change. Deleted means the label, stage, or other item was removed from the contact, not that you deleted it from Settings.

Account events

  • user_data_deletion_requested. Added to every new subscription automatically, so your system can honor a deletion request.

If you subscribe to both All changes and, say, Deleted for the same family at the same URL, you get one delivery for a deletion, not two. The event tells you which operation it was.

Manage Your Subscriptions

Everything on the Subscriptions card can be changed after the fact. Edit the target URL or the secret when you move your endpoint, switch a subscription off to pause it without losing its setup, and delete it when you're done. The same four operations are available from the API, so a developer can script them.

Do It From the API

Everything on the page is also an HTTP API at https://webhook.ellipsend.com. Send your key in the x-api-key header on every request.

  • GET /subscriptions lists every subscription on your account.

  • POST /subscriptions creates one or more. Send target_url, secret, and either event_types as a list or event_type as a comma-separated string.

  • GET /subscriptions/{id}, PATCH /subscriptions/{id}, and DELETE /subscriptions/{id} read, update, and remove one subscription. PATCH takes target_url, secret, is_active, and legacy.

The full reference, with request and response examples you can try, is at webhook.ellipsend.com/docs.

How Delivery Works

Ellipsend posts each event to your target URL as JSON. Your endpoint should answer with a 200 response as soon as it has the event. If it doesn't, Ellipsend retries up to 5 times. Every delivery is signed with the subscription's secret.

The Legacy toggle keeps Meta's contact IDs in the payload instead of Ellipsend's own contact IDs. Leave it off for anything new. Turn it on only if you built against the older webhook format and aren't ready to change your code.

Frequently Asked Questions

Should I pick All changes or the individual Created, Updated, and Deleted events?

Pick All changes when your system just needs to know something changed and will look up the contact. Pick the individual ones when you only care about one direction, like a label being removed.

My endpoint isn't getting anything. What should I check?

Make sure the subscription is switched on, the URL is HTTPS, and your endpoint answers 200. If it answers anything else, Ellipsend keeps retrying and then gives up.

Why is my system sending a message every time I send a message?

You're subscribed to message_sent_outbound, which echoes your own sends. Either drop that event or make sure your handler never sends in response to it.

Can I have more than one endpoint?

Yes. Create a separate subscription for each URL. They can listen to the same events or different ones.

Related

Did this answer your question?