The Step-by-Step Process Behind Our 2025 Wrapped Email
Wrapped emails are everywhere in December and January. Spotify does it, every SaaS company tries to copy it, and most of us wonder if we have enough data to pull it off. (You don’t necessarily need customer data to send a great one, but I wanted to try the personalized route.)
In this post, I outline what makes a great wrapped email and how I approached building ours this year.
What Makes a Great Wrapped Email
Before getting into the how-to, it’s worth looking at what separates good wrapped emails from forgettable ones.
The best ones do a few things well:
They surface data you forgot about.
The magic of Spotify Wrapped isn’t just that it’s personalized. It’s that it tells you something you didn’t know (or didn’t realize) about yourself. “You listened to that song 47 times” hits different than “here’s your account summary.”
They make you feel something.
Pride, surprise, nostalgia, even mild embarrassment. The data should trigger an emotional response, not just inform.
They’re shareable.
The best wrapped emails give you something worth posting. A personality type, a ranking, a stat that says something about you.
They keep it simple.
A few big numbers, maybe a fun categorization, and that’s it. The ones that try to cram in every possible data point end up feeling like a report instead of a celebration.
Examples I Used for Inspiration
I looked at a bunch of wrapped emails before building ours. A few stood out.
Grammarly does a good job of mixing personalized stats with broader context. They tell you things like “Only 6.7% of people share your writing personality” which makes a simple stat feel significant. They also include how long you’ve been a user (“You’ve been with Grammarly for over 8 years”) which adds a relationship element.
The structure is clean: a personality-style insight at the top, your personal stats in the middle, company highlights toward the bottom. Nothing cluttered.
Customer.io took a different approach that I thought was clever. They personalized the stats (messages sent, people reached, engagement numbers) but also included a “Field Guide” section that highlighted specific users and what they accomplished. Then they added a “Nominate your GOAT” CTA asking recipients to tell them about standout team members.
What I liked about the Customer.io email: it wasn’t just “here’s your data.” It created interaction. The GOAT nomination gives people a reason to engage beyond just reading their stats. And the field guide section adds a human element that pure numbers can’t provide.
They also included a “Share your stats on LinkedIn” button with a cover photo you could download. Smart move for driving social sharing.
Loom went heavy on the personality angle. They assigned users a “Loom persona” (in this case, “Director”) based on how they used the product, then backed it up with stats: top 1% of Directors, 821 total recordings, 237 meetings eliminated.
The clever part is how they framed the numbers. “26 hours of time saved” is more meaningful than “you recorded 821 videos.” They also included social elements like “Bilal Awan was your best supporting co-star” and “the emoji that describes your vibe at work.” It turns dry usage data into something that feels personal and a little fun.
The share mechanic was prominent too. Right at the top: “Download to share” your personality card. They clearly wanted this to spread.
Waymo showed that wrapped emails don’t have to be personalized to work. Their year in review focused entirely on company-level stats: 14M+ trips, 3.8M+ hours given back to riders, 18M+ kilograms of CO2 avoided.
No individual user data at all. But the framing made customers feel like they were part of something bigger. If you took a Waymo ride this year, you contributed to those numbers. You helped avoid some of that CO2. It’s collective impact, but it still feels personal.
The design was clean and confident. Big numbers, simple explanations, no clutter. Sometimes that’s all you need.
Steps to creating your own Wrapped email
Step 1: Audit Your Data
Before you think about design, figure out what data you can actually pull.
For Email Love, we track two things tied to user accounts:
- Collections created (groups of emails users save and organize)
- Emails liked (individual emails they’ve hearted while browsing)
That’s it. Nothing fancy. No listening hours or engagement scores. Just basic activity data sitting in WordPress.
I also decided to pull the names and links to three specific emails each user had liked. That way I could show something concrete, not just a number.
What to ask yourself:
- What user activity do you track?
- Can you export it from your database or platform?
- Is it interesting enough that users would want to see it?
You don’t need Spotify-level analytics. You need data that makes people think “oh, that’s kind of cool to see.”
Step 2: Define Your Segment
Don’t send a personalized wrapped email to everyone. It only makes sense for people who actually have activity to show.
We have over 10,000 registered users. But a lot of them signed up once and never came back. Sending them a wrapped email with zeros across the board would be pointless.
I filtered for users who had created at least one collection OR liked at least one email. That got me down to around 1,000 people.
What to consider:
- What’s the minimum activity threshold that makes the email worthwhile?
- Would you rather go tight (fewer people, higher relevance) or broad (more people, some with thin data)?
- Can you set fallback content for users with limited activity?
I kept it simple for the first version: if you didn’t meet the threshold, you didn’t get the email.
Step 3: Export and Clean Your Data
This is the unglamorous part.
I exported user data from WordPress as a CSV. The raw export had a lot of fields I didn’t need, so I cleaned it up in Google Sheets:
- Removed unnecessary columns
- Formatted fields so MailerLite would accept them
- Made sure email addresses matched between systems
The key fields I kept:
- Email address
- Number of collections created
- Number of emails liked
- Name and URL for three liked emails
Tips:
- Keep your spreadsheet simple. Only include what you’ll actually merge into the email.
- Double-check formatting. Some ESPs are picky about date formats, special characters, etc.
- Save a backup before you start editing.
Step 4: Upload as Custom Fields
Once your data is clean, upload it to your ESP as custom fields (sometimes called merge fields or personalization fields).
In MailerLite, I created custom fields for:
collections_countlikes_countliked_email_1_nameliked_email_1_urlliked_email_2_nameliked_email_2_urlliked_email_3_nameliked_email_3_url
Then I imported the CSV and mapped each column to its corresponding field.
Important: Verify the data actually imported correctly. I went into a handful of individual subscriber profiles and cross-referenced them against my source data. Tedious, but catching a mistake here is way better than catching it after you send.
Step 5: Design the Email
I kept the design simple, taking cues from the Grammarly email. Hero image, short intro, then the personalized stats in big text.
The structure:
- Header image
- Intro paragraph (“Here’s your 2024 on Email Love…”)
- Big number: collections created
- Big number: emails liked
- Three liked emails with links
- Closing
Looking back, I should have borrowed more from Loom and Customer.io. They did a better job of creating reasons to engage beyond just viewing your stats. Loom’s personality assignment and Customer.io’s GOAT nomination gave recipients something to do and share. Mine just pointed back to existing content.
I designed the email in Figma and exported the code using our plugin. If you’re using a drag-and-drop builder, just make sure your merge tags are in the right spots.
See the full email here.
Step 6: Test Your Merge Tags
This is where personalized emails get nerve-wracking.
Send yourself test emails. Send them to colleagues. Check every single merge tag. Look for:
- Tags that didn’t populate (shows the raw tag or nothing)
- Data that looks wrong (mismatched numbers, broken URLs)
- Weird formatting issues
I tested probably ten times before I felt confident enough to send.
Pro tip: Create a test segment with a few users whose data you know well. Send to them first and verify everything looks right before you send to the full list.
Step 7: Send to Your Segment
Once you’ve tested, send it.
I sent to my segment of ~1,000 users who had actual activity on the site.
The Results
What worked:
- 57% open rate (our regular newsletters sit around 30-40%)
- Zero unsubscribes
- Zero spam complaints
What didn’t:
- 0% click-through rate
The buttons linked to their collections and liked emails. Nobody clicked.
In hindsight, that makes sense. The email said “here’s what you already did.” There was no reason to click through. They already knew about that stuff.
This is where Customer.io and Loom got it right and I got it wrong. Their emails had clear actions: nominate someone, share on LinkedIn, download your personality card. Mine just pointed back to existing content.
What I’d Do Differently
Add a real CTA.
My buttons linked back to stuff people already knew about. Something like “discover emails similar to ones you liked” or “start your 2026 collection” would have given them a reason to actually click.
Include a share mechanic.
Loom’s downloadable personality card and Customer.io’s LinkedIn share button were smart. If your stats are interesting, let people show them off.
Assign a personality or category.
Loom’s “Director” persona turned usage data into an identity. I could do something similar: “You’re a Welcome Email Enthusiast” or “You’re a Cart Abandonment Connoisseur” based on what types of emails people saved.
Use dynamic copy.
Someone with 50 collections should get different messaging than someone with 2. I treated everyone the same, which was a missed opportunity.
Add a competitive element.
“You’re in the top 10% of collection creators” gives people something to feel good about. Grammarly and Loom both do this well.
Create interaction beyond the stats.
Customer.io’s GOAT nomination is a good example. It turns a passive email into a two-way conversation.
If you want more inspiration, we’ve got a collection of year-in-review emails in the gallery, including the Grammarly, Customer.io, Loom, and Waymo examples mentioned here.
And if you’d rather design in Figma than fight a drag-and-drop editor, the Email Love Figma Plugin exports production-ready code with one click.
Much love,
Andy
Email: [email protected]
Twitter: @emaillove
