Webhooks
Webhooks let you receive workspace events in real time on your own endpoint. Whenever something happens (a conversation is created, a message arrives, a customer is updated…), Platica sends an HTTP request to the URL you configure.
Unlike Apps and REST API —where your agent queries outward—, webhooks go in the opposite direction: it's Platica that notifies your systems when something happens.
Each request is signed with HMAC SHA-256 (if you set a secret) and has automatic retries if your endpoint doesn't respond.
To start, click "Create webhook". The wizard has three steps: Endpoint → Events → Done.
Step 1: Endpoint
Define where and how events will be delivered.
| Field | Description |
|---|---|
| Name | How you'll identify this webhook (for example, "External CRM - production"). Up to 100 characters. |
| Endpoint URL | The address that will receive the events. It must be a publicly accessible URL (HTTPS recommended). |
| Active from the start | Whether the webhook starts delivering events immediately. You can pause it at any time. |
| Signing secret (optional) | A random string only you know. You can type it or use "Generate". |
| Custom headers | Extra HTTP headers (up to 10). Useful for sending your own tokens (for example, Authorization: Bearer ...). |
Validate authenticity with the secret. If you set it, each request carries the X-Webhook-Signature: sha256=<hmac> header computed over the JSON body. Your endpoint can recompute that HMAC with the same secret to confirm the event really comes from Platica.
Before finishing, use "Test delivery" to send a sample payload (with its HMAC signature) and see your endpoint's response. You can choose the test payload type (for example, "Generic ping").
Step 2: Events
Choose which events to subscribe to. There are 18 events grouped into four categories; select only the ones you need.
Conversations
Lifecycle of each conversation: creation, status changes, owners, tags, and expiration.
| Event | When it fires |
|---|---|
conversation.created | New conversation created in the workspace. |
conversation.status.updated | Conversation status updated (open, pending, finished, spam, …). |
conversation.operation.updated | Operation / pipeline assigned to the conversation. |
conversation.owners.updated | Conversation owners added or removed. |
conversation.tags.updated | Conversation tags added or removed. |
conversation.expired | Conversation expired (for example, WhatsApp's 24h window). |
Messages
Individual messages within a conversation: creation, update, and deletion.
| Event | When it fires |
|---|---|
message.created | New message created in a conversation. |
message.updated | Message updated (status, edited content, etc.). |
message.deleted | Message deleted. |
Customers
Changes to the customer profile: basic data, owners, tags, and custom fields.
| Event | When it fires |
|---|---|
client.created | New customer created. |
client.updated | Customer updated (basic data). |
client.owners.updated | Customer owners added or removed. |
client.tags.updated | Customer tags added or removed. |
client.customFields.updated | Changes to the customer's custom fields. |
WhatsApp Flows
Interactions with WhatsApp Flows. Your endpoint must respond with JSON in under 700 ms.
| Event | When it fires |
|---|---|
whatsapp.flows.init | Start of a WhatsApp Flow (action INIT from Meta). |
whatsapp.flows.screen_advance | Screen advance in the flow (action data_exchange). |
whatsapp.flows.back | Return to the previous screen (action BACK). |
whatsapp.flows.exchanges | "Umbrella" subscription: receives init, screen_advance, and back in a single webhook. |
WhatsApp Flows events require your endpoint to respond with valid JSON in under 700 ms. If your server takes longer, Meta cancels the flow. Use them only if you'll process interactive flows.
Step 3: Done
The webhook is created and Platica will start delivering events as soon as they happen.
From here you can "Back to list" or go to "View details", where you'll find the delivery logs for each event.
Managing your webhooks
The list shows all the webhooks you've created, with their status (active), whether they're Signed (a secret is configured), the URL, and how many events they're subscribed to. You can sort them by Recent or Alphabetical and search by name.
Webhook detail
Opening a webhook shows at a glance its status (Active), the URL, the signature (with or without a secret), and the number of subscribed events, plus a shortcut to Logs.
Recent deliveries lists the last 5 deliveries with their status, event, HTTP code, and latency. Use "Test" to send a test event (you can choose which one) or "View full history" to open the logs.
Configuration
From the configuration you can change the name, the URL, add or remove the signing secret, manage custom headers, and adjust which events it's subscribed to.
Delivery logs
The full history of delivery attempts for this webhook. Records are kept for 30 days and then deleted automatically.
At the top you'll see aggregate metrics: Total, Successes, Errors, Error rate, and P50 / P95 latencies. You can filter by All / Successes / Errors, filter by event, search, and Export the history as JSON or CSV.
Expanding a delivery shows its full detail:
| Field | Description |
|---|---|
| URL | The endpoint the event was delivered to. |
| Event ID | Unique identifier of the event. |
| HTTP | Your endpoint's response code (for example, 429 Too many requests). |
| Expires | Date when the record will be deleted (after 30 days). |
| Request body | The JSON payload Platica sent. |
| Response body | The response your endpoint returned. |
If your endpoint doesn't respond with a successful code, Platica applies automatic retries. Check the logs to diagnose failed deliveries (4xx/5xx codes, timeouts, etc.).