> ## Documentation Index
> Fetch the complete documentation index at: https://docs.exoid.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> The most common causes of problems in Exoid and how to fix them, from hidden prerequisites to configuration mistakes.

When something doesn't work the way you expect, the cause is almost always one of a handful. This page collects the points where users actually get stuck, described the way you'd notice them, with the fix and a link to the page that explains it in full.

<Tip>
  If a feature you're looking for doesn't appear in the interface, check **Advanced statistics mode** first: it's the most frequent cause. Several features stay hidden until you turn it on in the [interview settings](/en/advanced/advanced-statistics).
</Tip>

## Features that don't appear in the interface

<AccordionGroup>
  <Accordion title="I can't find the SPSS export" icon="download">
    The SPSS `.sav` export requires **Advanced statistics mode** to be active in the campaign settings. Until you turn it on, the format doesn't show up among the export options.

    Enable it from the [interview settings](/en/advanced/advanced-statistics), then go back to **Results → Responses** and try the export again. See [Exporting data](/en/analyze/export) for the available formats.
  </Accordion>

  <Accordion title="I can't use context variables" icon="braces">
    Same prerequisite: context variables require **Advanced statistics mode**, which you enable from the settings in the side menu.

    See [Advanced statistics mode](/en/advanced/advanced-statistics) and [Context variables](/en/logic/variables).
  </Accordion>

  <Accordion title="I'm looking for the visibility condition and can't find the button" icon="eye">
    The visibility condition sits on the block itself, and it's available on any block wherever you open it — canvas or list view. What throws people is the label: the button says **Skip condition**, but the modal it opens is titled **Visibility condition**, with a **Show / Skip** selector at the top.

    See [Logic and conditions](/en/logic/conditions).
  </Accordion>

  <Accordion title="I can't find the CSV export" icon="download">
    There isn't one. Exoid exports Excel and SPSS from Responses, PDF and Excel from Summary, and PowerPoint and Word from the AI Report.

    If a downstream tool needs a CSV, export the Excel file from Responses and convert it. See [Exporting data](/en/analyze/export).
  </Accordion>

  <Accordion title="I'm looking for the templates" icon="layout-template">
    There is no template gallery. A campaign starts one way: **New campaign** opens **What do you want to build?**, where you either describe the study to the AI — attaching a PDF or DOCX brief if you have one — or choose **Start from scratch**.

    See [The Builder](/en/builder/overview) and [AI Interview Builder](/en/builder/ai-builder).
  </Accordion>
</AccordionGroup>

## The interview flow doesn't behave as expected

<AccordionGroup>
  <Accordion title="A question never shows up for respondents, but I see it in the results" icon="alert-triangle">
    The block exists in the builder but isn't connected to the flow, so respondents can't reach it — even though it still appears in the results.

    When you publish, the system flags this with the warning **Unconnected nodes — A question is not connected and will not appear in your survey.** Connect the block by dragging the connector from the previous block's exit point, or delete it. See [The Builder](/en/builder/overview).
  </Accordion>

  <Accordion title="I set up a logic expression and nothing happens" icon="code">
    The expression references the source question's code. If the **Question code** field on the source block is still set to its default value, the expression can't be evaluated and the logic won't run.

    Open the source block's settings, set an explicit code (for example `D8`) and reference it from the destination block. See [Advanced logic expressions](/en/logic/expressions).
  </Accordion>

  <Accordion title="I can't delete or reorder questions" icon="move">
    This is a current limitation of the Linear Builder: in the linear view you can't change the interview structure, so you can't delete questions or move them up and down.

    Exit the linear view with the ✕ at the top right, go back to the Visual Builder, delete or reorder the blocks on the canvas, then return to the Linear Builder to keep working on logic and conditions. See [Linear Builder](/en/builder/linear-builder).
  </Accordion>

  <Accordion title="I see the variable name in the question text instead of the value" icon="braces">
    Two possible causes. The first is syntax: a variable is written with double curly braces, like `{{variable_name}}`. The second is that the variable was never set — a variable gets its value in one of three ways: set by hand, read from a URL parameter, or taken from the answer to a question.

    Keep in mind that if the same name is reused later on, the last assigned value wins. See [Context variables](/en/logic/variables).
  </Accordion>
</AccordionGroup>

## Distribution and recruiting

