Page MenuHomePhabricator

Post-publish account creation nudge for temp accounts
Closed, ResolvedPublic5 Estimated Story Points

Description

User stories:

Primary user story:
As a Temporary Account holder who has just published an edit, I want to clearly understand the benefits of creating a full account so that I can decide whether it is worth taking the extra step.

Secondary user story:
As a Temporary Account holder who is starting to contribute repeatedly, I want to understand how creating a full account helps me connect with other editors and be part of the community, so that my contributions feel more meaningful and recognized.

Background & research:

This task is a implementation task filed under T416418, which focuses on improving account creation conversion among Temporary Account users on mobile web.

Temporary Accounts lower the barrier to starting an edit, but they also limit our ability to support and retain contributors over time. Temporary Account users cannot receive email, and experienced editors have fewer ways to teach, mentor, or follow up with them. We do not consistently communicate the benefits of creating a full account, nor do we guide Temporary Account users toward registration at moments when motivation is likely to be highest.

The current post-publish experience on mobile web displays two separate floating messages after a Temporary Account user publishes an edit: one confirming the edit was published, and one notifying the user that a temporary account was created. These are MediaWiki Core system messages - not Codex components - and they are not optimized for conversion. Early data from the Temporary Accounts banner suggests there are opportunities to better align messaging, timing, and presentation with user intent and readiness.

Current UX reference (post-publish state for Temporary Account users):

image.png (8,352×1,626 px, 2 MB)

The current flow is as follows:

  1. User taps the edit pencil on an article in read mode
  2. Editor begins loading
  3. System displays the logged-out warning message - user selects "Edit without logging in"
  4. Editor fully loads; user makes their edit and taps "Publish"
  5. The publish dialog is displayed
  6. After publish, the system briefly shows a white page with two overlapping floating banners simultaneously
  7. The page reloads with the same two banners still visible, plus a red dot notification in the header
  8. The "your edit was published" banner auto-dismisses after a timeout; the Temporary Account banner does not

This task proposes four concepts to explore as controlled experiments. All concepts are scoped to mobile web.

Design:

Figma designs


We will move forward with testing Concept 3:
Concept 3 - Persistent bottom sheet with account creation benefits

Replace the two existing post-publish floating messages with a persistent mobile Codex Popover. The bottom sheet confirms the edit was published and lists the benefits of creating an account, with a "Create account" CTA button.

BeforeAfter
image.png (2,652×1,626 px, 640 KB)
image.png (2,666×1,630 px, 736 KB)

Design amend: the popover will always show the backdrop/scrim

Acceptance Criteria:
  • Given I am a Temp Account on mobile web
  • When I publish an edit
  • Then the two existing MediaWiki Core floating messages are suppressed
  • And a bottom sheet is displayed confirming the edit was published, listing account creation benefits, and showing a "Create account" CTA button
  • Given the bottom sheet is displayed
  • When I tap "Create account"
  • Then I am navigated to the account creation page
  • Given the bottom sheet is displayed
  • When I tap the dismiss control
  • Then the bottom sheet is dismissed

Reduce calls to action:

  • Given I have created a Temp Account on mobile web
  • When I publish my first edit
  • Then I do NOT get a notification
NOTE: this work should be A/B tested to understand the impact. Follow-up experiment task needs to be created.

Consider the edge case for third party wikis that still use IP editing. We don't want to change that experience.

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Restricted Application added a subscriber: Aklapper. · View Herald Transcript

@AAlhazwani-WMF - I think you need to grant permission to share the images in this task?
I see:

Screenshot 2026-04-26 at 12.22.32 PM.png (426×164 px, 15 KB)

KStoller-WMF set the point value for this task to 5.

@KStoller-WMF and I discussed this few weeks ago. I think the post edit popup looks reasonable, let's see what effect this would have on actual users.

