---
title: Global dashboard filters
slug: global-dashboard-filters
docTags: 
createdAt: 2026-05-20T14:10:57.681Z
---

:::Heading{depth="2" indent="1"}
**What this feature is for**
:::

Previously, to filter dashboard data by «Country», «Dealer», «Status», «Owner», «Team», etc., you had to open every widget and configure the filter individually. On large dashboards this became tedious, and teams ended up duplicating dashboards just to serve different countries or departments.

**Dashboard Global Filters&#x20;**&#x73;olve this:

- &#x20;Filters are managed centrally from a dedicated Filters panel.
- &#x20;They appear as dropdowns / date selectors at the top of the dashboard.
- &#x20;They apply automatically to every compatible widget.
- &#x20;When a new widget is added, the system tries to match a field to each filter by itself.
- &#x20;A single dashboard with global filters replaces dozens of «per-country / per-team» dashboard copies.

**\*\*Example:\*\***

&#x20;Instead of one dashboard per country, keep a single dashboard with a global «Country» filter. Management picks a country — every widget refreshes.

:::Heading{depth="2" indent="1"}
**Where to find the feature**
:::

Global filters are available on every dashboard inside **HyperBI**.

In the dashboard header, next to the date-range picker, there is a **Filters** button with a slider icon.

Once filters are created, they appear below the header as a row of «chips» that you use to apply values.

![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/BxW_SsiIfg5ed5eMVQR4v_image.png)

:::Heading{depth="2" indent="1"}
**Managing the list of filters**
:::

Clicking :InlineCtaButton[]{label="Filters" docId docAnchorId externalHref openInNewTab="true" noFollow="false"} opens a right-side panel with all filters for the current dashboard.

From this panel you can:

- **Create** a new filter (the :InlineCtaButton[]{label="+ Add New Filter" docId docAnchorId externalHref openInNewTab="true" noFollow="false"} button at the bottom).
- **Enable/disable** a filter with the toggle :FontAwesome[]{icon="fa-solid fa-toggle-on"} (button). Disabled filters don't appear on the dashboard.
- **Edit** a filter :FontAwesome[]{icon="fa-solid fa-pencil"}.
- **Delete** a filter. **X**
- **Reorder** filters by dragging — the row order in this panel defines the order of the chips on the dashboard.  :FontAwesome[]{icon="fa-solid fa-grip-vertical"}&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/cPHEJ9vk2pUDXgrxXBHqA_image.png" size="82" width="1878" height="1782" darkWidth="1878" darkHeight="1782" position="center" showCaption="false"}

:::Heading{depth="2" indent="1"}
**Creating / editing a filter**
:::

Clicking :InlineCtaButton[]{label="+ Add New Filter" docId docAnchorId externalHref openInNewTab="true" noFollow="false"} or the pencil icon :FontAwesome[]{icon="fa-solid fa-pencil"} opens a form (a separate panel) with the fields below.

::Image[]{src="https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/RZoZJJA7E9gs4VsS-8Gel_image.png" size="78" width="1690" height="1784" darkWidth="1690" darkHeight="1784" position="center" showCaption="false"}

:::Heading{depth="3" indent="1"}
**Title**
:::

A multilingual name for the filter. It's shown:

- In the filter list (right-side panel).
- As the chip label on the dashboard
- Inside the filters dropdown on each widget. :FontAwesome[]{icon="fa-solid fa-filter"}&#x20;

:::Heading{depth="3" indent="2"}
**Select property**
:::

The main section of the form — pick*which field* to filter by. Since a dashboard can include widgets built on different objects/flows, the filter has to be «wired» to each of them through its own field.

**What's available:**

- **Search** by property name.
- **Property type filter** (popover) — limit visible properties to one or several types. Supported:  - text  - multitext  - date  - number  - entity  - checkbox
- Below the search, selected types are shown as chips; remove a type with its cross icon.
- Below that — the **list of target objects (definitionIds)/flows**. Each object expands into a list of its properties.

**Selection logic:**

- Inside each block, properties are picked with a **radio button** — one filter = one field per object.
- Once you pick the first property, the filter's type is locked (for example, \`date\`), and the rest of the blocks **filter themselves automatically** to show only compatible properties.
- For entity types, an extra rule: only properties referencing the same object (Definition) are shown. E.g., if you pick «Owner → Contact» in the first widget, the second widget will only offer entity fields referencing Contact.
- If the current user has lost access to the previously selected property (e.g. it was deleted), it's highlighted with a warning icon.&#x20;

::Image[]{src="https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/3uihliiAsM0-M1tSX2bbx_image.png" size="80" width="1724" height="1656" darkWidth="1724" darkHeight="1656" position="center" showCaption="false"}

:::Heading{depth="3" indent="1"}
**Target widget**
:::

The «Target widget» collapse shows **every widget on the dashboard** and which field the filter will apply to in each of them.

:::BlockQuote
\[ Widget Title ]  →  \[ Property Label ]   \[ Toggle ON / OFF ]
:::

- &#x20;If the widget's object **has a mapping** — the toggle is active. Use it to disable the filter locally on this specific widget.
- &#x20;If the widget's object **has no mapping&#x20;**— the toggle is disabled and the property slot is empty.
- &#x20;This block helps you see *where&#x20;*&#x74;he filter will actually work and lets you opt out specific widgets when needed.

![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/hO9Rq0m4PBXKmeUIa0Wbi_image.png)

:::Heading{depth="3" indent="1"}
**Custom dropdown (optional)**
:::

By default the filter behaves like a widget «quick filter»: the user picks an operator and a value. But sometimes you want to restrict the choice to a predefined list — buttons like «Last 7 days», «Last 30 days», «This Year», or «Top Tier dealers», «Mid Tier dealers».

