Reply.la Logo
For AI Agents

Outbound Webhooks

Send your Reply.la account events, like new messages and new contacts, to your own server or automation tool the moment they happen.

Outbound Webhooks send your account events to a web address you control, the moment they happen. A new message or a new contact can update your CRM or start an automation in a tool like n8n, Make, or Zapier, with no one copying data by hand.

Before You Start

  • Your plan - Webhooks depend on your plan. If yours doesn't include them, the page shows Webhooks are not in your plan yet with a View plans button.
  • Your role - You need permission to manage integrations.
  • A receiving address - You need an HTTPS address that can accept a POST request. Your automation tool or developer can give you one.

Add an Endpoint

An endpoint is the address that receives your events. Your organization can have up to 5.

  1. Click Integrations in the sidebar, then click Configure on Outbound Webhook. The Webhooks page opens.
  2. Click Add endpoint.
  3. Under Name, give it a name you'll recognise, for example "My CRM webhook".
  4. Under Endpoint URL, paste the address. It must start with https://. Custom ports and private or internal addresses are rejected.
  5. Under Channel filter, leave All channels or pick specific devices. See Channel Filter.
  6. Under Events, tick the events you want, or tick Select all.
  7. Click Create endpoint.
  8. In Save your signing secret, click Copy, store the secret somewhere safe, then click I have saved it.
The signing secret is shown only once. If you lose it, click Rotate on the endpoint to get a new one.

Events You Can Choose

Tick events one at a time, by group, or all at once. The key in code is the event name your server receives.

GroupEvents
Tokens & usageToken usage threshold reached (tokens.usage_threshold_reached), Tokens exhausted (tokens.exhausted)
Product activationChannel connected (channel.connected), Channel disconnected (channel.disconnected), Chatbot created (chatbot.created), Chatbot published (chatbot.published), Chatbot connected to channel (chatbot.connected_to_channel), Chatbot disconnected from channel (chatbot.disconnected_from_channel)
LabelsLabel assigned (label.assigned), Label removed (label.removed), Label created (label.created), Label deleted (label.deleted)
ContactsContact created (contact.created), Contact updated (contact.updated), Contact deleted (contact.deleted), Contact import completed (contact.import_completed), Contacts merged (contact.merged), Contact merge reverted (contact.merge_reverted)
MessagesMessage received (message.received), Message sent (message.sent), Message failed (message.failed)
ConversationsConversation started (conversation.started), Conversation window closing (conversation.window_closing)
AI handoverAI handover requested (ai.handover_requested), AI handover resolved (ai.handover_resolved)
BroadcastsBroadcast scheduled (blast.scheduled), Broadcast started (blast.started), Broadcast paused (blast.paused), Broadcast completed (blast.completed), Broadcast failed (blast.failed), Broadcast cancelled (blast.cancelled), Broadcast unsubscribed (blast.unsubscribed)

An endpoint subscribed to all events also receives events added in the future.

Deliveries carry customer details, such as message content and phone numbers. Only use an address you trust.

Channel Filter

Use Channel filter when an endpoint should only hear about certain WhatsApp devices. With All channels, nothing is filtered out, and devices you connect later are included.

Events badged Whole account always arrive, because they don't belong to one device.

Label assigned and Label removed only pass the filter when the label changed inside a conversation on a device you picked. A label changed from the Contacts page or the REST API is not delivered to a filtered endpoint. Use All channels if you need every label change.

Send a Test Event

  1. On the endpoint, click the send icon (Send test event).
  2. Pick one event.
  3. Click Send test event.
  4. Open the Delivery Log tab to see the result.

The test sends a sample payload in the same shape as the real event. The endpoint must be switched on, because a paused endpoint sends nothing. If you send too many tests in a short time, wait a minute and try again.

Verify a Delivery

Anyone can find or guess a web address, so your server should check that each request really came from Reply.la. This part is for your developer.

Each delivery is a POST with a JSON body and this header:

X-Replyla-Signature: t=UNIX_SECONDS,v1=SIGNATURE
  1. Read t and v1 from the header.
  2. Reject the request if t is more than 300 seconds away from your server's clock.
  3. Build the signed text: the value of t, a full stop, then the raw request body.
  4. Compute an HMAC SHA256 of that text, using the endpoint's signing secret as the key.
  5. Compare your result with v1 using a constant time comparison.
  6. Only then, read the body.

The Docs tab on the Webhooks page has the full reference: the request format, sample code in Node and PHP, and the exact payload of every event. Click Copy all as Markdown to hand it to a developer or an AI agent.

Your server should also:

  • Answer with any 2xx status within 10 seconds, or the attempt counts as failed.
  • Ignore duplicates by checking occurrence_key. The same event can arrive more than once, and events can arrive out of order.

Delivery Log and Retries

If your server doesn't answer with a 2xx, Reply.la tries again automatically, up to 3 attempts per event: about 30 seconds after the first attempt, then about 2 minutes after the second.

The Delivery Log tab shows the Event, Delivery, Endpoint, Status, Attempts, and Time of each attempt. History is kept for 14 days.

StatusMeaning
QueuedWaiting to be sent.
RetryingAn attempt failed, and another one is coming.
DeliveredYour server answered with a 2xx.
FailedAll attempts ran out.
  • Find a delivery - Use Search event or endpoint, or filter by status, endpoint, or event.
  • See what happened - Click View detail to see the request Reply.la sent and the response your server gave.
  • Send it again - Click Retry delivery on a Failed row, after you fix your server.
  • See one endpoint - On the Endpoints tab, click View delivery history on the endpoint.

Manage an Endpoint

Each endpoint on the Endpoints tab shows its status, address, and events.

StatusMeaning
ActiveEvents are being delivered.
PausedYou switched it off. Switch it on to resume delivery.
Auto-disabledReply.la turned it off after repeated delivery failures. Fix your server, then switch it back on.
  • The switch - Turn the endpoint on or off.
  • Edit endpoint - Change the name, address, channel filter, or events, then click Save changes.
  • Rotate - Get a new signing secret. The old secret stops working immediately, so deliveries fail until you update your server.
  • Delete endpoint - Remove the endpoint and its delivery history. This cannot be undone.

Common Questions

Last updated: 5 November 2026

Copyright © 2026