I started working on this and have some questions:

  • For wikis without temporary account auto-creation (mostly third party) we should keep at least the Your edit was published toast. The cheapest/easiest is to keep it as it is accepting some inconsistency in the UIs in one case or the other. Codex popover for temp users vs MW toast for IP-logged users. With a bit more of work we could make it consistent for both to work with the Codex popover which is probably better for long-term maintenance. cc @AAlhazwani-WMF
  • Are we willing to setup the experiment as NCS? I think it would make sense to do so, however I'm not sure following the url encoding approach that we've done for the account creation form is suitable or even feasible for this experiment. That is because the url params would be pretty obvious on main namespace urls which most of the time are short and without many params, so easier to read. And there's the fact there's no link to annotate to begin with and the ownership or the reload after publishing the edit is in one of core or VisualEditor. So they would need to be updated to inject the initial param. On the other hand the reload is not cross-domain so there's an opportunity for us to use the TK SDK maybe in this case. But needs confirmation or investigation, cc @Michael @phuedx

[...]

  • Are we willing to setup the experiment as NCS? I think it would make sense to do so, however I'm not sure following the url encoding approach that we've done for the account creation form is suitable or even feasible for this experiment. That is because the url params would be pretty obvious on main namespace urls which most of the time are short and without many params, so easier to read. And there's the fact there's no link to annotate to begin with and the ownership or the reload after publishing the edit is in one of core or VisualEditor. So they would need to be updated to inject the initial param. On the other hand the reload is not cross-domain so there's an opportunity for us to use the TK SDK maybe in this case. But needs confirmation or investigation, cc @Michael @phuedx

I think in this case we don't need that overhead because we actually don't care what they are doing on Special:CreateAccount, only whether they end up creating one. So rather we can do it similar to the logged-out warning or anon user menu:

  • instrument all the existing links in the interfaces we change
  • instrument all the new links that we add
  • make sure account creation by temporary accounts is recorded with the same subject-id and experiment group as the original temporary account

The main challenge here is: we need to run this as an edge-unique experiment, so that the subject id does not change when the user id does change (temp->named account). But at the same time we have to vary server-side behavior (not send the notification).

Curious if @phuedx has more thoughts.

The main challenge here is: we need to run this as an edge-unique experiment, so that the subject id does not change when the user id does change (temp->named account).

Agreed.

But at the same time we have to vary server-side behavior (not send the notification).

I'm assuming that your looking at setting up the experiment as an NCS experiment as the actions that you're experimenting on are rare enough to warrant going above the traffic allocation cap. However, as you know, you can't vary server-side behaviour with an NCS experiment.

Could you point me at the notification code? I'm assuming it has a server-side and client-side component. If that's the case, then, strictly speaking, you don't have to alter server-side behaviour but instead alter the client-side behaviour to not show the notification when the user is in an experiment.

[...]

  • For wikis without temporary account auto-creation (mostly third party) we should keep at least the Your edit was published toast. The cheapest/easiest is to keep it as it is accepting some inconsistency in the UIs in one case or the other. Codex popover for temp users vs MW toast for IP-logged users. With a bit more of work we could make it consistent for both to work with the Codex popover which is probably better for long-term maintenance. cc @AAlhazwani-WMF

@Sgs i'm not sure i follow this part. for the scope of the experiment we're only working within WMF wikis - not third party wikis. and if i recall this correctly temp accounts have been rolled out to all WMF wikis too.

The main challenge here is: we need to run this as an edge-unique experiment, so that the subject id does not change when the user id does change (temp->named account).

Agreed.

But at the same time we have to vary server-side behavior (not send the notification).

I'm assuming that your looking at setting up the experiment as an NCS experiment as the actions that you're experimenting on are rare enough to warrant going above the traffic allocation cap. However, as you know, you can't vary server-side behaviour with an NCS experiment.

We are potentially interested in the NCS setup but we would also be okay with standard traffic allocation and letting this experiment run longer. On the NCS side, logged-in users (including temporary) do not get a cached response, can we access the experiment group on the server to prevent the notification being sent to them? Or we should not do that?

