Skip to main content

Analytics Tracking

A reference of every analytics event the player web app sends, organised by the flow in which it fires.

Written by Haris K

This guide lists every analytics event sent by the player-facing web app. Use it when you're building reports in Google Analytics 4, setting up goals, or working out what a particular event name means.


Prerequisites

Google Analytics (required)

Before any of these events can be tracked for your club, you need to complete two steps:

  1. Create your own Google Analytics account. Your club needs its own Google Analytics (GA4) account and property, so the data belongs to you.

  2. Send your G tracking ID to PadelOS support. This is the ID that starts with G-. Once support has it, the events below will start flowing into your property.

Until both steps are done, no events are sent to your club's analytics.

Meta tracking (optional)

If your club also wants Meta (Facebook) tracking, share your Meta Pixel ID with PadelOS support as well. Pixel events are only sent once this ID has been provided.


How Tracking Works

  • Where events go: Events are sent to the Google Analytics 4 (GA4) property configured for your club, and, where configured, to a Meta (Facebook) Pixel.

  • Consent is required: Tracking only starts once the visitor has accepted statistics cookies (via Cookiebot). Pixel events also require marketing consent. Visitors who decline aren't tracked, so every count you see represents consenting users only.

  • Category and label: Each event carries a category (the flow area) and a label (a short human description) as event parameters, alongside the event name.


Automatic Page Views

Every in-app navigation fires a standard GA4 page_view event (with page path, title, and URL), plus a spa_page_view event on the dataLayer. If a Meta Pixel is configured, each navigation also fires a Pixel PageView.

These fire on every route change without any user interaction. Every event in the sections below is interaction-driven.


1. Account & Sign-In

Login

Event name

When it fires

pl_login_open

The visitor opens the login dialog (from the site header buttons or the mobile navigation drawer).

pl_logon_success

A login attempt succeeds.

pl_logon_failure

A login attempt fails (wrong credentials, server error, etc.).

Account creation

Event name

When it fires

pl_create_account_open

The visitor switches from the login dialog to the sign-up screen.

pl_create_account_failure

An account sign-up attempt fails. Currently fired from the public payments flow, where guests can create an account while paying.

Forgot password

Event name

When it fires

pl_forgot_password_open

The visitor opens the forgot password screen from the login dialog.

pl_forgot_password_success

The password-reset email is sent successfully.

pl_forgot_password_failure

Sending the password-reset email fails.

Change password (logged-in users)

Event name

When it fires

pl_change_pass_unlock_successful

The user correctly confirms their current password to unlock the change-password form.

pl_change_pass_success

The password is changed successfully.

pl_change_pass_failed

A password change attempt fails (validation error or server error).


2. Court Booking

This is the main flow: a player picks a club, searches for a slot, configures the booking, and pays.

Finding a slot

Event name

When it fires

pl_my_clubs_book_now_btn_clicked

The player clicks Book Now on a club in their clubs list. This is the entry point into the booking flow.

pl_filters_change_date_btn_clicked

The player changes the date in the booking panel's date filter.

pl_bookings_court_clicked

The player selects an available court and time slot in the slot picker.

Building the booking

Event name

When it fires

pl_bookings_add_player_btn_clicked

The player adds another player to the booking.

pl_bookings_remove_player_btn_clicked

The player removes a player from the booking.

pl_bookings_change_payment_single

The player chooses to pay for the whole booking themselves (single payment).

pl_bookings_change_payment_split

The player chooses to split the cost between players.

pl_bookings_add_extras

The player adds or changes extras (e.g. rackets, balls) on the booking.

pl_bookings_use_wallet_btn_clicked

The player toggles the use wallet switch to pay with wallet credit. Fired both during checkout and from the booking-details screen. The label parameter distinguishes the two.

Checkout and payment outcome

Event name

When it fires

booking_success

The booking is created successfully at checkout. This is the one booking event without the pl_ prefix.

pl_bookings_failed

Creating the booking fails at checkout.

pl_bookings_confirmed

The booking's online payment completes and the booking is confirmed (payment-result screen).

pl_bookings_unpaid

The booking's online payment fails, leaving the booking unpaid (payment-result screen).

conversion

Optional ad-conversion tracking for clubs running Google Ads campaigns. When a conversion tag is configured for your club, this event fires together with pl_bookings_confirmed, carrying the transaction ID, amount, and currency, so confirmed bookings can be measured as ad conversions. Not sent unless a conversion tag is set up for your club.


3. My Bookings (Activity List)

These events fire from the logged-in player's bookings overview.

Event name

When it fires

pl_bookings_tab_upcoming_entry_clicked

The player clicks an upcoming booking in the list.

pl_bookings_tab_upcoming_entry_detail_sheet_open

The upcoming-booking detail sheet opens. Always fired together with the click event above (two events per click).

pl_bookings_tab_recurring_entry_clicked

The player clicks a recurring booking in the list.

pl_bookings_tab_recurring_entry_detail_sheet_open

The recurring-booking detail sheet opens (fired together with the click above).

pl_bookings_tab_previous_entry_clicked

The player clicks a past booking in the list.

pl_bookings_tab_previous_entry_detail_sheet_open

The past-booking detail sheet opens (fired together with the click above).

pl_bookings_tab_upcoming_cancel_booking

The player clicks Cancel booking on an upcoming booking.

