relay/dashboards/relay_saasboard_churn.dashboard.lookml (1,117 lines of code) (raw):
- dashboard: relay_saasboard__churn
title: Relay Saasboard - Churn
layout: newspaper
preferred_viewer: dashboards-next
crossfilter_enabled: true
description: ''
preferred_slug: gu7GJgZtDKDOoL57w4VREO
elements:
- name: ''
type: text
title_text: ''
body_text: |2
<div style="border-top: solid 2px #e0e0e0;">
<h3><b>Churn Rate</b></h3>
<h4> <b><code>Original Subscription Start Date</code> is used to discard subscription removal due to plan changes(upgrades).</b> </h4>
row: 5
col: 0
width: 24
height: 3
- title: Churn by Months Since Subscription Start
name: Churn by Months Since Subscription Start
model: relay
explore: subscriptions
type: looker_column
fields: [original_subscriptions__retention.churned, original_subscriptions__retention.previously_retained,
original_subscriptions__retention.months_since_original_subscription_start]
filters:
original_subscriptions__retention.is_cohort_complete: 'Yes'
original_subscriptions__retention.months_since_original_subscription_start: ">0"
sorts: [original_subscriptions__retention.months_since_original_subscription_start]
dynamic_fields: [{category: table_calculation, expression: "${subscriptions__retention.churned}/${subscriptions__retention.previously_retained}",
label: Churn Rate, value_format: !!null '', value_format_name: percent_1,
_kind_hint: measure, table_calculation: churn_rate, _type_hint: number, is_disabled: true},
{category: table_calculation, expression: "${previously_retained}-${churned}",
label: Retained, value_format: !!null '', value_format_name: !!null '', _kind_hint: measure,
table_calculation: retained, _type_hint: number, is_disabled: true}, {category: table_calculation,
expression: "${original_subscriptions__retention.churned}/${original_subscriptions__retention.previously_retained}",
label: Total Churn Rate, value_format: !!null '', value_format_name: percent_0,
_kind_hint: measure, table_calculation: total_churn_rate, _type_hint: number,
is_disabled: false}]
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: circle_outline
show_value_labels: true
label_density: 25
x_axis_scale: auto
y_axis_combined: true
ordering: desc
show_null_labels: false
show_totals_labels: true
show_silhouette: false
totals_color: "#858585"
color_application:
collection_id: 7c56cc21-66e4-41c9-81ce-a60e1c3967b2
palette_id: 5d189dfc-4f46-46f3-822b-bfb0b61777b1
options:
steps: 5
y_axes: [{label: !!null '', orientation: left, series: [{axisId: churn_rate, id: churn_rate,
name: Churn Rate}], showLabels: true, showValues: true, unpinAxis: false,
tickDensity: default, tickDensityCustom: 5, type: linear}, {label: '', orientation: right,
series: [{axisId: subscriptions__retention.churned, id: subscriptions__retention.churned,
name: Churned}], showLabels: true, showValues: true, unpinAxis: false,
tickDensity: default, type: linear}]
x_axis_label: Months Since Subscription Start
x_axis_zoom: true
y_axis_zoom: true
series_types:
churn_rate: line
total_churn_rate: line
series_colors:
churned: "#FF7139"
churn_rate: "#000000"
retained_from_previous: "#12B5CB"
retained: "#0060E0"
subscriptions__retention.churned: "#FF7139"
original_subscriptions__retention.churned: "#FF7139"
total_churn_rate: "#000000"
series_labels:
subscriptions__retention.churned: Churn Counts
label_color: []
x_axis_datetime_label: ''
column_group_spacing_ratio: 0.3
hidden_fields: [original_subscriptions__retention.previously_retained]
defaults_version: 1
show_null_points: true
interpolation: linear
note_state: collapsed
note_display: hover
note_text: This visualization captures the percentage of subscriptions that churned
at a particular month since subscriptions started.
hidden_pivots: {}
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Original Subscription Start Date: subscriptions.original_subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 8
col: 0
width: 13
height: 9
- title: Average Monthly Churn by Cohort
name: Average Monthly Churn by Cohort
model: relay
explore: subscriptions
type: looker_column
fields: [subscriptions.original_subscription_start_month, original_subscriptions__retention.churned,
original_subscriptions__retention.previously_retained]
fill_fields: [subscriptions.original_subscription_start_month]
filters:
original_subscriptions__retention.is_cohort_complete: 'Yes'
sorts: [subscriptions.original_subscription_start_month]
dynamic_fields: [{category: table_calculation, expression: "${subscriptions__retention.churned}/${subscriptions__retention.previously_retained}",
label: Churn Rate, value_format: !!null '', value_format_name: percent_1,
_kind_hint: measure, table_calculation: churn_rate, _type_hint: number, is_disabled: true},
{category: table_calculation, expression: "${original_subscriptions__retention.churned}/${original_subscriptions__retention.previously_retained}",
label: Total Churn Rate, value_format: !!null '', value_format_name: percent_0,
_kind_hint: measure, table_calculation: total_churn_rate, _type_hint: number,
is_disabled: false}]
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: normal
limit_displayed_rows: false
legend_position: center
point_style: circle_outline
show_value_labels: true
label_density: 25
x_axis_scale: auto
y_axis_combined: true
ordering: desc
show_null_labels: false
show_totals_labels: true
show_silhouette: false
totals_color: "#808080"
color_application:
collection_id: aed851c8-b22d-4b01-8fff-4b02b91fe78d
palette_id: c36094e3-d04d-4aa4-8ec7-bc9af9f851f4
options:
steps: 5
y_axes: [{label: '', orientation: left, series: [{axisId: churn_rate, id: churn_rate,
name: Churn Rate}], showLabels: true, showValues: true, unpinAxis: false,
tickDensity: default, tickDensityCustom: 5, type: linear}, {label: '', orientation: right,
series: [{axisId: subscriptions__retention.churned, id: subscriptions__retention.churned,
name: Churned}], showLabels: true, showValues: true, unpinAxis: false,
tickDensity: default, type: linear}]
x_axis_label: Cohort
x_axis_zoom: true
y_axis_zoom: true
series_types:
total_churn_rate: line
series_colors:
churned: "#FF7139"
churn_rate: "#000000"
retained: "#80CABB"
retained_from_previous: "#80CABB"
subscriptions__retention.churned: "#FF7139"
total_churn_rate: "#000000"
series_labels:
subscriptions__retention.churned: Churn Counts
label_color: []
x_axis_datetime_label: "%m-%Y"
x_axis_label_rotation: -45
column_group_spacing_ratio: 0.3
show_null_points: false
interpolation: linear
hidden_fields: [original_subscriptions__retention.churned, original_subscriptions__retention.previously_retained]
defaults_version: 1
note_state: collapsed
note_display: hover
note_text: This visualization captures the average churn rate of each cohort over
every month since subscription started.
hidden_pivots: {}
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Original Subscription Start Date: subscriptions.original_subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 8
col: 13
width: 11
height: 9
- title: Cohort Churn Rate by Months Since Subscription Start
name: Cohort Churn Rate by Months Since Subscription Start
model: relay
explore: subscriptions
type: looker_line
fields: [original_subscriptions__retention.churned, original_subscriptions__retention.previously_retained,
original_subscriptions__retention.months_since_original_subscription_start,
subscriptions.original_subscription_start_month]
pivots: [original_subscriptions__retention.months_since_original_subscription_start]
fill_fields: [subscriptions.original_subscription_start_month]
filters:
original_subscriptions__retention.is_cohort_complete: 'Yes'
sorts: [subscriptions.original_subscription_start_month, original_subscriptions__retention.months_since_original_subscription_start]
dynamic_fields: [{category: table_calculation, expression: "${subscriptions__retention.churned}/${subscriptions__retention.previously_retained}",
label: Churn Rate, value_format: !!null '', value_format_name: percent_1,
_kind_hint: measure, table_calculation: churn_rate, _type_hint: number, is_disabled: true},
{category: table_calculation, expression: "${original_subscriptions__retention.churned}/${original_subscriptions__retention.previously_retained}",
label: Total Churn Rate, value_format: !!null '', value_format_name: percent_0,
_kind_hint: measure, table_calculation: total_churn_rate, _type_hint: number}]
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: left
point_style: circle_outline
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: false
interpolation: linear
x_axis_label: Cohort
x_axis_zoom: true
y_axis_zoom: true
series_types: {}
series_colors:
0 - churn_rate: "#ffffff"
0 - total_churn_rate: "#ffffff"
series_labels:
1 - churn_rate: Month 1
2 - churn_rate: Month 2
3 - churn_rate: Month 3
4 - churn_rate: Month 4
5 - churn_rate: Month 5
6 - churn_rate: Month 6
7 - churn_rate: Month 7
8 - churn_rate: Month 8
9 - churn_rate: Month 9
10 - churn_rate: Month 10
11 - churn_rate: Month 11
12 - churn_rate: Month 12
13 - churn_rate: Month 13
14 - churn_rate: Month 14
15 - churn_rate: Month 15
16 - churn_rate: Month 16
17 - churn_rate: Month 17
18 - churn_rate: Month 18
19 - churn_rate: Month 19
20 - churn_rate: Month 20
21 - churn_rate: Month 21
0 - churn_rate: "."
22 - churn_rate: Month 22
0 - total_churn_rate: "."
1 - total_churn_rate: Month 1
2 - total_churn_rate: Month 2
3 - total_churn_rate: Month 3
4 - total_churn_rate: Month 4
5 - total_churn_rate: Month 5
x_axis_datetime_label: "%m-%Y"
x_axis_label_rotation: -45
discontinuous_nulls: true
ordering: none
show_null_labels: false
show_totals_labels: false
show_silhouette: false
totals_color: "#808080"
hidden_fields: [original_subscriptions__retention.churned, original_subscriptions__retention.previously_retained]
defaults_version: 1
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
hidden_pivots: {}
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Original Subscription Start Date: subscriptions.original_subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 41
col: 0
width: 24
height: 9
- title: " Churn Rate Table (by Cohort)"
name: " Churn Rate Table (by Cohort)"
model: relay
explore: subscriptions
type: looker_grid
fields: [subscriptions.original_subscription_start_month, original_subscriptions__retention.churned,
original_subscriptions__retention.previously_retained, original_subscriptions__retention.months_since_original_subscription_start]
pivots: [original_subscriptions__retention.months_since_original_subscription_start]
fill_fields: [subscriptions.original_subscription_start_month]
filters:
original_subscriptions__retention.is_cohort_complete: 'Yes'
original_subscriptions__retention.months_since_original_subscription_start: ">0"
sorts: [subscriptions.original_subscription_start_month, original_subscriptions__retention.months_since_original_subscription_start]
total: true
dynamic_fields: [{category: table_calculation, expression: "${subscriptions__retention.churned}/${subscriptions__retention.previously_retained}",
label: Churn Rate, value_format: !!null '', value_format_name: percent_1,
_kind_hint: measure, table_calculation: churn_rate, _type_hint: number, is_disabled: true},
{category: table_calculation, expression: "${original_subscriptions__retention.churned}/${original_subscriptions__retention.previously_retained}",
label: Total Churn Rate, value_format: !!null '', value_format_name: percent_0,
_kind_hint: measure, table_calculation: total_churn_rate, _type_hint: number,
is_disabled: false}]
show_view_names: false
show_row_numbers: false
transpose: false
truncate_text: false
hide_totals: false
hide_row_totals: false
size_to_fit: true
table_theme: white
limit_displayed_rows: false
enable_conditional_formatting: true
header_text_alignment: center
header_font_size: '12'
rows_font_size: '12'
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
show_sql_query_menu_options: false
show_totals: true
show_row_totals: true
series_labels:
1 - churn_rate: Month 1
churned: Subs Churned
subscriptions__retention.months_since_subscription_start: Months Since Subscription
Start
series_column_widths:
subscriptions.subscription_start_month: 256
churned: 115
churn_rate: 115
series_cell_visualizations:
churned:
is_active: false
series_text_format:
subscriptions.subscription_start_month:
align: center
bold: true
churn_rate:
align: center
header_background_color: "#D8D8D8"
conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0",
font_color: !!null '', color_application: {collection_id: mozilla, palette_id: mozilla-sequential-0,
options: {steps: 100, constraints: {min: {type: minimum}, mid: {type: number,
value: 0}, max: {type: maximum}}, mirror: false, reverse: false, stepped: true}},
bold: false, italic: false, strikethrough: false, fields: !!null ''}]
x_axis_gridlines: false
y_axis_gridlines: true
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
x_axis_label: Cohort
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: ''
legend_position: left
series_types: {}
point_style: circle_outline
show_value_labels: false
label_density: 25
x_axis_scale: auto
x_axis_datetime_label: "%Y-%m"
y_axis_combined: true
x_axis_label_rotation: -45
show_null_points: false
interpolation: linear
discontinuous_nulls: true
ordering: none
show_null_labels: false
show_totals_labels: false
show_silhouette: false
totals_color: "#808080"
hidden_fields: [original_subscriptions__retention.churned, original_subscriptions__retention.previously_retained]
defaults_version: 1
hidden_pivots: {}
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Original Subscription Start Date: subscriptions.original_subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 50
col: 0
width: 24
height: 7
- title: " Churn Counts Table (by Cohort)"
name: " Churn Counts Table (by Cohort)"
model: relay
explore: subscriptions
type: looker_grid
fields: [original_subscriptions__retention.previously_retained, original_subscriptions__retention.churned,
original_subscriptions__retention.months_since_original_subscription_start,
subscriptions.original_subscription_start_month]
pivots: [original_subscriptions__retention.months_since_original_subscription_start]
fill_fields: [subscriptions.original_subscription_start_month]
filters:
original_subscriptions__retention.is_cohort_complete: 'Yes'
original_subscriptions__retention.months_since_original_subscription_start: ">0"
sorts: [subscriptions.original_subscription_start_month, original_subscriptions__retention.months_since_original_subscription_start]
total: true
dynamic_fields: [{category: measure, expression: "if(\n ${subscriptions__retention.months_since_subscription_start}\
\ > 0,\n ${subscriptions__retention.months_since_subscription_start} <=\
\ ${subscriptions.months_retained} + 1,\n null\n)", label: Previously Retained,
based_on: subscriptions__retention.count, filter_expression: "if(\n ${subscriptions__retention.months_since_subscription_start}\
\ > 0,\n ${subscriptions__retention.months_since_subscription_start} <=\
\ ${subscriptions.months_retained} + 1,\n null\n)", _kind_hint: measure,
measure: previously_retained, type: count, _type_hint: number}, {category: measure,
expression: "${subscriptions__retention.months_since_subscription_start} =\
\ ${subscriptions.months_retained} + 1", label: Churned, based_on: subscriptions__retention.count,
filter_expression: "${subscriptions__retention.months_since_subscription_start}\
\ = ${subscriptions.months_retained} + 1", _kind_hint: measure, measure: churned,
type: count, _type_hint: number}, {table_calculation: churn_rate, expression: "${churned}/${previously_retained}",
label: Churn Rate, value_format_name: percent_2, is_disabled: true}]
show_view_names: false
show_row_numbers: false
transpose: false
truncate_text: false
hide_totals: false
hide_row_totals: false
size_to_fit: true
table_theme: white
limit_displayed_rows: false
enable_conditional_formatting: true
header_text_alignment: center
header_font_size: '12'
rows_font_size: '12'
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
show_sql_query_menu_options: false
show_totals: true
show_row_totals: true
series_labels:
1 - churn_rate: Month 1
churned: Subs Churned
subscriptions__retention.months_since_subscription_start: Months Since Subscription
Start
subscriptions.subscription_start_month: Cohort
series_column_widths:
subscriptions.subscription_start_month: 256
churned: 115
series_cell_visualizations:
churned:
is_active: false
series_text_format:
subscriptions__retention.months_since_subscription_start:
bold: true
align: center
subscriptions.subscription_start_month:
bold: true
align: center
churned:
align: center
header_background_color: "#D8D8D8"
conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0",
font_color: !!null '', color_application: {collection_id: mozilla, palette_id: mozilla-sequential-0,
options: {steps: 50, constraints: {min: {type: minimum}, mid: {type: number,
value: 0}, max: {type: maximum}}, mirror: false, reverse: false, stepped: true}},
bold: false, italic: false, strikethrough: false, fields: !!null ''}]
x_axis_gridlines: false
y_axis_gridlines: true
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
x_axis_label: Cohort
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: ''
legend_position: left
series_types: {}
point_style: circle_outline
show_value_labels: false
label_density: 25
x_axis_scale: auto
x_axis_datetime_label: "%Y-%m"
y_axis_combined: true
x_axis_label_rotation: -45
show_null_points: false
interpolation: linear
discontinuous_nulls: true
ordering: none
show_null_labels: false
show_totals_labels: false
show_silhouette: false
totals_color: "#808080"
hidden_fields: [original_subscriptions__retention.previously_retained]
defaults_version: 1
hidden_pivots: {}
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Original Subscription Start Date: subscriptions.original_subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 57
col: 0
width: 24
height: 7
- title: Untitled
name: Untitled
model: relay
explore: subscriptions
type: single_value
fields: [metadata.last_modified_date]
fill_fields: [metadata.last_modified_date]
filters:
subscriptions__active.is_max_active_date: 'Yes'
sorts: [metadata.last_modified_date desc]
limit: 1
dynamic_fields: [{category: table_calculation, expression: 'add_days(-1,${metadata.last_modified_date})',
label: New Calculation, value_format: !!null '', value_format_name: !!null '',
_kind_hint: dimension, table_calculation: new_calculation, _type_hint: date}]
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: Data Last Updated
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: {}
hidden_fields: [metadata.last_modified_date]
listen: {}
row: 0
col: 19
width: 5
height: 5
- name: " (2)"
type: text
title_text: ''
body_text: |2-
<div style="border-top: solid 2px #e0e0e0;">
<h3><b>Churn by Cohort</b></h3>
<h4> <b><code>Original Subscription Start Date</code> is used to discard subscription removal due to plan changes(upgrades).</b> </h4>
row: 38
col: 0
width: 24
height: 3
- name: " (3)"
type: text
title_text: ''
body_text: |2-
<div style="border-top: solid 2px #e0e0e0;">
<h3><b>Churn by Plan</b></h3>
<h4> <b><code>Subscription Start Date</code> is used to track subscription removal due to plan changes(upgrades).</b> </h4>
row: 17
col: 0
width: 24
height: 3
- title: Churn Rate Table (by Plan Type)
name: Churn Rate Table (by Plan Type)
model: relay
explore: subscriptions
type: looker_grid
fields: [subscriptions__retention.months_since_subscription_start, subscriptions__retention.churned,
subscriptions__retention.previously_retained, subscriptions.plan_type]
pivots: [subscriptions__retention.months_since_subscription_start]
filters:
subscriptions__retention.months_since_subscription_start: ">0"
subscriptions__retention.is_cohort_complete: 'Yes'
sorts: [subscriptions__retention.months_since_subscription_start, subscriptions__retention.churned
desc 0]
total: true
dynamic_fields: [{category: measure, expression: "if(\n ${subscriptions__retention.months_since_subscription_start}\
\ > 0,\n ${subscriptions__retention.months_since_subscription_start} <=\
\ ${subscriptions.months_retained} + 1,\n null\n)", label: Previously Retained,
based_on: subscriptions__retention.count, filter_expression: "if(\n ${subscriptions__retention.months_since_subscription_start}\
\ > 0,\n ${subscriptions__retention.months_since_subscription_start} <=\
\ ${subscriptions.months_retained} + 1,\n null\n)", _kind_hint: measure,
measure: previously_retained, type: count, _type_hint: number}, {category: measure,
expression: "${subscriptions__retention.months_since_subscription_start} =\
\ ${subscriptions.months_retained} + 1", label: Churned, based_on: subscriptions__retention.count,
filter_expression: "${subscriptions__retention.months_since_subscription_start}\
\ = ${subscriptions.months_retained} + 1", _kind_hint: measure, measure: churned,
type: count, _type_hint: number}, {category: table_calculation, expression: "${subscriptions__retention.churned}/${subscriptions__retention.previously_retained}",
label: Churn Rate, value_format: !!null '', value_format_name: percent_1,
_kind_hint: measure, table_calculation: churn_rate, _type_hint: number}, {
category: table_calculation, expression: 'max(pivot_row(if(is_null(${subscriptions__retention.previously_retained}),null,${subscriptions__retention.months_since_subscription_start})))',
label: Months Since Plan Start, value_format: !!null '', value_format_name: !!null '',
_kind_hint: supermeasure, table_calculation: months_since_plan_start, _type_hint: number},
{category: table_calculation, description: for sorting plans by volume, expression: 'pivot_offset(${subscriptions__retention.previously_retained},
0)', label: Total Subscribers, value_format: !!null '', value_format_name: !!null '',
_kind_hint: measure, table_calculation: total_subscribers, _type_hint: number}]
show_view_names: false
show_row_numbers: false
transpose: false
truncate_text: false
hide_totals: false
hide_row_totals: false
size_to_fit: true
table_theme: white
limit_displayed_rows: false
enable_conditional_formatting: true
header_text_alignment: center
header_font_size: '12'
rows_font_size: '12'
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
show_sql_query_menu_options: false
show_totals: true
show_row_totals: true
truncate_header: false
series_labels:
1 - churn_rate: Month 1
churned: Subs Churned
subscriptions__retention.months_since_subscription_start: Months Since Subscription
Start
series_column_widths:
subscriptions.subscription_start_month: 243
churned: 115
churn_rate: 115
subscriptions.pricing_plan: 256
subscriptions.plan_type: 243
series_cell_visualizations:
churned:
is_active: false
series_text_format:
subscriptions.subscription_start_month:
align: center
bold: true
churn_rate:
align: center
subscriptions.pricing_plan:
bold: true
header_background_color: "#D8D8D8"
conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0",
font_color: !!null '', color_application: {collection_id: mozilla, palette_id: mozilla-sequential-0,
options: {steps: 100, constraints: {min: {type: minimum}, mid: {type: number,
value: 0}, max: {type: maximum}}, mirror: false, reverse: false, stepped: true}},
bold: false, italic: false, strikethrough: false, fields: !!null ''}]
x_axis_gridlines: false
y_axis_gridlines: true
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
x_axis_label: Cohort
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: ''
legend_position: left
series_types: {}
point_style: circle_outline
show_value_labels: false
label_density: 25
x_axis_scale: auto
x_axis_datetime_label: "%Y-%m"
y_axis_combined: true
x_axis_label_rotation: -45
show_null_points: false
interpolation: linear
discontinuous_nulls: true
ordering: none
show_null_labels: false
show_totals_labels: false
show_silhouette: false
totals_color: "#808080"
hidden_fields: [total_subscribers, months_since_plan_start, subscriptions__retention.churned,
subscriptions__retention.previously_retained]
defaults_version: 1
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Subscription Start Date: subscriptions.subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 26
col: 0
width: 24
height: 6
- title: Churn Counts Table (by Plan Type)
name: Churn Counts Table (by Plan Type)
model: relay
explore: subscriptions
type: looker_grid
fields: [subscriptions__retention.months_since_subscription_start, subscriptions__retention.churned,
subscriptions__retention.previously_retained, subscriptions.plan_type]
pivots: [subscriptions__retention.months_since_subscription_start]
filters:
subscriptions__retention.months_since_subscription_start: ">0"
subscriptions__retention.is_cohort_complete: 'Yes'
sorts: [subscriptions__retention.months_since_subscription_start, subscriptions__retention.churned
desc 0]
total: true
dynamic_fields: [{category: table_calculation, expression: "${subscriptions__retention.churned}/${subscriptions__retention.previously_retained}",
label: Churn Rate, value_format: !!null '', value_format_name: percent_1,
_kind_hint: measure, table_calculation: churn_rate, _type_hint: number, is_disabled: true},
{category: table_calculation, expression: 'max(pivot_row(if(is_null(${subscriptions__retention.previously_retained}),null,${subscriptions__retention.months_since_subscription_start})))',
label: Months Since Plan Start, value_format: !!null '', value_format_name: !!null '',
_kind_hint: supermeasure, table_calculation: months_since_plan_start, _type_hint: number},
{category: table_calculation, description: for sorting plans by volume, expression: 'pivot_offset(${subscriptions__retention.previously_retained},
0)', label: Total Subscribers, value_format: !!null '', value_format_name: !!null '',
_kind_hint: measure, table_calculation: total_subscribers, _type_hint: number}]
show_view_names: false
show_row_numbers: false
transpose: false
truncate_text: false
hide_totals: false
hide_row_totals: false
size_to_fit: true
table_theme: white
limit_displayed_rows: false
enable_conditional_formatting: true
header_text_alignment: center
header_font_size: '12'
rows_font_size: '12'
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
show_sql_query_menu_options: false
show_totals: true
show_row_totals: true
truncate_header: false
series_labels:
1 - churn_rate: Month 1
churned: Subs Churned
subscriptions__retention.months_since_subscription_start: Months Since Subscription
Start
series_column_widths:
subscriptions.subscription_start_month: 243
churned: 115
churn_rate: 115
subscriptions.pricing_plan: 256
subscriptions.plan_type: 243
subscriptions__retention.churned: 115
series_cell_visualizations:
churned:
is_active: false
series_text_format:
subscriptions.subscription_start_month:
align: center
bold: true
churn_rate:
align: center
subscriptions.pricing_plan:
bold: true
header_background_color: "#D8D8D8"
conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0",
font_color: !!null '', color_application: {collection_id: mozilla, palette_id: mozilla-sequential-0,
options: {steps: 100, constraints: {min: {type: minimum}, mid: {type: number,
value: 0}, max: {type: maximum}}, mirror: false, reverse: false, stepped: true}},
bold: false, italic: false, strikethrough: false, fields: !!null ''}]
x_axis_gridlines: false
y_axis_gridlines: true
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
x_axis_label: Cohort
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: ''
legend_position: left
series_types: {}
point_style: circle_outline
show_value_labels: false
label_density: 25
x_axis_scale: auto
x_axis_datetime_label: "%Y-%m"
y_axis_combined: true
x_axis_label_rotation: -45
show_null_points: false
interpolation: linear
discontinuous_nulls: true
ordering: none
show_null_labels: false
show_totals_labels: false
show_silhouette: false
totals_color: "#808080"
hidden_fields: [total_subscribers, months_since_plan_start, subscriptions__retention.previously_retained]
defaults_version: 1
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Subscription Start Date: subscriptions.subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 32
col: 0
width: 24
height: 6
- title: " Churn Rate (by Plan Type)"
name: " Churn Rate (by Plan Type)"
model: relay
explore: subscriptions
type: looker_line
fields: [subscriptions__retention.months_since_subscription_start, subscriptions__retention.churned,
subscriptions__retention.previously_retained, subscriptions.plan_type]
pivots: [subscriptions.plan_type]
filters:
subscriptions__retention.months_since_subscription_start: ">0"
subscriptions__retention.is_cohort_complete: 'Yes'
sorts: [subscriptions__retention.months_since_subscription_start, subscriptions.plan_type,
months_since_plan_start desc 0, total_subscribers desc 0]
limit: 1000
column_limit: 50
dynamic_fields: [{category: table_calculation, expression: "${subscriptions__retention.churned}/${subscriptions__retention.previously_retained}",
label: Churn Rate, value_format: !!null '', value_format_name: percent_1,
_kind_hint: measure, table_calculation: churn_rate, _type_hint: number}, {
category: table_calculation, expression: 'max(pivot_row(if(is_null(${subscriptions__retention.previously_retained}),null,${subscriptions__retention.months_since_subscription_start})))',
label: Months Since Plan Start, value_format: !!null '', value_format_name: !!null '',
_kind_hint: supermeasure, table_calculation: months_since_plan_start, _type_hint: number},
{category: table_calculation, description: for sorting plans by volume, expression: 'pivot_offset(${subscriptions__retention.previously_retained},
0)', label: Total Subscribers, value_format: !!null '', value_format_name: !!null '',
_kind_hint: measure, table_calculation: total_subscribers, _type_hint: number}]
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: left
point_style: circle_outline
show_value_labels: false
label_density: 25
x_axis_scale: auto
y_axis_combined: true
show_null_points: false
interpolation: linear
color_application:
collection_id: 80e60a97-c02b-4a41-aa05-83522ee2144b
palette_id: 8b146fdb-43c2-42c2-a572-277b13e9ae5c
options:
steps: 5
x_axis_label: Months Since Subscription Start
series_types: {}
series_colors:
1-month-usd-4.99 - churn_rate: "#7363A9"
6-month-chf-47.94 - churn_rate: "#82a6a8"
1_month - churn_rate: "#ffd95f"
1_year - churn_rate: "#4276be"
6_month - churn_rate: "#b42f37"
series_labels:
1 - churn_rate: Month 1
churned: Subs Churned
subscriptions__retention.months_since_subscription_start: Months Since Subscription
Started
x_axis_datetime_label: ''
discontinuous_nulls: true
show_row_numbers: true
transpose: false
truncate_text: false
hide_totals: false
hide_row_totals: false
size_to_fit: false
table_theme: white
enable_conditional_formatting: true
header_text_alignment: center
header_font_size: '12'
rows_font_size: '12'
conditional_formatting_include_totals: false
conditional_formatting_include_nulls: false
show_sql_query_menu_options: false
show_totals: true
show_row_totals: true
series_column_widths:
subscriptions.subscription_start_month: 243
churned: 115
churn_rate: 115
subscriptions.pricing_plan: 256
series_cell_visualizations:
churned:
is_active: false
series_text_format:
subscriptions.subscription_start_month:
align: center
bold: true
churn_rate:
align: center
subscriptions.pricing_plan:
bold: true
header_background_color: "#D8D8D8"
conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#3FE1B0",
font_color: !!null '', color_application: {collection_id: mozilla, palette_id: mozilla-sequential-0,
options: {steps: 100, constraints: {min: {type: minimum}, mid: {type: number,
value: 0}, max: {type: maximum}}, mirror: false, reverse: false, stepped: true}},
bold: false, italic: false, strikethrough: false, fields: !!null ''}]
ordering: none
show_null_labels: false
show_totals_labels: false
show_silhouette: false
totals_color: "#808080"
hidden_fields: [total_subscribers, months_since_plan_start, subscriptions__retention.churned,
subscriptions__retention.previously_retained]
defaults_version: 1
listen:
Plan Type: subscriptions.plan_type
Pricing Plan: subscriptions.pricing_plan
Country: subscriptions.country_name
Subscription Start Date: subscriptions.subscription_start_date
Product Name: subscriptions.product_name
Provider: subscriptions.provider
row: 20
col: 0
width: 24
height: 6
- name: " (4)"
type: text
title_text: ''
body_text: '[{"type":"p","children":[{"text":"This dashboard capture "},{"text":"subscription
churn","bold":true},{"text":". Churn is defined as when a subscription officially
ends and the client no longer has access to the relay service.\n"}],"id":1672267234120},{"type":"ul","children":[{"type":"li","children":[{"type":"lic","children":[{"text":"A
cohort refers to the group of subscriptions that started in a \nparticular month. For
example, cohort 07-2020 includes all \nsubscriptions that started in the month
of July 2020.\n "}],"id":1672267234153}],"id":1672267234122},{"type":"li","children":[{"type":"lic","children":[{"text":"Churn
rate is the percentage of not-retained subscriptions out of the number retained
from the previous month. \n "}],"id":1672267234149}],"id":1672267234122},{"type":"li","children":[{"type":"lic","children":[{"text":"Churn
rate can be aggregated to get the average churn per month by not specifying
"},{"text":"Months Since Subscription Start","bold":true},{"text":". This differs
from retention rate, which is cumulative and therefore must not be aggregated.\n "}],"id":1672267234137}],"id":1672267234122},{"type":"li","children":[{"type":"lic","children":[{"text":"Churn
Rate is not defined for 0 months since subscription started, because there is
no previous month.\n"}],"id":1672267234126}],"id":1672267234122}],"id":1672267234121},{"type":"p","id":1674079862816,"children":[{"text":"Please
submit any questions to "},{"text":"@yeonjoo","bold":true},{"text":" in "},{"text":"#fx-private-relay
","bold":true},{"text":"channel on Slack. \n\n\n"}]}]'
rich_content_json: '{"format":"slate"}'
row: 0
col: 0
width: 19
height: 5
filters:
- name: Pricing Plan
title: Pricing Plan
type: field_filter
default_value: ''
allow_multiple_values: true
required: false
ui_config:
type: checkboxes
display: popover
model: relay
explore: subscriptions
listens_to_filters: []
field: subscriptions.pricing_plan
- name: Country
title: Country
type: field_filter
default_value: ''
allow_multiple_values: true
required: false
ui_config:
type: checkboxes
display: popover
model: relay
explore: subscriptions
listens_to_filters: []
field: subscriptions.country_name
- name: Plan Type
title: Plan Type
type: field_filter
default_value: ''
allow_multiple_values: true
required: false
ui_config:
type: checkboxes
display: popover
model: relay
explore: subscriptions
listens_to_filters: []
field: subscriptions.plan_type
- name: Subscription Start Date
title: Subscription Start Date
type: field_filter
default_value: 6 month
allow_multiple_values: true
required: false
ui_config:
type: advanced
display: popover
options: []
model: relay
explore: subscriptions
listens_to_filters: []
field: subscriptions.subscription_start_date
- name: Original Subscription Start Date
title: Original Subscription Start Date
type: field_filter
default_value: 6 month
allow_multiple_values: true
required: false
ui_config:
type: advanced
display: popover
options: []
model: relay
explore: subscriptions
listens_to_filters: []
field: subscriptions.original_subscription_start_date
- name: Product Name
title: Product Name
type: field_filter
default_value: Relay Premium,Mozilla VPN & Firefox Relay
allow_multiple_values: true
required: false
ui_config:
type: checkboxes
display: popover
model: relay
explore: subscriptions
listens_to_filters: []
field: subscriptions.product_name
- name: Provider
title: Provider
type: field_filter
default_value: ''
allow_multiple_values: true
required: false
ui_config:
type: checkboxes
display: popover
model: relay
explore: subscriptions
listens_to_filters: []
field: subscriptions.provider