From 3eb74edf6195e5b7127d6ddbd58a6be468a104ab Mon Sep 17 00:00:00 2001
From: Lightdash Bot <131011178+lightdash-bot@users.noreply.github.com>
Date: Fri, 30 Oct 2026 09:47:59 +0000
Subject: [PATCH 1/6] Note Slack app channel membership for alerts and delivery
recipients
---
explore/create-alerts.mdx | 2 +-
explore/create-scheduled-deliveries.mdx | 2 +-
integrations/slack.mdx | 2 ++
3 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/explore/create-alerts.mdx b/explore/create-alerts.mdx
index 1e9364d9..1355b96c 100644
--- a/explore/create-alerts.mdx
+++ b/explore/create-alerts.mdx
@@ -54,7 +54,7 @@ Here, you can configure your alert. The options are:
* **increased/decreased by**: Verify whether the percentage change in the first value relative to the second value exceeds the specified threshold, either by increasing or decreasing.
* **Notify me only once**: send the alert the first time the condition is met, then pause it. The alert shows as paused in your list of alerts until you turn its toggle back on. Leave this unticked to be notified every time the condition is met.
* **Run frequency**: This is the frequency at which Lightdash runs a query to check your data for changes. (You will be notified if the conditions on the latest value are met) . All times for the scheduler are in UTC.
-* **Send to**: here, you can pick if you want to send your alert to Slack, email, or both. You can add as many Slack channels and email addresses as you'd like to here. You can send an alert to a person in Slack using `@persons-name` or to a channel using `#channel-name`.
+* **Send to**: here, you can pick if you want to send your alert to Slack, email, or both. You can add as many Slack channels and email addresses as you'd like to here. You can send an alert to a person in Slack using `@persons-name` or to a channel using `#channel-name`. The Lightdash app needs to already be a member of any Slack channel you add — see [Saved chart alerts in Slack](/integrations/slack#saved-chart-alerts-in-slack) for how to invite it.
Alerts don't have a custom message. Email and Slack alerts name the chart and list the condition that was met. The field in the condition is named from its field ID rather than its label in the chart, so `orders_total_revenue` appears as **Orders total revenue**. Each alert also includes an image of the chart.
diff --git a/explore/create-scheduled-deliveries.mdx b/explore/create-scheduled-deliveries.mdx
index 18c790d2..a1f98538 100644
--- a/explore/create-scheduled-deliveries.mdx
+++ b/explore/create-scheduled-deliveries.mdx
@@ -48,7 +48,7 @@ Click `New delivery` to open the scheduled delivery configuration. The sidebar s
### Setup
-Under `Delivery > Setup`, name your delivery, set how often it runs (hourly, daily, weekly, monthly, or a custom Cron expression), and pick a time zone — deliveries follow your project's default time zone unless you override it here. Add recipients as email addresses or Slack channels; you can target a person in Slack with `@persons-name` or a channel with `#channel-name`. Google Chat and Microsoft Teams also show up here as destinations. On a self-hosted instance, Microsoft Teams shows only when `MICROSOFT_TEAMS_ENABLED` is `true` (see [environment variables](/self-host/customize-deployment/environment-variables#microsoft-teams-integration)). A delivery can go to several destinations at once, and a channel or email address can receive any number of deliveries, from the same chart or dashboard or from different ones.
+Under `Delivery > Setup`, name your delivery, set how often it runs (hourly, daily, weekly, monthly, or a custom Cron expression), and pick a time zone — deliveries follow your project's default time zone unless you override it here. Add recipients as email addresses or Slack channels; you can target a person in Slack with `@persons-name` or a channel with `#channel-name`. The Lightdash app needs to already be a member of any Slack channel you add — see [Scheduled deliveries](/integrations/slack#scheduled-deliveries) for how to invite it. Google Chat and Microsoft Teams also show up here as destinations. On a self-hosted instance, Microsoft Teams shows only when `MICROSOFT_TEAMS_ENABLED` is `true` (see [environment variables](/self-host/customize-deployment/environment-variables#microsoft-teams-integration)). A delivery can go to several destinations at once, and a channel or email address can receive any number of deliveries, from the same chart or dashboard or from different ones.

