From d2aac6ba79b013abfca7603260d520471006d6b4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Aug 2026 18:55:32 +0000 Subject: [PATCH 1/9] Initial plan From 24e26620f17a71962d50d20d6160eb15a8bd69a4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Aug 2026 19:05:42 +0000 Subject: [PATCH 2/9] Add docs CI gates: frontmatter, code samples, links, redirects Co-authored-by: tylergoerzen-mxp <259741734+tylergoerzen-mxp@users.noreply.github.com> --- .github/workflows/docs-ci.yml | 66 ++++++++++++ docs.json | 74 +++++++------- docs/mcp.mdx | 2 +- reference/event-deduplication.mdx | 2 +- scripts/check_code_samples.py | 86 ++++++++++++++++ scripts/check_frontmatter.py | 67 ++++++++++++ scripts/check_links.py | 165 ++++++++++++++++++++++++++++++ scripts/check_redirects.py | 101 ++++++++++++++++++ 8 files changed, 524 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/docs-ci.yml create mode 100644 scripts/check_code_samples.py create mode 100644 scripts/check_frontmatter.py create mode 100644 scripts/check_links.py create mode 100644 scripts/check_redirects.py diff --git a/.github/workflows/docs-ci.yml b/.github/workflows/docs-ci.yml new file mode 100644 index 000000000..25cf95b0a --- /dev/null +++ b/.github/workflows/docs-ci.yml @@ -0,0 +1,66 @@ +name: Docs CI + +on: + pull_request: + branches: + - main + push: + branches: + - main + +jobs: + frontmatter: + name: Frontmatter check + runs-on: ubuntu-latest + timeout-minutes: 5 + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Check frontmatter + run: python scripts/check_frontmatter.py + + code-samples: + name: Code-sample check + runs-on: ubuntu-latest + timeout-minutes: 5 + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Check code samples + run: python scripts/check_code_samples.py + + links: + name: Internal-links check + runs-on: ubuntu-latest + timeout-minutes: 5 + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Check internal links + run: python scripts/check_links.py + + redirects: + name: Redirects check + runs-on: ubuntu-latest + timeout-minutes: 5 + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Check redirects + run: python scripts/check_redirects.py diff --git a/docs.json b/docs.json index f7308876a..e086cc793 100644 --- a/docs.json +++ b/docs.json @@ -409,7 +409,7 @@ "docs/data-governance/data-volume-monitoring", "docs/data-governance/warehouse-sync-monitoring", "docs/data-governance/data-clean-up", - "docs/data-governance/ai-powered-data-governance" + "docs/data-governance/ai-powered-data-governance" ] }, { @@ -705,7 +705,7 @@ "guides/strategic-playbooks/product-analytics-strategy/finale" ] }, - "guides/strategic-playbooks/onboarding-playbook", + "guides/strategic-playbooks/onboarding-playbook", "guides/strategic-playbooks/project-migration", "guides/strategic-playbooks/feature-flag-migration-playbook" ] @@ -1879,7 +1879,7 @@ }, { "source": "/docs/formulas", - "destination": "/changelogs/2023-09-19-formulas" + "destination": "/changelogs" }, { "source": "/docs/funnels", @@ -2383,7 +2383,7 @@ }, { "source": "/docs/tracking/data-warehouse/groups", - "destination": "/docs/tracking-methods/data-warehouse/sending-group-profiles" + "destination": "/docs/tracking-methods/warehouse-connectors" }, { "source": "/docs/tracking/data-warehouse/redshift", @@ -2747,27 +2747,27 @@ }, { "source": "/guides/plan/setup", - "destination": "/guides/strategic-playbooks/onboarding-playbook/plan/setup" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/plan/framework", - "destination": "/guides/strategic-playbooks/onboarding-playbook/plan/framework" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/plan/tracking-strategy", - "destination": "/guides/strategic-playbooks/onboarding-playbook/plan/tracking-strategy" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/implement/send-your-data", - "destination": "/guides/strategic-playbooks/onboarding-playbook/implement/send-your-data" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/implement/qa-data-audit", - "destination": "/guides/strategic-playbooks/onboarding-playbook/implement/qa-data-audit" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/implement/establish-governance", - "destination": "/guides/strategic-playbooks/onboarding-playbook/implement/establish-governance" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/launch/create-boards", @@ -2855,7 +2855,7 @@ }, { "source": "/hc", - "destination": "docs/getting-started/what-is-mixpanel" + "destination": "/docs/what-is-mixpanel" }, { "source": "/hc/admin/general_settings", @@ -3227,23 +3227,23 @@ }, { "source": "/hc/en-us/articles/13174988269844*", - "destination": "/changelogs/2022-12-01-improvements" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13175102961428*", - "destination": "/changelogs/2022-12-13-boards" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13175146659732*", - "destination": "/changelogs/2023-01-18-table-boards" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13175184938260*", - "destination": "/changelogs/2023-01-23-users-flows" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13175224500628*", - "destination": "/changelogs/2023-01-31-embed" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13271005313556*", @@ -3251,39 +3251,39 @@ }, { "source": "/hc/en-us/articles/13395179786644*", - "destination": "/changelogs/2022-07-08-reorient" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395198918804*", - "destination": "/changelogs/2022-11-03-session-improvements" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395199893652*", - "destination": "/changelogs/2022-11-07-millisecond" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395205961236*", - "destination": "/changelogs/2022-07-01-view-users" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395233184916*", - "destination": "/changelogs/2022-06-16-faster-workflow" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395235568660*", - "destination": "/changelogs/2022-05-31-improve-conversion-flow" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395324158868*", - "destination": "/changelogs/2022-05-24-lexicon-context" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395325754772*", - "destination": "/changelogs/2022-04-18-relative-comparison" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13395328448404*", - "destination": "/changelogs/2022-03-29-text-boards" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/13530857626132*", @@ -3291,7 +3291,7 @@ }, { "source": "/hc/en-us/articles/13756463065492*", - "destination": "/changelogs/2023-02-28-retention-calendar-interval" + "destination": "/changelogs" }, { "source": "/hc/en-us/articles/14202292561172*", @@ -3635,7 +3635,7 @@ }, { "source": "/hc/en-us/articles/360041995352*", - "destination": "/docs/tracking/how-tos/events-properties" + "destination": "/docs/data-structure/events-and-properties" }, { "source": "/hc/en-us/articles/360042412051*", @@ -4719,43 +4719,43 @@ }, { "source": "/guides/guides-by-topic/core-reports/create-boards", - "destination":"/guides/guides-by-topic/core-reports" + "destination": "/guides/guides-by-topic/core-reports" }, { "source": "/guides/guides-by-topic/core-reports/discover-insights", - "destination":"/guides/guides-by-topic/core-reports" + "destination": "/guides/guides-by-topic/core-reports" }, { "source": "/guides/guides-by-topic/core-reports/analyze-conversions", - "destination":"/guides/guides-by-topic/core-reports" + "destination": "/guides/guides-by-topic/core-reports" }, { "source": "/guides/guides-by-topic/core-reports/build-user-flows", - "destination":"/guides/guides-by-topic/core-reports" + "destination": "/guides/guides-by-topic/core-reports" }, { "source": "/guides/guides-by-topic/core-reports/track-user-retention", - "destination":"/guides/guides-by-topic/core-reports" + "destination": "/guides/guides-by-topic/core-reports" }, { "source": "/guides/guides-by-topic/core-reports/define-cohorts", - "destination":"/guides/guides-by-topic/core-reports" + "destination": "/guides/guides-by-topic/core-reports" }, { "source": "/guides/strategic-playbooks/onboarding-playbook/plan/*", - "destination":"/guides/strategic-playbooks/onboarding-playbook" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/strategic-playbooks/onboarding-playbook/implement/*", - "destination":"/guides/strategic-playbooks/onboarding-playbook" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/strategic-playbooks/onboarding-playbook/launch/*", - "destination":"/guides/strategic-playbooks/onboarding-playbook" + "destination": "/guides/strategic-playbooks/onboarding-playbook" }, { "source": "/guides/strategic-playbooks/onboarding-playbook/beyond-onboarding", - "destination":"/guides/strategic-playbooks/onboarding-playbook" + "destination": "/guides/strategic-playbooks/onboarding-playbook" } ] } diff --git a/docs/mcp.mdx b/docs/mcp.mdx index 29b000df9..60c847393 100644 --- a/docs/mcp.mdx +++ b/docs/mcp.mdx @@ -222,7 +222,7 @@ Any client that supports the MCP JSON config format, including Microsoft Copilot **Beta.** Service account authentication for MCP is in beta. The interface may change. -[Service accounts](/reference/Mixpanel%20APIs/authentication/service-accounts) are non-human Mixpanel users designed for scripts, back-end services, and automated workflows. They authenticate via a static header — no browser-based login is required. +[Service accounts](/reference/service-accounts) are non-human Mixpanel users designed for scripts, back-end services, and automated workflows. They authenticate via a static header — no browser-based login is required. Use service accounts when you need a headless MCP connection, such as CI/CD pipelines, automated agents, or shared team setups. The service account's project permissions apply: it can only access projects it has been added to. diff --git a/reference/event-deduplication.mdx b/reference/event-deduplication.mdx index 8cfd3d3ad..aa6db007b 100644 --- a/reference/event-deduplication.mdx +++ b/reference/event-deduplication.mdx @@ -23,7 +23,7 @@ Only the four key event properties listed above are used for deduplication. Addi Deduplication occurs when a subset of the event data (event name, distinct\_id, timestamp, \$insert\_id) is identical. Other event properties are not considered. -**Required [Event Object](/docs/data-model#anatomy-of-an-event) attributes** +**Required [Event Object](/docs/data-structure/events-and-properties) attributes**