<AccordionGroup>
  <Accordion title="I can't launch recruiting: the button is disabled" icon="users-round">
    Three conditions have to be met together before you can launch recruiting:

    * at least one profile configured in the **Profiling** section
    * all required fields filled in — **Fielding time** is the only one marked as required
    * **Feasibility** greater than zero

    If Feasibility drops to zero the launch stays blocked until you loosen the targeting filters. See [Recruit participants](/en/distribute/recruiting).
  </Accordion>

  <Accordion title="The estimated cost is higher than I expected" icon="credit-card">
    The total cost is the CPI multiplied by the required completes. The CPI goes up when **Expected incidence** is low — the system has to reach more people to hit the target sample — and when the **expected interview length** is long.

    Review those two parameters and how restrictive your profiles are before launching. See [Recruit participants](/en/distribute/recruiting).
  </Accordion>

  <Accordion title="A respondent lost their answers halfway through the interview" icon="repeat">
    Exoid saves answers automatically while the interview is in progress, in the participant's browser, and restores the current page, the answers already entered and the progress.

    Recovery does require the **same browser and the same device** used to start: anyone resuming from another device or a different browser starts over. See [Sharing the link](/en/distribute/share-link).
  </Accordion>

  <Accordion title="Respondents can't open the interview" icon="circle-play">
    While the interview is in **Draft** it isn't accessible to respondents. Check the status at the top of the page and switch on **Enable survey**: the campaign moves from Draft to Live and can be completed through the link or your distribution channels.

    See [Publishing your study](/en/distribute/publishing).
  </Accordion>

  <Accordion title="I'm looking for the embed code or the QR code" icon="link">
    Neither exists. **Copy survey link** copies the URL to your clipboard and nothing else: no panel opens, and there is no interface for embed codes, QR codes or link parameters.

    Everything you do with the link happens outside Exoid — put it behind a call to action on a landing page, in a newsletter, or generate a QR code with your own tool. See [Sharing the link](/en/distribute/share-link).
  </Accordion>
</AccordionGroup>

## Webhooks

<AccordionGroup>
  <Accordion title="My endpoint isn't receiving anything" icon="webhook">
    Check in this order:

    * **Enable Webhook** has to be on for that campaign, under **Settings → Webhook**
    * the **Webhook URL** has to be the full address of the right endpoint
    * in **Webhook Requests**, check the status code returned

    If you see `400`, `401`, `403` or `404` responses, those are permanent errors: they trigger no retries and the event is lost. Use **Test Webhook** for a dry run. See [Configuration](/en/webhooks/configuration) and [How they work](/en/webhooks/introduction).
  </Accordion>

  <Accordion title="Signature verification always fails" icon="shield">
    Exoid signs the **raw body** of the request with HMAC-SHA256. If you run `JSON.parse` (or middleware such as `express.json()`) before verifying and then re-serialize the object, the bytes change — whitespace, key order, escaping — and the comparison fails even on perfectly legitimate requests.

    Compute the HMAC over the raw Buffer, for example with `express.raw`, and only call `JSON.parse` once the signature checks out. See [Signature and security](/en/webhooks/security).
  </Accordion>
</AccordionGroup>

## Team and permissions

<AccordionGroup>
  <Accordion title="I can't find a colleague among the campaign collaborators" icon="users">
    Only users who are already in your workspace appear in the collaborators list.

    Add the person first from **Members → User management** in the side menu, then reopen the campaign's collaborators window and select them. See [Campaign collaboration](/en/workspace/collaboration) and [Roles and permissions](/en/workspace/roles).
  </Accordion>

  <Accordion title="A user can see the campaign but can't edit it" icon="shield-check">
    Visibility and permissions are two separate things. The public/private setting on a campaign only controls who sees it: it doesn't change editing or publishing permissions, which depend on the role assigned in the organization.

    To change what a user can do, change their role from the dropdown on their row in **User management**. The two roles are Administrator and Guest. See [Roles and permissions](/en/workspace/roles) and [Campaign collaboration](/en/workspace/collaboration).
  </Accordion>
</AccordionGroup>

## Results

<AccordionGroup>
  <Accordion title="The AI Report contains inaccuracies" icon="file-text">
    Always review the generated report before sharing it: the AI speeds up the first draft, but the final check is yours.

    Fix the document in its dedicated workspace, either manually in the editor or by asking the AI to rewrite specific sections, and export only after the review. See [AI Report](/en/analyze/ai-report).
  </Accordion>

  <Accordion title="The export doesn't contain the responses I expected" icon="table">
    You export what you select: the response type chosen at the top left of the table determines the export dataset. If **Screened-out responses** are active, the file will contain the disqualified respondents, not your main sample.

    Always check the selector before running the export. See [Exporting data](/en/analyze/export).
  </Accordion>

  <Accordion title="I can't filter the results by age, gender or region" icon="filter">
    Filters in Summary are built on **your** questions, not on a library of ready-made demographic attributes. Each condition is a question — picked by its question code — an operator and a value.

    If you need to segment by an attribute, it has to be a question in the interview. Give it a clear question code and it becomes filterable, and usable as a comparison cluster. See [Summary](/en/analyze/summary).
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Advanced statistics mode" icon="sigma" href="/en/advanced/advanced-statistics">
    The prerequisite behind most of the features you can't find.
  </Card>

  <Card title="Contact support" icon="send" href="mailto:support@exoid.io">
    If your problem isn't here, write to the Exoid team.
  </Card>
</CardGroup>


## Related topics

- [Feedback and requests](/en/feedback.md)
- [Exoid documentation](/en/index.md)
