> For the complete documentation index, see [llms.txt](https://boundaryai.gitbook.io/boundaryai-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://boundaryai.gitbook.io/boundaryai-docs/analysing-your-feedback/tracking-feedback-over-time-evolution.md).

# Tracking feedback over time (Evolution)

By default, a feedback group gives you one all-time analysis: every response blended into a single picture. **Evolution tracking** breaks that apart into a **timeline of periods** (weeks, months, or quarters), each with its own full analysis, so you can watch how your themes, sentiment, and volume change over time.

You choose how a feedback group tracks feedback when you create it, and you can switch evolution tracking on for an existing group at any time.

For the container that holds the data, see [Feedback Groups](/boundaryai-docs/feedback-groups/feedback-groups.md). For survey lifecycle and recurring programmes, see [Managing Surveys](/boundaryai-docs/bringing-in-your-feedback/surveys/managing-surveys.md).

***

### Turning it on

Evolution tracking is generally available — there is no organisation-level toggle to enable first.

#### Choose at group creation

When you create a feedback group, you pick how it tracks feedback:

* **Static** — one all-time analysis of everything in the group.
* **Ongoing** — feedback is bucketed into periods over time. Choosing **Ongoing** reveals a granularity picker (week, month, or quarter) right in the creation dialog.

#### Enable it on an existing group

Already have a static group? Open it and click **Enable evolution tracking**. This opens a short setup wizard. See *Setting up evolution* below.

***

### Setting up evolution

Clicking **Enable evolution tracking** opens a three-step wizard. The wizard header reads **Step X of 3** and the title is **Enable evolution tracking**.

#### Step 1: Choose a granularity

The first step is **Choose a granularity**.

The helper text reads:

> Each period gets its own full analysis so you can see how feedback evolves over time.

Pick how long each period should be:

* **Weekly**
* **Monthly**
* **Quarterly**
* **Custom**

If you choose **Custom**, set a bucket length as **Every \[N] days**. The allowed range is **1–365**. If the value is out of range, the wizard shows:

> Choose between 1 and 365 days.

As you change the setting, the wizard estimates the result:

> With this choice you'll get about N periods.

If that estimate is high, the wizard nudges you toward a coarser option:

> That's a lot, consider a coarser unit (e.g. monthly or quarterly) for a smoother chart.

A finer granularity creates more periods. Each period gets its own full analysis.

#### Step 2: How should we handle your existing data?

The second step is **How should we handle your existing data?**

It starts with this intro:

> This group has N responses. Pick how we should date the ones that don't already have a per-row date. You can always re-import data with real dates later.

Older responses may not have a date attached. Choose one of these options:

* **Use each survey's upload date**: Every existing answer inherits the date its parent survey was uploaded. Coarse but honest.
* **Group everything into one 'pre-evolution' bucket**: All existing answers land in one bucket dated now; only new data drives the per-period view.

You can always re-import data later if you want every historical row to use its real date.

#### Step 3: Ready to enable?

The final step is **Ready to enable?**

This step shows a summary of your choices, including:

* **Granularity**
* **Existing data**

It also shows this warning:

> Enabling evolution wipes the existing all-time analysis for this feedback group. Your data is preserved, but the analysis output is replaced by per-period analyses.

Enabling evolution replaces this Feedback Group's all-time analysis with per-period analyses. Your raw data stays in place. Only the analysis output is recomputed.

To finish, click **Enable**.

***

### Reading your evolution timeline

Right after you enable evolution, the Feedback Group enters a preparing state labelled **Preparing historical periods…**

The body text reads:

> We're stamping a date on every existing answer so they show up in the right bucket. This usually takes a few minutes for large groups.

This is expected. Large Feedback Groups can take a little time to prepare, so the timeline may not appear immediately.

#### Evolution over time

Once preparation finishes, the timeline appears as **Evolution over time**.

It shows one bar per period. Periods with no data appear as gaps.

The strip also shows this hint:

> Click any bar above to drill into a specific period's full analysis.

#### Period states

Each period can show one of these statuses:

* **Live**: This period isn't over yet, so the count will keep growing.
* **Analyzing**: analysis is in progress.
* **New data, stale**: analysed before, but new data has arrived since.
* **Too few responses**: below the threshold for a meaningful analysis.
* **Looks stuck, click to retry**: No progress for over 5 minutes. The analysis will be auto-recovered shortly, or click to retry manually.
* **Archived**: an older or superseded period.

#### Across all periods

The summary view is titled **Across all periods**.

Its subtitle is:

> How sentiment and volume have evolved across the tracked periods.

This view rolls the timeline up into one place. It's built from **Evolution Widgets**: metric-over-time cards you define yourself (see the next section). Every group starts with one, **Sentiment over time**, plus quick facts like the most positive period and the lowest-volume period.

***

### Evolution Widgets

An Evolution Widget plots one metric per period: pick a source (or the whole group), pick the metric, and it charts across your timeline. Add one with the dashed **Add evolution view** tile.

#### Widget types

* **Overall sentiment**: the same rollup as the seeded default chart, for one source or the whole group.
* **Response volume**: how many responses each period received.
* **NPS question**: the NPS score per period (promoters minus detractors, -100 to 100).
* **Scale question**: the average score per period, on the question's own range.
* **Choice question**: the share of respondents picking an option, per period.
* **Monitor mentions**: how many comments matched a Custom Monitoring monitor, per period.

#### How they behave

* The creation modal shows a **live preview** as you make choices, so you see the chart before saving.
* Cards show the **latest value and its delta** vs the previous period; clicking a point on the chart drills into that period's analysis.
* **Split by** a metadata or choice question to plot the top five segments as separate lines (answer-backed metrics).
* Drag the grip handle to **reorder** cards, and set each view to **half or full width**.
* Periods with no data show as **gaps**, never as fabricated zeros.
* Widgets are **shared with everyone** in the group (viewers see them read-only), up to **10 per group**.
* Values are computed from your raw responses on demand: creating widgets needs **no analysis run and no AI allowance**, and they survive granularity changes.

If you subscribe to period reports (below), each email includes a table of every widget's closed-period value and its change vs the previous period.

***

### Running and managing periods

#### Analysing a period

New data triggers analysis automatically as it arrives, so a period's themes and sentiment stay current without anyone needing to click anything, and a period can close as soon as its data says it's done rather than waiting on the wall clock. Use the manual controls below when you want to force a specific scope right now, for example right after a bulk import.

Each source in a period is analysed separately. Sources already analysed for that period are skipped.

Click **Analyze whole period** to run analysis for the period.

The tooltip reads:

> Analyze every source in this period that's new or has new data, one analysis per source. Already-analyzed sources are skipped.

This opens a modal titled **Analyze this period**.

Choose one of these scope options:

* **Stale and not-yet-analyzed**: Analyze sources with new data and sources never analyzed for this period.
* **Only not-yet-analyzed**: Sources that have never been analyzed for this period.
* **Only stale**: Sources analyzed before that have new data since.

Runs happen in the background and may take a few minutes, so you can keep working while they finish. Only one period per Feedback Group is analyzed at a time.

#### Managing sources

Open **Manage sources** to add, connect, or configure the sources feeding the Feedback Group.

The drawer title is **Sources**.

Its subtitle is:

> Add, connect, or configure sources for this feedback group. Changes apply across every period.

Sources are grouped into two sections:

* **Active sources**: Continuously feeding this group
* **One-time data**: Finite imports and closed surveys.

Use **Upload one-time data** to layer historical files into the group. When you connect a native integration (Zendesk, Jira, and other connectors) to an evolution-tracked group, BAI Analytics leads with continuous syncing so the connector keeps feeding future periods; a smaller **Import without syncing** link is there if a one-time backfill is genuinely all you need. Scraping agents created from a tracked group follow the same logic: the wizard defaults them to **Ongoing** (weekly), see [Social Listening](/boundaryai-docs/bringing-in-your-feedback/social-listening.md).

A source keeps feeding later periods for as long as it keeps producing new data: a connector or scraper on a continuous sync, or a survey that's still Published and collecting responses.

Sources you remove from the group move to a **detached sources** list. From there, each one can be re-added with **Add back**, or removed for good with **Delete permanently**, behind its own confirmation, since that deletes the source's data rather than just unlinking it.

#### The evolution options menu

The three-dot menu on the trend strip gives you several group-wide controls:

* **Sample weighting**: apply redressement/post-stratification so results reflect target proportions rather than raw sample shares. See [Weighting your results](/boundaryai-docs/analysing-your-feedback/analysing-results.md#weighting-your-results-redressement) for the full walkthrough; it works the same way at the group level as it does on a single survey.
* **Analysis language**: choose the one language every AI output for this group is written in, insights, summaries, themes, and answers, so analysis never mixes languages across periods. Changing it regenerates analyses lazily as each period is reopened; raw data is untouched.
* **Subscribe to Reports**: get a report emailed automatically whenever a tracked period closes. See [Subscribing to period reports](#subscribing-to-period-reports) below.
* **Change granularity…**
* **Disable evolution tracking**

**Change granularity…** opens a dialog with this message:

> Pick a new period unit. Existing per-period analyses are archived; new buckets analyze lazily as you open them.

It also shows this warning:

> Switching granularity drops the current per-period analyses. Your raw data is preserved.

Changing granularity keeps the underlying data and archives the existing per-period analyses. New buckets are created at the new size and analyse as you open them.

**Disable evolution tracking** turns the feature off for the Feedback Group and restores the all-time view. Your raw data is preserved.

#### Subscribing to period reports

Rather than a fixed daily/weekly/monthly schedule (see [Reports](/boundaryai-docs/analysing-your-feedback/reports.md)), a period-report subscription ties the email to the tracking cadence itself: as soon as a new period opens, you get a report covering the period that just closed.

Open **Subscribe to Reports** from the evolution options menu and add one or more recipient rows. Each row can optionally be scoped to specific sources and delayed by a number of hours after the period ends, useful if you want data to finish settling before the report goes out. If a closed period had no feedback, recipients get a short notice instead of an empty report, so the cadence stays predictable either way.
