SurveyMonkey CX API call
SurveyMonkey has a great new API available that allows you to easily send someone an email programmatically. I ran into some hiccups while setting it up and there’s almost zero documentation out there.
Endpoint: This is provided at the end of setting up a survey. Should look like
https://cx.surveymonkey.com/api/v1/surveys/${fromSurvey}/replies
Headers
name="Content-Type" value="application/json"
name="Authorization" value="Token token=#apiToken#"
Body
{
"person": {
"email": "emailAddress",
"first_name": "first name",
"last_name": "last name",
"fields": {
"Custom Field": ["custom field value"]
}
},
"delay": 0
}
The custom fields must match exactly what you put in your admin and you must pass it in as a list. If you don’t pass a list it won’t register. The delay is the number of days to delay sending the survey.
My full postman request is below with sensitive information redacted.
{
"info": {
"_postman_id": "d16018c3-53d9-4ebd-a47f-61a84505a04d",
"name": "SurveyMonkey",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Survey Monkey",
"request": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "Authorization",
"value": "Token token=${apiToken}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"person\": {\r\n \"email\": \"email@gmail.com\",\r\n \"first_name\": \"First\",\r\n \"last_name\": \"Last\",\r\n \"fields\": {\r\n \"Products\": [\"Acme M500\", \"Acme B7500\"]},\r\n \"facets\": {\r\n \"Job ID\": \"1234\"\r\n },\r\n \"delay\": 24\r\n}"
},
"url": {
"raw": "https://cx.surveymonkey.com/api/v1/surveys/${fromSurvey}/replies",
"protocol": "https",
"host": ["cx", "surveymonkey", "com"],
"path": ["api", "v1", "surveys", "${fromSurvey}", "replies"]
}
},
"response": []
}
]
}