duet/dashboards/mobile_ios_country.dashboard.lookml (772 lines of code) (raw):
- dashboard: ios_mobile_acquisition_funnel
title: iOS Mobile Acquisition Funnel
layout: newspaper
preferred_viewer: dashboards-next
elements:
- name: Mobile Acquisition Funnel for iOS
type: text
title_text: Mobile Acquisition Funnel for iOS
subtitle_text: ''
body_text: |
The purpose of this dashboard is to provide insight into the mobile acquisition funnel for some of our iOS products, namely Firefox for iOS and Focus. It does not behave like a normal funnel due to the fact that the aggregated data originates from multiple sources. It’s important to understand each source and the caveats.
Apple App Store data is the source for the first 2 steps of the funnel. Our internal telemetry is responsible for the final 2 steps, which provide acquisition (first seen) and activation counts. A new profile is activated if seen 5 out of 7 days in the first week. Both of these steps may be lower than step 3 primarily due to the fact that metrics are aggregated and counted differently between Apple and Mozilla's internal telemetry.
row: 0
col: 0
width: 12
height: 7
- title: iOS Funnel Per Day
name: iOS Funnel Per Day
model: duet
explore: mobile_ios_country
type: looker_line
fields: [mobile_ios_country.submission_date, mobile_ios_country.product_page_views,
mobile_ios_country.first_time_installs, mobile_ios_country.installations_opt_in,
mobile_ios_country.first_seen, mobile_ios_country.activated]
fill_fields: [mobile_ios_country.submission_date]
sorts: [mobile_ios_country.first_seen desc]
limit: 500
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: true
show_x_axis_ticks: true
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: true
interpolation: linear
defaults_version: 1
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 45
col: 0
width: 24
height: 8
- title: Last Play Store Update
name: Last Play Store Update
model: duet
explore: mobile_ios_country
type: single_value
fields: [mobile_ios_country.ios_store_updated]
fill_fields: [mobile_ios_country.ios_store_updated]
sorts: [mobile_ios_country.ios_store_updated desc]
limit: 500
dynamic_fields: [{measure: count_of_latest_date, based_on: mobile_ios_country.latest_date,
expression: '', label: Count of Latest Date, type: count_distinct, _kind_hint: measure,
_type_hint: number}]
custom_color_enabled: true
show_single_value_title: true
show_comparison: false
comparison_type: value
comparison_reverse_colors: false
show_comparison_label: true
enable_conditional_formatting: false
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
single_value_title: Last Play Store Update
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: true
show_x_axis_ticks: true
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: true
interpolation: linear
defaults_version: 1
series_types: {}
note_state: collapsed
note_display: above
note_text: The latest date for which we have Apple App Store data.
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 7
col: 12
width: 6
height: 2
- title: Funnel Overview
name: Funnel Overview
model: duet
explore: mobile_ios_country
type: looker_column
fields: [mobile_ios_country.product_page_views, mobile_ios_country.first_time_installs,
mobile_ios_country.installations_opt_in, mobile_ios_country.first_seen, mobile_ios_country.activated]
sorts: [mobile_ios_country.first_time_installs desc]
limit: 500
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: false
show_x_axis_ticks: false
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
ordering: none
show_null_labels: false
show_totals_labels: false
show_silhouette: false
totals_color: "#808080"
color_application:
collection_id: mozilla
palette_id: mozilla-categorical-0
options:
steps: 5
series_types: {}
series_labels: {}
leftAxisLabelVisible: false
leftAxisLabel: ''
rightAxisLabelVisible: false
rightAxisLabel: ''
smoothedBars: false
orientation: automatic
labelPosition: left
percentType: total
percentPosition: inline
valuePosition: right
labelColorEnabled: false
labelColor: "#FFF"
defaults_version: 1
show_null_points: true
interpolation: linear
value_labels: legend
label_type: labPer
hidden_fields: []
hidden_points_if_no: []
show_row_numbers: true
transpose: false
truncate_text: true
hide_totals: false
hide_row_totals: false
size_to_fit: true
table_theme: white
enable_conditional_formatting: false
header_text_alignment: left
header_font_size: 12
rows_font_size: 12
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 0
col: 12
width: 12
height: 7
- name: Product Page Views
title: Product Page Views
note_state: collapsed
note_display: above
note_text: The count of page views for the app on the Apple App Store.
merged_queries:
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.product_page_views]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '0'
limit: 500
join_fields: []
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.product_page_views]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '1'
sorts: [mobile_ios_country.product_page_views desc]
limit: 500
join_fields:
- field_name: mobile_ios_country.join_field
source_field_name: mobile_ios_country.join_field
custom_color_enabled: true
show_single_value_title: true
single_value_title: Product Page Views
show_comparison: true
comparison_type: change
comparison_reverse_colors: false
show_comparison_label: true
enable_conditional_formatting: false
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
hidden_fields: [q1_mobile_ios_country.product_page_views]
series_types: {}
type: single_value
column_limit: 50
dynamic_fields: [{_kind_hint: measure, table_calculation: from_previous_time_period,
_type_hint: number, category: table_calculation, expression: "(${mobile_ios_country.product_page_views}-${q1_mobile_ios_country.product_page_views})/${q1_mobile_ios_country.product_page_views}",
label: From Previous Time Period, value_format: !!null '', value_format_name: percent_1}]
listen:
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 9
col: 12
width: 12
height: 4
- name: First Time Installs
title: First Time Installs
note_state: collapsed
note_display: above
note_text: A count of the number of times users press the 'Get' button in the
Apple App Store for the first time.
merged_queries:
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.first_time_installs]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '0'
sorts: [mobile_ios_country.first_time_installs desc]
limit: 500
join_fields: []
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.first_time_installs]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '1'
sorts: [mobile_ios_country.first_time_installs desc]
limit: 500
join_fields:
- field_name: mobile_ios_country.join_field
source_field_name: mobile_ios_country.join_field
custom_color_enabled: true
show_single_value_title: true
single_value_title: First Time Installs
show_comparison: true
comparison_type: change
comparison_reverse_colors: false
show_comparison_label: true
enable_conditional_formatting: false
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
hidden_fields: [q1_mobile_ios_country.first_time_installs]
type: single_value
series_types: {}
column_limit: 50
dynamic_fields: [{_kind_hint: measure, table_calculation: from_previous_time_period,
_type_hint: number, category: table_calculation, expression: "(${mobile_ios_country.first_time_installs}-${q1_mobile_ios_country.first_time_installs})/${q1_mobile_ios_country.first_time_installs}",
label: From Previous Time Period, value_format: !!null '', value_format_name: percent_1}]
listen:
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 18
col: 12
width: 12
height: 4
- name: First Seen
title: First Seen
note_state: collapsed
note_display: above
note_text: The count of client IDs seen for the first time in the given time period.
merged_queries:
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.first_seen]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '0'
limit: 500
join_fields: []
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.first_seen]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '1'
limit: 500
join_fields:
- field_name: mobile_ios_country.join_field
source_field_name: mobile_ios_country.join_field
custom_color_enabled: true
show_single_value_title: true
single_value_title: First Seen
show_comparison: true
comparison_type: change
comparison_reverse_colors: false
show_comparison_label: true
comparison_label: From Previous Time Period
enable_conditional_formatting: false
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
series_types: {}
type: single_value
hidden_fields: [q1_mobile_ios_country.first_seen]
column_limit: 50
dynamic_fields: [{_kind_hint: measure, table_calculation: from_previous_time_period,
_type_hint: number, category: table_calculation, expression: "(${mobile_ios_country.first_seen}-${q1_mobile_ios_country.first_seen})/${q1_mobile_ios_country.first_seen}",
label: From Previous Time Period, value_format: !!null '', value_format_name: percent_1}]
listen:
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 27
col: 12
width: 12
height: 4
- name: Activated
title: Activated
note_state: collapsed
note_display: hover
note_text: A new profile is considered activated if seen 5 out of their first
7 days.
merged_queries:
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.activated]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '0'
sorts: [mobile_ios_country.activated desc]
limit: 500
join_fields: []
- model: duet
explore: mobile_ios_country
type: table
fields: [mobile_ios_country.join_field, mobile_ios_country.activated]
fill_fields: [mobile_ios_country.join_field]
filters:
mobile_ios_country.period_offset: '1'
limit: 500
join_fields:
- field_name: mobile_ios_country.join_field
source_field_name: mobile_ios_country.join_field
custom_color_enabled: true
show_single_value_title: true
single_value_title: 7 Day Activated
show_comparison: true
comparison_type: change
comparison_reverse_colors: false
show_comparison_label: true
enable_conditional_formatting: false
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
hidden_fields: [q1_mobile_ios_country.activated]
type: single_value
series_types: {}
column_limit: 50
dynamic_fields: [{_kind_hint: measure, table_calculation: from_previous_time_period,
_type_hint: number, category: table_calculation, expression: "(${mobile_ios_country.activated}-${q1_mobile_ios_country.activated})/${q1_mobile_ios_country.activated}",
label: From Previous Time Period, value_format: !!null '', value_format_name: percent_1}]
listen:
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
- History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 36
col: 12
width: 12
height: 4
- title: Last Valid Submission Date
name: Last Valid Submission Date
model: duet
explore: mobile_ios_country
type: single_value
fields: [mobile_ios_country.latest_date]
fill_fields: [mobile_ios_country.latest_date]
sorts: [mobile_ios_country.latest_date desc]
limit: 500
dynamic_fields: [{measure: count_of_latest_date, based_on: mobile_ios_country.latest_date,
expression: '', label: Count of Latest Date, type: count_distinct, _kind_hint: measure,
_type_hint: number}]
custom_color_enabled: true
show_single_value_title: true
show_comparison: false
comparison_type: value
comparison_reverse_colors: false
show_comparison_label: true
enable_conditional_formatting: false
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
single_value_title: Most Recent Submission Date for Analysis
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: true
show_x_axis_ticks: true
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: true
interpolation: linear
defaults_version: 1
series_types: {}
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 7
col: 18
width: 6
height: 2
- name: ''
type: text
title_text: ''
body_text: ''
row: 53
col: 12
width: 12
height: 3
- name: 'Step 1: Apple App Store Page Views'
type: text
title_text: 'Step 1: Apple App Store Page Views'
subtitle_text: How many views did we get on our Apple App Store page?
body_text: ''
row: 9
col: 0
width: 12
height: 4
- name: Important Dates
type: text
title_text: Important Dates
body_text: Two dates that indicate the most recent days for which we have data.
The graphs here will be reported up until the most recent submission date for
analysis.
row: 7
col: 0
width: 12
height: 2
- name: 'Step 2: Apple App Store First Time Installs'
type: text
title_text: 'Step 2: Apple App Store First Time Installs'
subtitle_text: How many first time installations did we get from the Apple App
Store?
body_text: This is measured by the number of first tap taps on the 'Get' button
in the app store. It's our closest measure to first time installations.
row: 18
col: 0
width: 12
height: 4
- title: First Time Installs from Apple App Store
name: First Time Installs from Apple App Store
model: duet
explore: mobile_ios_country
type: looker_line
fields: [mobile_ios_country.submission_date, mobile_ios_country.first_time_installs]
fill_fields: [mobile_ios_country.submission_date]
sorts: [mobile_ios_country.submission_date desc]
limit: 500
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: true
show_x_axis_ticks: true
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: true
interpolation: linear
y_axes: [{label: '', orientation: left, series: [{axisId: mobile_ios_country.product_page_views,
id: mobile_ios_country.product_page_views, name: Product Page Views}],
showLabels: true, showValues: true, unpinAxis: true, tickDensity: default,
tickDensityCustom: 5, type: linear}]
defaults_version: 1
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 22
col: 0
width: 24
height: 5
- title: Page Visits from Apple App Store
name: Page Visits from Apple App Store
model: duet
explore: mobile_ios_country
type: looker_line
fields: [mobile_ios_country.submission_date, mobile_ios_country.product_page_views]
fill_fields: [mobile_ios_country.submission_date]
sorts: [mobile_ios_country.submission_date desc]
limit: 500
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: true
show_x_axis_ticks: true
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: true
interpolation: linear
y_axes: [{label: '', orientation: left, series: [{axisId: mobile_ios_country.product_page_views,
id: mobile_ios_country.product_page_views, name: Product Page Views}],
showLabels: true, showValues: true, unpinAxis: true, tickDensity: default,
tickDensityCustom: 5, type: linear}]
defaults_version: 1
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 13
col: 0
width: 24
height: 5
- name: 'Step 4: First Seen in Internal Telemetry'
type: text
title_text: 'Step 4: First Seen in Internal Telemetry'
subtitle_text: How many acquisitions did we count internally on iOS devices?
body_text: The count of new client IDs as measured internally, our measure of
how many acquisitions we've received from the iOS platforms. Steps 2 and 3 may
not agree due to the fact that Step 2 is only reported on an opt-in basis, meaning
we're not able to measure the full counts. If many users download the app and
never open it, we could see step 2 > step 3. If they do open the app but have
opted out of data sharing, we could see a similar effect.
row: 27
col: 0
width: 12
height: 4
- name: 'Step 5: iOS Activated Client Count'
type: text
title_text: 'Step 5: iOS Activated Client Count'
subtitle_text: From our acquisitions, how many users were activated?
body_text: A new client ID is considered activated if they were active during
at least 5 of their first 7 days. This definition is the same as in the desktop
acquisition funnel. The time frame for reporting in the dashboard ensures that
we have observed at least a 7 day window after their acquisition date.
row: 36
col: 0
width: 12
height: 4
- title: iOS First Seen Counts
name: iOS First Seen Counts
model: duet
explore: mobile_ios_country
type: looker_line
fields: [mobile_ios_country.submission_date, mobile_ios_country.first_seen]
fill_fields: [mobile_ios_country.submission_date]
sorts: [mobile_ios_country.submission_date desc]
limit: 500
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: true
show_x_axis_ticks: true
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: true
interpolation: linear
y_axes: [{label: '', orientation: left, series: [{axisId: mobile_ios_country.product_page_views,
id: mobile_ios_country.product_page_views, name: Product Page Views}],
showLabels: true, showValues: true, unpinAxis: true, tickDensity: default,
tickDensityCustom: 5, type: linear}]
defaults_version: 1
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 31
col: 0
width: 24
height: 5
- title: iOS Activated Client Count
name: iOS Activated Client Count
model: duet
explore: mobile_ios_country
type: looker_line
fields: [mobile_ios_country.submission_date, mobile_ios_country.activated]
fill_fields: [mobile_ios_country.submission_date]
sorts: [mobile_ios_country.submission_date desc]
limit: 500
x_axis_gridlines: false
y_axis_gridlines: true
show_view_names: false
show_y_axis_labels: true
show_y_axis_ticks: true
y_axis_tick_density: default
y_axis_tick_density_custom: 5
show_x_axis_label: true
show_x_axis_ticks: true
y_axis_scale_mode: linear
x_axis_reversed: false
y_axis_reversed: false
plot_size_by_field: false
trellis: ''
stacking: ''
limit_displayed_rows: false
legend_position: center
point_style: none
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: true
interpolation: linear
y_axes: [{label: '', orientation: left, series: [{axisId: mobile_ios_country.product_page_views,
id: mobile_ios_country.product_page_views, name: Product Page Views}],
showLabels: true, showValues: true, unpinAxis: true, tickDensity: default,
tickDensityCustom: 5, type: linear}]
defaults_version: 1
listen:
History Days: mobile_ios_country.history_days
App Name: mobile_ios_country.app_name
Bucket: country_buckets.bucket
row: 40
col: 0
width: 24
height: 5
filters:
- name: App Name
title: App Name
type: field_filter
default_value: firefox
allow_multiple_values: true
required: true
ui_config:
type: button_toggles
display: inline
options: []
model: duet
explore: mobile_ios_country
listens_to_filters: []
field: mobile_ios_country.app_name
- name: History Days
title: History Days
type: field_filter
default_value: '7'
allow_multiple_values: true
required: false
ui_config:
type: button_toggles
display: inline
options: []
model: duet
explore: mobile_ios_country
listens_to_filters: []
field: mobile_ios_country.history_days
- name: Bucket
title: Bucket
type: field_filter
default_value: tier-1
allow_multiple_values: true
required: false
ui_config:
type: button_toggles
display: popover
options: []
model: duet
explore: country_buckets
listens_to_filters: []
field: country_buckets.bucket