POST request to that URL the moment the event fires.
Prerequisites
Before configuring a webhook, make sure you have:- A Custom App in Convo — navigate to Dashboard → Integrations → Custom Apps and create a new app. Custom Apps are the container that holds your webhook configuration and generates the
shared_secretused to verify payloads. - A publicly accessible HTTPS URL — WhatsApp and Convo only deliver to
https://endpoints with a valid TLS certificate. Plain HTTP or self-signed certificates are not accepted.
Configuring Your Webhook
1
Create a Custom App
In the Convo dashboard, go to Integrations → Custom Apps → New App. Give your app a descriptive name (e.g.,
OrderNotifications or CRMSync). You’ll see a shared_secret value after the app is created — copy it now and store it securely; you’ll use it to verify incoming webhook payloads.2
Configure your webhook URL
In your app’s settings, enter the full public HTTPS URL of the endpoint on your server that will receive webhook events (e.g.,
https://your-server.com/webhook). Convo sends a POST request with a JSON body to this URL for every subscribed event.3
Subscribe to topics
Select the event topics your app should receive. Available topics include:
Subscribe only to the topics your application needs — this keeps your endpoint traffic lean and your processing logic simple.
4
Note your shared_secret
After saving the app, Convo displays a
shared_secret. This secret is used to generate an HMAC-SHA256 signature for every webhook payload, sent as the x-convo-signature header. Verify this signature on every incoming request to ensure the payload genuinely came from Convo and was not tampered with in transit.5
List webhooks
Confirm your webhook is registered by querying the list endpoint. Filter by your app name using the
app_name query parameter.Example response
Verifying Webhook Signatures
Always validate thex-convo-signature header before processing a payload. This prevents replay attacks and ensures your endpoint only acts on genuine Convo events.
Node.js
shared_secret in an environment variable (e.g., WEBHOOK_SECRET) — never hard-code it in your source code.
Delete a Webhook
To remove a webhook — for example when decommissioning an integration or rotating to a new endpoint URL — send aDELETE request with the webhook’s id.
This always returns:
