# Hard requirements: pass or fail by plan

Use in step 4. Each line is a fact to test against the plan the team will keep after any trial or startup programme, not the plan it pilots on. Every line was checked on 2026-10-17 against the page named. Re-read the live page before recording a pass, and put the URL and the check date in the memo appendix.

## Contents

- Rules for every requirement
- Account or workspace analysis
- Saved behavioural cohorts
- Experiment results
- History and replay retention
- Raw export and the exit test
- Behaviour at a usage limit
- Google Ads dependency
- Data region
- Regulated data and BAAs
- Access controls
- SDK platform coverage
- API and integrations on free plans

## Rules for every requirement

- A missing mandatory capability removes the candidate. No weighted score repairs it.
- An unshipped capability is a fail until it is available on the plan being bought. A roadmap slide or a sales promise is not evidence. If the purchase depends on it, delay the commitment or get a contractual condition (delivery date and an exit right if it slips).
- A capability that exists only during a trial, a startup year or a pilot unlock is tested on the plan that follows.
- Record pass or fail per candidate with the plan page URL and the check date.

## Account or workspace analysis

- Mixpanel: Group Analytics is an add-on for an extra fee on paid plans, not available on Free. The Startup Plan includes it for its 12 months. Sources: mixpanel.com/pricing, docs.mixpanel.com/docs/pricing/startup-program.
- Amplitude: the plan comparison lists group behaviour analysis as available on Plus, Growth and Enterprise, and not on Free. The Accounts (Group) package (account-level analytics, group-level experimentation, account-level bucketing) is listed for Growth and Enterprise, priced as a percentage of the platform plan. The Plus estimator data also carries an accounts add-on line. Get in writing which of the two the workspace funnel needs, and whether it can be bought on Plus. Source: amplitude.com/pricing.
- PostHog: group analytics is a paid add-on. Once subscribed, it bills every identified event in the project, with or without a group property. Anonymous events cannot link to groups. Source: posthog.com/docs/product-analytics/group-analytics.
- Heap: account analytics starts at Pro. Free and Growth do not include it. Source: heap.io/pricing.
- GA4: no account entity in the interface. A workspace question needs modelling outside GA4, usually the BigQuery export joined to application records.

## Saved behavioural cohorts

Needed when a decision reuses a population, for example "workspaces that connected a source in week one" in next week's retention chart.

- Amplitude: none on Free; 20 per organisation on Plus; included on Growth and Enterprise. Source: amplitude.com/pricing.
- Mixpanel: Free is limited, cohorts can be created but not saved; Growth and Enterprise save them. Source: mixpanel.com/pricing.
- PostHog: cohorts need identified events (person profiles); anonymous events cannot use them. Source: posthog.com/docs/data/anonymous-vs-identified-events.
- Test: save the cohort, reuse it a week later in a second report, and check its membership against application records.

## Experiment results

- Amplitude: experiment results are not included on Free or Plus; included on Growth and Enterprise. Source: amplitude.com/pricing.
- Mixpanel: Monthly Experiment Users (MEU) are a separate meter. Free 1,000 a month; Growth 5,000, with 10,000 to 100,000 purchasable. On Free, Experiments pauses at the allowance: no creating, editing or viewing experiments until the monthly reset or an upgrade. Feature flags keep serving, so users see no change, but running experiments stop producing results. On Growth, usage over the allowance bills at an overage rate. Source: docs.mixpanel.com/docs/experiments.
- PostHog: experiments share the Feature flags & Experiments request meter. See the flag behaviour under "Behaviour at a usage limit".
- Statsig Developer (free): over 2 million metered events a month, gate and config targeting keep working and metric lift computations stop. Source: statsig.com/pricing.

## History and replay retention

- GA4 standard: event data retention for explorations and funnels is 2 or 14 months; standard aggregated reports are unaffected. Analytics 360 adds 26, 38 and 50 months for event data only. User-level data and key events stay at 2 or 14 months on 360, and age, gender and interest data at 2 months. Large standard properties and XL 360 properties are limited to 2 months. When a property is reclassified, administrators get a warning email, and event-level data older than 2 months becomes inaccessible and is permanently deleted. Source: support.google.com/analytics/answer/7667196.
- Amplitude: data access 1 year on Free, 2 years on Plus, unlimited on Growth and Enterprise. Replay retention is 1 month on every plan; longer retention (3 to 12 months) is part of a Session Replay package listed for Growth and Enterprise. Source: amplitude.com/pricing.
- PostHog: data retention 1 year on Free, 7 years on paid. Replay retention up to 30 days on Free and up to 90 days on pay-as-you-go, longer on the platform packages. Sources: posthog.com/pricing, posthog.com/docs/session-replay/data-retention.
- Heap: 6 months on Free, 12 months on Growth, 1 year on Pro and Premier with additional years as an add-on. Source: heap.io/pricing.

