# Feedback links & forms

Hosted pages that collect feedback from people who will never install the widget — a free-text form, a structured questionnaire, or a guest pass for the widget itself.

Source: https://docs.annot8.app/docs/feedback/links



Not every reviewer will visit your site with the widget loaded. A feedback link
is a hosted page at `https://www.annot8.app/p/<slug>` that anyone can open, fill in,
and submit — no account, no install.

Manage them in **Project → Feedback**, which has four tabs: **Feed**,
**Forms**, **Portal**, and **Changelog**.

## The three things a public link can be [#the-three-things-a-public-link-can-be]

| Type              | The page shows                                | Submissions land in                                              |
| ----------------- | --------------------------------------------- | ---------------------------------------------------------------- |
| **Feedback form** | A free-text box, plus optional name and email | The **Feed** tab and the project inbox, as threads marked `form` |
| **Questionnaire** | Your questions, rendered as a form            | The **Responses** view for that link, aggregated                 |
| **Portal**        | A public, votable feedback board              | [Its own board](/docs/feedback/portal)                           |

<Callout type="info">
  Forms and questionnaires are a **Pro** feature. The guest pass for the widget,
  described below, works on every plan.
</Callout>

## Feedback forms [#feedback-forms]

Create one in **Feedback → Forms**. Give it a name, an optional description, and
optionally pin it to an environment so its submissions are filed into the right
lane.

## Templates [#templates]

Creating a form starts from a template, and every question stays editable. The
builder shows a live preview of the page respondents will get.

| Template                | Gives you                                                      |
| ----------------------- | -------------------------------------------------------------- |
| **Open feedback**       | A feedback form: one message box, submissions land in the Feed |
| **Bug report**          | What they tried, what broke, and how badly it hurts            |
| **Feature request**     | The idea, the problem it solves, and how much it matters       |
| **NPS survey**          | The 0–10 recommend question and the reason for the score       |
| **Satisfaction (CSAT)** | A 1–5 rating and what could be better                          |
| **Exit survey**         | Why they're leaving, and whether they'd come back              |
| **Blank questionnaire** | One empty rating question to build from                        |

Each form can also set its own thank-you message and accent colour.

Each form gets its own slug, so you can run several at once — one per client, per
release, per campaign — and filter the Feed by which one a submission came
through.

Submissions become ordinary threads. They carry a status, appear in the inbox
next to widget threads, and can be triaged, assigned, and pushed to your tracker
like anything else. What they don't have is a pin, since they weren't left on a
page.

## Questionnaires [#questionnaires]

A questionnaire is the same hosted page with structured questions instead of a
free-text box. Five question kinds:

| Kind     | Renders as                                     |
| -------- | ---------------------------------------------- |
| `rating` | A 1–5 rating scale (CSAT)                      |
| `nps`    | A 0–10 "how likely are you to recommend" scale |
| `yesno`  | Yes / no                                       |
| `choice` | Multiple choice, from your list of options     |
| `text`   | Short text                                     |

Mark any question required, and add optional help text. Rating and NPS
questions can label their scale ends, for example "Not at all likely" and
"Extremely likely".

For an NPS question, **Responses** shows the score — the percentage of
promoters (9–10) minus the percentage of detractors (0–6) — alongside the
promoter, passive, and detractor counts and the full distribution. Answers are collected per link and read in the
**Responses** view rather than the inbox — a questionnaire is meant to be
aggregated, not triaged one row at a time.

Good for a post-launch survey, a client sign-off checklist, or a "did this fix
it?" follow-up.

## Archiving [#archiving]

Links are archived rather than deleted, which keeps the submissions you already
collected intact. An archived link stops accepting new submissions.

There is no built-in expiry date — if you want a link to stop working after a
client review, archive it when the review ends.

## The widget's guest pass [#the-widgets-guest-pass]

Separately from forms, a project can have one **public feedback link** that lets
*guests use the widget itself* — pinning comments on your real page, without
signing in.

Create it in **Project → Settings → Configuration → Public feedback link**.

Once it exists, the widget finds it automatically: on page load the widget looks
for a public link matching the current environment, falls back to one that isn't
pinned to any environment, and uses it. You generally do **not** need to add
`data-public-slug` to your script tag — the generated snippet only includes it
when a link already exists.

```html
<!-- Only needed to force a specific link -->
<script
  src="https://www.annot8.app/widget.js"
  data-project-id="pj_xxxxxxxxxxxx"
  data-convex-url="https://your-deployment.convex.cloud"
  data-public-slug="abc123"
  async
></script>
```

Guests give a name (and optionally an email) with their first comment. They
never consume a paid seat. Guests see the other guest comments left on the
page (and their pins), but not your team's internal threads.

Signed-in members can check whether guest access is on from the widget itself:
**widget → Settings → Guest reviewers** shows the current state and links to
the project setting above.

<Callout type="warn">
  The Free plan allows **3 distinct guest reviewers** per workspace. When that's
  reached, further guest submissions are refused with a clear message in the
  widget rather than failing silently. Every paid plan makes guest reviewers
  unlimited.
</Callout>

## Sharing a link [#sharing-a-link]

The hosted page is branded, mobile-friendly, and works in any browser. Paste it
into an email, a Slack message, or a client brief:

```markdown
We'd love your notes on the new checkout flow:
https://www.annot8.app/p/abc123

No sign-up needed — just tell us what you see.
```

## Security notes [#security-notes]

* Slugs are randomly generated and unguessable.
* Respondents only ever submit. They never see other people's submissions, which
  stay in your dashboard.
* Public link submissions still pass through the project's
  [moderation and reporting](/docs/security/overview#content-reports) path.
* Archiving takes effect immediately.
