Event

trigger.surveymonkey_event
TriggerBusiness appsconnection requiredruns in-engine

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.

FieldTypeRequiredDefaultConstraintsExample
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.
stringNoresponse_completedone 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.
stringNo—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.
arrayConditional—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.

FieldTypeExample
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.
string123456789
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.
stringresponse_completed
event_datetime
When SurveyMonkey raised the event (ISO 8601, with an offset).
string2016-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.
stringresponse
object_id
Id of that object. For a response_* event this is the response id to pass to surveymonkey.get_response_details.
string123456
filter_type
Which kind of object the subscription filters on: survey or collector.
stringcollector
filter_id
Id of the object that triggered the event, within that filter.
string123456789
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.
stringMantle 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.