Could you point me at the notification code? I'm assuming it has a server-side and client-side component. If that's the case, then, strictly speaking, you don't have to alter server-side behaviour but instead alter the client-side behaviour to not show the notification when the user is in an experiment.

The notification is scheduled in PageEventIngress.php#55 in reaction to a PageLatestRevisionChangedEvent, then in Hooks.php#829 onSkinTemplateNavigation__Universal requests the number of notifications for the given user and if they have unread notifications, adds the bubble to the content navigation. So, even if later the Echo client enhances the bubble with the floating/side notification menu, the notification is already present in the html response.

[...]

  • For wikis without temporary account auto-creation (mostly third party) we should keep at least the Your edit was published toast. The cheapest/easiest is to keep it as it is accepting some inconsistency in the UIs in one case or the other. Codex popover for temp users vs MW toast for IP-logged users. With a bit more of work we could make it consistent for both to work with the Codex popover which is probably better for long-term maintenance. cc @AAlhazwani-WMF

@Sgs i'm not sure i follow this part. for the scope of the experiment we're only working within WMF wikis - not third party wikis. and if i recall this correctly temp accounts have been rolled out to all WMF wikis too.

Sorry, my prompt wasn't clear, this is a question for the experiment aftermath rather than for this task. If the experiment succeeds and we rollout the new popover for everyone we'll need to make a decision on what to show for IP-logged users (third party wikis). Just the dark toast with Your edit was published which includes a link to the diff, or the new re-designed popover with Create account CTA, or a specific version.

Change #1298836 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/core@master] [WIP] tempUserCreated: show consolidated popover instead of two toasts

https://gerrit.wikimedia.org/r/1298836

A simple way to make the experience for both groups not alter the response would be to stop sending the thank-you-edit notification for temporary users. Can we stop sending these, not just the one for the first edit but all, 1, 10, 100... cc @AAlhazwani-WMF @KStoller-WMF

Change #1300184 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/extensions/Echo@master] maybeSendThankYouEdit: dont send notification to experiment users

https://gerrit.wikimedia.org/r/1300184

Change #1300747 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[integration/config@master] Update phan dependencies for Echo

https://gerrit.wikimedia.org/r/1300747

Change #1300747 merged by jenkins-bot:

[integration/config@master] phan: add TestKitchen as Echo phan dependency

https://gerrit.wikimedia.org/r/1300747

Change #1300184 merged by jenkins-bot:

[mediawiki/extensions/Echo@master] maybeSendThankYouEdit: dont send notification to experiment users

https://gerrit.wikimedia.org/r/1300184

Change #1298836 merged by jenkins-bot:

[mediawiki/core@master] tempUserCreated: show consolidated popover instead of two toasts

https://gerrit.wikimedia.org/r/1298836

A simple way to make the experience for both groups not alter the response would be to stop sending the thank-you-edit notification for temporary users. Can we stop sending these, not just the one for the first edit but all, 1, 10, 100... cc @AAlhazwani-WMF @KStoller-WMF

Sorry for the delayed response!

If it helps simplify the experiment setup, I'm comfortable not sending the first notification to temporary users. After their first edit, they have several competing calls to action, so reducing that noise is reasonable.

Ideally, I would prefer not to change the experience for the control group. However, if maintaining different behavior between treatment and control adds significant technical complexity, I'm supportive of this simplification so we can move forward with the experiment more quickly.

We are potentially interested in the NCS setup but we would also be okay with standard traffic allocation and letting this experiment run longer. On the NCS side, logged-in users (including temporary) do not get a cached response, can we access the experiment group on the server to prevent the notification being sent to them? Or we should not do that?

Sorry for the delayed response also.

This is not possible and I think that this is A Good Thing™. When Varnish serves a regular request, it sends the "vary version" of the experiment enrollment information to the app servers. Enrollment information for NCS experiments is not part of the "vary version."

If it were possible to schedule the notification on the client-side (or via an temporary MediaWiki Action API called on the client-side?), then you could use an NCS experiment.

