Experiment builder for survey-embedded studies
Build the scenario. Your survey platform runs the study.
Workframe is a scene-based experiment builder for behavioural researchers. Compose a branching, animated scenario on a timeline, publish it as a fixed version, and embed it as one step in the survey you already run. Responses come back as one row per run, joined to the respondent ID your survey passes in.
Access is currently limited to pilot researchers. Nothing to install — Workframe runs in the browser, and embeds anywhere you can put an iframe.
What a participant sees
Thirty seconds inside a study
This is the participant surface, running the way it runs in a real study: an iframe inside one step of a survey. The scenario plays on a timeline, pauses when it asks something, records the answer, and can route to a different scene depending on what was chosen. When it finishes, it tells the page hosting it that the run is complete and hands back the recorded choices — which is how your survey knows to let the participant continue.
The workflow
Four steps from blank timeline to collected data
Compose
Lay clips onto five tracks: a background, characters, dialogue, the moments where the
participant chooses, and invisible signals that mark what happened. Set what each clip
does, when it starts, and how long it stays. Weave an earlier answer back into a later
line with {{variable}} templating.
Check the paths Beta
Open the branch map to see every route through the study, filtered to one experimental condition at a time. Path checks flag unreachable scenes, dead ends and loops before a participant ever hits one.
Publish a version
Publishing validates the study, then freezes it as a numbered version with its own manifest. Participants always run a published version. Editing the draft afterwards cannot change what anyone has already seen.
Collect and export
Paste one iframe into your survey — we generate the snippet, and for Qualtrics we generate the companion JavaScript too. As participants complete runs, they appear in the results workspace: one row per run, with your variables and signals as columns. Download the whole dataset as CSV or JSON.
Authoring
Enough structure for a real design, not more
Workframe is deliberately narrow. It builds timed, branching, character-driven scenarios — the kind used for vignette studies, trust and disclosure manipulations, negotiation and advice-taking paradigms, and process-tracing designs. It is not a general app builder.
Five tracks
- Environment — a background that fills the stage for the length of a beat.
- Characters — actors you position, move, scale and fade, with an optional non-verbal action cue.
- Dialogue — timed on-screen speech attributed to a speaker, templatable.
- Interactions — where the participant chooses. The timeline pauses until they answer.
- Signals & variables — invisible markers fired when a clip ends. They drive conditional content and become clean columns in your data.
Four ways to ask
- Single choice — one answer from a list; each option records a stable value and can route onward.
- Multiple choice — select all that apply; records the chosen values.
- Rating scale — a row of points, for example a 7-point trust rating.
- Open text — free text with an optional minimum and maximum, counted in characters or words.
Five ways to branch
- Condition — show content to one experimental arm, decided upstream in your survey and passed in as a parameter.
- Assignment — a second, independent grouping for a 2×2 or a nested factor.
- Earlier answer — show a follow-up only to people who chose a particular option.
- Earlier signal — show content only after a specific moment has happened.
- Random draw — a within-run coin flip, sampled once per session, not every frame.
Delivery
It goes where your study already lives
A published study is a URL. You embed it in an iframe at the point in your survey where the scenario should play, it runs, and it hands control back when the participant is done. Your survey platform keeps the survey order, the consent page, the randomisation and the payment; Workframe owns what happens inside the frame.
Three moving parts, and none of them are proprietary
| What happens | How | |
|---|---|---|
| In | Your survey tells the study who this participant is and which arm they are in | URL parameters on the iframe src — condition, assignment, and whatever respondent or session IDs your platform can pipe |
| During | The scenario runs and records | Entirely inside the frame. Nothing is required of the host page |
| Out | The study announces completion and returns the recorded choices | A browser postMessage to the page that embedded it, so the host can unlock its own Next button and store the results |
That is the whole contract. It is ordinary web platform behaviour, not a proprietary connector, which is why a study will run in most places that can host an iframe and pass a query string. What differs between platforms is not whether it runs, but how much of the write-back we have already built and tested for you. The rest of this section is honest about that difference.
Qualtrics Deepest support
The fully documented path, and the only one we test on every release. Set-up is three paste operations: add the embedded-data fields to your Survey Flow, paste the iframe into a Text/Graphic question, paste the question JavaScript we generate. The JavaScript stores named signals as embedded data and holds the Next button until the scenario completes.
Prolific Recruitment parameters
A different job, and additive rather than alternative. Prolific
recruits; your survey platform still hosts the study. When participants arrive from
Prolific, PROLIFIC_PID, STUDY_ID and SESSION_ID
pass through into the study and land in your export, so reconciling submissions against
approvals is a join on an ID you already have.
Anything that can embed an iframe Works, untested by us
Usually yes, but you verify it, not us. The participant surface is a
public URL that takes its context from query parameters and reports completion by
postMessage. What you will not get automatically is the write-back
convenience. We have not tested these paths and do not claim them as supported. Pilot one
run end to end before you launch.
Results
One row per run, and you can take it with you
The results workspace has two views. Participants gives you one row per completed or abandoned run. Raw events gives you the underlying sequence — every exposure, choice and signal, with elapsed time — for anyone who wants to reconstruct process measures rather than trust a summary.
Columns you get without configuring anything
qualtricsResponseIdprolificPidsessionId
conditionassignmentstartedAt
completedAtcompleteddurationMs
scenesCompleted
Your own response variables and signals appear alongside them, named the way you named
them. The identifier columns are populated from whatever your survey and recruitment
tools passed in — they are empty rather than wrong if a study does not supply them.
sessionId is ours and is always present, so every run is joinable even when
nothing upstream sent an ID.
Before you launch, and after
- Test runs stay out of your dataset. Previews you run while building are hidden until you tick Include test runs.
- Integrity audit. Compares every completed run against the variables and signals its published condition should have produced, and lists exactly which fields are missing and how many runs are affected.
- Export. CSV and JSON, the whole dataset, paged until it is complete. Text fields are escaped so a response beginning with
=cannot execute as a spreadsheet formula.
Pricing
Pay once for each study you publish
Most research software charges rent. That works for a lab running studies continuously and badly for everyone else — a subscription that lapses between grants takes your access with it. Workframe charges a one-time fee at the moment a study goes live, and that study stays live.
Draft
- Unlimited draft studies
- Every authoring feature: all five tracks, branching, rules, variables, signals
- Branch map and path checks
- Preview and test runs, recorded as test data
- No participant sessions. A draft cannot collect real data.
Published study
- Everything in Draft
- Publish numbered, immutable versions of this study
- Unlimited participant sessions and unlimited events
- Republish as often as you need — corrections and revisions never cost again
- Full CSV and JSON export, no row cap
- Results, raw events and the integrity audit
- Your data stays available and exportable after collection ends
Billing is not switched on during the pilot. Pilot researchers publish at no cost, and we will tell you before that changes.
- Is it per study or per participant?
- Per study. Whether the study collects 40 responses or 4,000, the fee is the same.
- Do revisions cost again?
- No. A published study can be republished as a new version as many times as you need. You pay once for the study, not once per version.
- What counts as a new study?
- A new project. If it has its own participants, its own dataset and its own results page, it is a new study.
- Does my data expire if I stop paying?
- There is nothing to stop paying. Once a study is published it stays published, and its data stays exportable.
- What if my study never runs?
- Drafts are free. You only pay at the moment you publish.
Not available yet
Two things researchers ask for that Workframe does not do today. They are on the list; we are not putting dates on them, because a date we miss is worse than no date.
Shared lab workspaces — several researchers on one set of studies, with per-person access. Today a study belongs to one account, and sharing means sharing a login, which we do not recommend.
Institutional agreements — a departmental or university-wide arrangement with your own single sign-on and a signed data processing agreement, invoiced annually rather than per study.
If either would decide it for your group, say so in your access request. What we hear shapes the order we build in.
Trust
Written to be forwarded to your IRB
These are the answers ethics boards and data protection officers ask for. If your committee needs something not covered here, ask us and we will put it in writing.
What we store about participants
Responses, event sequences, timing, and the identifiers your survey passes in. Participant identifiers arriving from your survey are stored as a one-way hash for deduplication rather than as plain values. Workframe never asks a participant for a name, an email address or an account.
No participant login
Participants never create an account or sign in to Workframe. They open an iframe, complete the scenario, and leave. Session tokens are held as hashes and expire.
Where it runs
On Cloudflare's edge network, with study data in Cloudflare D1 and uploaded media in Cloudflare R2. Cloudflare is our sole subprocessor — the full list is below, and we will supply the signed hosting and durability details on request.
Subprocessors
The complete list of third parties that process your data on our behalf:
- Cloudflare, Inc. — edge compute (Workers), study database (D1), media storage (R2) and researcher sign-in (Access). United States / global edge.
There are no others. No analytics, email, advertising or tracking vendor touches participant data. We will notify pilot accounts before this list ever changes.
Export and deletion
Your dataset is downloadable as CSV or JSON at any time, in full — no row cap, no request needed. From your account you can delete a single study and its collected data, or delete your entire account and everything in it; deletion is immediate and irreversible.
Who can see your studies
Access to a project and its results is limited to the account that owns it. Researcher sign-in is protected by Cloudflare Access; every authoring request is independently verified server-side before it reaches project data.
What we do not do
No advertising or marketing use of participant data. No selling or sharing with third parties. No tracking pixels or third-party analytics on the participant surface — an iframe inside your survey should not carry anyone else's beacons.
Workframe is a data processor for the participant data you collect. You remain the controller and the person your IRB approved.
Getting started
Workframe is in a supervised pilot
There is no self-serve signup yet, and we would rather say so here than after you have filled in a form. Accounts are added to an allow-list by hand while we work with a small group of research teams and fix what they find.
Request access
Tell us your institution, roughly what you want to run, and which survey platform you use. Three fields, under a minute.
We reply
Usually within two working days, from a person, including when the answer is not yet.
Sign in
Your email is added to the allow-list and you sign in with a one-time code sent to your institutional address. Nothing to install.
Already on the allow-list? Sign in takes you to the Workframe sign-in page.
Questions
Before you ask us
Do I have to use Qualtrics?
No, but it is the path we support best. A published study is a URL that runs in an
iframe and reports its results by postMessage, so it will run on most
platforms that let you embed HTML and pipe values into a URL. What Qualtrics gets that
others do not is a generated snippet that stores results as embedded data and holds the
Next button until the scenario finishes, plus our testing on every release. On another
platform the study still runs and still records everything to your dataset — you would
wire up the write-back to that platform yourself. If you are on something else, say so
when you request access; that is how we decide what to document next.
Do I need to know how to code?
No. Building a study, publishing it and reading the results are all done in the browser. The one place you touch code is the survey set-up, where you paste a snippet we generate — an iframe, plus a block of JavaScript if you are on Qualtrics. You do not need to modify either.
Does Workframe replace my survey platform?
No, and it is not trying to. Your platform keeps the consent page, the survey items, the randomisation and the payment flow. Workframe is one step inside that survey, the one where the scenario plays. We have deliberately not built survey items, panels or analysis — those exist and work.
What happens if I edit a study while it is collecting data?
Nothing, for participants already running. They are running a published version, which is frozen. Your edits sit in the draft until you publish again, which creates a new numbered version. Each run records the version it was on, so you can always tell which participants saw which stimulus.
Can I cite a specific version in a paper?
Yes. Every published version has a stable version identifier, and it is the identifier your placement URL points at. Quote it in your methods section, and a replicator can be pointed at exactly the stimulus you ran.
How do participants get randomised into conditions?
Upstream, in your survey, by whatever mechanism you already trust. Workframe reads the condition and assignment values your survey passes in and shows the content whose rules match. We deliberately do not take over your randomisation.
Does it work on a phone?
The scenario renders on a fixed 1920 × 1080 stage that scales to fit its frame, so it works on a phone in the sense that it displays and is usable. It has not been optimised for small screens, and a scenario with dense dialogue will be harder to read there. If phone completion matters to your sample, pilot it on a phone before you launch. The authoring tool is desktop-only.
Is my data backed up, and how long do you keep it?
Collected study data is retained for as long as your study exists, on managed Cloudflare infrastructure with their durability guarantees. It is not a substitute for your own archive: export a copy at the end of data collection, the same way you would with any platform.
What do I do if something breaks mid-study?
Email us. During the pilot you are talking to the people who built it, not a ticket queue, and a study that is live with real participants in it goes to the front. We will tell you what happened rather than that we are looking into it.
Ready to try it on a real study?
Tell us what you want to run. We will tell you honestly whether Workframe fits it.