Webhooks & REST API

Channels & Integrations

Webhooks & REST API

Conviro provides webhooks for real-time event notifications and a REST API for programmatic access to all platform features.

Webhooks

What Are Webhooks?

Webhooks send an HTTP POST request to your server whenever a specific event occurs in Conviro. This allows you to react in real time without polling.

Available Events

EventFires When
message.newA new message is sent (by visitor or bot)
session.startedA new conversation session begins
session.closedA conversation is closed
session.escalatedA conversation is escalated
lead.capturedA new lead is captured
lead.createdA lead record is created
lead_form.submittedA lead form is submitted
handoff.requestedA handover to a human agent is requested
csat.submittedA CSAT rating is submitted
csat.receivedA CSAT result is recorded
ai.failedThe AI fails to produce an answer
ticket.createdA support ticket is opened
ticket.resolvedA support ticket is resolved
contact.createdA new contact is created
contact.updatedA contact is updated
contact.mergedTwo contacts are merged
contact.deletedA contact is deleted

The webhook form also offers All events, which subscribes to every event above (stored as the wildcard *), and a single webhook accepts a comma-separated list of event names.

Setup

  1. Navigate to Dashboard -> Settings -> Webhooks.
  2. Click Add Webhook.
  3. Enter your endpoint URL (must be HTTPS).
  4. Select the events you want to receive.
  5. Click Save.

Security: HMAC-SHA256 Signing

Every webhook payload is signed with HMAC-SHA256 using your webhook secret. Verify the signature on your server to ensure authenticity:

X-Webhook-Signature: t=<unix_timestamp>,v1=<hex_digest>
X-Webhook-Event: <event_name>
X-Webhook-Retry: <attempt>          # only on a retried delivery

The digest is computed over <unix_timestamp>.<raw_request_body>, so verifying the body on its own will never match. Split the header on ,, read the t= and v1= values, recompute the HMAC-SHA256 of t + '.' + rawBody with your webhook secret, and compare the two digests in constant time. Reject a delivery whose timestamp is more than a few minutes old, so a captured payload cannot be replayed. Note: Send test against a URL that is not a saved webhook is delivered unsigned — there is no secret to sign it with; test your verification against a saved endpoint.

Retry Policy

If your endpoint returns a non-2xx status code, Conviro retries up to 3 times with exponential backoff (1 min, 5 min, 30 min).


REST API

Authentication

  1. Generate an API key at Dashboard -> Settings -> API Keys -> Create Key.
  2. Include it in the Authorization header:
Authorization: Bearer sk_your_api_key_here

> The key is shown once. Creating a key requires at least one scope — Create stays disabled until you pick one — and the full sk_ value is displayed a single time, in a dialog that deliberately does not close on Escape or a backdrop click. Afterwards only the prefix is kept in readable form; the rest is a bcrypt hash and cannot be recovered. Copy it before you close the dialog. If you lose it, create a new key and revoke the old one.

Key Endpoints

MethodEndpointDescription
GET/api/chatbotsList all chatbots
GET/api/chatbots/:idGet chatbot details
GET/api/sessionsList sessions (with filters)
GET/api/sessions/:id/messagesGet messages for a session
POST/api/sessions/:id/messagesSend a message to a session
GET/api/contactsList contacts
POST/api/contactsCreate a contact
GET/api/leadsList leads
POST/api/leadsCreate a lead
GET/api/analytics/overviewGet analytics summary

Rate Limits

  • Free plan: 60 requests/minute
  • Starter: 120 requests/minute
  • Pro: 300 requests/minute
  • Growth+: 600 requests/minute

Rate limit headers are included in every response:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 298
X-RateLimit-Reset: 1672531200

Full Documentation

Visit /developers for the complete API reference with request/response examples.

webhookapiresthmacintegrationendpointsdeveloper

Was this article helpful?