This can now be tested in testwiki wmf.7 auto-creating a temporary account through an anonymous edit. The experiment group can be overridden using mw.testKitchen.overrideExperimentGroup('we-1-8-tempuser-post-edit', 'treatment'). Steps for happy path:

  1. Navigate to a random page using Minerva: https://test.wikipedia.org/wiki/Special:Random?mobileaction=toggle_view_mobile using a narrow screen, less width than 640px, otherwise the popup won't show.
  2. Run JS override mw.testKitchen.overrideExperimentGroup('we-1-8-tempuser-post-edit', 'treatment')
  3. Click on editing the article
  4. Make an edit and publish it
  5. Observe the new popup, it should be rendered two times, one right after publishing (no minerva user menu present), then once the page reloads (minerva user menu present) show again.

I also tested and it works as expected

Screenshot 2026-06-16 at 19.35.11.png (802×1,546 px, 168 KB)

During Growth team's demo session two problems were surfaced:

  • Wide mobile screens (>640px) won't get the popup. Not critical since tablet traffic is redirected to desktop site but could affect some devices and users that set Minerva as their default skin in preferences. We could check for the display width and render the existing toast for screens >640px
  • The popover (as the toast) shows twice, once right after the publish dialog is hid, then at some point a redirect response will be processed by the browser and show the empty screen (see description screenshots) and once the page redirected to loads the popover will show again. @AAlhazwani-WMF requested to show it only once, in the second page load. This should be possible, I probably got it wrong from the biggning :/. My only question: is it possible to publish an edit as an anon user in a wiki with temp accounts enabled, and get the edit through but fail on the temp account creation? Idk right know, would need to check this.

Additional QA note: clicking outside of the popover will dismiss it (generally correct), however, clicking outside of the popover but on another button (eg: mobile account menu) will only dismiss the popover but not open the menu (hypothesis, something happens with the click event propagation phase; the click is handled by the popover but the event bubbling prevented and the menu does not react to it). How bad is that from UX pov? cc @AAlhazwani-WMF @DTorsani-WMF

I haven't yet digged where's the code responsible for this, but a quick lookup in Popover.vue does not show any blur event so maybe this is handled with a click on the non-visible backdrop.

Change #1303385 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/core@master] postEdit: display post edit confirmation only once

https://gerrit.wikimedia.org/r/1303385

ok @Sgs here how to address the problems mentioned above.

wide mobile screens (>640px)
we've shared this on the codex slack channel - but given that this is an edge case (i wasn't able to find smartphones with a screen width larger than 640px equivalent) i'd say we can keep this as is.

popover showing twice
if feasible, we'd recommend showing the popover only once. and specifically after the article fully loads.

popover dismiss
the tap/click handler works as expeced. as a result, we recommend displaying the popover backdrop.

BeforeAfter
image.png (782×1,630 px, 355 KB)
image.png (782×1,630 px, 316 KB)

popoper styles
while testing i've noticed that the <p> and the <ul> inside the popover inherit styles from the minerva skin eg.

.content p { 
  margin: 0.5em 0 1em 0;
}

can we reset those styles and use codex tokens instead? this is how i've styled those elements to achieve the desired result

.mw-popover-content > p {
  margin: 0;
  line-height: 1.625rem; // var(--line-height-medium)
}

.mw-popover-content > p + ul {
  margin-top: 0;
}

.mw-popover-content > ul {
  padding-left: 32px; // var(--spacing-200)
  line-height: 1.625rem; // var(--line-height-medium)
}

.mw-popover-content > ul > li {
  margin-bottom: 0;
}
BeforeAfter
IMG_6527.PNG (1,125×2,436 px, 372 KB)
IMG_6528.PNG (1,125×2,436 px, 377 KB)

Change #1303385 merged by jenkins-bot:

[mediawiki/core@master] postEdit: display post edit confirmation only once

https://gerrit.wikimedia.org/r/1303385

Change #1304580 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/extensions/Echo@master] maybeSendThankYouEdit: avoid sending notification to temp users

