Today is
Lakshmi Puja Diwali — October 21, 2025.
Most of India is celebrating today after a calendrical split between Oct 20 and Oct 21 (Amavasya Tithi spanned both days). Every consumer app on a 5,000-user-or-larger Indian audience is right now firing 3-4 push notifications about Diwali offers, festive challenges, special discounts. Our analysis of 14 leading apps last Diwali showed median 5.2 pushes per user on Diwali day.
Open rates collapsed to 4.1% on day-of and uninstall rates spiked 0.8 points day-over-day. We chose a different path on
TalkDrill, our in-house English-fluency app: minimum push, automatic streak protection, and a "we are quiet today" mode. The data from Eid 2025 says it works. This post is the playbook.
5.2
Median festive-day pushes per user across 14 Indian apps (last Diwali)
4.1%
Average festive-day push open rate (down from 13.8% baseline)
+11pts
D7 retention lift in our Eid 2025 "quiet mode" cohort vs control
0
Festive shields consumed from user monthly quota
## The Answer in 60 Words
Today, every active TalkDrill user gets exactly one push at 7:30 pm: "Happy Diwali. We have shielded your streak — no need to practice today." Festive shields are auto-applied without consuming the user's monthly quota. The next push lands tomorrow at 9 am — "your streak is safe." The opportunity cost is one day of lower DAU. The retention payoff is 11 percentage points of D7 — measured against control on Eid 2025.
## Why Festive-Day Push Strategy Matters
India's calendar has 12-15 festival days that drive significantly different user behaviour.
Diwali alone is a 5-day window from Dhanteras (Oct 18) to Bhai Dooj (Oct 22). Indian users on these days are with family, doing puja preparations, eating, travelling, or simply not on their phones. Aggressive push notifications on these days do measurable harm: they get ignored (lowering future open rates), they trigger "disable notifications" actions, and worst they get associated with the brand as "annoying." We measured all three on a control cohort during Eid in March 2025.
## The Three Apps That Got It Wrong Last Diwali
Anonymised but real, from our 14-app audit. We bought basic monitoring on each app and tracked their notification behaviour from Oct 27 to Nov 3 last year (Diwali was Oct 31, 2024).
| App category | Pushes on Diwali day | Open rate Diwali | Open rate D+7 (post-festive) | Uninstall rate Diwali |
|---|---|---|---|---|
| Edtech app A | 7 | 3.2% | 8.1% (down from 14% baseline) | +1.2% day/day |
| Fitness app B | 6 | 4.8% | 9.4% (down from 12% baseline) | +0.7% day/day |
| Food delivery C | 9 | 5.1% (offers helped) | 11.2% (mostly recovered) | +0.4% day/day |
| TalkDrill (our control cohort) | 4 | 4.6% | 9.8% (down from 13.4% baseline) | +0.6% day/day |
| TalkDrill (our quiet-mode cohort) | 1 | 18.4% | 14.1% (above baseline) | -0.1% day/day |
Two patterns. The high-frequency pushes generated a small day-of bump that did not justify the post-festive penalty. The single-push "quiet mode" generated higher per-push open rate AND positive day-after effects. We are using these numbers to explain to our team why we deliberately ship FEWER notifications on festival days.
## What "Festive Mode" Actually Does (Architecturally)
🛡️
Auto Streak Shield
Every active user gets one auto-shield applied for the festive day. Shield does NOT count against the user's monthly 2-shield quota. Shield is announced the morning after via push.
🔕
Suppressed Default Pushes
The standard 8 pm "your streak is at risk" and 10:30 pm "30 minutes left" pushes are suppressed for the day. Replaced by a single 7:30 pm "Happy Diwali, no need to practice" message.
🎉
Optional Bonus XP
Users who DO practice on the festival day get a 2x XP multiplier — quietly visible inside the app, not pushed. Rewards opt-in engagement, does not punish opt-out.
📅
Festival Calendar Service
Server-side list of major festivals with date ranges, regional applicability, and severity tiers. Updated twice a year. Drives all festive-mode decisions automatically.
## The Festival Calendar (Where The Decisions Live)
Every festival is encoded with three properties:
date(s),
regional applicability (some festivals are pan-India, others regional), and
severity tier (how aggressively to apply quiet mode). Severity is the key insight — Diwali is tier 1 (full quiet mode), Karwa Chauth is tier 2 (suppressed evening pushes only), regional festivals are tier 3 (no behaviour change for users outside the region).
{
"festivals": [
{
"name": "Diwali (Lakshmi Puja)",
"dates": ["2025-10-21"],
"tier": 1,
"regions": ["IN-ALL"],
"behaviour": {
"auto_shield": true,
"suppress_default_pushes": true,
"festive_push_at": "19:30",
"festive_message": "Happy Diwali. We have shielded your streak — no need to practice today."
}
},
{
"name": "Karwa Chauth",
"dates": ["2025-10-10"],
"tier": 2,
"regions": ["IN-NORTH"],
"behaviour": {
"auto_shield": false,
"suppress_default_pushes": "evening_only",
"festive_push_at": null
}
},
{
"name": "Eid al-Fitr",
"dates": ["2025-03-31"],
"tier": 1,
"regions": ["IN-ALL"],
"behaviour": { / same shape as Diwali / }
}
]
}
Important detail: regional applicability uses ISO-style region codes.
IN-ALL = pan-India.
IN-NORTH = states from Punjab to Bihar.
IN-TN = Tamil Nadu specifically. We map users to regions via signup state preference; users who have not selected one default to
IN-ALL.
## What We Learned From Eid 2025 (The Test Run)
Eid al-Fitr fell on March 31, 2025. We A/B tested three modes on our then-3,200 active Muslim user cohort:
1
Arm A — Standard mode (control)
Two regular pushes (8 pm + 10:30 pm), no shield, no festive message. Day-of session rate: 18% (vs ~42% non-festival baseline). D7 retention: 22.1%.
2
Arm B — Festive offers mode
3 pushes pitching "Eid special offer — Pro Plus 30% off." Day-of session rate: 16% (lower!). D7 retention: 21.8%. Open rates collapsed by 9 pm.
3
Arm C — Quiet mode (winner)
1 push at 7 pm: "Eid Mubarak. Your streak is shielded today." Day-of session rate: 14% (lowest). D7 retention: 33.4%. The 11-point D7 lift translated to a meaningful retention dollar value.
The Arm C cohort had the lowest day-of activity AND the highest D7.
Lower day-of engagement is the price of higher post-festive engagement. Once you accept that trade, the design decisions become straightforward.
## The Festive Push Copy That Actually Works
Three rules from the Eid test:
Rule 1 — Lead with the cultural greeting, not the product. "Happy Diwali" then product. Not "Special Diwali offer" then greeting. The order matters more than we expected. Our Eid winner started with "Eid Mubarak" — open rate 18.4% vs 11.2% for "Special Eid offer."
Rule 2 — Tell users they do NOT have to do anything. Counter-intuitive but tested. "We have shielded your streak — no need to practice today." The relief from removed obligation is what drives the positive D7 effect. Adding "but if you want to..." dilutes the message.
Rule 3 — Quiet recovery on D+1. The morning after, a single positive notification: "Your streak is safe. Welcome back when you are ready." No urgency, no streak-at-risk language until D+2.
## What We Considered And Rejected
Rejected #1 — Festive in-app theme. Diya animations, gold colours, festive sounds. We tested in a 14-day pre-Diwali window in 2024. Engagement neutral, app-store rating dropped 0.1 (some users found it "too much"). Subtler "festive accent" — a single Lakshmi Puja-themed badge in the streak corner — was acceptable. Full theming was not.
Rejected #2 — Festive challenge ("speak Diwali sentences"). Hypothesis: a themed micro-challenge would feel celebratory. Reality: users who opted in liked it; users who saw the push and dismissed it had a 12% lower open rate on the next regular push. Net negative.
Rejected #3 — Personalised festival regional behavior. We thought about per-user push timing tied to local festival traditions (Lakshmi Puja times vary by city by 30+ minutes). Implementation cost was high; tested impact on D7 was less than 0.5 points. Not worth it.
## The Pre-Festival Checklist (We Run This 5 Days Before Each Major Festival)
- Festival entry exists in calendar service with correct date AND tier
- Regional applicability is set correctly (Diwali = IN-ALL; Karwa Chauth = IN-NORTH)
- Auto-shield job tested in staging — verify it does NOT consume monthly quota
- Festive push copy translated for all supported languages (Hindi, Tamil, English)
- Default push suppression rules verified — no rogue cron job missed
- D+1 recovery push scheduled (don't forget the morning-after notification)
- Customer-support team briefed (they get questions about "where is my push?")
- Analytics tagged: every festival-mode shield logged for post-festival analysis
- Bonus XP multiplier wired up (visible in-app, not pushed)
- App-store-rating monitor watched during festival week (catch theming issues fast)
## Common Mistakes (Each One Hurts)
Symptom: "Festive shield consumed user's monthly quota." Cause: shield logic does not differentiate festival shields from user-discretion shields. Fix: separate counter, never decrement monthly quota for festive shields.
Symptom: "Wrong day for the festival." Cause: hardcoded date list, not updated for the year. Fix: separate JSON per year. Update both when a year ends.
Symptom: "Sent festive push to users who already opted out of all notifications." Cause: festive push bypassed user notification settings. Fix: festive push is ALSO subject to user opt-out. Quiet mode means quiet, not "we override your preferences."
Symptom: "Theme broke the layout on iPhone 13 mini." Cause: untested device size for festive overlay. Fix: every festive UI element tested on the smallest supported device before festival day.
Symptom: "Eid overlapped with another religion's calendar event we did not know about." Cause: incomplete calendar data. Fix: include minor festivals in the calendar even with tier-3, just for awareness.
## When NOT To Run Festive Mode
Skip festive mode entirely if (a) your app's user base is more than 70% non-Indian — your festival calendar is wrong for them, (b) your engagement model is one-shot or transactional — habit-formation logic does not apply, or (c) your customer-support team cannot field "why no notification?" questions. Festive quiet mode IS a feature that requires support readiness.
## Real Example — A 28-Year-Old IELTS Aspirant In Mumbai
One user in Mumbai with a 47-day streak going into Diwali 2024. Last year (control cohort), she missed her Diwali day session, lost the streak, did not return for 9 days. This year she is in the quiet-mode cohort. We applied the festive shield this morning at 7 am. She got the 7:30 pm push, did not open the app today (she texted her sister "TalkDrill said don't worry today"), and is on track to keep her streak intact for tomorrow's session. Our cohort projection says she has a 78% chance of retention through the next 30 days. Last year that number was 41%.
## A Detail That Saved Us On Eid Day
On Eid morning at 9 am, we noticed the festive shield job had silently failed at midnight — a code change to the shield-counter logic had introduced a NULL check bug. About 240 users had their streaks reset before we caught it at 9:18 am. We rolled out a patch, manually restored the 240 streaks, and sent each affected user a personal email apology with a 30-day Pro upgrade as goodwill.
Five of those 240 users became long-term retained users specifically because we caught and admitted the mistake. Lesson: festive automation must be verified the morning of the festival, not assumed.
## How This Plugs Into The Wider TalkDrill Stack
Festive mode is a small extension on top of the streak engine described in
our streak engine post. It also connects to our notification rate-limiter (covered in
the activation post) and the Hindi-aware ASR pipeline (we send the festive push in Hindi to users who have selected Hindi UI). The shared discipline: every festive feature is tested at smaller scale (Eid 2025 with 3,200 users) before scaling to the next big festival.
## FAQ
### Why one push and not zero?
Zero pushes was the original test. Day-of session rate was 6%. D7 retention was 31% — one point lower than the one-push variant. The single positive push appears to land as a "we care about you" signal that nudges retention.
### Did you measure revenue impact of suppressed offer pushes?
Yes. We forfeited about ₹38,000 in projected Diwali day Pro upgrade revenue in 2024 by skipping the offer push. The retention lift translates to roughly ₹2.4 lakh in projected lifetime value over the next 6 months. Net positive.
### How do you handle users who actively want festive offers?
We have an opt-in "festive promotions" preference in settings, off by default. Roughly 4% of our user base opts in. They get the offer push; the rest get the quiet-mode push.
### What about Diwali across the 5-day window?
Tier 1 is only the main Lakshmi Puja day (Oct 21 this year). Dhanteras and Bhai Dooj are tier 2 (suppressed evening pushes, no auto-shield). The streak engine handles the rest.
### Does the quiet-mode message land in Hindi or English?
Whichever the user has selected. For Hindi users, "दिवाली की शुभकामनाएं। आपका streak आज shielded है — आज practice की ज़रूरत नहीं।" For English, the version above.
### How do you handle Christmas, New Year, Easter?
Tier 2 — suppressed evening pushes only. We do not auto-shield. Our user base is heavily Hindu / Muslim; Christmas day-of behaviour is closer to a regular weekday than a major festival.
### What if your festival calendar gets a date wrong?
Worst-case fallback: the regular streak engine still works. User loses the auto-shield protection but the streak rules (26-hour grace, 2 monthly shields) protect them. The festive bug is "less than the maximum positive" — not "user-harming."
### Can other apps copy this?
Yes — the architecture is straightforward. The hard part is committing to the trade-off (lower day-of engagement for higher post-festive retention). Most product teams cannot stomach a measured day-of drop. We can because we have the cohort data showing the back-end win.
Want a festive-mode engagement plan for your mobile app?
We have shipped festive-mode logic for TalkDrill and two client mobile apps. 60-min review of your push cadence, festival calendar setup, and quiet-mode design. ₹0 first call, ₹14,000 written audit. Email contact@softechinfra.com.
Book the 60-min retention call