diff --git a/integrations/slack.mdx b/integrations/slack.mdx
index b5adf59b..16566d63 100644
--- a/integrations/slack.mdx
+++ b/integrations/slack.mdx
@@ -153,6 +153,8 @@ And dashboards look like this when you choose _not_ to include an image:
Beyond scheduled deliveries, you can set up [alerts on saved charts](/explore/create-alerts) that only send to Slack when your criteria are met.
+Alerts need the same channel membership as scheduled deliveries: add the Lightdash app to the channel first, as described [above](#scheduled-deliveries).
+

From 52bbcf8fa59a60a51e9d134b656aaac5eec47905 Mon Sep 17 00:00:00 2001
From: Lightdash Bot <131011178+lightdash-bot@users.noreply.github.com>
Date: Fri, 30 Oct 2026 10:39:35 +0000
Subject: [PATCH 2/6] Document the Incomplete periods checkbox in the Series
tab
---
explore/configure-charts.mdx | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/explore/configure-charts.mdx b/explore/configure-charts.mdx
index 5a10ca47..fd1eaf3e 100644
--- a/explore/configure-charts.mdx
+++ b/explore/configure-charts.mdx
@@ -33,6 +33,17 @@ The options available in here will depend on the data in your chart. But, in her
- Put series on a left or right y-axis
- Show value labels or group totals on data points
- Hide a series from your chart
+- Mark the chart's current, unfinished period so it isn't mistaken for a drop
+
+### Incomplete periods
+
+When the x-axis is a truncated date or time dimension — year, quarter, month, week, day, hour, or minute — and the chart's results include the period that hasn't finished yet (for example, the current week, before the week is over), the Series tab shows an **Incomplete periods** section with an **Indicate incomplete periods** checkbox.
+
+Turn it on to mark that period so a partial period isn't misread as a drop: line and area series draw it with a dashed line, and bar series fill it with a hatched pattern instead of a solid color.
+
+New charts have this on by default, whether you create them in the UI, through the API, from chart-as-code, or with an agent. A chart you already saved keeps its stored setting instead of picking up that default, so tick **Indicate incomplete periods** to turn it on for an existing chart.
+
+In chart-as-code, this is `layout.showIncompletePeriod` (boolean).
### Series order
From 64cb5b11a17d9fb2450c53973c8e2ba3dd69ce6b Mon Sep 17 00:00:00 2001
From: Lightdash Bot <131011178+lightdash-bot@users.noreply.github.com>
Date: Fri, 30 Oct 2026 10:57:57 +0000
Subject: [PATCH 3/6] Add a top-N recipe to the table calculations docs
---
explore/table-calculations.mdx | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/explore/table-calculations.mdx b/explore/table-calculations.mdx
index d95845fc..288d9c6e 100644
--- a/explore/table-calculations.mdx
+++ b/explore/table-calculations.mdx
@@ -135,6 +135,21 @@ For example: You use table calculations to calculate the `percentage_of_shipping

+## Show only the top N rows or groups
+
+Lightdash has no built-in top N filter, and no chart option to group the rest into "Other". To keep only the top N rows or groups by a metric, add a `RANK` or `ROW_NUMBER` [formula table calculation](/explore/table-calculations/formulas), ordered by that metric descending, then filter the table calculation to `N` or fewer.
+
+For example, to find the top 2 browsers by visits each month:
+
+```
+=RANK(PARTITION BY orders_order_month, ORDER BY orders_visits DESC)
+```
+
+Add a filter on the new table calculation column using the **is less than or equal to** operator with a value of `2`.
+
+- `PARTITION BY` ranks within each group, so the example above keeps the top 2 browsers for every month. Leave out `PARTITION BY` to rank over the whole results table instead, for a single top N across all rows.
+- The filter only hides rows below the cutoff (see [Key limitations](#key-limitations) above) — it doesn't change any other table calculation. A running total, percent-of-total, or another rank built from the same data still runs over every row, not just the ones the top N filter keeps.
+
## Table calculation functions and SQL templates
If you prefer not to write raw SQL, check out the built-in [row functions](/explore/table-calculations/functions/row-functions), [pivot functions](/explore/table-calculations/functions/pivot-functions), and [aggregate functions](/explore/table-calculations/functions/aggregate-functions) — they handle common patterns like accessing previous rows, row numbering, working across pivot columns, and computing totals.
From 335a37c871be9ff0b2845eaa005ad427101250bf Mon Sep 17 00:00:00 2001
From: Lightdash Bot <131011178+lightdash-bot@users.noreply.github.com>
Date: Fri, 30 Oct 2026 11:29:49 +0000
Subject: [PATCH 4/6] Document what the AI Router sees, and a group-based way
to skip it
---
agents/enable-ai-router.mdx | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/agents/enable-ai-router.mdx b/agents/enable-ai-router.mdx
index 198d8a52..73511cc6 100644
--- a/agents/enable-ai-router.mdx
+++ b/agents/enable-ai-router.mdx
@@ -84,6 +84,22 @@ A few things to keep in mind:
- **Rules are advisory.** They guide the router's choice but **never override an agent's access restrictions**. A rule can only point to agents the user can already access.
- **Tagged agents must belong to the project.** You can only tag agents that exist in the selected project.
- **Fewer than two agents?** You can still write and save instructions, but the router won't run in that project until at least two accessible agents exist. Lightdash shows a note when this is the case.
+- **Instructions can't reference the dashboard or chart a question is asked from.** The router only receives the typed question, your routing instructions, and each agent's description, instructions, data access, and verified questions — it never sees which dashboard or chart the question is pinned to. A rule like *"route questions asked from the Acme dashboard to the Acme agent"* has nothing to match, and the question falls through to the picker. Write rules against words that appear in the question itself.
+
+## Keep teams or brands on separate agents without routing instructions
+
+Routing instructions only match words in the question itself, so a question with no such cue — no brand, team, or region mentioned — still shows the picker. When you need people in one team to never see another team's agent, control access instead of writing routing instructions:
+
+