# Vendor and system events that are never orphans in a tracking plan audit. # Checked 2026-11-02 against Google's "Automatically collected events" help # page (GA4), Segment's mobile spec, Amplitude and Mixpanel destination pages, # Protocols violation forwarding and consent pages, and the default event # naming of Mixpanel, PostHog and Amplitude. Copy this file to the scratch # folder, refresh the copy from the live pages and pass it with # --vendor-events; vendors add events. # # Format read by scripts/audit_plan.py: # "@tool" starts a section (all, ga4, mixpanel, amplitude, posthog, segment, rudderstack); # "@ga4-reserved" is not a vendor list: rule Q09 and the D01 root cause read it # "prefix:" matches every name that starts with # any other line is one exact event name # GA4 enhanced measurement events (click, scroll, file_download, form_*, # video_*, view_search_results) only appear when the setting is on. @all # Mobile lifecycle events from the Segment, RudderStack and PostHog mobile SDKs. # They appear only when the SDK's lifecycle option is on, and then in every tool # the CDP feeds; confirm the option in the app code, not from export rows. # Application Backgrounded and Foregrounded depend on the library. Application Installed Application Opened Application Updated Application Backgrounded Application Foregrounded @mixpanel # $mp_web_page_view, $identify, $create_alias, $mp_click and other defaults prefix:$ # Segment's Mixpanel destination: consolidated page and screen events Loaded a Page Loaded a Screen @posthog # $pageview, $pageleave, $autocapture, $identify, $feature_flag_called and other defaults prefix:$ @amplitude # [Amplitude] Page Viewed, [Amplitude] Session Start and other SDK events; $identify and $groupidentify prefix:[Amplitude] prefix:$ # Segment's Amplitude destination with Track All Pages or Track All Screens Loaded a Page Viewed a Page Loaded a Screen Viewed a Screen @segment # Forwarded Protocols violations (sent to the source you choose) Violation Generated # Consent Management event used to add consent preferences to profiles Segment Consent Preference Updated @ga4 # Web: automatically collected and enhanced measurement click file_download first_visit form_start form_submit page_view scroll session_start user_engagement video_complete video_progress video_start view_search_results # App: automatically collected ad_click ad_exposure ad_impression ad_query ad_reward adunit_exposure app_clear_data app_exception app_remove app_store_refund app_store_subscription_cancel app_store_subscription_convert app_store_subscription_renew app_update dynamic_link_app_open dynamic_link_app_update dynamic_link_first_open error firebase_campaign firebase_in_app_message_action firebase_in_app_message_dismiss firebase_in_app_message_impression fiam_action fiam_dismiss fiam_impression first_open in_app_purchase notification_dismiss notification_foreground notification_open notification_receive os_update screen_view @ga4-reserved # Names and prefixes a plan must not give its own GA4 events. Checked 2026-11-06. # Names: the union of Google's "Event naming rules" help page (web and app # lists, which Google says are not exhaustive) and the Firebase Analytics Event # reference (names the SDK drops). The help page prints view_complete while # enhanced measurement sends video_complete, so both are here. in_app_purchase # is reserved on web streams only, and ad_impression is available on app # streams only. Google's own event with its documented meaning is the exception # Q09 tells the agent to record. # Prefixes: query_id is a web stream prefix on the help page; firebase_, google_ # and ga_ come from the Firebase logEvent reference. A leading underscore and # gtag. are parameter prefixes; the event naming rule already rejects both. prefix:firebase_ prefix:google_ prefix:ga_ prefix:query_id ad_activeview ad_click ad_exposure ad_impression ad_query ad_reward adunit_exposure app_background app_clear_data app_exception app_install app_remove app_store_refund app_store_subscription_cancel app_store_subscription_convert app_store_subscription_renew app_update app_upgrade click dynamic_link_app_open dynamic_link_app_update dynamic_link_first_open error file_download firebase_campaign firebase_in_app_message_action firebase_in_app_message_dismiss firebase_in_app_message_impression first_open first_visit form_start form_submit in_app_purchase notification_dismiss notification_foreground notification_open notification_receive notification_send os_update page_view scroll session_start session_start_with_rollout user_engagement video_complete video_progress video_start view_complete view_search_results