## Raw export and the exit test

- GA4 standard daily BigQuery export is limited to 1 million events a day. A property that consistently exceeds it has its daily export paused, immediately for a significant overage, and missed days are not reprocessed. Streaming export has no volume limit. Source: support.google.com/analytics/answer/9823238.
- Mixpanel: Data Pipelines is an add-on on Growth and Enterprise, with a 30-day free trial, and is included in the Startup Plan. It exports events, user profiles and identity mappings to separate paths. Lexicon exports the tracking plan as one emailed CSV (owners, admins and analysts; up to 5,000 events per file; link valid 14 days). Sources: docs.mixpanel.com/docs/data-pipelines, docs.mixpanel.com/docs/data-governance/lexicon.
- Amplitude: the Export API selects events by server upload time (`server_upload_time`), not event time. A request over 4 GB returns a 400 error; one request covers at most 365 days; data is exportable about 2 hours after receipt. The Snowflake destination loads micro-batches on a best-effort basis with no stated SLA, typically every 10 minutes, and has an "Export all merged Amplitude IDs" option for the identity mapping. The Taxonomy API is listed on every plan for the tracking plan. Confirm which warehouse destinations and paid add-ons the quoted plan includes. Sources: amplitude.com/docs/apis/analytics/export, amplitude.com/docs/data/destination-catalog/snowflake, amplitude.com/pricing.
- PostHog: batch exports on a schedule to warehouses and object storage, billed per row with the first 1 million rows a month free. Models: events (immutable) and persons (mutable, the identity view). Sources: posthog.com/docs/cdp/batch-exports, posthog.com/pricing.
- Heap: Heap Connect is a Pro add-on and included in Premier; not on Free or Growth. Source: heap.io/pricing.
- Test before a pass: a repeated export range and a late-arriving event. With upload-time selection, a re-run range can return events whose event dates fall outside it.
- Exit test, run during the pilot on the plan to be kept: export one week of events, the anonymous-to-known identity mapping and the tracking plan; load them into a scratch warehouse table; rebuild one funnel and match it to the tool's own result. Record the route used for each of the three. A candidate that cannot export all three on the kept plan has the harder exit.

## Behaviour at a usage limit

- PostHog: a billing limit is set per product. At the limit, ingestion stops and the excess data is lost. On Feature flags & Experiments, an organisation over its quota has flag evaluation paused: `/flags` returns `quotaLimited` with an empty flags object, so every flag check gets no value and the code takes its default path, in production. Sources: posthog.com/docs/billing/limits-alerts, posthog.com/docs/api/flags.
- PostHog Free plan over a free allowance: not documented on the billing pages. Confirm on the live pricing FAQ or with PostHog before recording a pass, and treat it as data loss until confirmed. The flags `quotaLimited` behaviour above applies once the organisation is over its flags quota.
- Mixpanel, Amplitude, Heap, Pendo and Statsig: at-limit behaviour is in [billing-meters.md](billing-meters.md) under each vendor.
- Pass only when the memo states what the limit does to data, to reports and, for flags, to live product behaviour.

## Google Ads dependency

If Ads conversions or audiences come from GA4 key events, a plan that removes GA4 needs a tested replacement first. Source: support.google.com/analytics/answer/9379420.

Replacement routes, checked on 2026-10-17:

- Conversions from the website: the Google Ads conversion tag through GTM with enhanced conversions for web, which sends hashed user-provided data at conversion. Sources: support.google.com/google-ads/answer/13262500, support.google.com/google-ads/answer/9888656.
- Qualified and paid outcomes: offline conversion import from the CRM or backend, keyed on the captured GCLID. Data Manager imports from file and HTTP sources reach back 90 days on each run; Salesforce and HubSpot import the last 14 days on the first run. Source: support.google.com/google-ads/answer/7012522.
- Audiences: Customer Match lists (signed-in Google users only, memberships expire after 540 days, not used with manual bidding; support.google.com/google-ads/answer/6379332) or website-visitor segments from the Google Ads tag (support.google.com/google-ads/answer/2453998) in place of GA4 audiences.

Test before switching:

