Skip to main content
A webhook is a request Ciarem sends to your server when something happens in your account: a contact is created, a conversation is assigned, a customer writes in. You give Ciarem a URL, pick the events you care about, and each matching event arrives as a signed POST within seconds. Use webhooks when you want to react to changes instead of asking the API over and over whether anything is new. Typical uses:
  • Keep your own CRM or data warehouse in step with Ciarem contacts.
  • Notify a team in Slack when a conversation is assigned or closed.
  • Start an automation in your backend when a customer sends a message.
You don’t need webhooks to use Ciarem. They are a tool for developers who connect Ciarem to their own systems. You need a server that can receive HTTPS requests from the internet.

Before you start

Set up your first endpoint

1

Open Webhooks

Go to Settings, then Webhooks, and click Add endpoint.
2

Enter your URL

Paste the HTTPS address of your server under Endpoint URL. Add a description if you want to remember what the endpoint is for.
3

Pick the events

Leave Send all events on to receive everything, including event types added in the future, or turn it off and tick only the events you need. See the event catalog.
4

Copy the signing secret

After you save, Ciarem shows the endpoint’s signing secret. It starts with whsec_. Store it on your server: you use it to check that each request really comes from Ciarem. You can see it again later on the endpoint’s page with Show secret.
5

Send a test event

Open the endpoint, choose an event under Test event, and click Send test event. Ciarem sends it right away and tells you what your server answered.

What Ciarem sends

Every event is one POST request with a JSON body:

What your server must do

  1. Answer with a 2xx status within 10 seconds. Any 2xx counts as received. Anything else, including a redirect, a timeout, or a connection error, counts as a failure and is retried.
  2. Verify the signature before acting on the body. See Verify signatures.
  3. Answer first, work later. If handling an event takes time, save it to a queue and return 200 right away. Ciarem does not read your response body.
  4. Expect duplicates and out-of-order events. The same event can arrive more than once, and two events can arrive in a different order than they happened. See Duplicates and order.
  5. Ignore what you don’t recognize. New event types and new fields are added over time. Skip unknown type values with a 200, and don’t reject bodies with extra fields.

URL requirements

Ciarem only sends to URLs that are safe to call from the public internet:
  • The URL must start with https://. Plain http:// is refused.
  • The host must resolve to a public IP address. localhost, private network ranges (such as 10.x.x.x or 192.168.x.x), and link-local addresses are refused, both when you save the endpoint and on every delivery.
  • Your server must present a valid TLS certificate for that hostname.
  • Redirects are not followed. A 301 or 302 is recorded as a failed delivery, so register the final URL.
  • The URL can be up to 2,048 characters and may include a path, a port, and a query string.
To test against a server on your own computer, expose it through a tunnel that gives you a public HTTPS address, such as ngrok or Cloudflare Tunnel, and register the tunnel’s URL.

Limits

Next steps

Event catalog

Every event type and the exact body it carries.

Verify signatures

Check that a request comes from Ciarem, with code you can copy.

Deliveries and retries

Retries, the delivery log, sending again, and troubleshooting.