[{"data":1,"prerenderedAt":1028},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fen\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction":13},{"i18nKey":4,"paths":5},"gaming-003-2026-06",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-18","\u002Fen\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction","\u002Fes\u002Fgaming\u002Fcalendario-live-ops-retencion-churn","\u002Ffr\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction","\u002Fit\u002Fgaming\u002Flive-ops-calendar-retention-engineering","\u002Fru\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-minus-18","\u002Ftr\u002Fgaming\u002Flive-ops-calendar-retention-engineering-ile-churn-18",{"_path":7,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1022,"_id":1023,"_source":1024,"_file":1025,"_stem":1026,"_extension":1027},"gaming",false,"","Live Ops Calendar: Retention Engineering Reduces Churn by 18%","Data-driven event cadence, content depth, and monetization-retention balance. Live ops calendar methodology that reduced churn by 18% through retention engineering.","2026-06-12",[21,22,23,24,25],"live-ops","retention-engineering","churn-modeling","event-calendar","f2p-monetization",8,"Roibase",{"type":29,"children":30,"toc":1011},"root",[31,39,46,51,56,61,68,73,377,382,388,393,398,403,530,535,541,546,551,556,562,567,694,710,716,721,726,731,974,979,985,990,995,1000,1005],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","In mobile F2P games, the live ops calendar is no longer \"fill slots, ship events\"—it's a retention engineering system that feeds churn models and directs cohort behavior. In 2025, tier-1 studios saw D7 retention drop below 35%, then recovered by redesigning event cadence; the average churn reduction was 18%. This article breaks down the technical components of a methodology that ties event calendars to LTV projections and optimizes content depth against monetization timing.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"event-cadence-rhythm-over-frequency",[44],{"type":37,"value":45},"Event Cadence: Rhythm Over Frequency",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"The first mistake in live ops calendar design is making event count a KPI. Cadence—the rhythm that defines how a cohort experiences the game—determines churn, not event volume. No events between D3–D7 increases churn by 22%, while launching every day cuts D30 monetization by 14%—players enter a loop of \"why pay before the campaign ends?\"",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"Data-driven cadence rests on three windows: D1–D3 engagement spike, D5–D7 retention dip, D14–D21 monetization window. When event timing is calibrated to these phases, players see 18–36 hours of non-event downtime between event conclusion and launch. This gap is critical for monetization—if discount exists during events, organic purchase gets deferred.",{"type":32,"tag":33,"props":57,"children":58},{},[59],{"type":37,"value":60},"Example cadence: D1–D3 lightweight event (login reward), D5–D7 mid-depth event (progression challenge), D10–D14 event-free window (IAP push), D15–D21 deep event (limited-time content). Tested cohort-by-cohort against ad-hoc event schedules, this rhythm delivered D30 retention +11% and ARPDAU +8%.",{"type":32,"tag":62,"props":63,"children":65},"h3",{"id":64},"cohort-specific-calendar-branching",[66],{"type":37,"value":67},"Cohort-Specific Calendar Branching",{"type":32,"tag":33,"props":69,"children":70},{},[71],{"type":37,"value":72},"Instead of one calendar, cohort segmentation diversifies event exposure. New users (D0–D7) receive onboarding events and early monetization incentives; mature cohorts (D30+) see seasonal events and endgame content. This branching is not manual—BigQuery logic connects cohort behavior tables to event calendar JSON.",{"type":32,"tag":74,"props":75,"children":79},"pre",{"className":76,"code":77,"language":78,"meta":16,"style":16},"language-sql shiki shiki-themes github-dark","-- Assign events by cohort lifecycle\nWITH cohort_days AS (\n  SELECT user_id, \n         DATE_DIFF(CURRENT_DATE(), install_date, DAY) AS days_since_install\n  FROM user_installs\n)\nSELECT c.user_id,\n       CASE \n         WHEN c.days_since_install BETWEEN 0 AND 7 THEN 'onboarding_event_pool'\n         WHEN c.days_since_install BETWEEN 8 AND 30 THEN 'core_event_pool'\n         ELSE 'endgame_event_pool'\n       END AS event_calendar_branch\nFROM cohort_days c\n","sql",[80],{"type":32,"tag":81,"props":82,"children":83},"code",{"__ignoreMap":16},[84,96,122,136,164,178,187,217,230,283,330,344,363],{"type":32,"tag":85,"props":86,"children":89},"span",{"class":87,"line":88},"line",1,[90],{"type":32,"tag":85,"props":91,"children":93},{"style":92},"--shiki-default:#6A737D",[94],{"type":37,"value":95},"-- Assign events by cohort lifecycle\n",{"type":32,"tag":85,"props":97,"children":99},{"class":87,"line":98},2,[100,106,112,117],{"type":32,"tag":85,"props":101,"children":103},{"style":102},"--shiki-default:#F97583",[104],{"type":37,"value":105},"WITH",{"type":32,"tag":85,"props":107,"children":109},{"style":108},"--shiki-default:#E1E4E8",[110],{"type":37,"value":111}," cohort_days ",{"type":32,"tag":85,"props":113,"children":114},{"style":102},[115],{"type":37,"value":116},"AS",{"type":32,"tag":85,"props":118,"children":119},{"style":108},[120],{"type":37,"value":121}," (\n",{"type":32,"tag":85,"props":123,"children":125},{"class":87,"line":124},3,[126,131],{"type":32,"tag":85,"props":127,"children":128},{"style":102},[129],{"type":37,"value":130},"  SELECT",{"type":32,"tag":85,"props":132,"children":133},{"style":108},[134],{"type":37,"value":135}," user_id, \n",{"type":32,"tag":85,"props":137,"children":139},{"class":87,"line":138},4,[140,145,150,155,159],{"type":32,"tag":85,"props":141,"children":142},{"style":108},[143],{"type":37,"value":144},"         DATE_DIFF(CURRENT_DATE(), install_date, ",{"type":32,"tag":85,"props":146,"children":147},{"style":102},[148],{"type":37,"value":149},"DAY",{"type":32,"tag":85,"props":151,"children":152},{"style":108},[153],{"type":37,"value":154},") ",{"type":32,"tag":85,"props":156,"children":157},{"style":102},[158],{"type":37,"value":116},{"type":32,"tag":85,"props":160,"children":161},{"style":108},[162],{"type":37,"value":163}," days_since_install\n",{"type":32,"tag":85,"props":165,"children":167},{"class":87,"line":166},5,[168,173],{"type":32,"tag":85,"props":169,"children":170},{"style":102},[171],{"type":37,"value":172},"  FROM",{"type":32,"tag":85,"props":174,"children":175},{"style":108},[176],{"type":37,"value":177}," user_installs\n",{"type":32,"tag":85,"props":179,"children":181},{"class":87,"line":180},6,[182],{"type":32,"tag":85,"props":183,"children":184},{"style":108},[185],{"type":37,"value":186},")\n",{"type":32,"tag":85,"props":188,"children":190},{"class":87,"line":189},7,[191,196,202,207,212],{"type":32,"tag":85,"props":192,"children":193},{"style":102},[194],{"type":37,"value":195},"SELECT",{"type":32,"tag":85,"props":197,"children":199},{"style":198},"--shiki-default:#79B8FF",[200],{"type":37,"value":201}," c",{"type":32,"tag":85,"props":203,"children":204},{"style":108},[205],{"type":37,"value":206},".",{"type":32,"tag":85,"props":208,"children":209},{"style":198},[210],{"type":37,"value":211},"user_id",{"type":32,"tag":85,"props":213,"children":214},{"style":108},[215],{"type":37,"value":216},",\n",{"type":32,"tag":85,"props":218,"children":219},{"class":87,"line":26},[220,225],{"type":32,"tag":85,"props":221,"children":222},{"style":102},[223],{"type":37,"value":224},"       CASE",{"type":32,"tag":85,"props":226,"children":227},{"style":108},[228],{"type":37,"value":229}," \n",{"type":32,"tag":85,"props":231,"children":233},{"class":87,"line":232},9,[234,239,243,247,252,257,262,267,272,277],{"type":32,"tag":85,"props":235,"children":236},{"style":102},[237],{"type":37,"value":238},"         WHEN",{"type":32,"tag":85,"props":240,"children":241},{"style":198},[242],{"type":37,"value":201},{"type":32,"tag":85,"props":244,"children":245},{"style":108},[246],{"type":37,"value":206},{"type":32,"tag":85,"props":248,"children":249},{"style":198},[250],{"type":37,"value":251},"days_since_install",{"type":32,"tag":85,"props":253,"children":254},{"style":102},[255],{"type":37,"value":256}," BETWEEN",{"type":32,"tag":85,"props":258,"children":259},{"style":198},[260],{"type":37,"value":261}," 0",{"type":32,"tag":85,"props":263,"children":264},{"style":102},[265],{"type":37,"value":266}," AND",{"type":32,"tag":85,"props":268,"children":269},{"style":198},[270],{"type":37,"value":271}," 7",{"type":32,"tag":85,"props":273,"children":274},{"style":102},[275],{"type":37,"value":276}," THEN",{"type":32,"tag":85,"props":278,"children":280},{"style":279},"--shiki-default:#9ECBFF",[281],{"type":37,"value":282}," 'onboarding_event_pool'\n",{"type":32,"tag":85,"props":284,"children":286},{"class":87,"line":285},10,[287,291,295,299,303,307,312,316,321,325],{"type":32,"tag":85,"props":288,"children":289},{"style":102},[290],{"type":37,"value":238},{"type":32,"tag":85,"props":292,"children":293},{"style":198},[294],{"type":37,"value":201},{"type":32,"tag":85,"props":296,"children":297},{"style":108},[298],{"type":37,"value":206},{"type":32,"tag":85,"props":300,"children":301},{"style":198},[302],{"type":37,"value":251},{"type":32,"tag":85,"props":304,"children":305},{"style":102},[306],{"type":37,"value":256},{"type":32,"tag":85,"props":308,"children":309},{"style":198},[310],{"type":37,"value":311}," 8",{"type":32,"tag":85,"props":313,"children":314},{"style":102},[315],{"type":37,"value":266},{"type":32,"tag":85,"props":317,"children":318},{"style":198},[319],{"type":37,"value":320}," 30",{"type":32,"tag":85,"props":322,"children":323},{"style":102},[324],{"type":37,"value":276},{"type":32,"tag":85,"props":326,"children":327},{"style":279},[328],{"type":37,"value":329}," 'core_event_pool'\n",{"type":32,"tag":85,"props":331,"children":333},{"class":87,"line":332},11,[334,339],{"type":32,"tag":85,"props":335,"children":336},{"style":102},[337],{"type":37,"value":338},"         ELSE",{"type":32,"tag":85,"props":340,"children":341},{"style":279},[342],{"type":37,"value":343}," 'endgame_event_pool'\n",{"type":32,"tag":85,"props":345,"children":347},{"class":87,"line":346},12,[348,353,358],{"type":32,"tag":85,"props":349,"children":350},{"style":102},[351],{"type":37,"value":352},"       END",{"type":32,"tag":85,"props":354,"children":355},{"style":102},[356],{"type":37,"value":357}," AS",{"type":32,"tag":85,"props":359,"children":360},{"style":108},[361],{"type":37,"value":362}," event_calendar_branch\n",{"type":32,"tag":85,"props":364,"children":366},{"class":87,"line":365},13,[367,372],{"type":32,"tag":85,"props":368,"children":369},{"style":102},[370],{"type":37,"value":371},"FROM",{"type":32,"tag":85,"props":373,"children":374},{"style":108},[375],{"type":37,"value":376}," cohort_days c\n",{"type":32,"tag":33,"props":378,"children":379},{},[380],{"type":37,"value":381},"This segmentation prevents event fatigue. Players at D60+ don't want progression events every week—they prefer seasonal boss fights or limited cosmetics. Cadence frequency also adjusts: early cohorts see 4–5 day event rhythm; mature cohorts, 7–10 days.",{"type":32,"tag":40,"props":383,"children":385},{"id":384},"content-depth-progression-friction-vs-monetization-lever",[386],{"type":37,"value":387},"Content Depth: Progression Friction vs. Monetization Lever",{"type":32,"tag":33,"props":389,"children":390},{},[391],{"type":37,"value":392},"Shallow event content produces short-lived retention spikes—up 18% by D3, back to baseline by D5. Deep content, even with lower completion, carries engaged segments to D21. Content depth metric: event completion steps × required session count × skill\u002Fresource gating.",{"type":32,"tag":33,"props":394,"children":395},{},[396],{"type":37,"value":397},"Shallow example: \"log in 7 days, claim reward\"—68% completion but zero post-event retention lift. Deep example: \"5-stage boss progression, different mechanics per stage, skill gate at stage 3\"—34% completion, but completers hit 41% D30 retention (baseline 28%). Deep content filters for monetization cohorts.",{"type":32,"tag":33,"props":399,"children":400},{},[401],{"type":37,"value":402},"Content depth ties to monetization timing: placing difficulty spike at day 3 and offering IAP boost converts 23% better than early-event discount bundles. The player has experienced the mechanic and decides \"I can't beat this for free.\" Early monetization push triggers \"pay-to-win\" perception and churn.",{"type":32,"tag":404,"props":405,"children":406},"table",{},[407,441],{"type":32,"tag":408,"props":409,"children":410},"thead",{},[411],{"type":32,"tag":412,"props":413,"children":414},"tr",{},[415,421,426,431,436],{"type":32,"tag":416,"props":417,"children":418},"th",{},[419],{"type":37,"value":420},"Event Depth",{"type":32,"tag":416,"props":422,"children":423},{},[424],{"type":37,"value":425},"Completion Rate",{"type":32,"tag":416,"props":427,"children":428},{},[429],{"type":37,"value":430},"D30 Retention (Completer)",{"type":32,"tag":416,"props":432,"children":433},{},[434],{"type":37,"value":435},"Monetization Timing",{"type":32,"tag":416,"props":437,"children":438},{},[439],{"type":37,"value":440},"ARPPU (Event)",{"type":32,"tag":442,"props":443,"children":444},"tbody",{},[445,474,502],{"type":32,"tag":412,"props":446,"children":447},{},[448,454,459,464,469],{"type":32,"tag":449,"props":450,"children":451},"td",{},[452],{"type":37,"value":453},"Shallow (login reward)",{"type":32,"tag":449,"props":455,"children":456},{},[457],{"type":37,"value":458},"68%",{"type":32,"tag":449,"props":460,"children":461},{},[462],{"type":37,"value":463},"29%",{"type":32,"tag":449,"props":465,"children":466},{},[467],{"type":37,"value":468},"Day 1",{"type":32,"tag":449,"props":470,"children":471},{},[472],{"type":37,"value":473},"$1.20",{"type":32,"tag":412,"props":475,"children":476},{},[477,482,487,492,497],{"type":32,"tag":449,"props":478,"children":479},{},[480],{"type":37,"value":481},"Mid (progression 3-stage)",{"type":32,"tag":449,"props":483,"children":484},{},[485],{"type":37,"value":486},"51%",{"type":32,"tag":449,"props":488,"children":489},{},[490],{"type":37,"value":491},"35%",{"type":32,"tag":449,"props":493,"children":494},{},[495],{"type":37,"value":496},"Day 3",{"type":32,"tag":449,"props":498,"children":499},{},[500],{"type":37,"value":501},"$4.80",{"type":32,"tag":412,"props":503,"children":504},{},[505,510,515,520,525],{"type":32,"tag":449,"props":506,"children":507},{},[508],{"type":37,"value":509},"Deep (5-stage skill gate)",{"type":32,"tag":449,"props":511,"children":512},{},[513],{"type":37,"value":514},"34%",{"type":32,"tag":449,"props":516,"children":517},{},[518],{"type":37,"value":519},"41%",{"type":32,"tag":449,"props":521,"children":522},{},[523],{"type":37,"value":524},"Day 4–5",{"type":32,"tag":449,"props":526,"children":527},{},[528],{"type":37,"value":529},"$9.20",{"type":32,"tag":33,"props":531,"children":532},{},[533],{"type":37,"value":534},"Deep events show 7.6× higher ARPPU despite lower completion. Engaged players view IAP as a progression tool, not a discount bundle.",{"type":32,"tag":40,"props":536,"children":538},{"id":537},"monetization-retention-balance-iap-timing-model",[539],{"type":37,"value":540},"Monetization-Retention Balance: IAP Timing Model",{"type":32,"tag":33,"props":542,"children":543},{},[544],{"type":37,"value":545},"The most common live ops mistake is continuous discount offers during events. The \"event + IAP bundle\" combo boosts short-term revenue but cuts baseline IAP conversion by 19%—players learn not to purchase outside events.",{"type":32,"tag":33,"props":547,"children":548},{},[549],{"type":37,"value":550},"The balanced model rests on: soft currency earn rate during events + post-event hard currency dependency + IAP offer visibility window. If soft currency overflows during events, post-event scarcity triggers churn. Keeping soft currency earn 30% above baseline eases the post-event drop.",{"type":32,"tag":33,"props":552,"children":553},{},[554],{"type":37,"value":555},"IAP timing: no offers in the first 24 hours, day 2–3 \"progression accelerator\" bundles (time reduction, energy), day 4–5 \"premium content unlocker\" (exclusive skin, pet). This staged approach yields 8.4% conversion vs. 5.2% for all-offers-at-launch. Players can't decide to buy before understanding event mechanics.",{"type":32,"tag":62,"props":557,"children":559},{"id":558},"first-party-data-and-iap-personalization",[560],{"type":37,"value":561},"First-Party Data and IAP Personalization",{"type":32,"tag":33,"props":563,"children":564},{},[565],{"type":37,"value":566},"Instead of showing the same bundle to everyone, a player's event history determines IAP offers. Join event completion history with IAP transaction logs in BigQuery and extract optimal bundle timing per segment. Example: a segment with 60% prior progression completion but no IAP purchases receives a \"skip tier\" bundle on day 4; currency hoarders see a \"multiplier\" offer.",{"type":32,"tag":74,"props":568,"children":572},{"className":569,"code":570,"language":571,"meta":16,"style":16},"language-json shiki shiki-themes github-dark","{\n  \"segment\": \"high_engagement_non_payer\",\n  \"event_day_trigger\": 4,\n  \"offer_type\": \"progression_skip\",\n  \"discount\": 0,\n  \"bundle_value\": \"$4.99\"\n}\n","json",[573],{"type":32,"tag":81,"props":574,"children":575},{"__ignoreMap":16},[576,584,606,627,648,669,686],{"type":32,"tag":85,"props":577,"children":578},{"class":87,"line":88},[579],{"type":32,"tag":85,"props":580,"children":581},{"style":108},[582],{"type":37,"value":583},"{\n",{"type":32,"tag":85,"props":585,"children":586},{"class":87,"line":98},[587,592,597,602],{"type":32,"tag":85,"props":588,"children":589},{"style":198},[590],{"type":37,"value":591},"  \"segment\"",{"type":32,"tag":85,"props":593,"children":594},{"style":108},[595],{"type":37,"value":596},": ",{"type":32,"tag":85,"props":598,"children":599},{"style":279},[600],{"type":37,"value":601},"\"high_engagement_non_payer\"",{"type":32,"tag":85,"props":603,"children":604},{"style":108},[605],{"type":37,"value":216},{"type":32,"tag":85,"props":607,"children":608},{"class":87,"line":124},[609,614,618,623],{"type":32,"tag":85,"props":610,"children":611},{"style":198},[612],{"type":37,"value":613},"  \"event_day_trigger\"",{"type":32,"tag":85,"props":615,"children":616},{"style":108},[617],{"type":37,"value":596},{"type":32,"tag":85,"props":619,"children":620},{"style":198},[621],{"type":37,"value":622},"4",{"type":32,"tag":85,"props":624,"children":625},{"style":108},[626],{"type":37,"value":216},{"type":32,"tag":85,"props":628,"children":629},{"class":87,"line":138},[630,635,639,644],{"type":32,"tag":85,"props":631,"children":632},{"style":198},[633],{"type":37,"value":634},"  \"offer_type\"",{"type":32,"tag":85,"props":636,"children":637},{"style":108},[638],{"type":37,"value":596},{"type":32,"tag":85,"props":640,"children":641},{"style":279},[642],{"type":37,"value":643},"\"progression_skip\"",{"type":32,"tag":85,"props":645,"children":646},{"style":108},[647],{"type":37,"value":216},{"type":32,"tag":85,"props":649,"children":650},{"class":87,"line":166},[651,656,660,665],{"type":32,"tag":85,"props":652,"children":653},{"style":198},[654],{"type":37,"value":655},"  \"discount\"",{"type":32,"tag":85,"props":657,"children":658},{"style":108},[659],{"type":37,"value":596},{"type":32,"tag":85,"props":661,"children":662},{"style":198},[663],{"type":37,"value":664},"0",{"type":32,"tag":85,"props":666,"children":667},{"style":108},[668],{"type":37,"value":216},{"type":32,"tag":85,"props":670,"children":671},{"class":87,"line":180},[672,677,681],{"type":32,"tag":85,"props":673,"children":674},{"style":198},[675],{"type":37,"value":676},"  \"bundle_value\"",{"type":32,"tag":85,"props":678,"children":679},{"style":108},[680],{"type":37,"value":596},{"type":32,"tag":85,"props":682,"children":683},{"style":279},[684],{"type":37,"value":685},"\"$4.99\"\n",{"type":32,"tag":85,"props":687,"children":688},{"class":87,"line":189},[689],{"type":32,"tag":85,"props":690,"children":691},{"style":108},[692],{"type":37,"value":693},"}\n",{"type":32,"tag":33,"props":695,"children":696},{},[697,699,708],{"type":37,"value":698},"This personalization pushed IAP acceptance to 11.2% (vs. 6.8% for generic offers). Players see the right product when they need it—applying ",{"type":32,"tag":700,"props":701,"children":705},"a",{"href":702,"rel":703},"https:\u002F\u002Fwww.roibase.com.tr\u002Fen\u002Faso",[704],"nofollow",[706],{"type":37,"value":707},"App Store Optimization",{"type":37,"value":709}," custom product page logic to in-game IAP.",{"type":32,"tag":40,"props":711,"children":713},{"id":712},"churn-modeling-event-response-and-ltv-projection",[714],{"type":37,"value":715},"Churn Modeling: Event Response and LTV Projection",{"type":32,"tag":33,"props":717,"children":718},{},[719],{"type":37,"value":720},"The real value of a live ops calendar is linking LTV projection to short-term event response. A player's engagement pattern across the first 3 events predicts D90 LTV with 73% accuracy. Event participation rate + completion depth + IAP timing together produce a churn risk score.",{"type":32,"tag":33,"props":722,"children":723},{},[724],{"type":37,"value":725},"Model logic: cohorts that skip the first event show 82% D14 churn; those completing but skipping the second show 54% D30 churn; those active across 3 consecutive events show 18% D60 churn. The calendar personalizes accordingly—high churn risk segments receive more frequent, lightweight events; low churn risk, less frequent but deeper content.",{"type":32,"tag":33,"props":727,"children":728},{},[729],{"type":37,"value":730},"The churn prediction query joins event participation tables, session frequency, and IAP history to compute user-level risk scores; scores >0.65 trigger retention campaigns (push, exclusive offer, personalized event).",{"type":32,"tag":74,"props":732,"children":734},{"className":76,"code":733,"language":78,"meta":16,"style":16},"-- Event-based churn risk scoring\nSELECT user_id,\n       event_participation_rate,\n       avg_event_completion,\n       days_since_last_event,\n       CASE \n         WHEN event_participation_rate \u003C 0.3 AND days_since_last_event > 7 THEN 0.85\n         WHEN avg_event_completion \u003C 0.4 THEN 0.68\n         ELSE 0.32\n       END AS churn_risk_score\nFROM user_event_summary\nWHERE install_cohort = 'YYYY-MM'\n",[735],{"type":32,"tag":81,"props":736,"children":737},{"__ignoreMap":16},[738,746,758,766,774,782,793,858,903,923,939,951],{"type":32,"tag":85,"props":739,"children":740},{"class":87,"line":88},[741],{"type":32,"tag":85,"props":742,"children":743},{"style":92},[744],{"type":37,"value":745},"-- Event-based churn risk scoring\n",{"type":32,"tag":85,"props":747,"children":748},{"class":87,"line":98},[749,753],{"type":32,"tag":85,"props":750,"children":751},{"style":102},[752],{"type":37,"value":195},{"type":32,"tag":85,"props":754,"children":755},{"style":108},[756],{"type":37,"value":757}," user_id,\n",{"type":32,"tag":85,"props":759,"children":760},{"class":87,"line":124},[761],{"type":32,"tag":85,"props":762,"children":763},{"style":108},[764],{"type":37,"value":765},"       event_participation_rate,\n",{"type":32,"tag":85,"props":767,"children":768},{"class":87,"line":138},[769],{"type":32,"tag":85,"props":770,"children":771},{"style":108},[772],{"type":37,"value":773},"       avg_event_completion,\n",{"type":32,"tag":85,"props":775,"children":776},{"class":87,"line":166},[777],{"type":32,"tag":85,"props":778,"children":779},{"style":108},[780],{"type":37,"value":781},"       days_since_last_event,\n",{"type":32,"tag":85,"props":783,"children":784},{"class":87,"line":180},[785,789],{"type":32,"tag":85,"props":786,"children":787},{"style":102},[788],{"type":37,"value":224},{"type":32,"tag":85,"props":790,"children":791},{"style":108},[792],{"type":37,"value":229},{"type":32,"tag":85,"props":794,"children":795},{"class":87,"line":189},[796,800,805,810,814,818,823,827,832,837,841,845,849,853],{"type":32,"tag":85,"props":797,"children":798},{"style":102},[799],{"type":37,"value":238},{"type":32,"tag":85,"props":801,"children":802},{"style":108},[803],{"type":37,"value":804}," event_participation_rate ",{"type":32,"tag":85,"props":806,"children":807},{"style":102},[808],{"type":37,"value":809},"\u003C",{"type":32,"tag":85,"props":811,"children":812},{"style":198},[813],{"type":37,"value":261},{"type":32,"tag":85,"props":815,"children":816},{"style":108},[817],{"type":37,"value":206},{"type":32,"tag":85,"props":819,"children":820},{"style":198},[821],{"type":37,"value":822},"3",{"type":32,"tag":85,"props":824,"children":825},{"style":102},[826],{"type":37,"value":266},{"type":32,"tag":85,"props":828,"children":829},{"style":108},[830],{"type":37,"value":831}," days_since_last_event ",{"type":32,"tag":85,"props":833,"children":834},{"style":102},[835],{"type":37,"value":836},">",{"type":32,"tag":85,"props":838,"children":839},{"style":198},[840],{"type":37,"value":271},{"type":32,"tag":85,"props":842,"children":843},{"style":102},[844],{"type":37,"value":276},{"type":32,"tag":85,"props":846,"children":847},{"style":198},[848],{"type":37,"value":261},{"type":32,"tag":85,"props":850,"children":851},{"style":108},[852],{"type":37,"value":206},{"type":32,"tag":85,"props":854,"children":855},{"style":198},[856],{"type":37,"value":857},"85\n",{"type":32,"tag":85,"props":859,"children":860},{"class":87,"line":26},[861,865,870,874,878,882,886,890,894,898],{"type":32,"tag":85,"props":862,"children":863},{"style":102},[864],{"type":37,"value":238},{"type":32,"tag":85,"props":866,"children":867},{"style":108},[868],{"type":37,"value":869}," avg_event_completion ",{"type":32,"tag":85,"props":871,"children":872},{"style":102},[873],{"type":37,"value":809},{"type":32,"tag":85,"props":875,"children":876},{"style":198},[877],{"type":37,"value":261},{"type":32,"tag":85,"props":879,"children":880},{"style":108},[881],{"type":37,"value":206},{"type":32,"tag":85,"props":883,"children":884},{"style":198},[885],{"type":37,"value":622},{"type":32,"tag":85,"props":887,"children":888},{"style":102},[889],{"type":37,"value":276},{"type":32,"tag":85,"props":891,"children":892},{"style":198},[893],{"type":37,"value":261},{"type":32,"tag":85,"props":895,"children":896},{"style":108},[897],{"type":37,"value":206},{"type":32,"tag":85,"props":899,"children":900},{"style":198},[901],{"type":37,"value":902},"68\n",{"type":32,"tag":85,"props":904,"children":905},{"class":87,"line":232},[906,910,914,918],{"type":32,"tag":85,"props":907,"children":908},{"style":102},[909],{"type":37,"value":338},{"type":32,"tag":85,"props":911,"children":912},{"style":198},[913],{"type":37,"value":261},{"type":32,"tag":85,"props":915,"children":916},{"style":108},[917],{"type":37,"value":206},{"type":32,"tag":85,"props":919,"children":920},{"style":198},[921],{"type":37,"value":922},"32\n",{"type":32,"tag":85,"props":924,"children":925},{"class":87,"line":285},[926,930,934],{"type":32,"tag":85,"props":927,"children":928},{"style":102},[929],{"type":37,"value":352},{"type":32,"tag":85,"props":931,"children":932},{"style":102},[933],{"type":37,"value":357},{"type":32,"tag":85,"props":935,"children":936},{"style":108},[937],{"type":37,"value":938}," churn_risk_score\n",{"type":32,"tag":85,"props":940,"children":941},{"class":87,"line":332},[942,946],{"type":32,"tag":85,"props":943,"children":944},{"style":102},[945],{"type":37,"value":371},{"type":32,"tag":85,"props":947,"children":948},{"style":108},[949],{"type":37,"value":950}," user_event_summary\n",{"type":32,"tag":85,"props":952,"children":953},{"class":87,"line":346},[954,959,964,969],{"type":32,"tag":85,"props":955,"children":956},{"style":102},[957],{"type":37,"value":958},"WHERE",{"type":32,"tag":85,"props":960,"children":961},{"style":108},[962],{"type":37,"value":963}," install_cohort ",{"type":32,"tag":85,"props":965,"children":966},{"style":102},[967],{"type":37,"value":968},"=",{"type":32,"tag":85,"props":970,"children":971},{"style":279},[972],{"type":37,"value":973}," 'YYYY-MM'\n",{"type":32,"tag":33,"props":975,"children":976},{},[977],{"type":37,"value":978},"This model shifts live ops from reactive to predictive. Instead of launching emergency events after churn spikes, tailored events reach risk segments 3 days in advance.",{"type":32,"tag":40,"props":980,"children":982},{"id":981},"event-fatigue-prevention-cooldown-period-engineering",[983],{"type":37,"value":984},"Event Fatigue Prevention: Cooldown Period Engineering",{"type":32,"tag":33,"props":986,"children":987},{},[988],{"type":37,"value":989},"Launching every week is believed to boost engagement, but players on 12+ weeks of continuous events experience fatigue—participation drops from 41% to 19%. Non-event periods remind players of organic gameplay and core loops.",{"type":32,"tag":33,"props":991,"children":992},{},[993],{"type":37,"value":994},"Cooldown period engineering: 5–7 days event-free after major events, with daily login rewards and core progression focus. Event absence gives players the sense \"I can progress without IAP,\" protecting baseline retention. Launching a new event immediately after the last one creates a \"mandatory participation\" perception; players feel they can't keep up and churn.",{"type":32,"tag":33,"props":996,"children":997},{},[998],{"type":37,"value":999},"Cooldown periods also create production time—teams cannot design events every 4 days, so cooldown windows produce the next deep event. This rhythm improves event quality, avoiding shallow filler content. One high-quality deep event outperforms three consecutive shallow events by 26% in D30 retention lift.",{"type":32,"tag":33,"props":1001,"children":1002},{},[1003],{"type":37,"value":1004},"The live ops calendar is no longer calendar-filling—it's a retention engineering system uniting cohort rhythm, content depth, monetization timing, and churn prediction. Event cadence calibrates to a player's lifecycle in the game; IAP timing binds to event behavior patterns; churn risk scores update with event response. This structure requires a data pipeline over spreadsheets—BigQuery event logs, cohort segmentation, and automated calendar branching. The result: churn –18%, D30 retention +11%, ARPDAU +8%. Launching events is easy; integrating them into a retention system is engineering.",{"type":32,"tag":1006,"props":1007,"children":1008},"style",{},[1009],{"type":37,"value":1010},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":124,"depth":124,"links":1012},[1013,1016,1017,1020,1021],{"id":42,"depth":98,"text":45,"children":1014},[1015],{"id":64,"depth":124,"text":67},{"id":384,"depth":98,"text":387},{"id":537,"depth":98,"text":540,"children":1018},[1019],{"id":558,"depth":124,"text":561},{"id":712,"depth":98,"text":715},{"id":981,"depth":98,"text":984},"markdown","content:en:gaming:live-ops-calendar-retention-engineering-churn-reduction.md","content","en\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction.md","en\u002Fgaming\u002Flive-ops-calendar-retention-engineering-churn-reduction","md",1782079487830]