https://gerrit.wikimedia.org/r/1304580

Change #1304580 merged by jenkins-bot:

[mediawiki/extensions/Echo@master] maybeSendThankYouEdit: avoid sending notification to temp users

https://gerrit.wikimedia.org/r/1304580

This should be testable in any wiki using the JS SDK override mechanism: mw.testKitchen.overrideExperimentGroup( 'we-1-8-tempuser-post-edit', 'treatment'). In this experiment, the query param mpo won't work, as there are two page loads involved and a redirect to Special:CentralLogin and we haven't spent the time to pass the parameter along these. The cookie mechanism used by mw.testKitchen.overrideExperimentGroup should be enough though since there's no cross-domain traversal.

Happy path QA steps:

  1. Navigate to any main namespace page as anon user on Minerva, using a screen <640px: https://test.wikipedia.org/wiki/Special:Random?mobileaction=toggle_view_mobile
  2. Run the override in the console, mw.testKitchen.overrideExperimentGroup( 'we-1-8-tempuser-post-edit', 'treatment'), the page will reload
  3. Click on the edit pencil and make an edit as an anon user
  4. Once the page is reloaded and the temporary account attached (the user menu will be present on the top navigation), observe the new popover interface
  5. Click on the Create account CTA

@AAlhazwani-WMF I would be great for you to verify if the styling issues were fixed as desired.

I tested the "happy path" and works expected from what I can see.

Screenshot 2026-06-23 at 5.24.31 PM.png (994×1,818 px, 187 KB)

@AAlhazwani-WMF I would be great for you to verify if the styling issues were fixed as desired.

@AAlhazwani-WMF on testwiki wmf.8 the following is in place:

.mw-popover .mw-popover-content > p {margin:0; line-height:1.6}
.mw-popover .mw-popover-content > p + ul {margin-top:0}
.mw-popover .mw-popover-content > ul {padding-left:32px; line-height:1.6}
.mw-popover .mw-popover-content > ul > li {margin-bottom:0}

Padding and margin seem to be fine. line-height is 1.6 of font-size that is still small, although it is specified as font-size:var(--font-size-large,1.125rem for a title and .toast{font-size:0.875rem .

Screenshot 2026-06-24 at 3.41.03 PM.png (325×739 px, 58 KB)

Change #1306342 had a related patch set uploaded (by Michael Große; author: Sergio Gimeno):

[mediawiki/extensions/Echo@wmf/1.47.0-wmf.8] maybeSendThankYouEdit: avoid sending notification to temp users

https://gerrit.wikimedia.org/r/1306342

Change #1306342 merged by jenkins-bot:

[mediawiki/extensions/Echo@wmf/1.47.0-wmf.8] maybeSendThankYouEdit: avoid sending notification to temp users

https://gerrit.wikimedia.org/r/1306342

Mentioned in SAL (#wikimedia-operations) [2026-06-30T13:23:13Z] <lucaswerkmeister-wmde@deploy1003> Started scap sync-world: Backport for [[gerrit:1306341|postEdit: temp account experiment instrumentation (T429110)]], [[gerrit:1306342|maybeSendThankYouEdit: avoid sending notification to temp users (T429110 T424205)]]

Mentioned in SAL (#wikimedia-operations) [2026-06-30T13:25:18Z] <lucaswerkmeister-wmde@deploy1003> lucaswerkmeister-wmde, migr: Backport for [[gerrit:1306341|postEdit: temp account experiment instrumentation (T429110)]], [[gerrit:1306342|maybeSendThankYouEdit: avoid sending notification to temp users (T429110 T424205)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-06-30T13:38:25Z] <lucaswerkmeister-wmde@deploy1003> Finished scap sync-world: Backport for [[gerrit:1306341|postEdit: temp account experiment instrumentation (T429110)]], [[gerrit:1306342|maybeSendThankYouEdit: avoid sending notification to temp users (T429110 T424205)]] (duration: 15m 12s)