In-App Year in Review: How to Build a Spotify Wrapped-Style Recap for Your App
What to show, the three layers you need, how to build or buy each one, and how to know it worked.
An in-app year in review is a recap of each user's year inside your app, and shareable outside it, built from the activity data your app already has: days active, streaks, milestones, favorites and peer percentiles. Every user gets their own version. It has three layers: the per-user data, the screens that tell the story, and a finished share card or short video sized for Stories. The share card is what spreads it, so plan that layer first, and start in October for a December launch.
Also called a year in review for apps, an annual recap or a year-end recap. Spotify Wrapped, Duolingo's Year in Review and Strava's Year in Sport are the best-known examples; this guide is about making your own.
Every December, the apps people love most hand each user a story about their own year. Your most-listened artist. Your longest streak. The 1,200 kilometers you ran. Users tap through it, feel proud, and post the last screen to their Stories. For a week, your users' feeds are full of your brand, and every post is an invitation from a friend.
Product teams see that and want one. Then the scoping starts, and it turns out a year in review is three projects, not one. This guide breaks those three apart so you can decide which ones to build, which ones to buy, and what to ship by December.
What an in-app year in review looks like
Here is the shape, using a made-up language-learning app and a sample user named Maya. Four screens, tapped through like Stories. Change the user and every number changes; the design stays the same.
- An intro that says whose year it isTheir name and the year. It sets up a story about them, not a report about your product.
- One headline numberThe stat they'd be proudest of, big and alone. Days active, distance, books finished, money saved.
- A comparison worth bragging aboutA percentile against everyone using the app ("Top 5% of learners") turns a private number into something to post.
- A finished share assetA ready-made card or short video in Stories size, with one button to post it. This screen is the one that reaches people outside your app.
What to include in a year in review for apps
Pick three to five metrics the user would be proud to see, then lead with the one that feels like an achievement. The right ones depend on what people do in your app.
| App type | Metrics worth including | Lead with |
|---|---|---|
| Fitness | Workouts, distance, active days, personal bests, longest streak, favorite workout type | Personal bests over raw totals |
| Learning | Days active, lessons completed, longest streak, new skills or languages, peer percentile | Days active or the streak |
| Finance | Money saved, goals reached, round-ups, bills paid on time, money sent to friends | Money saved, never money spent |
| Reading & audio | Books or episodes finished, hours, favorite genre or author, top percentile as a fan | Books finished or top fan percentile |
| Marketplaces | Orders, sales, buyers reached, best day, top category, first sale of the year | Orders shipped for sellers, finds for buyers |
| Productivity & SaaS | Projects shipped, tasks closed, teammates invited, hours saved, milestones | Work they shipped with you |
Two filters before any metric goes in. Would they be proud of it? "212 days of practice" passes; "You missed 153 days" fails. Would it startle them? Use what people knowingly did in your app: lessons, workouts, orders. Skip anything that reads like you were watching, such as late-night usage or location patterns. A good recap feels made for the person, not about them.
Personal data stays with that user. Each recap is shown only to the person it belongs to. Peer comparisons use aggregate percentiles, never another named user's numbers. And the share card carries only what the user chooses to post. For more metric ideas by audience, see year in review ideas.
The three layers you need
Every in-app year in review is built from the same three layers. Teams usually plan the first two and discover the third in November.
Layer 3 is where the effort hides. A screenshot of your app is cropped, low resolution and rarely posted. A real share asset means rendering a separate image or video for every user, often hundreds of thousands of files, each with the right numbers, on brand and checked, then storing and serving them on launch day. Video multiplies that work. It is also the layer that brings in new users, because it is the only one people outside your app ever see.
Build options, compared honestly
There are three ways to ship one. Most teams pick by asking which layers they want their own engineers to own.
| Option | Layer 1: data | Layer 2: experience | Layer 3: share asset |
|---|---|---|---|
| Build in-house | You | You | You |
| Recap data API | The API | You | You |
| Ditto campaign | You share an Airtable base | Ditto designs the story; you place it | Ditto renders one per user |
- Full control of every screen and interaction
- Lives natively in the app, with your own components
- Reusable next year if the team stays
- Several teams pulled off the roadmap in Q4
- Per-user image or video rendering is a project on its own
- Design and motion quality depend on who is free
- Layer 1 handled, often alongside streaks and badges all year
- Developer-friendly, with documented endpoints
- A fit if you want gamification beyond December
- Your events must flow through their service, ideally all year
- The screens and share assets are still yours to build
- Returns data, not anything a user can post
- Layer 3 done for you, video included
- Your engineers stay on the roadmap
- Works across in-app, email and social with the same assets
- Built from a data snapshot, so it doesn't update live
- You still place it in the app: a banner, a link or an embed
- Needs a decision by October for a December launch
What Ditto costs
One-off campaigns start at $5,000 for up to 2,500 deliveries. Campaign is $12,000 for up to 10,000, and Scale is $25,000 for up to 50,000. For platforms that want recaps on a schedule, there is a monthly platform subscription with API integration and embed configuration: $5,000 a month base plus $0.50 per user per month, with a $5,000 onboarding fee. Full details are on the pricing page.
What it looked like for real
Ditto built the first ever Spotify Songwriter Wrapped in 2022. Read the case study
When to launch, and when to start
A December launch is an October decision. The data needs a cutoff, the design needs a proof round with real users' numbers, and the share assets need producing before launch day, not on it.
Choose your window. The first days of December are when the biggest apps launch theirs, which brings attention to the format and also crowds the feed. Launching about a week later gives your users' posts more room. Most apps count activity up to a cutoff in mid or late November and say so on the intro screen.
Announce it in three places. A push notification for active users, an email for the users who haven't opened the app lately, and an in-app banner that stays up for a couple of weeks. The email matters more than teams expect: it is how a recap reaches lapsed users. The full channel plan is in running a year in review campaign.
How to measure it
Views will be high. The numbers that tell you it worked come after the view.
FAQ
How do I build a Spotify Wrapped for my app?
Build three layers: a per-user yearly aggregation of your activity data, a short tap-through experience of four to eight screens, and a shareable image or vertical video for every user. Pick three to five metrics users would be proud of, lead with one headline number, add a peer percentile, and end on a share screen. Start in October for a December launch.
Is there a Wrapped API?
Spotify doesn't offer one for other apps, but recap data APIs and gamification APIs return per-user yearly stats if your events flow through their service. They cover the data layer only; you still build the screens and the share assets. Ditto covers the share asset layer, and for platforms offers a subscription with API integration and embed configuration.
What data do I need for an in-app year in review?
One row per user with their totals for the year, their longest streak, their bests and firsts, a favorite (category, genre, workout type) and a percentile against all users. Most apps already have this in their product analytics or warehouse; the work is aggregating it per user at a fixed cutoff date.
How long does it take to build?
Built in-house, plan on a multi-sprint project across data, app and backend teams, with per-user asset rendering often the longest part. Whichever route you take, decide in October for a December launch, so there is time for data, design, a proof round with real users' numbers, and production.
Do I need engineers?
To build it yourself, yes: data, app and backend. With a recap data API, you still need app engineers for the screens and the share assets. With Ditto, you need someone who can pull one row per user into an Airtable base and a small amount of app work to place a banner, a link or an embed.
How do users share their year in review?
Through a share button that opens the phone's share sheet with a ready-made file: a 1080 × 1920 image or a short vertical video, sized for Instagram, TikTok and other Stories. A link with a preview image works for messages. Without a real file, users fall back to screenshots, which crop badly and rarely get posted.
Can an in-app year in review be a video?
Yes, and video is often what gets posted, because it plays natively in Stories. It is also the hardest asset to produce in-house, since every user needs their own rendered file. Ditto's campaigns are video-led, with stills and carousels alongside. See personalized year in review video.
Does a year in review work for B2B and SaaS apps?
Yes. Lead with the work people shipped: projects completed, tasks closed, teammates invited, hours saved. B2B users tend to share on LinkedIn, so make a square or landscape asset too, and consider a team-level recap for account admins.
How much does an in-app year in review cost?
In-house, the cost is several teams' time in Q4. API pricing varies by vendor. Ditto campaigns start at $5,000 for up to 2,500 deliveries, $12,000 for up to 10,000 and $25,000 for up to 50,000. The platform subscription is $5,000 a month plus $0.50 per user per month, with $5,000 onboarding. See pricing.
Should a year in review be in-app or by email?
Both. In-app reaches your active users at the moment they open the app. Email reaches users who haven't opened it lately, which makes it your best reactivation tool. Use the same share asset in both, and announce the launch with a push notification.
What should I leave out of a user's year in review?
Anything a user wouldn't be proud of (money spent, days missed) and anything that suggests you were watching, like time-of-night or location patterns. Show each recap only to its owner, keep peer comparisons as aggregate percentiles, and let the user choose what to post.
Is AI used to make a Ditto year in review?
No. Ditto renders every version from your real data and your approved design, so every number is exact and every asset is on brand. Nothing is invented. See how Ditto personalizes without generative AI.
Every user had a year. Give it to them.
You share the data. Ditto designs it with you and makes a finished version for every user, video included, ready for your app, your emails and their Stories.
Get a plan
Start a Ditto Campaign