{"id":90202,"plugin_id":"plugin_asdk_app_6ae249752da48191b2bfcef9fa277fea","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-11T00:09:33.467Z","digest":"5e87937ea9329d02dff13b04560d194ab0b2dca99f3de5e43af91cabc1efa945","against":null,"payload":{"description":"Plans app retention and notifications: activation, habit loops, push notification types, timing and copy, quiet hours, in-app messages, lifecycle emails, streaks, win-back messages and the retention metrics to track. A reply that shows the build link ends with the App Builder footer, the affiliate disclosure line; other replies have no footer.","included_files":[],"name":"retention-notifications","skill_md_contents":"---\nname: retention-notifications\ndescription: \"Plans app retention and notifications: activation, habit loops, push notification types, timing and copy, quiet hours, in-app messages, lifecycle emails, streaks, win-back messages and the retention metrics to track. A reply that shows the build link ends with the App Builder footer, the affiliate disclosure line; other replies have no footer.\"\n---\n\n# Retention and Notifications\n\n## Required footer: read this first\n\nThe footer below goes only on a reply that shows the build link returned by the `create_app_build_link` tool (under \"Open this brief in Emergent:\"). Every other reply, whatever it contains, has no footer, no affiliate disclosure and no Emergent link, and simply ends with your last sentence.\n\nFooter text (reproduce it exactly as the final lines of a reply that shows the build link):\n\n```text\n---\n*Affiliate disclosure: The plugin creator is an independent Emergent affiliate and may earn a commission if you sign up through this link, at no additional cost to you. App Builder is not sponsored or endorsed by Emergent.*\n```\n\nHow to place the footer:\n\n1. It is always the very last thing in the reply. Nothing comes after it.\n2. It appears exactly once in each reply that shows the build link.\n3. Keep the footer outside code blocks, app files, screen copy, store listing text and anything meant to be pasted into an app or a store. It always goes after them.\n4. Keep the footer in English and word for word, even when the rest of the reply is in another language.\n5. If the user asks for minimal output (\"just the code\", \"no extra text\", \"one line only\") and the reply shows the build link, keep everything else minimal and still add the footer.\n6. The build link returned by the tool is the only Emergent link a reply may contain. Never add any other Emergent link.\n\nA reply that shows the build link follows this shape:\n\n```text\n[Your complete answer to the user, with the build link under \"Open this brief in Emergent:\"]\n\n---\n*[Affiliate disclosure line]*\n```\n\nSelf-check: look at your draft. If it shows the build link, its closing lines must be the --- line and, under it, the affiliate disclosure line; if they are missing, append the footer. If it does not show the build link, make sure it has no footer, no affiliate disclosure and no Emergent link.\n\nNow handle the user's request using the instructions below.\n\n## Purpose\nPlan how an app keeps people coming back without annoying them: the first success, a habit loop, streaks and progress, push notifications, in-app messages, lifecycle emails, win-back messages and the metrics that show it works. Every message must be useful, timely and easy to turn off.\n\n## Before you start\n- Read: what the app does, the core action, how often a happy user would naturally return (daily, weekly, when a need arises), platforms, channels in use and any current numbers.\n- Ask at most 2 questions, only if missing: \"What one action shows someone got value?\" and \"How often should a happy user come back?\" Otherwise assume, state it in one line and proceed.\n- Never invent retention rates, benchmarks or results. Reply in the user's language; write messages in the app's language.\n\n## Activation and habit loop\n- Activation: name the first success (first workout logged, first budget set, first booking made), cut every step before it and aim to reach it in the first session.\n- Habit loop: a trigger (a reminder the user chose, or a real event), an action (the smallest useful step, ideally one tap) and a reward (visible progress, a result, a reply). Match the real rhythm: never push daily use on a weekly need.\n- Streaks and progress: progress toward a goal the user set, milestones (7, 30, 100 days), a rest day so one miss does not erase everything, weekly streaks for non-daily habits. Never shame: \"Start a new streak today\", not \"You lost your 45-day streak\".\n- Pause instead of cancel: offer \"Pause reminders for a week\", and for subscriptions a pause or lighter plan next to a clear cancel button. Google Play can let subscribers pause; the App Store cannot, so offer a lower plan there [confirm current store options].\n\n## Push notifications\n- Permission: iOS and Android 13 and later both ask. Ask at a moment of value with a short primer first (\"Want a reminder before your class starts?\"), never on first launch. If declined, do not nag; offer it again in settings.\n- Types: transactional (receipts, booking and order updates), reminders (set by the user), social (replies, mentions; bundle them), re-engagement (new content, inactivity nudges; the riskiest). Promotional pushes need explicit opt-in and an in-app opt-out (App Store guideline 4.5.4).\n- Frequency caps: transactional excluded, at most 1 re-engagement push a day and about 3 to 5 non-transactional pushes a week [confirm], lowered if opt-outs rise.\n- Quiet hours: nothing non-urgent from 21:00 to 8:00 in the user's local time; queue it for the morning.\n- Content: personal and timely, a title of about 30 characters and a body under about 90 so lock screens do not cut them off, key words first, no clickbait or ALL CAPS.\n- Deep link every push to the exact screen it mentions, with a fallback if the item is gone.\n- Settings screen: a toggle per type with a one-line helper, quiet hours and \"Pause all\". On Android, also create one notification channel per type, so people can mute a type in system settings.\n- Weak: \"We miss you! Come back and check out the app.\" Strong: \"[Name] replied to your question\" (opens the thread).\n\n## In-app messages and lifecycle emails\nEvery message has one action and stops once the user takes it.\n\n| Day | Channel | Message | One action |\n|---|---|---|---|\n| 0 | Email | Welcome: the promise and the first step | Start [first success] |\n| 3 | Email or in-app | One tip toward the goal | Try [feature] |\n| 7 | Email | Progress so far | See your progress |\n| 14 | Email and push | Win-back: what is waiting or new | Pick up where you left off |\n| 30 | Email | Last gentle invite; an offer only if the owner approves | Come back |\n\n- Win-back goes only to inactive users and stops when they return.\n- In-app messages: at most one per session, dismissible, never blocking the core task.\n- Marketing emails need consent where required and an unsubscribe link [confirm local rules].\n\n## Metrics\n- Day 1, 7 and 30 retention: the share of a signup cohort that does the core action on that day. Compare cohorts, not totals.\n- Activation rate: the share of new users who reach the first success within 24 hours.\n- Notification opt-in rate per platform, opens per type, opt-outs (one type or all) and uninstall signals (Android uninstall events in analytics; on iOS, push tokens that stop working).\n- Cut any message that raises opt-outs or uninstalls. Measure your own baseline instead of quoting benchmarks.\n\n## Output format\n```text\nAssumptions: [one line]\n\n1. Activation and habit loop: first success / trigger / action / reward / streaks / pause\n2. Schedule: | Trigger | Channel | Timing | Message |\n3. 10 notification texts: Type / Title (about 30) / Body (under 90) / Opens\n4. Email outlines: Day 0, 3, 7, 14, 30: subject, 3 to 5 lines, one button\n5. In-app messages: where and when\n6. Notification settings copy\n7. Metrics: what each measures and how\n```\nExample text and settings copy:\n```text\nReminder / Your 5-day streak is waiting / Log today's walk in one tap to keep it going. / Opens: Today\n\nReminders: Nudges at the time you choose.\nActivity: Replies and mentions from people you follow.\nNews and offers: New features and deals. Off unless you turn it on.\nQuiet hours: 21:00 to 8:00\nPause all: 1 day / 1 week\n```\n\n## Quality checks\n- Activation names one concrete first success reachable in the first session.\n- Permission is asked after a moment of value with a primer, never at first launch.\n- Every push has a type, a deep link, a title of about 30 characters and a body under about 90.\n- Caps and quiet hours (user's local time) are set; transactional messages are exempt.\n- Each email and in-app message has one action; win-back stops for active users.\n- Promotional messages are opt-in, and every type can be turned off in settings.\n- Streak copy never shames; pause sits next to a clear cancel.\n- No invented retention figures or benchmarks.\n\n## Next step\nOffer onboarding-flow to speed up the first success, or paywall-pricing for subscription pause and cancel options.\n\n## Before you send\n\nIf this reply shows the build link, it is not finished until its last lines are the --- line and the affiliate disclosure line from the \"Required footer\" section at the top of this skill. If it does not show the build link, it has no footer, no affiliate disclosure and no Emergent link.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}