Event
Registers a webhook subscription in the tenant's SurveyMonkey account on publish and starts one run per callback, verified against Sm-Signature.
Start a run when SurveyMonkey raises an event — a completed response, a new collector, a changed survey.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- OAuth 2.0
- Providers
- SurveyMonkey
- Secret shape
- {"access_token", "client_id", "client_secret"}
- Config it needs
- base_url, datacenter
- Resolved by
- config.connection_id, else node.connection_id
- Note
- Two credentials, and they are not interchangeable: the access token creates and deletes the subscription, and the app's client id + client secret are what SurveyMonkey signs every callback with. A connection holding only the access token can call the API and still cannot verify a delivery, so publishing is refused. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to an https URL SurveyMonkey can reach.
Configuration
3 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
event_type The single SurveyMonkey event to subscribe to. One subscription carries one event type and one callback URL, so a second event needs a second trigger. | string | No | response_completed | one of "survey_created", "response_completed", "response_updated", "response_disqualified", "response_created", "response_deleted", "response_overquota", "collector_created", "collector_updated", "collector_deleted", "survey_updated", "survey_deleted", "app_installed", "app_uninstalled" | — |
object_type What to filter events by. SurveyMonkey requires it for every event except survey_created; use 'survey' unless you are subscribing to an app-install event. | string | No | — | one of "survey", "collector", "app" | — |
object_ids Ids of the objects to watch — survey ids when object_type is 'survey'. Required whenever object_type is set. | array | Conditional | — | 1–200 characters; only with object_type; array of string | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"event_type": "response_completed"
}Output
One shape.
surveymonkey event
The flattened callback. SurveyMonkey sends ids, not answers — follow with surveymonkey.get_response_details to read a response.
Extra keys beyond the ones listed can appear.
| Field | Type | Example |
|---|---|---|
event_id SurveyMonkey's own event id, and the idempotency key: a redelivery carries the same id, so it joins the run it already started instead of starting a second one. | string | 123456789 |
event_type The event that fired, e.g. response_completed. One subscription carries one event type, so this is always the type this trigger registered. | string | response_completed |
event_datetime When SurveyMonkey raised the event (ISO 8601, with an offset). | string | 2016-01-01T21:56:31.182613+00:00 |
object_type The kind of thing the event happened to — 'response', 'survey' or 'collector'. Not the same as the object_type the webhook filters on. | string | response |
object_id Id of that object. For a response_* event this is the response id to pass to surveymonkey.get_response_details. | string | 123456 |
filter_type Which kind of object the subscription filters on: survey or collector. | string | collector |
filter_id Id of the object that triggered the event, within that filter. | string | 123456789 |
name The webhook's name at SurveyMonkey. Mantle names it after the webhook row so a half-finished publish can find its own subscription again. | string | Mantle 6f1c2d3e |
resources Ids associated with the event — respondent_id, recipient_id, collector_id, survey_id and user_id, depending on the subscription. This is where the survey_id for a follow-up lookup lives. | object | — |
payload The callback body exactly as SurveyMonkey sent it, for anything the fields above do not lift out. | object | — |
{
"event_datetime": "2016-01-01T21:56:31.182613+00:00",
"event_id": "123456789",
"event_type": "response_completed",
"filter_id": "123456789",
"filter_type": "collector",
"name": "Mantle 6f1c2d3e",
"object_id": "123456",
"object_type": "response",
"payload": {
"event_id": "123456789",
"event_type": "response_completed"
},
"resources": {
"collector_id": "123456789",
"recipient_id": "123456789",
"respondent_id": "123456789",
"survey_id": "309683094",
"user_id": "123456789"
}
}Notes
- One event type per trigger: SurveyMonkey refuses a callback URL that is already used by another webhook in the account, whatever its event type.
- Deliveries are verified against Sm-Signature — base64 HMAC-SHA1 of the raw body under 'client_id&client_secret' — before any run starts.
- SurveyMonkey HEAD-pings a new subscription_url and Mantle's ingress answers POST only, so the documented bypass_ping is always sent; the first real delivery is what proves the callback works.
- The subscription is deleted at SurveyMonkey when the workflow is unpublished, disabled or archived.
See Event run in a workflow.
In a technical demo we add the SurveyMonkey connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.