{"id":"pg_6cdoopbpfete","property_id":"prp_pfcr5h8cztsp","domain_id":"dom_gkgeprhezjg4wq","root_domain":"smashsend.com","locale":"en","url":"https://smashsend.com/docs/api/webhooks","url_hash":"67e4e7228db384b2c74ad5be3d16a696d5c917902e19e698186c2638923ded6d","path":"/docs/api/webhooks","depth":1,"canonical_url":"https://smashsend.com/docs/api/webhooks","canonical_page_id":null,"page_type":"docs","page_type_guess":"docs","state":"indexed","skip_reason":null,"priority":"1.4","discovered_via":"sitemap","first_seen_at":"2026-08-28T03:07:01.092Z","last_seen_at":"2026-09-27T04:12:08.354Z","http_status":200,"content_hash":"9a108cbb46cd592864629753e9767b51327e87bc975b16dcb66d1142d19fc7f3","title":"SMASHSEND Webhooks API Reference","description":"Reference documentation for the SMASHSEND Webhooks API endpoints.","author":null,"published_at":null,"modified_at":null,"word_count":655,"reading_time_sec":179,"lang_detected":"en","images":[],"links_out":null,"markdown_source":"readability","refresh_interval":"monthly","last_fetched_at":"2026-09-27T04:09:04.193Z","next_refresh_at":"2026-10-27T04:09:04.193Z","runs_count":2,"changes_count":0,"last_changed_at":null,"fail_count":0,"last_error":null,"created_at":"2026-08-28T03:07:01.092Z","updated_at":"2026-08-28T03:07:01.092Z","inlinks":16,"inlinks_body":0,"outlinks":40,"outlinks_external":3,"anchor_terms":[],"template_score":"0.11267605633802816901","cash":"0.409301693059422589","cash_total":"0.8029501609425992130","pagerank":"0.0185931787513466","is_orphan":false,"link_confirmed":true,"discovered_wave":0,"embedded_hash":null,"embedded_at":null,"domain_name":null,"brand_color":null,"domain_rank":null,"spam_score":null,"markdown":"1.  [\n    \n    Home\n    \n    ](https://smashsend.com/)\n\n/\n\n3.  [\n    \n    Docs\n    \n    ](https://smashsend.com/docs)\n\n/\n\n5.  [\n    \n    API Reference\n    \n    ](https://smashsend.com/docs/api)\n\n/\n\n7.  [\n    \n    Webhooks\n    \n    ](https://smashsend.com/docs/api/webhooks)\n\nThe Webhooks API allows you to receive real-time notifications about events in your SMASHSEND account. You can create webhooks to receive notifications for various events, such as when a new contact is created, when a campaign is sent, or when a user opens an email.\n\nWebhooks send HTTP POST requests to your specified URL when events happen in your SMASHSEND account.\n\n## Events\n\nWebhooks can be configured to listen for the following events:\n\n-   `CONTACT_CREATED` - A new contact was created\n-   `CONTACT_UPDATED` - A contact was updated\n-   `CONTACT_UNSUBSCRIBED` - A contact has unsubscribed\n-   `CONTACT_RESUBSCRIBED` - A contact has resubscribed\n-   `CONTACT_DELETED` - A contact was deleted\n-   `WORKSPACE_TEAM_MEMBER_JOINED` - A team member joined the workspace\n\n## Endpoints\n\n### GET/v1/webhooks\n\nLists all webhooks for the authenticated workspace.\n\nAuthentication\n\nRequires a valid API key with `api_user` scope.\n\nRequest\n\n```\ncurl \"https://api.smashsend.com/v1/webhooks\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse\n\n```\n{\n  \"webhooks\": {\n    \"items\": [\n      {\n        \"id\": \"wh_123456789\",\n        \"url\": \"https://example.com/webhooks/smashsend\",\n        \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\"],\n        \"createdAt\": \"2023-03-01T10:00:00Z\"\n      },\n      {\n        \"id\": \"wh_987654321\",\n        \"url\": \"https://example.com/webhooks/smashsend-campaigns\",\n        \"events\": [\"CONTACT_DELETED\", \"WORKSPACE_TEAM_MEMBER_JOINED\"],\n        \"createdAt\": \"2023-04-10T14:30:00Z\"\n      }\n    ],\n    \"hasMore\": false\n  }\n}\n```\n\n### GET/v1/webhooks/{webhookId}\n\nRetrieves details of a specific webhook.\n\nAuthentication\n\nRequires a valid API key with `user` scope.\n\nRequest\n\n```\ncurl \"https://api.smashsend.com/v1/webhooks/wh_123456789\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse\n\n```\n{\n  \"webhook\": {\n    \"id\": \"wh_123456789\",\n    \"url\": \"https://example.com/webhooks/smashsend\",\n    \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\"],\n    \"token\": \"wht_a1b2c3d4e5f6g7h8i9j0\",\n    \"createdAt\": \"2023-03-01T10:00:00Z\"\n  }\n}\n```\n\n### POST/v1/webhooks\n\nCreates a new webhook.\n\nAuthentication\n\nRequires a valid API key with `api_user` scope.\n\nRequest Body\n\n```\n{\n  \"url\": \"https://example.com/webhooks/smashsend\",\n  \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\"],\n  \"token\": \"optional_secret_token\"\n}\n```\n\nRequest\n\n```\ncurl -X POST \"https://api.smashsend.com/v1/webhooks\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"url\": \"https://example.com/webhooks/smashsend\",\n    \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\"],\n    \"token\": \"optional_secret_token\"\n  }'\n```\n\nResponse\n\n```\n{\n  \"webhook\": {\n    \"id\": \"wh_123456789\",\n    \"url\": \"https://example.com/webhooks/smashsend\",\n    \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\"],\n    \"token\": \"wht_a1b2c3d4e5f6g7h8i9j0\",\n    \"createdAt\": \"2023-04-16T15:45:00Z\"\n  }\n}\n```\n\n### POST/v1/webhooks/{webhookId}\n\nUpdates a webhook.\n\nAuthentication\n\nRequires a valid API key with `api_user` scope.\n\nRequest Body\n\n```\n{\n  \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\", \"WORKSPACE_TEAM_MEMBER_JOINED\"]\n}\n```\n\nRequest\n\n```\ncurl -X POST \"https://api.smashsend.com/v1/webhooks/wh_123456789\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\", \"WORKSPACE_TEAM_MEMBER_JOINED\"]\n  }'\n```\n\nResponse\n\n```\n{\n  \"webhook\": {\n    \"id\": \"wh_123456789\",\n    \"url\": \"https://example.com/webhooks/smashsend\",\n    \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\", \"WORKSPACE_TEAM_MEMBER_JOINED\"],\n    \"token\": \"wht_a1b2c3d4e5f6g7h8i9j0\",\n    \"createdAt\": \"2023-03-01T10:00:00Z\"\n  }\n}\n```\n\n### DELETE/v1/webhooks/{webhookId}\n\nDeletes a webhook.\n\nAuthentication\n\nRequires a valid API key with `api_user` scope.\n\nRequest\n\n```\ncurl -X DELETE \"https://api.smashsend.com/v1/webhooks/wh_123456789\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse\n\n```\n{\n  \"webhook\": {\n    \"id\": \"wh_123456789\",\n    \"url\": \"https://example.com/webhooks/smashsend\",\n    \"events\": [\"CONTACT_CREATED\", \"CONTACT_UPDATED\"],\n    \"token\": \"wht_a1b2c3d4e5f6g7h8i9j0\",\n    \"createdAt\": \"2023-03-01T10:00:00Z\"\n  },\n  \"isDeleted\": true\n}\n```\n\n## Webhook Payloads\n\nWhen an event occurs, SMASHSEND will send a POST request to your webhook URL with a JSON payload. The payload will contain information about the event, including the event type and the data related to the event.\n\nExample Payload for CONTACT\\_CREATED event:\n\n```\n{\n  \"event\": \"CONTACT_CREATED\",\n  \"createdAt\": \"2023-04-16T15:45:00Z\",\n  \"data\": {\n    \"contact\": {\n      \"id\": \"ctc_B7OSYsnTUVwBPOGrgYTjvSGS\",\n      \"email\": \"newcontact@example.com\",\n      \"properties\": {\n        \"firstName\": \"New\",\n        \"lastName\": \"Contact\",\n        \"email\": \"newcontact@example.com\"\n      },\n      \"createdAt\": \"2023-04-16T15:45:00Z\",\n      \"workspaceId\": \"wrk_ENGTK86JEXXckyDVJthKkPer\"\n    }\n  }\n}\n```\n\nExample Payload for WORKSPACE\\_TEAM\\_MEMBER\\_JOINED event:\n\n```\n{\n  \"event\": \"WORKSPACE_TEAM_MEMBER_JOINED\",\n  \"createdAt\": \"2023-04-16T16:30:00Z\",\n  \"data\": {\n    \"workspace\": {\n      \"id\": \"wrk_ENGTK86JEXXckyDVJthKkPer\",\n      \"name\": \"My Workspace\"\n    },\n    \"user\": {\n      \"id\": \"usr_987654321\",\n      \"email\": \"teammember@example.com\",\n      \"name\": \"Team Member\"\n    }\n  }\n}\n```\n\n## Webhook Security\n\nTo verify that the webhook request is coming from SMASHSEND, you can check the `X-SMASHSEND-Signature` header. This header contains a signature generated using your webhook token and the request payload.\n\nTo verify the signature:\n\n1.  Get the `X-SMASHSEND-Signature` header value from the request\n2.  Compute an HMAC using your webhook token as the key and the request body as the message\n3.  Compare the computed HMAC with the signature in the header\n\nExample in Node.js:\n\n```\nconst crypto = require('crypto');\n\nfunction verifyWebhookSignature(body, signature, token) {\n  const hmac = crypto.createHmac('sha256', token);\n  const computedSignature = hmac.update(body).digest('hex');\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(computedSignature)\n  );\n}\n\n// In your webhook handler\napp.post('/webhooks/smashsend', (req, res) => {\n  const signature = req.headers['x-smashsend-signature'];\n  const body = JSON.stringify(req.body);\n  const token = 'YOUR_WEBHOOK_TOKEN';\n  \n  if (verifyWebhookSignature(body, signature, token)) {\n    // Process the webhook event\n    console.log('Webhook signature verified!');\n    // Handle the event based on req.body.event\n    res.status(200).send('Webhook received');\n  } else {\n    console.log('Webhook signature verification failed!');\n    res.status(401).send('Unauthorized');\n  }\n});\n```","storage":{"htmlKey":"stealpage/html/smashsend.com/pg_6cdoopbpfete/run_toldgpcvjh9g.html.gz","markdownKey":"stealpage/md/smashsend.com/pg_6cdoopbpfete/run_toldgpcvjh9g.md.gz"},"facets":null,"assets":[{"kind":"image","src_url":"https://smashsend.com/ogs/api-docs.jpg","r2_key":null,"alt":null,"caption":null,"width":null,"height":null,"is_hero":true,"zone":"main"},{"kind":"image","src_url":"https://smashsend.com/_next/static/media/smashsend_dark.da05b6ec.svg","r2_key":null,"alt":"SMASHSEND email marketing - The #1 Email Marketing Tool that turns emails into revenue","caption":null,"width":135,"height":30,"is_hero":false,"zone":"unknown"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/zapier_icon_filled.png","r2_key":null,"alt":"Zapier","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/mailchimp_icon.png","r2_key":null,"alt":"Mailchimp","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/webhooks_icon_gradient.png","r2_key":null,"alt":"Webhooks","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/dashboard/integrations/events.png","r2_key":null,"alt":"Events API","caption":null,"width":20,"height":20,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/_next/image?url=%2Favatar-profile.png&w=3840&q=75","r2_key":null,"alt":"Jorge Ferreiro","caption":null,"width":null,"height":null,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/_next/image?q=75&url=%2Favatar-profile.png&w=3840","r2_key":null,"alt":"Jorge Ferreiro","caption":null,"width":null,"height":null,"is_hero":false,"zone":"nav"},{"kind":"image","src_url":"https://smashsend.com/_next/static/media/smashsend_light.be8a3849.svg","r2_key":null,"alt":"SMASHSEND email marketing - The #1 Email Marketing Tool that turns emails into revenue","caption":null,"width":171,"height":38,"is_hero":false,"zone":"footer"},{"kind":"image","src_url":"https://smashsend.com/marketing/legal/gdpr_compliance.png","r2_key":null,"alt":"SOC2","caption":null,"width":null,"height":50,"is_hero":false,"zone":"footer"}],"shots":[{"viewport":"mobile","width":390,"height":844,"r2_key":"stealpage/shots/smashsend.com/pg_6cdoopbpfete/run_toldgpcvjh9g-mobile.png","phash":"26d0a88c80808886","visual_delta":0,"captured_at":"2026-09-27T04:09:08.242Z"},{"viewport":"desktop","width":1440,"height":900,"r2_key":"stealpage/shots/smashsend.com/pg_6cdoopbpfete/run_toldgpcvjh9g-desktop.png","phash":"a662606040486061","visual_delta":0,"captured_at":"2026-09-27T04:09:08.002Z"},{"viewport":"mobile","width":390,"height":844,"r2_key":"stealpage/shots/smashsend.com/pg_6cdoopbpfete/run_d0cjj91go5cf-mobile.png","phash":"26d0a88c80808886","visual_delta":null,"captured_at":"2026-08-28T03:11:25.362Z"},{"viewport":"desktop","width":1440,"height":900,"r2_key":"stealpage/shots/smashsend.com/pg_6cdoopbpfete/run_d0cjj91go5cf-desktop.png","phash":"a662606040486061","visual_delta":null,"captured_at":"2026-08-28T03:11:24.588Z"}],"history":[{"id":"run_toldgpcvjh9g","started_at":"2026-09-27T04:09:04.186Z","http_status":200,"fetcher":"direct","changed":false,"diff":{"added":0,"removed":51,"similarity":null},"word_count":655},{"id":"run_d0cjj91go5cf","started_at":"2026-08-28T03:11:14.940Z","http_status":200,"fetcher":"direct","changed":false,"diff":null,"word_count":706}],"citedBy":[]}