# Notification, Sharing, and Viral Loop Strategy Fan Passport growth should come from useful reminders, emotional share moments, squads, collections, and rewards. Notifications should help users keep their football journey alive; sharing should let them express identity; viral loops should reward real participation rather than spam. ## Channel strategy | Channel | Best use | Avoid | | --- | --- | --- | | Push notification | Daily stamp, followed-team kickoff, prediction lock, result resolution, streak rescue, reward unlock. | Repeating generic engagement copy, late-night sends, low-value sponsor messages. | | Email | Weekly recap, post-final recap, reward terms, account recovery, season transition. | Real-time match prompts where timing matters. | | In-app message | Onboarding education, reward explanation, collection completion, sponsor disclosure, feature discovery. | Blocking urgent match flows or forcing unrelated campaigns. | | Share card | Badges, predictions, streaks, collections, squad wins, final recap. | Private data, precise location, unsupported claims, mocking players or fans. | | Web deep link | Acquisition from social, referral, QR codes, partner pages. | App-only routes without graceful web fallback. | | SMS | Account or reward-critical messages only after explicit opt-in. | Marketing blasts or routine challenge reminders. | ## Consent, frequency, and quiet-hours rules - Ask for notification permission after the user completes a meaningful first action, not on first screen. - Explain the value clearly: match reminders, prediction locks, reward unlocks, and streak protection. - Default push frequency cap: **2 marketing or engagement pushes per user per local day**. - Matchday exception: up to **4 total pushes** only when the user follows a team playing that day or opted into match alerts. - Transactional messages such as reward redemption confirmations are not counted against marketing caps but must remain factual. - Respect local quiet hours from **21:30 to 08:00** unless the user explicitly opts into live match alerts in that window. - Stop sending streak-rescue notifications after two consecutive ignored rescue attempts. - Do not send sponsor-only notifications unless paired with a fan-value action or reward. - Every email must include unsubscribe management. - Notification events should be logged using `notification_sent`, `notification_opened`, and `notification_dismissed` from `data/analytics/events.json`. ## Core segments | Segment | Definition | Primary message | | --- | --- | --- | | New fan | Account created in last 48 hours with fewer than two meaningful passport days. | Teach the daily loop and first collection. | | Daily streaker | Three or more consecutive meaningful passport days. | Protect the streak and increase challenge depth. | | Team loyalist | Follows one or more teams and checks team pages or matches. | Team-specific match reminders and achievement paths. | | Collector | Opens sticker packs, collection pages, or trades. | Album completion, rare drops, squad trades. | | Predictor | Submits match predictions or bracket picks. | Lock reminders, results, accuracy leaderboard. | | Squad player | Joined or created a squad. | Squad rank, cooperative collection, invite loops. | | Dormant tournament user | No meaningful passport action for three or more days during tournament. | Concrete catch-up action with low effort. | | Reward seeker | Views or redeems rewards. | Earnable reward path and redemption reminders. | | Social sharer | Generated or completed a share in the last seven days. | Fresh share-worthy achievements. | | Post-final bridge user | Completed World Cup recap or next-passport preference. | Premier League, Champions League, or rewards ecosystem transition. | ## Notification trigger matrix The CRM-ready version of this matrix is in `data/live-ops/notification_playbook.csv`. | Trigger | Eligible users | Timing | Message purpose | Deep link | | --- | --- | --- | --- | --- | | Opening day | All opted-in users and waitlist users. | Morning of 11 Jun 2026. | Activate first stamp and team selection. | `/passport/daily` | | Daily stamp available | Users without today's stamp. | Morning local time. | Establish daily ritual. | `/passport/daily` | | Followed team pre-match | Users following a team playing soon. | 2-3 hours before kickoff. | Drive prediction and check-in. | `/match/{{fixture_id}}` | | Prediction lock soon | Users who viewed but did not submit a prediction. | 45-60 minutes before lock. | Recover high-intent users. | `/predictions/{{fixture_id}}` | | Live giant-killing watch | Users who engaged with underdog content. | During match only if score state qualifies and policy allows. | Create excitement without over-notifying. | `/challenge/{{challenge_id}}` | | Result resolved | Users with a prediction or check-in for the match. | 15-45 minutes after verified result. | Bring user back to see XP, badge, or memory. | `/match/{{fixture_id}}/result` | | Sticker pack ready | Collectors and users missing key sets. | Afternoon local time or rest day. | Fill collections. | `/collections/stickers` | | Streak rescue | Daily streakers without today's action. | 2-3 hours before local expiry. | Save the streak. | `/passport/daily` | | Reward unlocked | Users who earned a reward. | Immediately after eligibility confirmation. | Redemption and sponsor value. | `/rewards/{{reward_id}}` | | Squad movement | Squad players when their squad rank changes meaningfully. | Once per day. | Increase social return. | `/squads/{{squad_id}}` | | Rest-day catch-up | Dormant or incomplete collectors. | Rest days. | Re-engage without match dependency. | `/passport/catch-up` | | Final day | All active tournament users. | Morning and pre-kickoff if eligible. | Seal passport and submit final prediction. | `/passport/final` | | Post-final recap | Users with enough activity to generate recap. | After final result verified. | Share recap and bridge to next passport. | `/recap/world-cup-2026` | ## Copy principles - Lead with the fan's identity or progress: team, streak, prediction, collection, or squad. - Use urgency only when a real deadline exists. - Use variable tokens only when guaranteed by the data model. Example: `{{team_name}}`, `{{kickoff_local_time}}`, `{{streak_count}}`. - Avoid implying official affiliation unless licensed. - Do not promise prizes in notification copy unless the user's eligibility is confirmed. - Do not shame users for missing days. - Keep push titles under 45 characters where possible and body copy under 110 characters where possible. - Localize football terminology carefully: "clean sheet", "draw", "stoppage time", and "penalties" can require region-specific wording. ## Share card system Share cards should be generated for moments that make the user proud or curious. | Share card | Trigger | Required data | Acquisition hook | | --- | --- | --- | --- | | First passport page | Opening day stamp claimed. | Username or display name, followed teams, day number. | "Start your own World Cup passport." | | Country pledge | User follows a country. | Country name, flag or licensed-safe identifier, supporter badge. | "Who are you backing?" | | Prediction flex | User submits a bold pick or resolves correct prediction. | Pick type, outcome if resolved, confidence tier. | "Can you call it too?" | | Giant killing call | User correctly backs an underdog. | Challenge ID, match result, badge. | "Predict the next shock." | | Group completion | User completes a group set. | Group identifier, completion percentage, badge. | "Complete your group wall." | | Stadium map | User collects stadium pages. | Count, map-safe layout, stadium names if licensed. | "Build your stadium trail." | | Sticker need list | User has missing stickers and duplicates. | Missing count, duplicate count, squad invite link. | "Trade with me." | | Squad rank | Squad moves up leaderboard. | Squad name, rank, point delta. | "Join our squad before the next match." | | Final recap | Tournament recap generated. | Stamps, badges, teams followed, favorite memory, completion percentage. | "Create your football passport." | Privacy guardrails: - Do not include email, phone number, exact GPS location, age, payment status, or private reward codes. - Allow users to hide display name on public share cards. - Do not show another user's profile or squad membership without their consent. - If a share card includes a sponsor, the sponsor label must be visible and approved. ## Viral loops ### Loop 1: Referral quest 1. User earns or sees a referral quest after completing a meaningful passport action. 2. User shares a card with a unique invite link. 3. New user signs up, selects a team, and completes a daily stamp or trivia answer. 4. Referrer receives XP, a cosmetic badge, or a non-cash reward entry. 5. Referred user receives a starter sticker pack. 6. Fraud checks limit self-referrals, duplicate devices, suspicious IP clusters, and reward farming. Best for: opening week, group-stage momentum, final-day recap. ### Loop 2: Squad league 1. User creates or joins a squad of friends. 2. Squad earns points from daily actions, predictions, and collection completion. 3. Squad rank is visible weekly and during knockout rounds. 4. Members can invite missing friends to boost cooperative goals. 5. Squad completion rewards are cosmetic or sponsor-funded but not pay-to-win. Best for: daily retention, WhatsApp group sharing, office or school groups, supporter communities. ### Loop 3: Sticker trading 1. User opens daily sticker pack. 2. Duplicate stickers are converted into tradeable duplicates. 3. User sees missing stickers and suggested squad trades. 4. Completing a group or stadium set unlocks badge progress. 5. Shareable need-list cards bring in new collectors. Best for: rest days, collectors, younger casual users, post-match downtime. ### Loop 4: Giant killing social proof 1. User predicts an underdog result. 2. If correct, user unlocks a rare "called it" badge. 3. User receives a share card with the match result and their pick timestamp. 4. New users follow the card into the next upset challenge. Best for: group stage, Round of 32, quarter-finals. ### Loop 5: Watch party code 1. A user creates a watch party code for a fixture. 2. Friends join before or during the match. 3. Members receive a shared match memory page after full time. 4. The group earns a cooperative check-in badge if enough members participate. Best for: followed-team matches, semi-finals, final. ### Loop 6: Passport recap bridge 1. User completes final recap after the tournament. 2. Recap includes a call to reserve Premier League Passport, Champions League Passport, or both. 3. User shares recap. 4. New users can view the recap and reserve the next passport even after the World Cup. 5. Existing user gets founder status in the next passport when a referred friend joins the waitlist and completes onboarding. Best for: post-final retention and season transition. ## Deep-link conventions Use consistent, human-readable routes so push, email, share, and web acquisition can resolve to the same product state: | Destination | Route | | --- | --- | | Daily feed | `/passport/daily` | | Challenge | `/challenge/{{challenge_id}}` | | Match | `/match/{{fixture_id}}` | | Prediction | `/predictions/{{fixture_id}}` | | Collections | `/collections` | | Sticker album | `/collections/stickers` | | Stadium album | `/collections/stadiums` | | Squad | `/squads/{{squad_id}}` | | Leaderboard | `/leaderboards/{{leaderboard_id}}` | | Reward | `/rewards/{{reward_id}}` | | World Cup recap | `/recap/world-cup-2026` | | Next-passport preference | `/passport/next` | If the native app is installed, universal links or app links should open the app. If not, the web route should load a preview and prompt account creation. ## Experiment plan Run only a small number of experiments at once during the tournament because live sports creates natural volatility. | Experiment | Hypothesis | Primary metric | Guardrail | | --- | --- | --- | --- | | Daily stamp copy | Identity-led copy beats generic streak copy. | Daily stamp claim rate. | Notification opt-out rate. | | Prediction reminder timing | 60-minute lock reminder beats 30-minute reminder. | Prediction submission rate. | Push open rate and dismiss rate. | | Share card CTA | "Build yours" beats "Join me". | Referral completion rate. | Signup-to-meaningful-action conversion. | | Sticker pack timing | Afternoon pack drop increases second session rate. | Same-day second session rate. | Daily active users receiving more than two pushes. | | Squad prompt placement | Post-achievement squad prompt beats onboarding squad prompt. | Squad join rate. | Onboarding completion rate. | | Rest-day catch-up offer | Collection checklist beats generic recap. | Dormant reactivation rate. | Reward cost per reactivated user. | ## Success metrics | Metric | Definition | Healthy sign | | --- | --- | --- | | Push opt-in rate | Users granting push permission after prompt. | Stable or rising after onboarding copy changes. | | Push open rate | Notification opens divided by sent notifications. | Higher for personalized team and prediction alerts than generic daily alerts. | | Notification opt-out rate | Users disabling notifications after campaigns. | No spike after high-volume matchdays. | | Share generation rate | Share cards generated per meaningful passport day. | Rises after badge unlocks, upsets, and recap. | | Share completion rate | Completed external shares per generated card. | Highest for recap, giant killing, and squad cards. | | Referral activation rate | Referred users completing a meaningful passport action. | More important than raw referral signups. | | Viral coefficient | Invited activated users per active inviter. | Should improve during opening week, knockouts, and recap. | | Squad participation | Active users in squads with at least one squad action this week. | Correlates with tournament-long retention. |