== Background
As part of the work on donor ID and recognition, in WE 3.5.5 hypothesis we want to run an experiment for logged-out users on mobile-only that will present donors with an on-wiki token of appreciation. We have no post-donation retention signal for logged-out donors on mobile web. Once a donor finishes their gift, nothing in subsequent sessions acknowledges that they gave. This experiment runs a three-variant test to find out whether a persistent Donor Thank You badge – and what it does when you tap it – has any effect on 21-day return rates and re-engagement.
Platform Reader-Donor (PRD) progression: **[[ https://docs.google.com/document/d/1s9YRtV-zHMBSBrTembIodY_P3L86ryFXEkp8Wf60Txo/edit?tab=t.0 | Emotional Recognition: Post-Donation Experience (Lightweight badge interaction) ]]**
Experiment currently lays out a three bucket variant (A/B/C) testing:
- A: Control – no badge. User donates but does not get a donor badge.
- B: Plain – badge and plain message. User donates and automatically gets a persistent donor badge on the top right bar. Tapping on it opens the plain thank-you message – similar to the first FR experiment.
- C: Delightful – badge and animation. User donates and automatically gets a persistent donor badge. Tapping on it triggers wiki-hearts plus a short acknowledgement message.
| A: Control | B: Plain message | C: Delightful experience
| {F80974413} | {F80034142} | {F80034220} {F80034219}
== Goal
Find out whether the badge – and specifically the tap animation – moves 21-day cumulative retention by at least 1% vs. no badge (A) and the plain message (B). Track whether donors in (C) tap the badge again in later sessions more than those in (B), which would suggest the animation creates a re-engagement habit.
- Experiment targets **logged-out donors on mobile web only**.
- **Variant assignment** must be **stable across sessions for the same donor** (cookie or equivalent persistent bucketing).
- Badge state (shown/hidden) persists across sessions.
The experiment must track:
- 21-day cumulative return rate per variant – **2026-06-12: Redefined in accordance with FR Tech, after community outreach to 30 days for running the experiment**
- Badge tap rate, first session (B and C)
- Badge re-tap rate, return sessions (B and C)
- Badge hide/dismiss rate per variant B and C
This task has encompassed the **technical scoping **of this experiment.
=== Design requirements
UI designs & workflows have been refined during this phase in collaboration with Design.
- [[ https://www.figma.com/design/pkG9ssCFmdzKWp8aYQ8VRe/donor-recognition?node-id=105-19655&t=EhlOWdji724SRosY-4 | Figma Designs of A/B/C variants treatment ]]
=== Engineering requirements
- Pre-requisites:
-- Experiment is mobile-only (MinveraNeue skin) and for logged-out users only.
-- Experiment is JS-only.
-- Provide workflow diagram for all three buckets.
-- Setup on top of existing testing framework TestKitchen for bucketing.
- Different requirements for variants:
-- A (Control): Minimal engineering need, only excluding from treatment variants.
-- B (Plain) & C (Delightful) //commonalities//:
--- Take first FR experiment as orientation point.
--- Clarify where experiment code will live.
--- Clarify handling of sticker location (e.g. absolute positioned item).
--- Donor badge must have per-variant kill switches (hide this badge).
--- Badge visibility state ("shown" / "hidden by user") goes in clientpref keyed to the experiment variant. A donor who hides the badge must not see it again.
--- Hide this badge: Codex component or custom?
-- B (Plain):
-- C (Delightful):
--- Provide animation (with randomization character, e.g. heart colors) .~
--- Animation must use CSS/JS only, no external animation libraries. No layout thrash, no blocking paint.
**Testing purpose whatabouts (browser console)**
```lang=bash
$.cookie( 'centralnotice_hide_fundraising', '{"v":1,"created":1779379520,"reason":"donate"}', { path: '/' } );
mw.user.clientPrefs.set( 'minerva-badge', '1' );
mw.testKitchen.overrideExperimentGroup( 'donor-delight-badge', 'control' );
# or
mw.testKitchen.overrideExperimentGroup( 'donor-delight-badge', 'treatment-b-simple' );
# or
mw.testKitchen.overrideExperimentGroup( 'donor-delight-badge', 'treatment-c-delightful' );
```
===== Measurement plan
https://docs.google.com/document/d/177uzZs5WyUNYyQcdD6zGQZ9pWBs0hh5HTXR0B6kbHDY/
===== Instrumentation spec
https://docs.google.com/spreadsheets/d/1NYyinpkV3dswcamBJjLx0AW8P3KzefQyhD85VITIp7U/edit?gid=1635536298#gid=1635536298
---
=== Acceptance criteria
[x] UI designs have been reviewed by an engineer.
[x] Sub-tasks for this experiment have been created.
[x] Measurement plan and instrumentation spec have been created and signed of by data analyst.
[] All tasks have been resolved.