Guides · For app and product teams

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.

Updated October 2026 · By Carlos · 11 min read

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.

Sample data. Illustrative screens.
  1. 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.
  2. One headline numberThe stat they'd be proudest of, big and alone. Days active, distance, books finished, money saved.
  3. A comparison worth bragging aboutA percentile against everyone using the app ("Top 5% of learners") turns a private number into something to post.
  4. 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.
Users don't share screens. They share files. Build the share card first.

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 typeMetrics worth includingLead with
FitnessWorkouts, distance, active days, personal bests, longest streak, favorite workout typePersonal bests over raw totals
LearningDays active, lessons completed, longest streak, new skills or languages, peer percentileDays active or the streak
FinanceMoney saved, goals reached, round-ups, bills paid on time, money sent to friendsMoney saved, never money spent
Reading & audioBooks or episodes finished, hours, favorite genre or author, top percentile as a fanBooks finished or top fan percentile
MarketplacesOrders, sales, buyers reached, best day, top category, first sale of the yearOrders shipped for sellers, finds for buyers
Productivity & SaaSProjects shipped, tasks closed, teammates invited, hours saved, milestonesWork 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 1
The data
Event aggregation per user, per year: totals, streaks, bests, favorites and percentiles, frozen at a cutoff date.
One row per user
Layer 2
The experience
The screens, the story order and the motion. Usually four to eight tap-through screens, in the app or on a web view.
Screens, story, motion
Layer 3 · Most underestimated
The shareable asset
An image or short vertical video for every user, sized for Stories, that people actually post. Social platforms need a real file, not a screen.
1080 × 1920 · one per user

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.

OptionLayer 1: dataLayer 2: experienceLayer 3: share asset
Build in-houseYouYouYou
Recap data APIThe APIYouYou
Ditto campaignYou share an Airtable baseDitto designs the story; you place itDitto renders one per user
Option 1
Build it all in-house
Your data team writes the yearly aggregation, your app team builds the screens, and someone builds a rendering pipeline that produces a share image or video for every user. Expect a multi-sprint project across data, mobile and backend.
Pros
  • Full control of every screen and interaction
  • Lives natively in the app, with your own components
  • Reusable next year if the team stays
Cons
  • 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
Option 2
Use a recap data API, build the rest
Recap data APIs and gamification APIs track user activity through their own service and return per-user yearly stats: totals, streaks, achievements. You build layers 2 and 3 on top. This is what most "Wrapped API" searches are looking for.
Pros
  • Layer 1 handled, often alongside streaks and badges all year
  • Developer-friendly, with documented endpoints
  • A fit if you want gamification beyond December
Cons
  • 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
Option 3
Run it as a managed campaign with Ditto
You share the data as an Airtable base, one row per user. Ditto designs the recap with you, shows you real versions for real users before anything ships, then renders a finished share asset for every user: video-led, plus stills and carousels. Assets are delivered to your email platform or into your app through links or an embed.
Pros
  • Layer 3 done for you, video included
  • Your engineers stay on the roadmap
  • Works across in-app, email and social with the same assets
Cons
  • 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

7,000
personalized cards
87%
email open rate
44%
downloaded on day one

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.

October
Decide and scope. Pick the metrics, the screens and the data cutoff.
Early Nov
Data and design. One row per user; screens and share card designed.
Late Nov
Proof and render. Check real versions, then produce every share asset.
December
Launch. Push, email and an in-app banner on the same day.

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.

Share rate
Users who shared or saved their asset, divided by users who opened the recap. The clearest read on whether layer 3 landed.
Share-to-install
New installs or sign-ups from shared assets. Put a short link or referral code on the share card so you can count them.
14 and 30-day retention
Retention for users who saw it, against a small holdout group who didn't. This is the number that funds next year's version.
Reactivation of lapsed users
Lapsed users who returned after receiving their recap by email. Often the biggest win, and the one in-app-only launches miss.

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.