Webhooks let you automatically send chat data to your own servers or third-party services when events occur in Social Intents. Use them to sync leads with your CRM, archive transcripts, or trigger custom workflows.
Supported Events
| Event | Value | When It Fires |
|---|---|---|
| Chat completed | "" (empty/default) | When a chat is archived (answered or missed) |
| Offline message | "offline_message" | When a visitor submits an offline message |
| Lead captured | "lead" | When a new lead is captured |
Creating a Webhook
Register a webhook using the REST API:
POST /v1/api/apps/{widgetId}/webhook
Content-Type: application/json
X-SocialIntentsToken: YOUR_API_TOKEN
{
"target_url": "https://your-server.com/webhook/chats",
"event": ""
}
The response returns the webhook ID:
{"id": "webhook-uuid-here"}
Webhook Payload
Social Intents sends an HTTP POST with Content-Type: application/json to your target URL. The payload is a JSON array:
Chat Event Payload
[{
"id": "chat-uuid",
"appId": "widget-uuid",
"startDate": "2025-01-15T10:30:00Z",
"chatType": "Answered",
"visitorFullName": "Jane Smith",
"visitorFirstName": "Jane",
"visitorLastName": "Smith",
"visitorEmail": "jane@example.com",
"visitorPhone": "555-0199",
"visitorGroup": "Sales",
"agentName": "John",
"agentId": "agent-id",
"textBody": "Visitor: Hi there
Agent: Hello!",
"page": "https://example.com/pricing",
"referrer": "https://google.com",
"ip": "...",
"location": "...",
"duration": 120,
"visits": 3,
"visitorCustom1": "...",
"visitorConsent": "yes"
}]
Lead Event Payload
[{
"id": "lead-uuid",
"appId": "widget-uuid",
"appName": "My Widget",
"firstName": "Jane",
"lastName": "Smith",
"email": "jane@example.com",
"phone": "555-0199",
"group": "Sales",
"page": "https://example.com/pricing",
"addDate": "2025-01-15T10:30:00Z"
}]
Deleting a Webhook
DELETE /v1/api/apps/{widgetId}/webhook/{webhookId}
X-SocialIntentsToken: YOUR_API_TOKEN
Or delete a webhook across all widgets:
DELETE /v1/api/webhook/{webhookId}
X-SocialIntentsToken: YOUR_API_TOKEN
Automatic Cleanup
Webhooks that return HTTP 410 (Gone) or 500+ error codes are automatically removed. Make sure your endpoint returns a 200 status code on success.
Connection Settings
- Connect timeout: 2.5 seconds
- Método POST
- Content-Type: application/json; charset=UTF-8