{"id":15134,"date":"2026-01-21T12:44:41","date_gmt":"2026-01-21T09:44:41","guid":{"rendered":"https:\/\/snov.io\/knowledgebase\/?p=15134"},"modified":"2026-02-01T15:47:52","modified_gmt":"2026-02-01T12:47:52","slug":"how-to-use-snov-io-webhooks","status":"publish","type":"post","link":"https:\/\/snov.io\/knowledgebase\/how-to-use-snov-io-webhooks\/","title":{"rendered":"How to set up webhooks via Snov.io API"},"content":{"rendered":"<p>In this article, you\u2019ll learn how to set up and manage webhooks via the Snov.io API for your custom integrations.<\/p>\n<h2 data-start=\"468\" data-end=\"489\"><strong>What is a webhook<\/strong><\/h2>\n<p data-start=\"1903\" data-end=\"1984\">Webhooks allow you to get notified of events that happen in your campaigns, like prospect replies or campaign completion.<\/p>\n<p data-start=\"1986\" data-end=\"2240\">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.<\/p>\n<div class=\"notification-block note\">\n<div class=\"notification-block__icon\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/snov.io\/knowledgebase\/wp-content\/themes\/knowledgebase-n\/assets\/img\/ph_circle-wavy-warning.svg\" alt=\"note\" width=\"32\" height=\"32\" \/><\/div>\n<div class=\"notification-block__text\">Webhooks require a paid Snov.io plan (premium). You can create up to 50 webhooks.<\/div>\n<\/div>\n<h2 data-start=\"3147\" data-end=\"3188\"><strong>How to create webhooks<\/strong><\/h2>\n<div id=\"supportedObjects\" class=\"paragraph\">\n<p class=\"padding-top-10px\">To subscribe to webhooks, choose the event you want to track, prepare your endpoint URL and send a request to Snovio API.<\/p>\n<\/div>\n<h3 data-start=\"510\" data-end=\"540\"><strong>Choose the event<\/strong><\/h3>\n<p>Decide the event you want to track from the supported events list.<\/p>\n<p data-start=\"1692\" data-end=\"1783\">When the selected event occurs, Snov.io will automatically send event data to your endpoint.<\/p>\n<p>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.<\/p>\n<table style=\"height: 202px; width: 100%; border: 2px solid #b3d9ff; border-collapse: collapse; font-family: sans-serif;\" border=\"2px solid #b3d9ff\">\n<thead>\n<tr style=\"height: 24px;\">\n<th style=\"border: 1px solid #b3d9ff; background-color: #eaf6ff; padding: 12px; width: 31.2577%; height: 24px; text-align: center;\">Webhook object <em>(event_object)<\/em><\/th>\n<th style=\"border: 1px solid #b3d9ff; background-color: #eaf6ff; padding: 12px; width: 28.3367%; height: 24px; text-align: center;\">Action (<em>event_action)<\/em><\/th>\n<th style=\"border: 1px solid #b3d9ff; background-color: #eaf6ff; padding: 12px; width: 40.2607%; height: 24px; text-align: center;\">When activates<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr data-start=\"2063\" data-end=\"2164\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2063\" data-end=\"2085\" data-col-size=\"sm\">campaign_email<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2085\" data-end=\"2107\" data-col-size=\"sm\">sent<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2107\" data-end=\"2164\" data-col-size=\"md\">When any email is sent to a recipient in any campaign<\/td>\n<\/tr>\n<tr data-start=\"2165\" data-end=\"2272\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2165\" data-end=\"2187\" data-col-size=\"sm\">campaign_email<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2187\" data-end=\"2209\" data-col-size=\"sm\">first_sent<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2209\" data-end=\"2272\" data-col-size=\"md\">When the first email is sent to a recipient in any campaign<\/td>\n<\/tr>\n<tr data-start=\"2273\" data-end=\"2369\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2273\" data-end=\"2295\" data-col-size=\"sm\">campaign_email<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2295\" data-end=\"2317\" data-col-size=\"sm\">opened<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2317\" data-end=\"2369\" data-col-size=\"md\">When a recipient opens any email from a campaign<\/td>\n<\/tr>\n<tr data-start=\"2370\" data-end=\"2496\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2370\" data-end=\"2392\" data-col-size=\"sm\">campaign_email<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2392\" data-end=\"2414\" data-col-size=\"sm\">bounced<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2414\" data-end=\"2496\" data-col-size=\"md\">When an email sent from a campaign cannot be delivered and results in a bounce<\/td>\n<\/tr>\n<tr data-start=\"2497\" data-end=\"2598\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2497\" data-end=\"2519\" data-col-size=\"sm\">campaign_reply<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2519\" data-end=\"2541\" data-col-size=\"sm\">received<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2541\" data-end=\"2598\" data-col-size=\"md\">When a recipient replies to any email in any campaign<\/td>\n<\/tr>\n<tr data-start=\"2599\" data-end=\"2710\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2599\" data-end=\"2621\" data-col-size=\"sm\">campaign_reply<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2621\" data-end=\"2643\" data-col-size=\"sm\">first_received<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2643\" data-end=\"2710\" data-col-size=\"md\">When a recipient replies to a campaign email for the first time<\/td>\n<\/tr>\n<tr data-start=\"2711\" data-end=\"2839\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2711\" data-end=\"2733\" data-col-size=\"sm\">prospect<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2733\" data-end=\"2755\" data-col-size=\"sm\">campaign_finished<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2755\" data-end=\"2839\" data-col-size=\"md\">When a prospect reaches the end of a campaign and no further steps are scheduled<\/td>\n<\/tr>\n<tr data-start=\"2840\" data-end=\"2939\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2840\" data-end=\"2862\" data-col-size=\"sm\">company<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2862\" data-end=\"2887\" data-col-size=\"sm\">found_domains_by_names<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2887\" data-end=\"2939\" data-col-size=\"md\">When a company domain is found based on its name<\/td>\n<\/tr>\n<tr data-start=\"2940\" data-end=\"3044\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"2940\" data-end=\"2962\" data-col-size=\"sm\">prospect<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"2962\" data-end=\"2984\" data-col-size=\"sm\">found_by_li_url<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"2984\" data-end=\"3044\" data-col-size=\"md\">When a prospect profile is found based on a LinkedIn URL<\/td>\n<\/tr>\n<tr data-start=\"3045\" data-end=\"3140\">\n<td style=\"width: 31.2577%; text-align: center;\" data-start=\"3045\" data-end=\"3067\" data-col-size=\"sm\">email_verification<\/td>\n<td style=\"width: 28.3367%; text-align: center;\" data-start=\"3067\" data-end=\"3089\" data-col-size=\"sm\">verified<\/td>\n<td style=\"width: 40.2607%; text-align: center;\" data-start=\"3089\" data-end=\"3140\" data-col-size=\"md\">When an email verification request is completed<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div dir=\"ltr\" style=\"margin-left: 0pt;\" align=\"left\">\n<div id=\"supportedObjects\" class=\"paragraph\">\n<h3 data-start=\"641\" data-end=\"673\"><strong>Prepare your endpoint URL<\/strong><\/h3>\n<p data-start=\"674\" data-end=\"806\">This is your own public URL that can accept inbound HTTP requests. For example, a webhook URL in Zapier\/Make, or your app endpoint.<\/p>\n<h3 data-start=\"808\" data-end=\"853\"><strong>Send the request to create the webhook<\/strong><\/h3>\n<p>To create a webhook in your Snov.io account, use the <a href=\"https:\/\/snov.io\/api#add-webhooks\" target=\"_blank\" rel=\"noopener\">Add webhook<\/a> endpoint from the Snovio API.<\/p>\n<div class=\"notification-block learn\">\n<div class=\"notification-block__icon\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/snov.io\/knowledgebase\/wp-content\/themes\/knowledgebase-n\/assets\/img\/fluent_chat-warning-16-regular.svg\" alt=\"learn\" width=\"32\" height=\"32\" \/><\/div>\n<div class=\"notification-block__text\">You can subscribe to and manage webhooks through a set of API calls. Refer to <a href=\"https:\/\/snov.io\/api#webhooks-description\" target=\"_blank\" rel=\"noopener\">API documentation<\/a> for full details.<\/div>\n<\/div>\n<p>Send an API request with the following parameters. The webhook parameters are predefined based on the type of event you want to track.<\/p>\n<ul>\n<li data-start=\"854\" data-end=\"923\"><strong data-start=\"854\" data-end=\"865\">Method:<\/strong> POST<\/li>\n<li data-start=\"854\" data-end=\"923\"><strong data-start=\"873\" data-end=\"889\">Request URL: <\/strong>https:\/\/api.snov.io\/v2\/webhooks<\/li>\n<\/ul>\n<h3 data-start=\"1484\" data-end=\"1505\"><strong>Webhook parameters<\/strong><\/h3>\n<ul data-start=\"1569\" data-end=\"1775\">\n<li data-start=\"1569\" data-end=\"1637\">\n<p data-start=\"1571\" data-end=\"1637\"><strong data-start=\"1571\" data-end=\"1587\">event_object<\/strong> \u2014 what you want to track, like prospect or email (copy the corresponding values from the table above)<\/p>\n<\/li>\n<li data-start=\"1638\" data-end=\"1705\">\n<p data-start=\"1640\" data-end=\"1705\"><strong data-start=\"1640\" data-end=\"1656\">event_action<\/strong> \u2014 the specific event that needs to happen so webhook activates (copy the corresponding values from the table above)<\/p>\n<\/li>\n<li data-start=\"1706\" data-end=\"1775\">\n<p data-start=\"1708\" data-end=\"1775\"><strong>endpoint_url<\/strong> \u2014 provide your own public URL where Snov.io will send data<\/p>\n<\/li>\n<\/ul>\n<p>To create a webhook for prospect replies (when a recipient replies to any email in any campaign), choose these parameters.<\/p>\n<ul data-start=\"574\" data-end=\"639\">\n<li data-start=\"574\" data-end=\"610\"><em>event_object:<\/em> campaign_reply<\/li>\n<li data-start=\"574\" data-end=\"610\"><em>event_action:<\/em> received<\/li>\n<\/ul>\n<div class=\"notification-block note-gray\">\n<div class=\"notification-block__text\">\n<p data-start=\"925\" data-end=\"950\"><strong data-start=\"925\" data-end=\"950\">Example API request body:<\/strong><\/p>\n<p data-start=\"925\" data-end=\"950\"><em>{ \"event_object\": \"campaign_reply\", \"event_action\": \"received\", \"endpoint_url\": \"https:\/\/your-domain.com\/webhooks\/snov-replies\" }<\/em><\/p>\n<\/div>\n<\/div>\n<h3 data-start=\"1097\" data-end=\"1123\"><strong>Verify the webhook is working<\/strong><\/h3>\n<p data-start=\"1124\" data-end=\"1153\">After you create the webhook:<\/p>\n<ul data-start=\"1154\" data-end=\"1429\">\n<li data-start=\"1154\" data-end=\"1267\">\n<p data-start=\"1156\" data-end=\"1267\">Make sure your endpoint returns an HTTP status <strong data-start=\"1203\" data-end=\"1214\">200\u2013299<\/strong> within <strong data-start=\"1222\" data-end=\"1235\">3 seconds<\/strong><\/p>\n<\/li>\n<li data-start=\"1268\" data-end=\"1429\">\n<p data-start=\"1270\" data-end=\"1429\">If the endpoint returns a different status (or times out), Snov.io retries to send the webhook automatically<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"notification-block learn\">\n<div class=\"notification-block__icon\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/snov.io\/knowledgebase\/wp-content\/themes\/knowledgebase-n\/assets\/img\/fluent_chat-warning-16-regular.svg\" alt=\"learn\" width=\"32\" height=\"32\" \/><\/div>\n<div class=\"notification-block__text\">\n<p><strong>Retry policy: <\/strong>The behavior below reflects how Snov.io delivers webhook events in practice.<\/p>\n<p>&nbsp;<\/p>\n<p>The webhook is considered successful if Snov.io receives an HTTP status in the 200\u2013299 range within 3 seconds.<\/p>\n<p>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:<\/p>\n<p>If all retries are unsuccessful, the webhook becomes deactivated.<\/p>\n<ul>\n<li>1st: immediately after the event<\/li>\n<li>2nd: 20 minutes after the last attempt (20 minutes after the event)<\/li>\n<li>3rd: 40 minutes after the last attempt (1 hour after the event)<\/li>\n<li>4th: 60 minutes after the last attempt (2 hours after the event)<\/li>\n<li>5th: 4 hours after the last attempt (6 hours after the event)<\/li>\n<li>6th: 8 hours after the last attempt (14 hours after the event)<\/li>\n<li>7th: 24 hours after the last attempt (38 hours after the event)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this article, you\u2019ll 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 [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1986],"tags":[],"_links":{"self":[{"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/posts\/15134"}],"collection":[{"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/comments?post=15134"}],"version-history":[{"count":35,"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/posts\/15134\/revisions"}],"predecessor-version":[{"id":44491,"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/posts\/15134\/revisions\/44491"}],"wp:attachment":[{"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/media?parent=15134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/categories?post=15134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/snov.io\/knowledgebase\/wp-json\/wp\/v2\/tags?post=15134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}