Project Issue: Tracks Implementation
See original GitHub issueDescription
Implement analytics using Tracks in the app. See https://github.com/Automattic/pocket-casts-ios/issues/154 for the iOS work on this.
Tasks
Setup
- Create a base implementation of an analytics tracker in the app @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/265)
- Create a way to support multiple types of analytics trackers @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/265)
- ~Add switching between anonymous and authenticated user tracking when the user signs in/out~ Adding logic to regenerate anonymous IDs to protect our users privacy (see p4H3ND-1i9-p2) (https://github.com/Automattic/pocket-casts-android/pull/268)
- ~Add analytics checkbox to the PR template~ (see comment)
- Disable Tracks in release builds until we’re ready to release (https://github.com/Automattic/pocket-casts-android/pull/291)
- Turn Tracks on for release builds and off for debug builds once this is ready to be released
- Print event logs using LogBuffer so all the tracks events show up in the user’s logs if they contact support.
- Enable Tracks for Android Automotive builds
Add Analytics
Predefined Events @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/273)
-
plus_has_subscription
: Whether the user has a plus subscription -
plus_has_lifetime
: if they’re a lifetime plus member -
plus_subscription_type
: Their subscription type: none, plus, or supporter -
plus_subscription_platform
: The platform they subscribed to plus on: none, ios, android, web, gift -
plus_subscription_frequency
: Their renewal frequency: none, monthly, yearly
is_rtl_language
is not required to be added as it is already added by the TracksClient
as device_info_is_rtl_language
.
App Lifecycle Events @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/270)
- application_installed: When a user launch the app for the very first time
- application_opened: When a user launches or foregrounds the app after the first open
- application_updated: When the app launches for the first time after installing a new version
- application_closed: When the the app is put into the background
User lifecycle events @mchowning (https://github.com/Automattic/pocket-casts-android/pull/276)
- user_signed_in: When the user successfully signs into the app using existing credentials
- user_signin_failed: When the user fails to login
- user_signed_out: When the user is signed out of the app
- user_account_deleted: When the user taps the delete account button/link and successfully deletes their account
- user_email_updated: When the user successfully changes their email
- user_password_updated: When the user successfully changes their password
- user_password_reset: When the user successfully resets their password using the forgot password form
- user_account_created
- user_account_creation_failed
Newsletter @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/288)
- newsletter_optin_changed: When the user changes their newsletter opt in status.
enabled: [true, false], source: [account_updated, profile]
Setup Account View Events @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/275)
- setup_account_shown: When the user is presented with whether they would like to create an account or sign in
- setup_account_button_tapped: When the user taps one of the buttons (create account, sign in)
- setup_account_dismissed: If the user taps the X button to dismiss the view
Sign in View Events @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/275)
- signin_shown: When the sign in view is displayed
- signin_dismissed: When the sign in view is dismissed
Forgot Password View Events @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/288)
- forgot_password_shown: When the sign in view is displayed
- forgot_password_dismissed: When the sign in view is dismissed
Select Account Type @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/275)
- select_account_type_shown: When the select account type is displayed
- select_account_type_button_tapped: When the next button is tapped, and which select the user made (regular, plus)
Create Account @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/275)
- create_account_shown: When the create account view is displayed
- create_account_dismissed: When the create account view is dismissed
Account Updated View: A view that is displayed after creating an account, changing the email, password is changed, or after purchasing a plan @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/288)
- account_updated_shown: When the account created/updated view is displayed.
source: [create_account, email_change, password_change, confirm_payment]
- account_updated_dismissed: When the account created/updated view is dismissed
Terms of Use @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/275)
- terms_of_use_shown: The TOS view is displayed
- terms_of_use_accepted: The user has tapped the I agree button
- terms_of_use_rejected: The user has tapped No thanks button
- terms_of_use_dismissed : The TOS view is dismissed
Select Payment Frequency @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/275)
- select_payment_frequency_shown: The payment frequency view is displayed
- select_payment_frequency_dismissed: The payment frequency view is dismissed
- select_payment_frequency_next_button_tapped: The next button is tapped.
product: [monthly, yearly]
Confirm Payment @ashiagr (https://github.com/Automattic/pocket-casts-android/pull/275)
- confirm_payment_shown:
product: [monthly, yearly]
- confirm_payment_dismissed: The confirm payment view is dismissed
- confirm_payment_confirm_button_tapped: The confirm button is tapped
Purchase @mchowning (https://github.com/Automattic/pocket-casts-android/pull/282)
- purchase_failed: An in app purchase has failed.
error_code
- purchase_cancelled: An in app purchase was cancelled by the user, or timed out when purchasing:
error_code
- purchase_successful: An in app purchase is successful.
product: [monthly, yearly] is_free_trial: [true, false]
Podcasts Tab
- podcasts_list_shown: The view is displayed to the user
- podcasts_list_folder_button_tapped: The “create folder” icon is tapped
- podcasts_list_podcast_tapped: A podcast is tapped
- podcasts_list_folder_tapped: A folder is tapped
- podcasts_list_ellipsis_button_tapped: The ellipsis button is tapped
- podcasts_list_reordered: When the grid of podcasts is reordered by the user
Account Screen (https://github.com/Automattic/pocket-casts-android/pull/293)
-
account_details_show_tos
: Taps on Terms of Use (see comment) -
account_details_show_privacy_policy
: Taps on privacy Policy (see comment)
Others
- Migrate our other analytics tracking code and possibly
CrashlyticsHelper
as additionalTrackers
in theAnalyticsTracker
class. - https://github.com/Automattic/pocket-casts-android/issues/338
Issue Analytics
- State:
- Created a year ago
- Comments:7 (7 by maintainers)
Top Results From Across the Web
8 Steps for Better Issue Management - ProjectManager
Project issues are bound to happen; our 8 steps to better issue management will show you how to identify and manage those issues...
Read more >Issue Tracking - ProjectManagement.com
A method for keeping a record of open problems that, depending on their content, must be solved within the next task, before the...
Read more >5 Things to Track for A Successful Implementation - Mammoth-AI
A project's many criteria must be thoroughly tested for problems. If any software faults arise, finding their source is required to correct them....
Read more >Project Management Concepts: What is an Issue Log? [Updated]
An issue log is an important tool used to manage these issues and more, by helping the project team to record issues that...
Read more >15 Best Issue Management Software to Identify and Resolve ...
When developing a software, we may encounter a number of bugs and errors we need to keep track of, but due to our...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
I added a checklist item to
Add flag to turn off tracks in debug builds
because I assumed we wouldn’t want our development work always getting sent off to Tracks. Let me know if you think that we should keep them on for debug builds.I removed the item for adding a checklist item for adding analytics to the PR template because I think that would be awkward for any open source contributors. Certainly open to adding it back if others disagree though.