Extension:GrowthExperiments/Technical documentation/Campaigns/Creation of customized landing pages

From mediawiki.org

The GrowthExperiments extension allows the creation of customized signup (Special:CreateAccount) pages for campaigns (organized editing events such as editathons). Campaign organizers can include a campaign query parameter in their URLs, and the campaign configuration defines how the signup experience should be modified. The user account created using such an URL parameter will be permanently associated with that campaign (by storing the campaign name in the growthexperiments-campaign user preference), resulting in some permanent small changes in the behavior of Special:Homepage (or at least permanent until the configuration for that campaign is removed).

The campaign configuration is defined by the configuration variables $wgGECampaigns and $wgGECampaignTopics, both of which can also be set via community configuration, as the GECampaigns and GECampaignTopics fileds of the wiki page MediaWiki:GrowthExperimentsConfig.json (or whatever page is specified by $wgGEWikiConfigPageTitle).

Unlike most other MediaWiki:GrowthExperimentsConfig.json settings, editing the campaign configuration via Special:EditGrowthConfig is not supported; the page needs to be edited manually. (The edit tab links to the special page but edit URLs work as usual.)


$wgGECampaigns is the main campaign configuration, an associative array with one entry per campaign. The entry key is the campaign ID (in the source code also referred to as "campaign term"), which will be used internally for identifying the campaign in analytics. (Note this is NOT the same as the campaign URL parameter, which in the source code is referred to as "campaign name"; the campaign pattern is used to map between the two.) A campaign entry is itself an associative array, which can have the following values:

Parameter Required? Documentation
pattern yes The campaign pattern. A PHP regular expressions that the campaign URL parameter will be matched against. The first entry (in the configuration array's natural order) with a matching regexp will be the campaign that gets associated with the registration.
topics no Extra campaign topics to be used in the suggested edits module's topic selector on Special:Homepage. This is an experimental feature and not enabled for normal campaigns. The value is a list of topic IDs; the IDs should match $wgGECampaignTopics.
skipWelcomeSurvey no When set to true, the welcome survey won't be shown to the user at the end of signup (they go straight to Special:Homepage instead).
qualityGateIdsToSkip no The list of task type IDs (field names from MediaWiki:NewcomerTasks.json) for which the quality gate configuration should be ignored. (Quality gates are limits on GrowthExperiments suggested edits activity, such as a daily limit on suggested edits per user.) Currently only works for the image-recommendation task type ID.
signupPageTemplate no Determines the signup page type. When missing, the normal signup page is used. Currently supports two types:
  • hero - text with a hero image, shown next to the signup form on desktop and above it on mobile (Minerva).
  • video - text with a video, positioned the same way.
signupPageTemplateParameters no Parameters to the template, as an associative array. Currently supported:
  • messageKey (hero, video) - see #Messages.
  • showBenefitsList (hero, video) - whether the show the "benefits list", three bullet points
  • file (video; required) - Commons video file name (without namespace) to use as the video on the signup page. (For the hero template, the file has to be added via CSS for now.)
  • thumbtime (video) - timestamp to select which still image from the video to show as the thumbnail


An associative array of topic ID => CirrusSearch query. This is experimental and presently not very useful as the existing CirrusSearch queries aren't very good for topic selection. It has been used with hand-crafted, one-off CirrusSearch keywords for some select campaigns.


The following system messages are used on the custom landing page:

  • growthexperiments-<messageKey>-title / growthexperiments-<messageKey>-title-mobile
  • growthexperiments-<messageKey>-body / growthexperiments-<messageKey>-body-mobile
  • growthexperiments-<messageKey>-bullet1
  • growthexperiments-<messageKey>-bullet2
  • growthexperiments-<messageKey>-bullet3

The title and body can be hidden by setting them to -.

When messageKey is not set in signupPageTemplateParameters, it defaults to signupcampaign, which results in a generic welcome page focusing on GrowthExperiments features.


HTML classes which can be used for styling:

  • mw-ge-donorsignup-block, mw-ge-donorsignup-block-<messageKey> - wrap the customizable part of the signup page
  • mw-ge-donorsignup-title
  • mw-ge-donorsignup-body
  • mw-ge-donorsignup-list (on the bullet list)

URL parameters[edit]

There are a number of URL parameters that can be used to modify the signup experience. Most of these aren't technically related to campaigns but usually used for that purpose.

Parameter Documentation
campaign The campaign name (see above).
geEnabled Whether GrowthExperiments features (the user preference settings "Display newcomer homepage", "Default to newcomer homepage from username link in personal tools", "Enable the editor help panel") should be enabled by default.
geForceVariant Force the user into a specific A/B testing variant (see VariantHooks::VARIANTS).
forceMentor Pipe-delimited list of usernames (who must be mentors); the new user's mentor will be selected from these users.


A very basic campaign configuration:

    "2023-signup": {
        "pattern": "/^2023-signup$/",
        "signupPageTemplate": "hero"