From 50c61a9848d2ce9aeda92a15675ead446b19c040 Mon Sep 17 00:00:00 2001
From: "inkeep[bot]" <257615677+inkeep[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 06:51:03 +0000
Subject: [PATCH 1/2] Update internal user filtering settings link to
Customization section
---
.../docs/product-analytics/trends/filters.mdx | 117 +++++++++++-------
1 file changed, 69 insertions(+), 48 deletions(-)
diff --git a/contents/docs/product-analytics/trends/filters.mdx b/contents/docs/product-analytics/trends/filters.mdx
index cd15df3aa21e..6d266132fc04 100644
--- a/contents/docs/product-analytics/trends/filters.mdx
+++ b/contents/docs/product-analytics/trends/filters.mdx
@@ -6,15 +6,32 @@ availability:
enterprise: full
---
-import {ProductScreenshot} from 'components/ProductScreenshot'
-export const inlineFilterLight = "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/inline-filter-light-mode.png"
-export const inlineFilterDark = "hhttps://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/inline-filter-dark-mode.png"
-export const filterGroupsLight = "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/filter-groups-light-mode.png"
-export const filterGroupsDark = "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/filter-groups-dark-mode.png"
-export const internalLight = "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/internal-and-test-users-light-mode.png"
-export const internalDark = "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/internal-and-test-users-dark-mode.png"
-
-export const FilterIcon = () =>
+import { ProductScreenshot } from "components/ProductScreenshot";
+export const inlineFilterLight =
+ "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/inline-filter-light-mode.png";
+export const inlineFilterDark =
+ "hhttps://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/inline-filter-dark-mode.png";
+export const filterGroupsLight =
+ "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/filter-groups-light-mode.png";
+export const filterGroupsDark =
+ "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/filter-groups-dark-mode.png";
+export const internalLight =
+ "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/internal-and-test-users-light-mode.png";
+export const internalDark =
+ "https://res.cloudinary.com/dmukukwp6/image/upload/v1710055416/posthog.com/contents/images/docs/user-guides/trends/internal-and-test-users-dark-mode.png";
+
+export const FilterIcon = () => (
+
+);
Trends support two [types of filters](#types-of-filters):
@@ -37,12 +54,12 @@ Filters are comprised of three elements, a property, an operation, and a value.
This is the property that you want to filter based on. These properties can be:
-- Properties on the event itself
-- Properties on the person who sent the event
-- Properties on groups that this event is a member of _(see [group analytics](/docs/user-guides/group-analytics))_
-- Properties on sessions
-- Properties on [cohorts](/docs/user-guides/cohorts) the user is a member of
-- Properties on the HTML element if an event was autocaptured
+- Properties on the event itself
+- Properties on the person who sent the event
+- Properties on groups that this event is a member of _(see [group analytics](/docs/user-guides/group-analytics))_
+- Properties on sessions
+- Properties on [cohorts](/docs/user-guides/cohorts) the user is a member of
+- Properties on the HTML element if an event was autocaptured
By default, the dropdown will only show properties that have been seen on a specific event before, but if you instead want to filter based on an unseen property, you can scroll all the way to the bottom of the list and click 'Show X properties that haven't been seen with this event'
@@ -54,20 +71,20 @@ This is what PostHog uses to compare the property value to determine whether an
Some common operators used in insight filters:
-| Name | Description |
-| --------------------- | --------------------------------------------------------------------------------------- |
-| = equals | The property matches the value exactly and can contain multiple values to match against |
-| ≠ doesn't equal | The property _doesn't_ exactly match any of the values you provided |
-| ∈ contains | The property contains the value as a substring and can contain multiple values to match against |
-| ∉ doesn't contain | The property doesn't contain any of the values you provided as a substring |
-| ~ matches regex | The property matches a regex _(only available for strings)_ |
-| ≁ doesn't match regex | The property doesn't matches a regex _(only available for strings)_ |
-| > greater than | The property is greater than a specific value _(only available for numeric properties)_ |
-| < less than | The property is less than a specific value _(only available for numeric properties)_ |
+| Name | Description |
+| ----------------------- | --------------------------------------------------------------------------------------------------- |
+| = equals | The property matches the value exactly and can contain multiple values to match against |
+| ≠ doesn't equal | The property _doesn't_ exactly match any of the values you provided |
+| ∈ contains | The property contains the value as a substring and can contain multiple values to match against |
+| ∉ doesn't contain | The property doesn't contain any of the values you provided as a substring |
+| ~ matches regex | The property matches a regex _(only available for strings)_ |
+| ≁ doesn't match regex | The property doesn't matches a regex _(only available for strings)_ |
+| > greater than | The property is greater than a specific value _(only available for numeric properties)_ |
+| < less than | The property is less than a specific value _(only available for numeric properties)_ |
| ≥ greater than or equal | The property is greater than or equal to a specific value _(only available for numeric properties)_ |
| ≤ less than or equal | The property is less than or equal to a specific value _(only available for numeric properties)_ |
-| ✓ is set | The property has been set on a specific event |
-| ✕ is not set | The property was not set on a specific event |
+| ✓ is set | The property has been set on a specific event |
+| ✕ is not set | The property was not set on a specific event |
For a complete list of all available operators, including numeric range operators and semver operators for version-based filtering, see the [property filter operators reference](/docs/data/property-filters).
@@ -82,15 +99,15 @@ Some operations – equals, doesn't equal, contains, and doesn't contain – all
### Inline filters
These filters apply to a specific series within a graph. You can apply totally different filters to each series in a trends insight.
-To add a filter to a series, click the icon next to the event name, and search for your desired property.
+To add a filter to a series, click the icon next to the event name, and search for your desired property.
Currently, inline filters only support with `AND` operations. If you want to include events that match _at least one_ of a group of filters – i.e. `OR` operations – use filter groups.
@@ -98,14 +115,14 @@ Currently, inline filters only support with `AND` operations. If you want to inc
Filter groups allow you to apply filters to **all series** within an insight. These filter groups are composed of a number of single filter, which can be combined in the following two ways:
-- `AND` – Events have to match _every_ filter within the group
-- `OR` – Events only have to match _a single_ filter within the group
+- `AND` – Events have to match _every_ filter within the group
+- `OR` – Events only have to match _a single_ filter within the group
Click the `+ Add filter group` button to add a filter group. You can add multiple filter groups and you can use `AND` `OR` operators both within and between filter groups.
@@ -119,13 +136,13 @@ The final option for filtering events is using the option to filter out 'interna
This option is useful for excluding events sent from local builds of your product, or by members of your team that you don't want to include in your analysis.
-Click on the settings icon to go to your project's [Product Analytics settings](https://us.posthog.com/settings/project-product-analytics#internal-user-filtering) to customize the filters that are used.
+Click on the settings icon to go to your project's [Customization settings](https://app.posthog.com/settings/project-customization#internal-user-filtering) to customize the filters that are used.
## Filtering by first event occurrence
@@ -134,9 +151,13 @@ Beyond filtering on properties, you can also specify which event to count for a
This setting is configured per series in a trend insight, in the aggregation dropdown next to the event name.
There are two options for this:
@@ -149,6 +170,6 @@ This option finds a user's very first occurrence of an event type, and then chec
### First occurrence matching filters for user
-This option finds the first time a user performed an event type *that also matches your filters*. Previous events of the same type from that user that don't match the filters are ignored.
+This option finds the first time a user performed an event type _that also matches your filters_. Previous events of the same type from that user that don't match the filters are ignored.
-**Example:** You're filtering for pageview events to `/about`. A user first visited `/pricing` and then later visited `/about`. PostHog ignores the `/pricing` view and counts the `/about` view, as it's the first one that matches the filter.
\ No newline at end of file
+**Example:** You're filtering for pageview events to `/about`. A user first visited `/pricing` and then later visited `/about`. PostHog ignores the `/pricing` view and counts the `/about` view, as it's the first one that matches the filter.
From 124b276e3ac16b7d5542e7b0e9e83263dee395d6 Mon Sep 17 00:00:00 2001
From: "inkeep[bot]" <257615677+inkeep[bot]@users.noreply.github.com>
Date: Wed, 22 Jul 2026 06:51:39 +0000
Subject: [PATCH 2/2] docs: update internal user filtering settings path from
Product Analytics to Customization
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reflects PostHog/posthog#72596 which moved the setting to Settings → Customization.
---
contents/tutorials/filter-internal-users.mdx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contents/tutorials/filter-internal-users.mdx b/contents/tutorials/filter-internal-users.mdx
index f3cc0421803c..4caf68032751 100644
--- a/contents/tutorials/filter-internal-users.mdx
+++ b/contents/tutorials/filter-internal-users.mdx
@@ -36,7 +36,7 @@ To make it easier to get accurate insights, PostHog includes tools to filter int
## Step 1: Navigate to project settings
-PostHog identifies internal users on a project-by-project basis, so head to your project's [Product Analytics settings](https://us.posthog.com/settings/project-product-analytics#internal-user-filtering) to get started. If your PostHog instance spans multiple projects then you must repeat this tutorial for each project.
+PostHog identifies internal users on a project-by-project basis, so head to your project's [Customization settings](https://app.posthog.com/settings/project-customization#internal-user-filtering) to get started. If your PostHog instance spans multiple projects then you must repeat this tutorial for each project.