PsyCloud

Troubleshooting

Quick fixes for the issues people hit most often.

Authoring & preview

The trial table is empty or the preview hangs. Open the Rows and Console tabs in the bottom dock. The most common cause is an accidentally huge design — the trial count is the product of your factors, levels, samples, and repeats, so a few extra levels can explode it. Watch the per-step row counts in Trial Design and reduce levels or repeats.

A derived column shows the expression text instead of a value. Check the syntax. Expressions reference the row/trial and study parameters as row.<col> / params.<name> (with helpers like nth, indexOf, length) in Studio, and trial$x / row$x (R) or col.x / row.x (Python) in code. A typo'd reference is treated as literal text. See the expression DSL.

A stimulus shows the binding name instead of the data. In the Screen editor, confirm the component's Source is set to a trial field and the column actually exists in the generated rows. Use the Preview row selector to verify it resolves across trials.

Scoring & feedback

Feedback says "Correct" on missed (timed-out) trials. This is the !outcome.correct footgun: on a timeout outcome.correct is undefined, and !undefined is true. Use explicit comparisons — outcome.correct == false or outcome.timedOut == true — and read the canonical response fields, never raw telemetry paths.

Launch, monitor & data

Publish, hosted runs, recruitment, or data export are greyed out. You're in local-draft mode. Those steps require a connection to the PsyCloud backend — see Launch. Validation and preflight still work offline.

Monitor shows no sessions / Data says "No runs yet." Monitor in local mode only shows local Preview sessions, and Data export operates on hosted runs. Publish and host a run to collect exportable data.

Importing

Some jsPsych plugins didn't convert. Open import/report.md (or the Studio import report). Unsupported plugins (media recording, eye tracking, sketchpad, a few specialized ones) are listed there; replace them with PsyCloud components after import. Always review timing and flagged plugins before deploying — see Importing & Migrating.

Recruitment

Prolific: "connector not configured" / 401 / 429. Connect your Prolific token to the workspace (or set PROLIFIC_API_TOKEN when self-hosting). A 401 means the token doesn't match the intended workspace; a 429 means you're rate-limited (it recovers automatically).

MTurk: workers see a blank page or can't submit. Almost always an HTTPS/mixed-content issue — production MTurk requires a public HTTPS run URL with a valid certificate. Test in the sandbox first, and confirm the worker handshake before going live.

Still stuck? Replay it.

For anything participant-specific, Time Machine replays the exact session and its Explain view shows the provenance behind each frame — often the fastest way to find the cause.