Distribute
Five channels reach respondents. All five funnel into the same response store, segmented by panel_id so you can break down results per source without any extra configuration.
Channels at a glance
| Channel | When to use | Typical latency | Detail page |
|---|---|---|---|
| Public link | Open recruitment — share one URL anywhere | Instant | (below) |
| Email list | You own the recipient list — tracked, tokenized invites via SendGrid | Seconds to deliver | Email distribution |
| Synthetic panel | Directional data with no humans — AI-generated respondents | Minutes per cohort | Synthetic |
| Prolific | Real respondents from Prolific's vetted academic panel | Hours to days | Prolific |
| Dynata | Large general-population panel for high-scale studies | Hours to days | Dynata |
Public link
The simplest channel. Publish the survey and share its public URL:
https://flashpoint.ai/s/{survey_id}
Anyone with the link can respond. The link is live as soon as the survey status is active and stops accepting submissions when the survey is paused or completed.
Public-link responses arrive with panel_id = null, labeled as Open distribution in the Analyze tab. This is the right choice for embedded survey links on your website, QR codes at events, or social-media posts where you do not need to track individual recipients.
# Verify a survey is active (and therefore accepting public responses)
curl https://surveys.flashpoint.ai/api/v1/surveys/{survey_id} \
-H "X-Service-Token: $TOKEN" \
-H "X-Team-ID: $TEAM_ID" \
-H "X-User-ID: $USER_ID"
The response includes "status": "active" when the link is live.
Email list
Upload or paste a list of email addresses, customize the invitation template, send. Every recipient gets a unique tokenized link so each response ties back to a specific email address.
The pipeline validates addresses via ZeroBounce, delivers through SendGrid at 10 emails/sec, and tracks per-recipient status from pending through sent, clicked, and completed (or bounced).
Key operations:
- Create a list — from inline emails or a saved custom panel.
- Compose a template — AI-drafted subject, body, and CTA.
- Send — survey must be active; irreversible once triggered.
- Track — per-recipient delivery and completion status.
- Resend — remind non-respondents without re-mailing those who already completed.
- Add recipients — append to an existing list after the initial send.
Full walkthrough with curl examples: Email distribution.
Synthetic panel
AI-generated personas take the survey end to end. Responses arrive in minutes rather than days, tagged with a synthetic panel_id so you can include, exclude, or compare them against real respondents in any analysis.
Useful for directional pre-fielding, concept testing, and pressure-testing questionnaire flow before spending on human recruitment.
Full details: Synthetic panels.
Prolific
Real respondents recruited from Prolific's panel. The flow: quote, approve, pay (Stripe), launch, field, close. Prolific demographic data (age, gender, country) is attached to each response. Responses carry panel_provider = "prolific" and the Prolific-specific panel_id.
Full details: Prolific.
Dynata
A larger general-population panel for higher-scale studies. Same quote-approve-pay-launch-field lifecycle as Prolific, with Dynata's own demographic filters and provider-specific respondent metadata.
Full details: Dynata.
How panel_id segments responses
Every channel produces a panel with a unique panel_id. Responses persist with that identifier so the Analyze tab can answer "what did Prolific say vs. my email list?" in one filter change.
| Source | panel_id value |
|---|---|
| Public link | null (shown as "Open distribution") |
| Email list | UUID of the email list |
| Synthetic panel | UUID of the synthetic panel |
| Prolific | UUID of the Prolific panel |
| Dynata | UUID of the Dynata panel |
Pass panel_id as a query parameter on any analytics endpoint to scope results:
curl "https://surveys.flashpoint.ai/api/v1/surveys/{survey_id}/analytics?panel_id={panel_id}" \
-H "X-Service-Token: $TOKEN" \
-H "X-Team-ID: $TEAM_ID" \
-H "X-User-ID: $USER_ID"
Use panel_id=open to see only public-link traffic.
Quotas during fielding
When a survey defines quotas, every incoming response is checked against quota state before it persists. Three outcomes:
- Quota open — response is recorded normally.
- Quota full — respondent is routed to a "thank you" page; response is recorded as
screen_out.
Quota state is live across all channels. A synthetic respondent filling a demographic cell counts against the same quota a Prolific respondent would fill.
Next steps
- Set up email campaigns: Email distribution.
- Analyze what came back: Analyze.
- AI-powered insights: AI insights.
- Check data quality: Data quality.