docs/Power features/SurveyMonkey
connect your survey tool

SurveyMonkey.

Capture IDs with Custom Variables on a Web Link collector — but note SurveyMonkey appends them to the redirect as query parameters, not a path.

Plan requirement
Custom Variables and the redirect end page are paid features.

1 · Pass the Samply IDs into the survey

Custom Variables (Design Survey → Logic → Custom Variables) on a Web Link collector; stored as columns at the end of each export row.

  1. Design Survey → Logic → Custom Variables → "New custom variable". Name each one (no spaces, case-sensitive) to match your start-link keys, e.g. id, code, messageid.
  2. Publish with a Web Link collector; SurveyMonkey produces a bracketed template like ?messageid=[messageid_value].
  3. Use that collector link as the Samply start link, substituting the Samply placeholders for the bracketed tokens.
  4. Captured values appear as columns in the All Responses Data export (XLS/SPSS).
Example start link
https://www.surveymonkey.com/r/<code>?id=%SAMPLY_ID%&code=%PARTICIPANT_CODE%&messageid=%MESSAGE_ID%

2 · Register completion

Important — completion limitation
SurveyMonkey appends captured variables to the redirect as a query string (…?messageid=<value>); it cannot build Samply's path-style /studies/<study-code>/done/<id>. Samply's completion endpoint currently reads the id from the path only, so SurveyMonkey needs either Samply to also accept ?messageid= or a small redirector that rewrites ?messageid=X into /done/X. Verify before fielding.

Collector → Survey End Page → "Redirect to a URL" (a static base URL). SurveyMonkey auto-appends the incoming custom variables as query parameters.

  1. Ensure messageid is a Custom Variable and present in the start link.
  2. From Publish, select the Web Link collector → collector options → Survey End Page → "Redirect to a URL".
  3. Enter a STATIC base URL (do NOT embed a [messageid] token — SurveyMonkey has no path substitution). It appends ?messageid=<value> automatically.
  4. Because of the query-vs-path limitation above, confirm Samply can read messageid from the query string (or route through a rewriter) before going live.
Example completion redirect
https://samply.uni-konstanz.de/studies/<study-code>/done → …/done?messageid=<value> (appended automatically)

Or register completion silently with a POST

The redirect above navigates the participant's browser to Samply. The same completion can instead be registered server-to-server with an HTTP POST to /studies/<study-code>/done/<message-id> — no request body and no authentication (the message id in the path is the shared secret). Samply replies 200 on success or 400if the id matches no response, and it records the completion and cancels that send's pending reminders exactly like the redirect — just without redirecting. Whether SurveyMonkey can issue that POST itself varies:

Requires an external relay
SurveyMonkey's webhooks POST its own event JSON (ids only) to a fixed subscriber URL — they can't put messageid in Samply's path — so a silent POST needs a relay. The query-vs-path limitation flagged above applies.
  1. SurveyMonkey can't POST directly to Samply's path-based URL, so use a relay (or keep the redirect above with a small rewriter).
  2. Create a developer app (paid/Enterprise) and subscribe a webhook: POST /v3/webhooks with event_type response_completed, pointing subscription_url at your relay.
  3. On each callback, the relay reads the response id, then calls GET /v3/surveys/{id}/responses/{id}/details and reads custom_variables.messageid.
  4. The relay then POSTs https://samply.uni-konstanz.de/studies/<study-code>/done/<messageid> with no body.
  5. No-code option: a Zapier/Make flow with a completed-response trigger → a Webhooks POST built as .../done/{{messageid}} (paid tiers on both sides).
POST endpoint
POST https://samply.uni-konstanz.de/studies/<study-code>/done/<message-id>

POST sources: https://developer.surveymonkey.com/api/v3/#webhooks · https://help.surveymonkey.com/en/surveymonkey/send/custom-variables/

Full request and response details are in the API reference.

Reserved parameters & gotchas

Custom Variable names: no spaces, case-sensitive, max 100, keep the URL under 2000 chars. The redirect appends ALL incoming custom variables, so the endpoint must tolerate extra query keys.

Things to watch out for

  • Custom Variables work only with the Web Link collector.

Sources

These steps were verified against the platform's official documentation.