pl_bookings_tab_upcoming_confirm_cancellation

The player confirms the cancellation in the confirmation prompt.


4. Events, Trainings & Tournaments

One shared set of registration events covers open events, training sessions, and tournaments.

Registration flow

Event name

When it fires

pl_events_registration_success

A registration completes successfully, either directly in the registration form or after a successful online payment on the payment-result screen.

pl_events_registration_failed

A registration attempt fails.

pl_events_use_wallet_btn_clicked

The player toggles the use wallet switch while registering for an event or training.

pl_events_enters_player_email

The player adds a guest to their registration.

pl_events_remove_guest_btn_clicked

The player removes a guest from their registration.

My activities (registered events list)

Event name

When it fires

pl_events_active_entry_clicked

The player clicks an upcoming or active event in their activities list.

pl_events_past_entry_clicked

The player clicks a past event in their activities list.

pl_events_active_view_registration_button

The player opens the registration details of an active event, training, or tournament.

pl_events_past_view_registration_button

The player opens the registration details of a past event, training, or tournament.


5. Memberships & Packages

Purchasing a package

Event name

When it fires

pl_packages_proceed_to_payment_btn_clicked

The player clicks Proceed to payment on a package or membership.

pl_packages_purchased_success

The purchase completes successfully, either paid directly (e.g. with wallet) or after a successful online payment on the payment-result screen.

pl_packages_purchase_failed

The purchase attempt fails.

My memberships list

Each click on a membership row fires two events: the click itself and a details opened event.

Event name

When it fires

pl_packages_item_btn_clicked

The player clicks an active package or membership row.

pl_packages_item_open

The active package's details open (fired together with the click above).

pl_packages_expired_item_btn_clicked

The player clicks an expired package or membership row.

pl_packages_expired_item_open

The expired package's details open (fired together with the click above).


6. Wallet & Offers

Wallet overview

Event name

When it fires

pl_wallet_club_item_btn_clicked

The player clicks a club in their wallet list.

pl_wallet_club_open

The club's wallet view opens (fired together with the click above, so two events per click).

pl_wallet_club_offer_btn_clicked

The player clicks a top-up offer in the wallet's offers slider.

Wallet top-ups and offer purchases

Purchases of wallet credit fire a pair of events: one under the Wallet Tab category and one under the Offers category, for the same outcome.

Event name

When it fires

pl_wallet_club_offer_payment_success

A wallet top-up or offer payment succeeds.

pl_wallet_club_offer_payment_failed

A wallet top-up or offer payment fails.

pl_offers_offer_purchased

Fired alongside the wallet success event when the purchase came from an offer.

pl_offers_payment_failed

Fired alongside the wallet failure event when the purchase came from an offer.

pl_wallet_retry_payment_btn_clicked

The player clicks Retry after a failed offer payment.

Transactions

Event name

When it fires

pl_wallet_club_transaction_entry_clicked

The player clicks a transaction row in their wallet history.

pl_wallet_club_transaction_detail_page_open

The transaction detail view opens (fired for wallet-type transactions, together with the click above).


7. Profile

Event name

When it fires

pl_profile_edit_btn_clicked

The player clicks Edit on their profile page.

pl_profile_edit_save_btn_clicked

The player clicks Save on the profile edit form.

pl_profile_edit_save_success

The profile update is saved successfully.

pl_profile_edit_save_failed

The profile update fails (validation or server error).


8. General UI

Event name

When it fires

pl_language_btn_clicked

The player changes the app language with the language switcher.


Defined but Not Currently Firing

The following events exist in the tracking configuration but aren't wired to any live UI at the moment. They will show zero traffic. If they appear in older data, they came from previous app versions.

Event name

Intended meaning

pl_bookings_timeslot_btn_clicked

Player selects an available time slot.

pl_bookings_enters_player_email (booking variant)

Player clicks the add-player field during booking. The identically named event is live in the events flow as add guest.

pl_filters_change_time_btn_clicked

Player changes the time filter.

pl_filters_change_duration_btn_clicked

Player changes the duration filter.

pl_filters_court_filter_open_btn_clicked

Player opens the court filter panel.

pl_filters_court_filter_btn_clicked

Player applies court filters.

pl_filters_court_filter_clear_btn_clicked

Player clears court filters.

pl_events_entry_clicked

Player clicks an event in a public event listing.

pl_packages_select_a_package_btn_clicked

Player selects a package before checkout.

pl_packages_close_btn_clicked

Player closes the package purchase dialog.

pl_offers_slide_right_btn_clicked / pl_offers_slide_left_btn_clicked

Player browses the offers slider.

pl_settings_dropdown

Player opens a settings dropdown.


Reading the Data: Things to Know

  • Paired events: Several interactions intentionally fire two events at once, such as a list-row click plus a details open, or a wallet payment result in both the Wallet and Offers categories. Don't count these pairs as separate user actions.

  • Naming exceptions: booking_success has no pl_ prefix, and the login events use pl_logon_* rather than pl_login_*.

  • Shared event names: pl_bookings_use_wallet_btn_clicked is used for both the checkout and the booking-details wallet toggle, so distinguish them by label. pl_events_enters_player_email is the guest added event in registrations.

  • Consent: All counts reflect only visitors who accepted statistics cookies.

Did this answer your question?