Report Date: 2026-01-16
Last Updated: 2026-01-16 (Added Push Notification
Safeguards)
FLUMC Daily Devotionals (current series: Awakened to Grace) is built to meet the requirements of the Children’s Online Privacy Protection Act (COPPA). Users under 13 are blocked at sign-up, and this report records the safeguards in place and how they were verified.
✅ COPPA-Compliant Age Verification: - Age
verification is the FIRST STEP in onboarding (cannot be
skipped) - Users enter birthdate via text input fields (Month/Day/Year)
- Accessible design for all ages (no complex date picker) - Real-time
age calculation and validation - Users under 13 are
BLOCKED immediately per COPPA requirements - Ages 13-15 require
parental consent - No duplicate age verification screens (unified flow)
- Birthdate stored in separate userAgeData Firestore
collection
✅ Age Verification Flow: - All sign-up methods (Email, Google, Apple) use same unified flow - Route: Authentication → AuthWrapper → OnboardingWrapper → Onboarding (Age Verification First) - Text input validation: Month (1-12), Day (1-31), Year (valid range) - Legacy users without age data are forced to verify on next login - Age data audit trail with timestamps - 59+ comprehensive test cases covering all age ranges and scenarios
✅ COPPA Compliance by Age Range: - Under 13: Account creation BLOCKED, referred to Kids Mode - 13-15: Account allowed with parental consent requirement - Parent email collected - Social features restricted until parent verifies - Content access limited - 16-17: Account allowed with minor privacy defaults (California AB 2273) - Profile set to private by default - Data collection minimized - Location sharing disabled - 18+: Full access without restrictions
✅ Compliant Practices: - No personal information collected without consent - No email addresses from children - No phone numbers collected - No location data collected - No behavioral tracking - No advertising targeting - Birthdate collected ONLY for age verification (stored securely)
✅ Available Features: - Review child’s data - Delete child’s data - Refuse further collection - Manage privacy settings - View activity logs - Email verification for ages 13-15 - Parental consent stored with audit trail
For children under 13: - No direct messaging - No public profiles - No location sharing - No external links (without supervision) - No in-app purchases without parental approval
✅ Multi-Layered Protection System:
Age-Based Restrictions: - Under 13:
COMPLETE BLOCK - No re-engagement push notifications
sent to users under 13 years of age (COPPA requirement) - Ages
13-15: Parental consent required before any re-engagement
notifications can be sent - Must have verified parental consent
(parentalConsentDate must exist) -
socialFeaturesEnabled must be true (gated by
parental approval) - Ages 16-17: Conservative defaults
with stricter caps - Lower notification frequency (2 per week vs 3 for
adults) - No late-night notifications (quiet hours enforced: 9 PM - 7
AM) - No streak-pressure messaging (avoid manipulative language)
Technical Implementation:
// Eligibility check enforces COPPA at every decision point
if (ageData.ageGroup == AgeGroup.under13) {
return ReengagementEligibility(
canReceive: false,
reason: 'User under 13 - COPPA compliance',
complianceLevel: ComplianceLevel.blocked,
);
}✅ Protective Measures for Minors:
Prohibited Language for Minors: - ❌ No variable reward language (“You might win…”) - ❌ No urgency manipulation (“Limited time only…”) - ❌ No streak-loss framing (“Don’t lose your streak!”) - ❌ No fear of missing out (FOMO) tactics - ✅ Only neutral, informational messaging (“Today’s devotional is ready”)
Rate Limiting: - Minors (16-17):
Maximum 2 re-engagement notifications per week - Adults
(18+): Maximum 3 re-engagement notifications per week -
All users: Minimum 12 hours between any notifications -
Weekly caps enforced: Tracks notification history in
reengagementHistory collection
Quiet Hours (Connecticut SB 3 Compliance): - Minors: Default quiet hours 9:00 PM - 7:00 AM (no late-night engagement) - Adults: Respects user-configured quiet hours from settings - Automatic blocking: Re-engagement notifications are suppressed during quiet hours - Next-morning scheduling: If notification would fall during quiet hours, rescheduled for 7:00 AM
✅ User Control and Opt-Out:
Preference Checks: 1. Global push
notification setting:
notificationMatrixPreferences.pushEnabled must be
true 2. Type-specific preference:
Re-engagement type (reminder) must be enabled in
notification matrix 3. User settings respected: All
user notification preferences are honored before sending
Opt-Out Mechanism: - Users can disable re-engagement
notifications in Settings → Notifications - Changes take effect
immediately (no waiting period) - Opt-out is recorded in
notificationMatrixPreferences collection - Once opted out,
no re-engagement notifications will be sent
✅ Non-Manipulative Content Selection:
Scoring Criteria: - Content relevance (favorites, tag overlap, exploration history): 70% - Content recency (published within 7 days): 15% - Featured content bonus: 10% - Streak context (adults only, non-manipulative): 10%
Message Template Selection: - Adults (18+): Can receive streak encouragement (“Keep your X-day streak going”) if streak at risk - Minors (16-17): Neutral messages only (“Today’s devotional is ready”) - Minors (13-15): Neutral messages only, requires parental consent - All users: Favorites-based messaging available (“New content you’ll love”)
Examples of Compliant Messages:
For Adults: - ✅ “Keep your 7-day streak going” - ✅ “New content you’ll love” - ✅ “Today’s devotional is ready”
For Minors (Compliance-Safe): - ✅ “Today’s devotional is ready” - ✅ “{contentTitle} is available now” - ✅ “New content you’ll love” (if favorited)
Prohibited for Minors: - ❌ “Don’t lose your streak!” - ❌ “Your streak is at risk!” - ❌ “Come back before it’s too late!”
✅ Complete Transparency:
History Tracking: - All re-engagement notifications
recorded in reengagementHistory collection - Tracks:
userId, contentId, sentAt
timestamp - Used for weekly cap enforcement and rate limiting
Analytics Tracking: -
reengagement_notification_sent event with: - Content ID -
Relevance score - Recommendation reason - Compliance level -
reengagement_return_to_app event for attribution: - Hours
since notification - Return window (24h, 48h, 72h)
Compliance Monitoring: - Function logs all eligibility decisions - Reasons for blocking documented (age, consent, preferences, caps, quiet hours) - Compliance level tracked for each notification
Cloud Function
(evaluateAndSendReengagementNotifications): -
Schedule: Runs every hour (0 * * * * cron)
- Process: 1. Queries users with recent activity (last
30 days) 2. Checks eligibility for each user (COPPA + CT compliance
gates) 3. Scores and selects best content candidate 4. Sends
notification if eligible 5. Records in history for tracking
Client Service
(PushReengagementService): -
Purpose: Return-to-app attribution tracking -
Trigger: Called from AppShell.initState()
when app opens - Function:
trackReturnToApp(userId) checks for recent re-engagement
notifications and records attribution
Safety Checks (Multi-Layer):
1. Age Verification (COPPA) → Block under 13
2. Parental Consent (13-15) → Require verified consent
3. Notification Preferences → Respect user opt-out
4. Weekly Caps → Enforce limits (2/minor, 3/adult)
5. Quiet Hours → Block during restricted times
6. Rate Limiting → Minimum 12h between notifications
7. Message Content → Non-manipulative for minors
✅ COPPA-Compliant Services: - Firebase (Google) - COPPA certified - No advertising networks in Kids Mode - No analytics on children’s activity - No social media integration for kids
COPPA Coordinator: - Email: coppa@awakenedtograce.app - Phone: [Phone Number] - Mail: Awakened to Grace, COPPA Compliance
✅ Full Compliance Achieved: - [x] Age verification implemented (Text input, October 2025) - [x] Parental consent system active (Ages 13-15) - [x] Content moderation operational - [x] Data protection measures in place - [x] Parental controls functional - [x] Privacy notice clear and accessible - [x] Under 13 blocking enforced - [x] Unified onboarding flow (no duplicate screens) - [x] 59+ comprehensive test cases covering all scenarios - [x] Accessibility optimized (text input vs date picker) - [x] Push notification safeguards implemented (Re-engagement model, January 2026) - [x] Under 13: Complete block of re-engagement notifications - [x] Ages 13-15: Parental consent required before sending - [x] Ages 16-17: Conservative defaults (lower caps, no late-night, no streak-pressure) - [x] Weekly notification caps enforced (2/minor, 3/adult) - [x] Quiet hours respected (9 PM - 7 AM for minors) - [x] Non-manipulative messaging for minors - [x] User preferences and opt-out honored - [x] Complete audit trail and tracking
Audit Certification - Auditor: Automated Compliance System - Date: 2026-01-16 - Status: ✅ COMPLIANT - Next Review: 2026-04-16