1 · Pass the Samply IDs into the survey
EFS reads incoming keys a, b, c… positionally into the system variables p_0001, p_0002, p_0003. You declare how many under Project Properties → Survey Options → User-defined Variables.
- In the project, open Project Properties (Projekteigenschaften) → Survey Options (Umfrageeinstellungen) → the "User-defined Variables" (Benutzerdefinierte Variablen) tab.
- Set "Number of URL parameters" (Anzahl der URL-Parameter) to the count you need; EFS creates p_0001, p_0002, p_0003 in order.
- Build the start link with EFS's reserved single-letter keys in that same order: ?a=%SAMPLY_ID%&b=%PARTICIPANT_CODE%&c=%MESSAGE_ID% (a→p_0001, b→p_0002, c→p_0003). Do NOT pass ?p_0001=…
- Check the data export / codebook: the p_0001–p_0003 columns must contain the passed values.
2 · Register completion
Final Page → Properties → "Destination URL of external survey", embedding the wildcard #p_0003# for the message id.
- In the Questionnaire Editor open the Final Page → Properties.
- Set the destination URL to: https://samply.uni-konstanz.de/studies/<study-slug>/done/#p_0003# (use whichever p_000n holds %MESSAGE_ID%).
- UNCHECK "Automatically add ospe.php3 to URL" and "Add return ticket" (both ticked by default) so EFS sends the participant to the unmodified Samply URL.
- Save and run a test completion; confirm #p_0003# resolves to the real 15-char message id.
Reserved parameters & gotchas
Incoming keys must be the reserved single letters a, b, c… (NOT p_0001). Mapping is positional: a→p_0001, b→p_0002, c→p_0003 — a wrong order silently stores values in the wrong column. EFS also reserves lfdn, code, c, tester, language.
Things to watch out for
- EFS UI labels vary by version/locale and the official docs are partly login-gated, so confidence on exact English wording is medium — verify against your instance with a live test before fielding.
- A simple outbound redirect needs no special add-on; the ospe.php3 / return-ticket options are only for returning to another EFS/Questback survey.
Sources
These steps were checked against the platform's documentation, but some UI labels vary by version — verify against your instance with a test run before fielding.