Docs

How Sirnia decides what to ask, what it checks before accepting an answer, and what shape your data arrives in.

Build your first form

A form is an ordered list of questions. Add one, give it a question and an answer type, and it is live the moment you publish. There is no separate draft to promote.

  • Open the builder and add your first question.
  • Pick an answer type. This decides how the answer is stored, not just how it looks.
  • Publish. You get a link straight away, and a custom domain on Team and above.

Editing a published form takes effect immediately. Responses already collected keep the questions they were actually asked, so changing a form later never rewrites your history.

Answer types

The type you choose decides what comes back in your export. A number arrives as a number, a date as a date. Nothing is stored as loose text unless you ask for text.

Short textOne line. Good for names, references and identifiers.
Long textSeveral lines. Kept as written, including line breaks.
ChoiceOne of a fixed list. Exports as the option's own text.
NumberStored as a number, so you can sum and sort without cleaning it.
ScaleA range you set, usually 1 to 5. Exports as the number alone.
DateStored as an ISO date, whatever format the person typed.
FileUploaded and linked. Size limit depends on your plan.

Branching

Any question can depend on an answer given earlier. You write the condition once, on the question that should appear, and Sirnia works out the rest.

Which unit?
  shown when  What are you reporting?  is  Equipment fault

Conditions read from the top down. A question can only depend on a question above it, which is what makes the order you see in the builder the real order.

What a skipped question means

A question that was never shown is empty in your data rather than blank-because-unanswered. Those are different things and Sirnia keeps them apart: a skipped question is recorded as not asked, so you can tell silence from absence.

If you change a condition later, responses already collected keep the path they actually took. Sirnia does not re-evaluate old responses against new rules.

Checking answers

A check runs while someone is typing, before the form can be sent. The point is that the person fixes the mistake while they are still looking at the field, rather than you repairing it a week later.

  • A pattern, for references with a fixed shape.
  • A range, for numbers and dates.
  • Your own list, uploaded or pulled from a URL, for things like an asset register.
Which unit?
  must be in  Asset register

  PMP-4471   ✓ found
  PMP-9900   not in register

A failing check blocks sending, so an invalid value never reaches your export.

Partial responses

If someone closes the tab halfway through, what they already answered is kept and marked partial. You see the exact question they stopped on.

This is the most useful number in the product. A question where many people stop is almost always a question that needs rewriting, not a sign that people are not interested.

Partial responses are kept on every plan, Free included, and they do not count against anything. Responses are not metered.

Reading responses

The responses view lists what came back and lets you filter by the path people took or by whether they finished. Open any single response to see its whole journey: the questions asked, the answers given, and the questions that never appeared, each with the reason.

R-1285
  What are you reporting?   Equipment fault
  Which unit?               PMP-4471  checked ✓
  How severe is it?         4 of 5
  Which item is low?        never asked — the first answer was Equipment fault
  What happened?            Seal failure on the inlet side

Export and webhooks

Export everything as CSV or JSON at any time. Column names match your question names, so you do not have to map anything by hand. A question that was never asked is an empty cell, not a zero and not the word null.

Sending each response onward

A webhook fires once per response, when it is sent. Partial responses fire only if you ask them to.

{
  "response": "R-1285",
  "form": "equipment-report",
  "received": "2026-10-29T09:14:22Z",
  "complete": true,
  "answers": {
    "what_are_you_reporting": "Equipment fault",
    "which_unit": "PMP-4471",
    "how_severe_is_it": 4,
    "what_happened": "Seal failure on the inlet side"
  },
  "not_asked": ["which_item_is_low", "how_many_are_left"]
}

The not_asked list is the part worth wiring into whatever receives this. It tells you which fields are absent by design, so your side can tell a skipped question from a missing one without guessing.

We retry a failing endpoint six times over an hour, then stop and show the failure on the response itself.

Retention

Each workspace has a window: 30 days on Free, one year on Team, no limit on Business. A response older than the window is deleted.

Deleted means deleted. It is not hidden behind an upgrade prompt and we cannot bring it back for you afterwards. If you need a longer record than your plan keeps, turn on a scheduled export first and the copy is yours.

Changing your plan changes the window from that moment on. Lowering it does not retroactively delete anything that was already outside the new window at the time of the change; the next nightly pass applies it.