In this article, you’ll learn how to set up and manage webhooks via the Snov.io API for your custom integrations.
What is a webhook
Webhooks allow you to get notified of events that happen in your campaigns, like prospect replies or campaign completion.
When the event you subscribed to occurs, Snov.io sends data related to that event to your endpoint (webhook URL) in real-time. You can use this data for integrations or automations via apps like Zapier or Make.
How to create webhooks
To subscribe to webhooks, choose the event you want to track, prepare your endpoint URL and send a request to Snovio API.
Choose the event
Decide the event you want to track from the supported events list.
When the selected event occurs, Snov.io will automatically send event data to your endpoint.
Currently supported webhook events are listed below. For example, you can receive webhook data when a prospect replies to a campaign email, an email bounces, or a prospect completes a campaign.
| Webhook object (event_object) | Action (event_action) | When activates |
|---|---|---|
| campaign_email | sent | When any email is sent to a recipient in any campaign |
| campaign_email | first_sent | When the first email is sent to a recipient in any campaign |
| campaign_email | opened | When a recipient opens any email from a campaign |
| campaign_email | bounced | When an email sent from a campaign cannot be delivered and results in a bounce |
| campaign_reply | received | When a recipient replies to any email in any campaign |
| campaign_reply | first_received | When a recipient replies to a campaign email for the first time |
| prospect | campaign_finished | When a prospect reaches the end of a campaign and no further steps are scheduled |
| company | found_domains_by_names | When a company domain is found based on its name |
| prospect | found_by_li_url | When a prospect profile is found based on a LinkedIn URL |
| email_verification | verified | When an email verification request is completed |
Prepare your endpoint URL
This is your own public URL that can accept inbound HTTP requests. For example, a webhook URL in Zapier/Make, or your app endpoint.
Send the request to create the webhook
To create a webhook in your Snov.io account, use the Add webhook endpoint from the Snovio API.
Send an API request with the following parameters. The webhook parameters are predefined based on the type of event you want to track.
- Method: POST
- Request URL: https://api.snov.io/v2/webhooks
Webhook parameters
-
event_object — what you want to track, like prospect or email (copy the corresponding values from the table above)
-
event_action — the specific event that needs to happen so webhook activates (copy the corresponding values from the table above)
-
endpoint_url — provide your own public URL where Snov.io will send data
To create a webhook for prospect replies (when a recipient replies to any email in any campaign), choose these parameters.
- event_object: campaign_reply
- event_action: received
Example API request body:
{ "event_object": "campaign_reply", "event_action": "received", "endpoint_url": "https://your-domain.com/webhooks/snov-replies" }
Verify the webhook is working
After you create the webhook:
-
Make sure your endpoint returns an HTTP status 200–299 within 3 seconds
-
If the endpoint returns a different status (or times out), Snov.io retries to send the webhook automatically
Retry policy: The behavior below reflects how Snov.io delivers webhook events in practice.
The webhook is considered successful if Snov.io receives an HTTP status in the 200–299 range within 3 seconds.
If we get any other HTTP status or a timeout occurs, we make seven retry attempts with increasing intervals up to 38 hours after the event which triggered a webhook:
If all retries are unsuccessful, the webhook becomes deactivated.
- 1st: immediately after the event
- 2nd: 20 minutes after the last attempt (20 minutes after the event)
- 3rd: 40 minutes after the last attempt (1 hour after the event)
- 4th: 60 minutes after the last attempt (2 hours after the event)
- 5th: 4 hours after the last attempt (6 hours after the event)
- 6th: 8 hours after the last attempt (14 hours after the event)
- 7th: 24 hours after the last attempt (38 hours after the event)
Sorry about that 😢
How can we improve it?