- Create the new action as secondary next to the GA4-imported action. A secondary action inside a custom goal still bids, so check every custom goal first. Source: support.google.com/google-ads/answer/11461796.
- Run both for one full conversion window and compare the two actions inside Google Ads on the same interaction dates, after the window has closed for those dates.
- Then make the new action primary and the GA4 action secondary, and keep the GA4 action for one more window before removing it.
- Price the route as one-off hours (tag or import setup, audience rebuild, the parallel window). The keep-or-replace rule is in [two-tools-and-dual-tracking.md](two-tools-and-dual-tracking.md).
- Tool-level work: conversion-goals-and-key-events, enhanced-conversions and offline-conversion-import when installed, through Google Ads tooling in read-only mode until a change is approved.

## Data region

- Amplitude: EU data centre option (Frankfurt) on every plan. Source: amplitude.com/pricing.
- Mixpanel: US or EU data residency on every plan, enabled when the project is created and not on by default. An existing project does not move; plan a new project. Source: mixpanel.com/pricing.
- PostHog: US or EU Cloud (Frankfurt). The region is fixed when the account is created and data cannot be moved between them later. Sources: posthog.com/docs/privacy/data-storage, posthog.com/docs/ai-engineering/wizard-signup.
- Heap: the pricing page lists region-specific storage on Premier only and does not name the regions. Ask in writing. Source: heap.io/pricing.
- Matomo Cloud: data stored in Frankfurt; On-Premise sits wherever you host it. Source: matomo.org/pricing.
- GA4: EU, Swiss and UK traffic is collected and IP-looked-up on regional servers before being forwarded for processing. The page describes no customer choice of storage region, so treat GA4 as failing a storage-region requirement unless Google confirms otherwise in writing. Source: support.google.com/analytics/answer/12017362.
- Test: create the project in the required region on the kept plan and confirm the regional ingestion host in network traffic.

## Regulated data and BAAs

The legal or privacy owner decides whether HIPAA applies and which pages may carry analytics. This skill records pass or fail; it does not make that call.

- GA4: Google does not offer a BAA for Analytics, and HIPAA-regulated customers must not expose PHI to it. Keep GA4 off authenticated journeys and care pages. Source: support.google.com/analytics/answer/13297105.
- Mixpanel: HIPAA compliance tools including BAAs on Enterprise only. Sources: mixpanel.com/pricing, mixpanel.com/legal/mixpanel-hipaa.
- PostHog: BAA for PostHog Cloud with the Boost (USD 250 a month), Scale or Enterprise package; a custom BAA needs Enterprise. The managed reverse proxy and AI features are not covered, and AI features must stay off in any organisation where a project processes PHI. Self-hosted is not covered. Startup credits cannot be used to claim a BAA under Boost. Sources: posthog.com/docs/privacy/hipaa-compliance, posthog.com/pricing.md, the PostHog startup programme FAQ in `sources.yaml`.
- Amplitude: its healthcare page says it can enter a BAA but names no plan. Get the plan, products and contract scope in writing. Source: amplitude.com/industry/healthcare.
- Heap, Pendo, Statsig, Plausible: not stated on the pages checked. Ask in writing.
- Pass: a signed BAA covering the plan, every product enabled and the collection path, plus a payload review showing nothing regulated reaches a destination outside it. Hand-off: privacy-sensitive-analytics, when installed.

## Access controls

- Amplitude: SSO and project-level permissions from Growth; role-based access control an add-on on Growth and included on Enterprise; advanced permissions and SCIM on Enterprise. Source: amplitude.com/pricing.
- Mixpanel: project-level roles on every plan; report-level roles, SAML SSO with SCIM, sensitive-data classification and compartmentalised data access from Growth. Source: mixpanel.com/pricing.
- PostHog: SSO enforcement in Boost (USD 250 a month), SAML in Scale (USD 750 a month), role-based access control in Enterprise (USD 2,000 a month). Source: posthog.com/pricing.md.
- Heap: SSO listed on all four plans. Source: heap.io/pricing.
- Test: invite a restricted user and confirm they cannot open the restricted project, report or export.

## SDK platform coverage

- List every platform the product ships on: web framework, iOS, Android, React Native, Flutter, Unity, and each backend language that sends outcomes.
- Match each against the vendor's SDK list: amplitude.com/docs/sdks, docs.mixpanel.com/docs/tracking-methods/sdks, posthog.com/docs/libraries.
- A platform with only an HTTP API needs a named owner for batching, retries and identity. Browser features (autocapture, replay) are never assumed in a server SDK.
- Pass: a maintained SDK for each platform, or a named owner for each API-based producer.

## API and integrations on free plans

- Pendo Free has no API or third-party integrations. Source: the Pendo Free support article in `sources.yaml`.
