This article explains:
-
Which custom analytics events are logged
-
When each event is logged (user behavior trigger)
-
Which parameters may be sent with each event
This article explains only custom parameters.
The Firebase SDK automatically logs certain events to Analytics, which can be viewed here: https://support.google.com/analytics/answer/9234069?hl=en
Parameter dictionary (what each field means)
Events can include one or more of these parameters:
-
`screen_name`: logical app screen where the action happened
-
`team_parent_id`, `team_parent_name`: home club identifier/name
-
`team_id`, `team_name`: home team identifier/name
-
`away_team_parent_id`, `away_team_parent_name`: away club identifier/name
-
`away_team_id`, `away_team_name`: away team identifier/name
-
`competition_id`, `competition_name`: competition identifier/name
-
`competition_parent_id`, `competition_parent_name`: parent competition identifiers
-
`competition_round`: competition round label
-
`match_date`: match date value
-
`match_id`: match identifier
-
`person_id`, `person_name`, `person_role`: person/player/staff context
-
`person2_id`, `person2_name`: secondary person context (e.g., assists/substitutions)
-
`content_type`: object/content category (match, club, person, ad format, etc.)
-
`content_id`: object/content identifier
-
`search_term`: text user searched for
-
`method`: interaction method metadata (where applicable)
-
`source`: attribution source (used primarily for subscription deep-link attribution)
Important:
-
Parameters are sent only when relevant to that event context.
-
Not every event carries all parameters.
Event catalog - what is logged and when
Screen and content interaction
-
`screen_view`
Logged when a tracked screen is shown (matches, match details tabs, news, etc.).
`screen_view` parameter variations by screen/context
Because parameters are optional, the `screen_view` payload changes by context.
Below are the practical patterns customers should expect in reports.
1) Basic app/settings/auth screens
Typical screens:
-
`settings`
-
`settings_notifications`
-
`settings_news`
-
`login`
-
`sign_up`
-
`complete_profile`
-
`edit_profile`
-
favorites tabs (`favorites_*`)
Typical parameters:
-
Always: `screen_name`
-
Sometimes: `content_type`, `content_id`
Use this as a lightweight “screen reached” signal.
2) Matches list/calendar screens
Typical screens:
-
`matches_list`
-
`matches_live`
-
`matches_page`
Typical parameters:
-
`screen_name`
-
Often `match_date`
-
Depending on context/filter: `competition_id`, `competition_name`, `content_type`
-
Usually, no person fields
Use for calendar/list engagement and date-based traffic analysis.
3) Match detail family screens
Typical screens:
-
`match`
-
`match_timeline`
-
`match_lineups`
-
`match_info`
-
`match_event`
-
`match_table`
-
`match_h2h`
Typical parameters (core):
-
`screen_name`
-
`match_id`, `match_date`
-
`competition_id`, `competition_name`
-
`competition_parent_id`, `competition_parent_name`
-
Home side: `team_parent_id`, `team_parent_name`, `team_id`, `team_name`
-
Away side: `away_team_parent_id`, `away_team_parent_name`, `away_team_id`, `away_team_name`
-
Optional event context: `content_type`, `content_id`
Timeline/event-specific variation:
-
May also include `person_id`, `person_name`, `person_role`
-
May include secondary participant: `person2_id`, `person2_name`
Use for full match journey + in-match interaction context.
4) Competition screens
Typical screens:
-
`competition`
-
`competition_results`
-
`competition_elements`
-
`competition_schedule`
-
`competition_table`
-
`competition_stats`
-
`competition_stats_extend`
Typical parameters:
-
`screen_name`
-
Always/mostly: `competition_id`, `competition_name`
-
Often: `competition_parent_id`, `competition_parent_name`
-
In team-filtered or row-open contexts: `team_id`, `team_name`, and parent team fields
-
In player/stat contexts: `person_id`, `person_name`
-
Optional: `content_type`, `content_id`
Use for competition funnel and drill-down analysis.
5) Club screens
Typical screens:
-
`club`
-
`club_results`
-
`club_schedule`
-
`club_contacts`
-
`club_teams`
Typical parameters:
-
`screen_name`
-
`team_id`, `team_name`
-
`team_parent_id`, `team_parent_name` (club parent hierarchy where available)
-
Optional: `content_type`, `content_id`
-
Usually, no away-team fields unless entering from the match context
Use for club profile and sub-tab engagement.
6) Person/player screens
Typical screens:
-
`person`
-
`person_matches`
-
`person_stats`
Typical parameters:
-
`screen_name`
-
`person_id`, `person_name`
-
Usually also `team_id`, `team_name` (club context of person)
-
Optional: `person_role` (if available), `content_type`, `content_id`
Use for player/profile content engagement.
7) News screens
Typical screens:
-
`news`
Typical parameters:
-
`screen_name`
-
Usually: `content_type`, `content_id`
-
Other sports entities usually absent
Use for editorial/news consumption tracking.
When a field is blank/missing in Firebase, it usually means it is not relevant to that screen’s context. It is not necessarily that data collection failed.
For dashboarding, prefer:
-
`screen_name` as the primary dimension, then split by available context fields (`competition_id`, `match_id`, `person_id`, etc.) only where they are expected.
-
`select_content` --> Logged when user selects/clicks a content item (for example opening a specific content target).
-
`open` --> Logged when a tracked entity is opened (typically item open action).
-
`share` --> Logged when user triggers a share action from supported screens.
-
`search` --> Logged when user initiates search flow.
-
`search_action` --> Logged when the user executes a concrete search action/update.
Favorites, notifications, sounds, and settings actions
-
`add_favorite` --> Logged when user adds an item to favorites.
-
`remove_favorite` --> Logged when user removes an item from favorites.
-
`add_notifications` --> Logged when user enables a notification-type preference/subscription.
-
`remove_notifications` --> Logged when user disables a notification-type preference/subscription.
-
`add_sounds` --> Logged when football sounds are enabled.
-
`remove_sounds` --> Logged when football sounds are disabled.
-
`map_style` --> Logged when user changes map style.
Authentication and profile lifecycle
-
`login` --> Logged on successfully.
-
`logout` --> Logged on logout.
-
`sign_up` --> Logged on to a successful sign-up event.
-
`complete_profile` --> Logged when the profile completion flow is completed.
-
`update_profile` --> Logged when the user profile update is saved.
-
`forgot_password` --> Logged when the forgot-password flow is triggered.
-
`reset_password` --> Logged when the password reset is completed.
Ads and rating
-
`ad_open` --> Logged when an ad click/open action occurs.
-
`ad_close` --> Logged when ad is closed/dismissed.
-
`rating_like` --> Logged when the user provides positive rating feedback.
-
`rating_dislike` --> Logged when the user provides negative rating feedback.
-
`rating_dismiss` --> Logged when the rating prompt is dismissed without a rating.
-
`replay_onboarding` --> Logged when onboarding is replayed.
Subscription and premium conversion funnel
These events are especially important for attribution and conversion analysis.
-
`subscription_deeplink_opened` --> Logged when the app is opened via subscription deep link.
-
Parameter focus: `source` (from deep-link query param, e.g., campaign source)
-
-
`get_premium_popup_opened` --> Logged when the Get Premium popup is shown to the user.
-
`get_premium_popup_yes` --> Logged when user clicks Yes in Get Premium popup.
-
Parameter focus: `source` (if same session originated from subscription deep link)
-
-
`get_premium_popup_no` --> Logged when user clicks No / dismisses Get Premium popup.
-
Parameter focus: `source` (if same session originated from subscription deep link)
-
-
`subscription_bought` --> Logged after a successful subscription purchase.
-
Parameter focus: `source`
-
Attribution rule: if a purchase occurs in the same app session after a subscription deep-link open, `source` is preserved; otherwise, `source` is empty.
-
Subscription attribution
If the user comes from a subscription deep link that includes:
`...&source=<value>`
then:
-
that `source` is saved for the current app session,
-
and reused on premium conversion events in that same session:
-
`get_premium_popup_yes`
-
`get_premium_popup_no`
-
`subscription_bought`
If there was no subscription deep link in the same session, `source` is blank.
Practical examples
Example 1: campaign deep-link -> purchase
-
User opens app from deep link with `source=announcementents.`
-> `subscription_deeplink_opened` (`source=announcementents`)
-
Get the Premium pop-up shown
-> `get_premium_popup_opened`
-
User taps Yes
-> `get_premium_popup_yes` (`source=announcementents`)
-
User buys subscription
-> `subscription_bought` (`source=announcementents`)
Example 2: direct app usage, no deep link
-
Popup shown
-> `get_premium_popup_opened`
-
User buys subscription later
-> `subscription_bought` (`source=""`)
User properties (separate from events)
Firebase user properties maintained by the app:
-
`person_age`
-
`person_gender`
-
`person_id`
-
`person_zip`
These are set/reset based on authentication/profile state.
Reporting recommendations
Suggested dashboards:
-
Premium Funnel
-
`get_premium_popup_opened` -> `get_premium_popup_yes` -> `subscription_bought`
-
Premium Attribution by Source
-
Group `subscription_bought` by `source`
-
Engagement
-
`screen_view`, `select_content`, `open`, `share`
-
Retention behavior
-
`add_favorite`, `add_notifications`, `add_sounds`
Event list summary (quick reference)
-
`screen_view`
-
`select_content`
-
`add_notifications`
-
`remove_notifications`
-
`share`
-
`add_favorite`
-
`remove_favorite`
-
`open`
-
`add_sounds`
-
`remove_sounds`
-
`search`
-
`search_action`
-
`login`
-
`logout`
-
`sign_up`
-
`complete_profile`
-
`update_profile`
-
`forgot_password`
-
`reset_password`
-
`ad_open`
-
`ad_close`
-
`rating_like`
-
`rating_dislike`
-
`rating_dismiss`
-
`replay_onboarding`
-
`map_style`
-
`subscription_deeplink_opened`
-
`subscription_bought`
-
`get_premium_popup_opened`
-
`get_premium_popup_yes`
-
`get_premium_popup_no`