Dataopi
Concepts

Response templates

One URL per recipient, baked with metadata, redeemable exactly once.

Dataopi does not have an "anonymous public form". Every response is captured through a ResponseTemplate — a single-use token that you mint ahead of time for a specific recipient.

This unlocks two things at once:

  • Metadata travels with each response (recipient ID, store, channel, …) without ever being shown to the respondent.
  • One link per recipient lets you measure response rates per recipient and prevents bots from flooding shared URLs.

Lifecycle

Creating a template

You can create a template either from the admin UI (per recipient) or programmatically with a project API key:

curl -X POST https://your-host/api/surveys/$SURVEY_ID/templates \
  -H "Authorization: Bearer $PROJECT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "metadata": {
      "email": "ada@example.com",
      "store": "MAD-01",
      "purchaseId": "p_24891"
    }
  }'

The response looks like:

{
  "token": "0c63a3f5-...",
  "url": "/r/0c63a3f5-..."
}

For bulk sends, use the templates/batch endpoint with up to 10 000 templates per call.

Metadata schema (optional)

A survey may declare a metadataSchema that lists which keys are allowed and which are required. When set, the API rejects template creation if metadata is missing or has the wrong type. Allowed value types are string, number and boolean.

{
  "email": { "type": "string", "required": true },
  "store": { "type": "string" },
  "isVip": { "type": "boolean" }
}

Editing a response

A respondent can re-open /r/{token} after submitting and edit their answers while the survey remains PUBLISHED. Only the latest version is stored.

What you cannot do (by design)

  • You cannot share a single URL across many respondents — there is no public "open" form. Generate one template per recipient.
  • You cannot reuse a token across surveys — each template binds to exactly one survey.

On this page