In **Custom dropdown** you can:

- Add multiple options — each becomes a separate row in the dashboard dropdown.
- Set a multilingual label per option.
- Define the filter condition per option.
- Reorder options by dragging — the order defines the dropdown order.

If a filter has a custom dropdown, the dashboard renders it as a **plain Select** with those options (instead of the popover editor).

![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/X9NlAuchWsZnIS8UF0ka8_image.png)

:::Heading{depth="3" indent="1"}
**Validation**
:::

You can save a filter only if:

- At least one title (Title) is filled in.
- At least one property is selected.

:::Heading{depth="2" indent="1"}
**Date filters**
:::

For dates there are **two range selection modes**

.

![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/H36TUttWrA5gL0IlVC3dj_image.png)



![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/RUx6mlYsKWPG6C2X0bdDg_image.png)

:::Heading{depth="3" indent="1"}
**Absolute (Calendar)**
:::

A regular calendar range: start date and time — end date and time.

:::Heading{depth="3" indent="1"}
**Relative — presets**
:::

A dropdown with predefined options:

\| Preset        | Meaning              |

\|---------------|----------------------|

\| Today         | Today                |

\| Yesterday     | Yesterday            |

\| This week     | The current week     |

\| Last week     | The previous week    |

\| This month    | The current month    |

\| Last month    | The previous month   |

\| Last quarter  | The previous quarter |

\| Last year     | The previous year    |

A relative preset is recalculated every time the dashboard is opened: «Last month» on May 1 and on May 30 will return different intervals.

:::Heading{depth="3" indent="1"}
5**What is shown on the dashboard**
:::

The chip label displays:

- The preset name — if the current value matches one of them.
- Otherwise — \`start - end\` as formatted dates.

:::Heading{depth="2" indent="1"}
**What happens when a new widget is added**
:::

When you add a new widget to the dashboard, the system tries to wire the existing global filters to it automatically — so you don't have to open every filter and add the field by hand.

**How matching works:**

For each enabled global filter:

- &#x20;If a mapping for the new widget already exists — skip it.
- If the filter is **of entity type** — pick from the widget's properties. If the filter already has mappings in other widgets referencing a specific object (e.g. Contact), pick the first property that references the same object.
- If the filter is **any other type** (date, text, number, checkbox, multitext) — pick the **first property of the same type**.
- If nothing matches — no mapping is added; the filter won't apply to this widget.

****

**Manual override**

If auto-matching picked the wrong field — just open the filter form and switch the mapping manually (section 4.2). Any choice in the form takes precedence over auto-matching.

**Cleanup when a widget is changed or removed**

- If a widget's data source (object/flow) is changed and the old one is no longer used anywhere on the dashboard, it's automatically removed from all global filters.
- If a widget is deleted, it's automatically removed from the «individually disabled» lists of every filter; and if no widget on the dashboard uses its data source anymore, that source is also removed from the mappings.

:::Heading{depth="2" indent="1"}
**Applying filters on the dashboard**
:::

Once filters are created and enabled, a row of chips appears below the dashboard header.

:::Heading{depth="3" indent="1"}
**Regular chip (no custom options)**
:::

Looks like `[ Title │ value ▼ ]`. Click opens a popover with the condition editor (the same one used in the table quick filter) — pick an operator and values there.

If multiple values are selected, the chip shows «Value1 +2»; the full list appears in the tooltip on hover.

:::Heading{depth="3" indent="1"}
**Chip with custom options**
:::

Looks like `[ Title │ Select ▼ ]`. It's a plain Select. The user picks one of the predefined options. The cross icon next to it clears the value.

:::Heading{depth="3" indent="1"}
**Where the values are stored**
:::

The current filter values (what the user selected) live in the **\*\*dashboard URL\*\*** — which means:

- You can send the dashboard link to a colleague with the filter values already set.
- Reloading the page doesn't reset the values.

The filter configurations themselves (what the filter is, which mappings it has) are saved together with the dashboard.

:::Heading{depth="2" indent="1"}
**Behaviour at the widget level**
:::

:::Heading{depth="3" indent="1"}
**Filter button on the widget**
:::

If at least one global filter (with a non-empty value) applies to a widget, its controls show a **button with a number**: a filter icon plus the count of applied filters.

![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/5lkuCkwMD7-ubCTTDPUOj_image.png)

Click opens a dropdown listing the applied filters. Each item has a cross icon — clicking it **disables** that global filter **for this widget only**; other widgets on the dashboard keep using the filter as before.

This is handy when you need to «freeze» one widget in an unfiltered view while the rest of the dashboard keeps reacting to global filters.

:::Heading{depth="3" indent="1"}
**How global filters combine with the widget's own filters**
:::

If a widget has its own filter in its settings, global filters apply **on top** of it, joined with logical AND. In other words, a global filter always **narrows** the selection — it never expands it.

:::Heading{depth="2" indent="1"}
**Good to know**
:::

- &#x20;**Read-only users&#x20;**&#x73;ee every global filter and can change its values — those changes are applied locally, in their dashboard link. They cannot edit the filter configuration (create, delete, change mappings).
- &#x20;When editing a filter — if you change the property type, the mappings, or the custom options — the filter's currently applied values are reset, otherwise they would become invalid.
- &#x20;When editing a chip value, saving to the URL happens with a small delay (about 500 ms), so the browser history isn't spammed and widgets don't recompute on every keystroke.
- &#x20;The special value «Current user» (shown as «⚡️ Me») is available in entity filters pointing to a user. It automatically resolves to whoever is viewing the dashboard.

