sql_generators/funnels/configs/android_onboarding.toml (277 lines of code) (raw):

destination_dataset = "fenix_derived" platform = "fenix" owners = ["loines@mozilla.org"] # optional; users getting notification if funnel run fails version = "1" # optional; default is set to 1 [funnels] [funnels.onboarding_funnel] friendly_name = "Firefox for Android Onboarding Funnel" description = "Funnel Steps for Firefox for Android Onboarding" steps = [ "new_profile", "first_card_impression", "first_card_primary_click", "first_card_secondary_click", "second_card_impression", "second_card_primary_click", "second_card_secondary_click", "third_card_impression", "third_card_primary_click", "third_card_secondary_click", "onboarding_completed", "sync_sign_in", "default_browser" ] dimensions = [ "funnel_id", "country", "locale", "android_version", "channel", "device_model", "device_manufacturer", "first_seen_date", "adjust_network", "adjust_campaign", "adjust_creative", "adjust_ad_group", "install_source", "repeat_first_month_user", "retained_week_4" ] [steps.new_profile] friendly_name = "New Profile" description = "Total New Profiles" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = "ac.client_id" aggregation = "count distinct" [steps.first_card_impression] friendly_name = "First Card" description = "First Onboarding Card Impression" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '1' AND JSON_VALUE(event_extra.action) = 'impression' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.first_card_primary_click] friendly_name = "First Card Primary Click" description = "First Onboarding Card Primary Button Click" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '1' AND JSON_VALUE(event_extra.action) = 'click' AND JSON_VALUE(event_extra.element_type) = 'primary_button' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.first_card_secondary_click] friendly_name = "First Card Secondary Click" description = "First Onboarding Card Secondary Button Click" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '1' AND JSON_VALUE(event_extra.action) = 'click' AND JSON_VALUE(event_extra.element_type) = 'secondary_button' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.second_card_impression] friendly_name = "Second Card" description = "Second Onboarding Card Impression" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '2' AND JSON_VALUE(event_extra.action) = 'impression' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.second_card_primary_click] friendly_name = "Second Card Primary Click" description = "Second Onboarding Card Primary Button Click" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '2' AND JSON_VALUE(event_extra.action) = 'click' AND JSON_VALUE(event_extra.element_type) = 'primary_button' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.second_card_secondary_click] friendly_name = "Second Card secondary Click" description = "Second Onboarding Card secondary Button Click" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '2' AND JSON_VALUE(event_extra.action) = 'click' AND JSON_VALUE(event_extra.element_type) = 'secondary_button' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.third_card_impression] friendly_name = "Third Card" description = "Third Onboarding Card Impression" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '3' AND JSON_VALUE(event_extra.action) = 'impression' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.third_card_primary_click] friendly_name = "Third Card Primary Click" description = "Third Onboarding Card Primary Button Click" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '3' AND JSON_VALUE(event_extra.action) = 'click' AND JSON_VALUE(event_extra.element_type) = 'primary_button' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.third_card_secondary_click] friendly_name = "Third Card secondary Click" description = "Third Onboarding Card secondary Button Click" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN JSON_VALUE(event_extra.sequence_position) = '3' AND JSON_VALUE(event_extra.action) = 'click' AND JSON_VALUE(event_extra.element_type) = 'secondary_button' AND event_name != 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.onboarding_completed] friendly_name = "Onboarding Completed" description = "Onboarding Completed Event" data_source = "onboarding_events" # join_previous_step_on = "ac.client_id" select_expression = """CASE WHEN event_name = 'completed' AND event_category = 'onboarding' THEN ac.client_id END""" aggregation = "count distinct" [steps.sync_sign_in] friendly_name = "Signed into Sync" description = "User Successfully Signed into FxA (Signed in OR up)" data_source = "onboarding_events" select_expression = """CASE WHEN event_name IN ('sign_in', 'sign_up') AND event_category = 'sync_auth' THEN ac.client_id END""" aggregation = "count distinct" [steps.default_browser] friendly_name = "Made Fenix Default Browser" description = "User changed their default browser to Firefox" data_source = "onboarding_events" select_expression = """CASE WHEN event_name = 'default_browser_changed' AND event_category = 'events' THEN ac.client_id END""" aggregation = "count distinct" [data_sources] [data_sources.onboarding_events] from_expression = """ fenix.firefox_android_clients ac LEFT JOIN ( SELECT * FROM `moz-fx-data-shared-prod`.firefox_ios.retention_clients WHERE submission_date = @submission_date AND metric_date = DATE_SUB(@submission_date, INTERVAL 27 DAY) AND new_profile_metric_date ) AS r -- we only new_profile retention USING(client_id) LEFT JOIN (SELECT * FROM fenix.events_stream eu WHERE DATE(submission_timestamp) = @submission_date) AS eu USING(client_id) LEFT JOIN (SELECT client_id, JSON_VALUE(ANY_VALUE(event_extra.sequence_id)) AS funnel_id FROM fenix.events_stream WHERE JSON_VALUE(event_extra.sequence_id) IS NOT NULL AND DATE(submission_timestamp) = @submission_date GROUP BY 1) funnel_ids USING(client_id) """ submission_date_column = "ac.submission_date" client_id_column = "ac.client_id" [dimensions] [dimensions.funnel_id] data_source = "onboarding_events" select_expression = "COALESCE(funnel_id, 'no_onboarding_reported')" friendly_name = "Funnel ID" description = "ID of the Onboarding Funnel" client_id_column = "ac.client_id" # these dimensions are sourced from `retention_clients` [dimensions.repeat_first_month_user] friendly_name = "Repeat First Month User" description = "Whether the Client is a Repeat First Month User" data_source = "onboarding_events" select_expression = "COALESCE(r.repeat_profile, FALSE)" client_id_column = "r.client_id" [dimensions.retained_week_4] friendly_name = "Repeat First Month User" description = "Whether the Client is Retained in their Fourth Week" data_source = "onboarding_events" select_expression = "COALESCE(r.retained_week_4, FALSE)" client_id_column = "r.client_id" # these dimensions are sourced from firefox_android_clients [dimensions.country] data_source = "onboarding_events" select_expression = "ac.first_reported_country" friendly_name = "Country" description = "Client's First Reported Country" client_id_column = "ac.client_id" [dimensions.locale] data_source = "onboarding_events" select_expression = "ac.locale" friendly_name = "Locale" description = "Client's First Reported Language" client_id_column = "ac.client_id" [dimensions.android_version] data_source = "onboarding_events" select_expression = "ac.os_version" friendly_name = "First Reported Android OS Version" client_id_column = "ac.client_id" [dimensions.channel] data_source = "onboarding_events" select_expression = "ac.channel" friendly_name = "First Reported Release Channel" client_id_column = "ac.client_id" [dimensions.device_model] data_source = "onboarding_events" select_expression = "ac.device_model" friendly_name = "First Reported Device Model" client_id_column = "ac.client_id" [dimensions.device_manufacturer] data_source = "onboarding_events" select_expression = "ac.device_manufacturer" friendly_name = "First Reported Device Manufacturer" client_id_column = "ac.client_id" [dimensions.first_seen_date] data_source = "onboarding_events" select_expression = "ac.first_seen_date" friendly_name = "First Seen Date" description = "First day this client_id shows up in our data." client_id_column = "ac.client_id" [dimensions.adjust_network] data_source = "onboarding_events" select_expression = "ac.adjust_network" friendly_name = "Adjust Network" client_id_column = "ac.client_id" [dimensions.adjust_campaign] data_source = "onboarding_events" select_expression = "ac.adjust_campaign" friendly_name = "Adjust Campaign" client_id_column = "ac.client_id" [dimensions.adjust_creative] data_source = "onboarding_events" select_expression = "ac.adjust_creative" friendly_name = "Adjust Creative" client_id_column = "ac.client_id" [dimensions.adjust_ad_group] data_source = "onboarding_events" select_expression = "ac.adjust_ad_group" friendly_name = "Adjust Ad Group" client_id_column = "ac.client_id" [dimensions.install_source] data_source = "onboarding_events" select_expression = "ac.install_source" friendly_name = "Install Source" client_id_column = "ac.client_id"