Automatically Send SurveyMonkey CSAT Surveys When Intercom Conversations Are Closed
When a support conversation is closed in Intercom, this workflow instantly sends a SurveyMonkey satisfaction survey to the customer. Capture real-time feedback without any manual effort from your customer success team.
- 1
Step 1 — Catch the Intercom Webhook
Add a
Webhooknode as the trigger. Set theHTTP Methodto POST and copy the generated webhook URL. In your Intercom Developer Hub, create a new webhook subscription, paste the URL, and select theconversation.closedtopic. This node will receive the full conversation payload every time a conversation is closed. - 2
Step 2 — Extract Customer Details
Add a
Setnode connected to the Webhook node. Create two fields: setcustomerEmailusing the expression{{ $json.body.data.item.contacts.contacts[0].email }}andcustomerNameusing{{ $json.body.data.item.contacts.contacts[0].name }}. This isolates the data you need for the survey invitation. - 3
Step 3 — Filter Out Non-Customer Contacts
Add an
IFnode after the Set node. Add a condition:customerEmailis not empty (use{{ $json.customerEmail }}is not equal to an empty string). Connect the TRUE branch to the next step. The FALSE branch can be left unconnected, ensuring you only proceed when a valid customer email exists. - 4
Step 4 — Send Survey Invitation via SurveyMonkey API
Add an
HTTP Requestnode on the TRUE branch. SetMethodto POST andURLtohttps://api.surveymonkey.com/v3/collectors/YOUR_COLLECTOR_ID/messages/YOUR_MESSAGE_ID/recipients/bulk. InAuthentication, chooseHeader Authand add headerAuthorizationwith valueBearer YOUR_SURVEYMONKEY_ACCESS_TOKEN. Set theBody Typeto JSON and paste the body:{ "contacts": [{ "email": "{{ $json.customerEmail }}", "first_name": "{{ $json.customerName }}" }] }. ReplaceYOUR_COLLECTOR_IDandYOUR_MESSAGE_IDwith IDs from your SurveyMonkey collector setup. To find these, create an Email Invitation collector on your survey in SurveyMonkey and note the IDs from the URL.
Frequently asked questions
Where do I find my SurveyMonkey Collector ID and Message ID?
Log in to SurveyMonkey, open your survey, and click 'Collect Responses'. Create or open an 'Email Invitation' collector. The Collector ID appears in the page URL after /collectors/. To get the Message ID, call GET https://api.surveymonkey.com/v3/collectors/YOUR_COLLECTOR_ID/messages using a tool like Postman with your access token, and note the id of the message you want to use.
What if a conversation involves multiple contacts?
The Set node currently picks the first contact in the array. If your Intercom conversations often have multiple contacts, you can add a SplitInBatches or loop node to iterate through all entries in contacts.contacts. For most B2C support workflows, the first contact is the primary customer.
Can I prevent the same customer from getting a survey after every single conversation?
Yes. Add a Google Sheets or Airtable node before the HTTP Request node to log surveyed email addresses. Add a second IF condition to check whether the email already exists in that sheet within the past 30 days, and only proceed if it does not. This avoids survey fatigue for customers who contact support frequently.