> For the complete documentation index, see [llms.txt](https://docs.fullsession.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fullsession.io/13.-feedback-and-surveys.md).

# 13. Feedback & Surveys

FullSession lets you collect feedback directly on your site with an embeddable **feedback widget**, then read the responses — and watch the sessions behind them. Unlike a long-form survey tool, each FullSession widget asks **one focused question** in one of three formats, which keeps response rates high and the data easy to act on.

<figure><img src="/files/CfF1tJ5r1MdFcDQ6blt1" alt="FullSession feedback widget on a live page showing a focused question that visitors can answer with a single click."><figcaption></figcaption></figure>

> Feedback features are gated by permissions (viewing, creating, reading responses, and viewing analytics are separate). If you don't see an action below, your role may not include it.

***

### 13.1 The Three Feedback Types

Every widget you build is one of these three types. Choose based on the question you want answered.

<figure><img src="/files/q1Pv46UUvrMwRXLtWLTU" alt="FullSession three feedback widget types showing CSAT with an emoji scale, NPS with a 0–10 scale, and Open Ended with free-text responses."><figcaption></figcaption></figure>

#### CSAT — Customer Satisfaction

A **1–5 satisfaction scale**, shown as **emoji faces** or **numbers** (your choice). The five points map to:

| Rating | Meaning                  |
| ------ | ------------------------ |
| 1      | Very dissatisfied (Hate) |
| 2      | Dissatisfied (Dislike)   |
| 3      | Neutral                  |
| 4      | Satisfied (Like)         |
| 5      | Very satisfied (Love)    |

Best for measuring satisfaction with a specific page, feature, or interaction.

#### NPS — Net Promoter Score

A **0–10 scale** asking how likely a visitor is to recommend you. Responses are classified automatically:

| Score | Group          |
| ----- | -------------- |
| 0–6   | **Detractors** |
| 7–8   | **Passives**   |
| 9–10  | **Promoters**  |

Best for measuring overall loyalty and tracking it over time.

#### Open Ended

A **free-text** question. Responses are analyzed for **sentiment** (positive / neutral / negative) automatically, and the text is **full-text searchable**.

Best for capturing qualitative, "in their own words" feedback.

> **These three are the only types.** There's no multi-question survey, multiple-choice, yes/no, star rating, or thumbs widget — and the CSAT (1–5) and NPS (0–10) scales are fixed. Each widget asks one question of one type.

***

### 13.2 Building a Widget

Widgets are created in a **six-step builder**. You move through the steps in order, and the live preview updates as you go.

<div data-with-frame="true"><figure><img src="/files/OdkEcuxyWG9G7XrmX45R" alt="FullSession widget builder showing six setup steps from naming to publishing, with a live preview of the feedback widget."><figcaption></figcaption></figure></div>

| Step                      | What you configure                                                                                            |
| ------------------------- | ------------------------------------------------------------------------------------------------------------- |
| **1. Name & Description** | An internal **name** (unique per site) and an optional description                                            |
| **2. Type & Appearance**  | The widget **type** (CSAT / NPS / Open Ended), plus language, position, colors, theme, and (CSAT) emoji style |
| **3. Messages**           | The main **question** and optional follow-up, email-request, and thank-you messages                           |
| **4. Targeting**          | Which **devices** and **pages** the widget appears on                                                         |
| **5. Triggers**           | **When** the widget appears (and how often)                                                                   |
| **6. Finalize**           | **Display mode** (side beacon vs. pop-up) and optional email forwarding of responses                          |

The next sections cover appearance/messages (13.3) and triggers/targeting (13.4) in detail.

***

### 13.3 Appearance & Messages

#### Appearance

You can tailor the widget to match your site:

| Option                   | Choices                                              |
| ------------------------ | ---------------------------------------------------- |
| **Position**             | Middle Right, Middle Left, Bottom Right, Bottom Left |
| **Display mode**         | **Side beacon** (a tab on the edge) or **Pop up**    |
| **Accent color**         | Hex color (default `#0055A8`)                        |
| **Font color**           | Hex color (default `#1F263E`)                        |
| **Theme**                | Light or Dark                                        |
| **Language**             | English, French, or Arabic                           |
| **Emoji style** *(CSAT)* | Emoji faces or numeric 1–5                           |

<figure><img src="/files/k2wuvybf0LMMPN1sXw1w" alt="FullSession appearance options showing position, display mode, accent and font colors, light/dark theme, and CSAT emoji style settings."><figcaption></figcaption></figure>

#### Messages

Beyond the main **question**, a widget can show several optional messages, each with its own on/off switch:

* A **follow-up comment** prompt (so a rater can add detail).
* An **email request** message (to optionally capture the respondent's email).
* A **thank-you** message after submitting.

<div data-with-frame="true"><figure><img src="/files/WdD8I5Qx5F80b6HyFk5C" alt="FullSession message steps showing the main question, optional follow-up comment, email request, and thank-you message."><figcaption></figcaption></figure></div>

#### Screenshot capture

A widget can optionally **capture a screenshot** along with the response, giving you visual context for what the visitor was looking at when they answered.

***

### 13.4 Triggers & Targeting

**Targeting** decides *where* a widget can appear; **triggers** decide *when* it actually shows.

#### Targeting

| Targeting          | Options                                                                                       |
| ------------------ | --------------------------------------------------------------------------------------------- |
| **Devices**        | Desktop, Tablets, Phones                                                                      |
| **Pages**          | All pages, or specific URLs matched by **exact / starts with / ends with / contains / regex** |
| **Audience share** | A **percentage of visitors** to show the widget to (default 50%)                              |

<div data-with-frame="true"><figure><img src="/files/VWC3S8jUCCUDQNYXUBYO" alt="FullSession targeting settings showing how to restrict a widget by device, pages using URL match rules, and a percentage of visitors."><figcaption></figcaption></figure></div>

#### Triggers

A widget appears when its trigger fires. Available triggers:

| Trigger                   | Fires when…                                     |
| ------------------------- | ----------------------------------------------- |
| **Page Load**             | The page loads                                  |
| **Rage Clicks**           | The visitor rage-clicks                         |
| **Dead Clicks**           | The visitor dead-clicks                         |
| **Error Click**           | A click coincides with an error                 |
| **Scrolled To**           | The visitor scrolls to a given percent (1–100%) |
| **Exits Page**            | The visitor shows exit intent                   |
| **Time After Page Load**  | A set number of seconds after load (1–1000)     |
| **Time After Inactivity** | A set number of seconds of inactivity (1–1000)  |
| **Manual**                | Your code calls it (see below)                  |

Triggering on **frustration signals** (rage, dead, error clicks) is especially powerful — you can ask *"What went wrong?"* at the exact moment a visitor struggles.

<div data-with-frame="true"><figure><img src="/files/7teFPqYfLBBmqifoCK0S" alt="FullSession trigger settings showing how to configure a delay, device, OS, and browser filters, with per-session persistence options."><figcaption></figcaption></figure></div>

#### Manual triggering from your code

The **Manual** trigger lets you show a widget from your own code, using the tracker API (\[Chapter 3, section 3.5]):

```javascript
window.FUS.triggerWidget('YOUR_WIDGET_ID');
```

Use this to fire feedback at a precise moment in your app — after a key action completes, at the end of a flow, or when your own logic decides the time is right.

#### How often it shows

Each trigger has frequency controls:

* **Persistence** — show **once per session** or **once per user**.
* **Appearance count** — the maximum number of times the widget may appear (1–99).
* **Trigger filters** — further restrict by **device**, **OS**, or **browser**.

> **Targeting is by device, OS, browser, page, and visitor percentage** — there's no targeting by custom attribute or saved segment within the widget itself.

***

### 13.5 Results & Scoring

Each widget type has its own results view, with a headline score and trends over time.

#### CSAT results

<div data-with-frame="true"><figure><img src="/files/x3QDIn8q9xQx3jHSg6Op" alt="FullSession CSAT results showing the average score, rating breakdown, and score trend over time."><figcaption></figcaption></figure></div>

* **Average score** (1–5), with an overall **sentiment** label (an average above 3 reads positive, below 2 negative, in between neutral).
* A **breakdown** of how many responses landed on each rating.
* **Total responses** and a **trend chart** over time.

#### NPS results

<div data-with-frame="true"><figure><img src="/files/5hIRGg6m2BTkescYNQe7" alt="FullSession NPS results showing the score on a gauge, promoter/passive/detractor breakdown, and trend over time."><figcaption></figcaption></figure></div>

* The **NPS score**, computed as **(% Promoters − % Detractors)**, shown on a gauge with a rating:

| NPS  | Rating     |
| ---- | ---------- |
| ≥ 70 | Excellent  |
| ≥ 30 | Great      |
| ≥ 0  | Good       |
| < 0  | Needs Work |

* **Total shown**, **all responses**, and **response rate**.
* A **trend** of Promoters / Passives / Detractors over time.

#### Open-Ended results

For open-ended widgets, results center on **sentiment** — the counts and average scores of **positive**, **neutral**, and **negative** responses — so you can gauge the mood of qualitative feedback at a glance.

***

### 13.6 Reading & Filtering Responses

Every individual response is browsable in the responses list, with rich filtering.

<div data-with-frame="true"><figure><img src="/files/LPdAA9XveaO3uiUfqP4l" alt="FullSession responses list showing each response with comment, device, page, date, and filter options."><figcaption></figcaption></figure></div>

#### What each response shows

| Column                    | Detail                                         |
| ------------------------- | ---------------------------------------------- |
| **Response**              | The rating/emoji/score, or the open-ended text |
| **Comment**               | Any follow-up comment the visitor added        |
| **Device / browser / OS** | The respondent's environment                   |
| **Page**                  | The URL where the feedback was given           |
| **Date**                  | When it was submitted                          |

#### Filtering responses

| Filter             | Options                                                                                          |
| ------------------ | ------------------------------------------------------------------------------------------------ |
| **Time period**    | Last 7 / 15 / 30 / 90 / 180 / 365 days, or all responses                                         |
| **Response value** | By rating (CSAT 1–5), score (NPS 0–10), or sentiment (Open Ended: positive / neutral / negative) |
| **Page URL**       | Responses from a particular page                                                                 |
| **Text search**    | Full-text search of the response text *(Open Ended only)*                                        |

#### Response detail & the session link

Open a response to see its full detail — the respondent's **email** (if captured), **sentiment**, **country**, **device/browser/OS**, the session's **active time** and **event count**, and the **full text**.

Most importantly, each response includes a **link to the session replay** — so you can jump from *"this person rated us 2/5"* straight into watching exactly what they experienced.<br>

<div data-with-frame="true"><figure><img src="/files/hx7ngBmt5L5XDG9307Xo" alt=""><figcaption></figcaption></figure></div>

> **Tip** — the response→session link is the heart of FullSession feedback. A score tells you *that* someone was unhappy; the linked replay shows you *why*.

***

### 13.7 Feedback in Dashboards & Sessions

Feedback data flows into the rest of FullSession.

<figure><img src="/files/bnUGzmuYYkAlxiQDFcTV" alt="FullSession Feedback card on a dashboard showing sentiment over time, scoped to a single widget."><figcaption></figcaption></figure>

#### On dashboards

The **Feedback** dashboard card (\[Chapter 9, section 9.5]) visualizes feedback in three modes:

* **Overview** — summary stats.
* **Trends** — sentiment/score over time.
* **Recent feedback** — a list of the latest responses.

A Feedback card can be **scoped to a single widget**. You can also chart the **Total Feedbacks** and **Answered Feedbacks** measures (\[Chapter 10, section 10.5]) on any card.

#### In sessions

The **Has Answered Feedback** filter (\[Chapter 5, section 5.2]) lets you find sessions where the visitor responded to a widget — a quick way to watch the sessions of people who gave you feedback.

***

### 13.8 Managing Widgets & Limitations

You can run **multiple widgets per site**, each managed independently.

<figure><img src="/files/wHnqL5aalerZKqMkTNv4" alt="FullSession widget list showing filters by type (All, CSAT, NPS, Open Ended), with create, copy, edit, and status controls."><figcaption></figcaption></figure>

#### Managing widgets

| Action                    | Notes                                                                     |
| ------------------------- | ------------------------------------------------------------------------- |
| **Create**                | Build a new widget (name must be unique per site)                         |
| **Edit**                  | Update a widget — **but the type can't be changed once it has responses** |
| **Copy**                  | Duplicate a widget (its name gets a "– Copy" suffix)                      |
| **Activate / deactivate** | Turn a widget on or off without deleting it                               |
| **Delete**                | Remove the widget                                                         |
| **Delete a response**     | Remove an individual response (with the right permission)                 |

The widget list can be filtered by type — **All, CSAT, NPS, Open Ended**.

#### Email forwarding

A widget can **forward each response to an email address** — useful for routing feedback to a team inbox in real time.

> This **forwards responses**; it isn't a separate admin "you have new feedback" alert system. For event-driven alerting, see \[Chapter 15 — Alerts & Notifications].

#### What feedback doesn't do

To set expectations clearly, these **don't exist**:

* **No response export** (CSV/Excel) — analyze responses in the app, or pull feedback metrics via the dashboard's CSV card export.
* **No question branching / skip logic** — each widget is a single question.
* **No A/B testing** of widget variants.
* **No custom question types** or custom scales (CSAT 1–5 and NPS 0–10 are fixed).
* **No targeting by custom attribute or segment** within the widget (device/OS/browser/page/percentage only).
* **Languages are English, French, or Arabic** (one language per widget).

> **The big picture** — a FullSession feedback widget asks **one** question as **CSAT, NPS, or Open Ended**, built in a six-step flow with full control over **appearance, messages, targeting, and triggers** (including frustration-based and **manual `FUS.triggerWidget`** triggers). Results give you a **CSAT average, NPS gauge, or sentiment** view with trends; the **responses list** filters by period, value, page, and text and **links every response to its session replay**; and feedback flows into **dashboards** and **session filters**. There's no response export, branching, or A/B testing.

***

> **Next up:** \[Chapter 14 — Lift AI] covers FullSession's AI layer — the goals, scheduled runs, and tracked issues that build on the funnels and segments from earlier chapters.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fullsession.io/13.-feedback-and-surveys.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
