An endlink is the URL a survey sends a respondent to when their session is over. It carries two facts: how the session ended, and which session it was. Everything downstream depends on those two facts arriving intact. The supplier's incentive payment depends on them. So does the buyer's invoice, the incidence rate everyone quotes next time, and whether quota closes on time.
Endlinks are usually configured by whoever programmed the survey, late, from an email. That is why they break.
The four outcomes
Almost every sample platform uses the same four, whatever it calls them.
| Endlink | Meaning | ResearchDart code |
|---|---|---|
| Complete | Qualified and finished | 10 |
| Terminate | Did not match the target | 20 |
| Over quota | Qualified, but their quota cell was already full | 30 |
| Quality terminate | Reached the survey, response cannot be accepted | 40 |
On ResearchDart they are /s/end/complete, /s/end/terminate, /s/end/overquota and /s/end/quality, each followed by ?rdid= and the session ID. The numeric form /s/end?st=10&rdid= exists for survey platforms that can only vary a single value.
Over quota is not a terminate
This is the mistake with the most expensive side effects. A terminate says the supplier sent the wrong person. An over quota says they sent the right person too late. Suppliers use terminates to adjust targeting, so sending over quotas to the terminate link makes a good supplier look like a bad one and pushes your reported incidence down. The 2025 Insights Association and GDQ benchmark already found actual incidence running below the incidence studies were sold at; misrouted over quotas make that gap look worse than it is.
Quality terminate is not a terminate either
Speeders, trap-question failures and duplicates often did qualify. Coding them as terminates hides a quality problem inside a targeting number. A separate quality endlink keeps the two apart, and reversals after fieldwork can then use a GDQ removal code that says exactly why.
How the session ID gets there
- The supplier sends a respondent to an entry link with their own respondent ID.
- ResearchDart creates a session and opens the buyer survey with the session ID in the URL, wherever the survey URL has the
{RDID}placeholder. - The survey stores that value as a hidden variable or embedded data field.
- At the end, the survey pipes the stored value into the endlink.
The buyer never sees the supplier's respondent ID, and the supplier never needs anything from the survey. The session ID is the only thing that crosses.
Mistakes that cost money
The ID is never captured. Many survey platforms only read URL parameters they have been told about. If nobody created the rdid field, every endlink arrives with an empty ID and nothing can be recorded. You find out when the supplier asks why none of their completes were credited.
Every exit uses the complete link. A survey with a single end page redirects screen-outs as completes. The invoice is wrong from the first respondent.
Quota exits go to terminate. See above. Quota logic is often added late, and its redirect is the one people forget.
The complete link is unsigned and visible. A respondent who screens out can read the complete URL from the page source or an earlier session and open it directly. Session IDs that must exist help, and first-outcome-wins stops edits to a session that already ended, but only signed endlinks or server-to-server reporting close the gap properly.
Test completes reach the invoice. Use sandbox sessions that never count toward totals.
Before you launch
Run one session down each path and check three things: the outcome recorded matches the link you used, the respondent lands on the supplier's page for that outcome, and the session ID in the endlink matches the one issued at entry. On ResearchDart the sandbox button on each allocation does this against your real survey without touching quotas or totals. It takes ten minutes, which is less time than one reconciliation email thread.