[Experiment Rollout] in_product_marketing_emails - In Product Marketing Emails
What
Track the status of an experiment through to removal.
- Experiment key:
in_product_marketing_emails
- Feature flag name:
in_product_marketing_emails_experiment_percentage
This is an experiment tracking issue for: &62 using the scoped experiment label.
As well as defining the experiment rollout and cleanup, this issue incorporates the relevant
Feature Flag Roll Out
steps.
Owners
- Team:
group::activation
- Most appropriate slack channel to reach out to:
#g_activation
- Best individual to reach out to: @alexbuijs
Expectations
What are we expecting to happen?
What might happen if this goes wrong?
What can we monitor to detect problems with this?
Staging Test
To force this experiment on staging use ?force_experiment=in_product_marketing_emails
Rollout plan:
- Runtime: 30 days or until we reach statistical significance
- We will roll this out behind a feature flag and expose this to 20% of users to start then ramp it up from there.
- feature flag based on experiment key
<experiment-key>
(seeexperimentation.rb
in GitLab, append '_experiment_percentage')
/chatops run feature set in_product_marketing_emails_experiment_percentage 50
- 2021-02-02 Enabled at 50% in production #303 (comment 499416216)
- 2021-02-26 Temporarily halted due to gitlab-org/gitlab#325813 (comment 538155439)
- Review TBD
Roll Out Steps
-
Confirm that QA tests pass with the feature flag enabled (if you're unsure how, contact the relevant stable counterpart in the Quality department) -
Enable on staging ( /chatops run feature set feature_name true --staging
) -
Test on staging -
Ensure that documentation has been updated -
Enable on GitLab.com for individual groups/projects listed above and verify behaviour ( /chatops run feature set --project=gitlab-org/gitlab feature_name true
) -
Coordinate a time to enable the flag with the SRE oncall and release managers - In
#production
mention@sre-oncall
and@release-managers
. Once an SRE on call and Release Manager on call confirm, you can proceed with the rollout
- In
-
Announce on the issue an estimated time this will be enabled on GitLab.com -
Enable on GitLab.com by running chatops command in #production
(/chatops run feature set feature_name true
) -
Cross post chatops Slack command to #support_gitlab-com
(more guidance when this is necessary in the dev docs) and in your team channel -
Announce on the issue that the flag has been enabled
-
Remove experiment code and feature flag and add changelog entry - a separate cleanup issue might be required
-
After the flag removal is deployed, clean up the feature flag by running chatops command in #production
channel
Tracking:
Database Tracking
Every namespace that qualifies for sending an in product marketing email (according to its onboarding progress) will be placed in the experimental
or the control
group. Emails will only be send to namespaces in the experimental
group: (the values for experiment_id (9) and namespace_id (999) are fictive)
experiments
table
id | name |
---|---|
9 | in_product_marketing_emails |
experiment_subjects
table
experiment_id | group_id | variant |
---|---|---|
9 | 999 | {0,1} |
Variant meaning:
0: control group
1: experimental group
onboarding_progresses
table
namespace_id | created_at | git_write_at | pipeline_created_at | trial_started_at | user_added_at |
---|---|---|---|---|---|
999 | timestamp | {timestamp,NULL} | {timestamp,NULL} | {timestamp,NULL} | {timestamp,NULL} |
For example, counting the number of namespaces for the control
variant that completed the verify stage:
SELECT
count(*)
FROM
experiment_subjects subject
INNER JOIN experiments ON experiments.id = subject.experiment_id
INNER JOIN onboarding_progresses progress ON subject.group_id = progress.namespace_id
WHERE
experiments.name = 'in_product_marketing_emails'
AND subject.variant = 0
AND progress.git_write_at IS NOT NULL
AND progress.pipeline_created_at IS NOT NULL
Snowplow Tracking
On top of tracking the onboarding progress for namespaces that took part in the experiment, Snowplow events are sent when users click on the CTA link in the emails. The recorded unstructured self-describing events are of the type email_campaigns
and look like this:
{
"namespace_id": 999,
"track": "verify",
"series": 0,
"subject_line": "Feel the need for speed?"
}
Possible values:
track | series |
---|---|
{create,verify,trial,team} | {0,1,2} |