1 · Pass the Samply IDs into the survey
Embedded Data in the Survey Flow, left unassigned so Qualtrics fills each field from the matching query-string key.
- Open the Survey Flow (Survey tab → Survey Flow), click "Add a New Element Here" and choose Embedded Data.
- Add one field per Samply placeholder, named EXACTLY like the query-string keys in the start link (e.g. msg, id, code). Leave each unassigned so it reads "Value will be set from Panel or URL". Capitalization must match.
- Drag the Embedded Data element to the TOP of the Survey Flow (above anything that uses it) and save the flow.
- Configure the Samply start link so its keys match these field names. The fields are then stored with every response and appear in the data export automatically.
2 · Register completion
The End of Survey element's "Redirect to a URL" option, piping the captured field with Qualtrics syntax ${e://Field/msg}.
- In the Survey Flow (or Survey Options) open an End of Survey element, click "Customize…" and check "Override Survey Options".
- Select "Redirect to a URL".
- Enter the Samply completion URL with the captured message id piped in: https://samply.uni-konstanz.de/studies/<study-code>/done/${e://Field/msg} (use whatever field name holds %MESSAGE_ID%).
- Optionally use ${e://Field/msg?format=urlencode} to be safe, then save and publish. Test with a real Samply link end-to-end.
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 Qualtrics can issue that POST itself varies:
- Open the survey's Workflows tab → Create a workflow → "Started when an event is received", and choose the "Survey response" event, firing on newly-created completed responses only.
- Add a task and pick "Web Service". Set the method to POST and Authentication to "Not authenticated".
- In the URL field, type the completion URL and use the piped-text {a} button to drop the msg embedded-data field into the path: https://samply.uni-konstanz.de/studies/<study-code>/done/${e://Field/msg}
- Choose any body format but leave the body empty, and add no headers. Save the task and publish the workflow.
- Send a test response and confirm Samply recorded it from the task's run history — verify the msg resolved inside the path (Qualtrics documents piping mainly for query strings, so test it). If your brand restricts outbound domains, allowlist samply.uni-konstanz.de.
POST sources: https://www.qualtrics.com/support/survey-platform/actions-module/web-service-task/ · https://www.qualtrics.com/support/survey-platform/actions-module/survey-response-events/
Full request and response details are in the API reference.
Reserved parameters & gotchas
Avoid Q_-prefixed names (Q_Language, Q_TotalDuration, …) and other built-ins (RID/rid, SID, EndDate, IPAddress). Field names are case-sensitive and must match the URL keys exactly.
Things to watch out for
- The message id sits in the URL path; Samply's %MESSAGE_ID% is a plain 15-char ID, so it is URL-safe, but ${e://Field/msg?format=urlencode} is the cautious choice.
Sources
These steps were verified against the platform's official documentation.
- https://www.qualtrics.com/support/survey-platform/survey-module/survey-flow/standard-elements/passing-information-through-query-strings/
- https://www.qualtrics.com/support/survey-platform/survey-module/survey-flow/standard-elements/embedded-data/
- https://www.qualtrics.com/support/survey-platform/survey-module/survey-flow/standard-elements/end-of-survey-element/