← All work

MYRY

The website and tools behind my music project: a Spotify pre-save you only do once, ad landing pages I could test, and the data to judge them.

Years
2020 to now
Role
Artist, designer, developer
Scope
UX/UI, Spotify OAuth, Python, analytics
Stack
Wix Velo → Astro, Cloudflare
MYRY pre-save page for Papercuts: release artwork, a green Pre-save on Spotify button and a note that 5,872 people have pre-saved

Overview

MYRY is my music project. I write, record, produce and release the songs myself, which also means I'm responsible for building my audience and engaging it with everything digital. As part of this, I design my artwork, shoot and edit my music videos, and design my website.

Most independent artists end up using a relatively standardised handful of external services: a pre-save link for each release, a link-in-bio page, a Meta ad pointing straight at Spotify. Each one works on its own, but you can't design the journey, you can't really tell what happened after someone clicked, and fans get asked to do the same thing again for every new song.

So, as the control freak I am, I built my own interfaces. It started as a Wix Velo site in 2020, became actual software in 2022 when I added Spotify sign-in and a Python backend for pre-saves, and in October 2026 I rebuilt it on Astro and Cloudflare to make it into a full pre and post-release workflow suite.

My role

Everything. I was the person noticing the problem, designing the fix, writing the code, paying for the ads and reading the numbers afterwards.

Process

1. Forever pre-saves

A normal pre-save is a one-off (with standard access token exchange): new song, new campaign, new Spotify authorisation. A fan who pre-saved the last release gets asked all over again for the next one.

I wanted to reduce friction, make every interaction go further, and save people the hassle of re-connecting with Spotify for every release.

So in 2022 I set up my own Spotify OAuth on my Wix Velo website, using refresh tokens, so a Python backend on my side could save and playlist each new release on release day without anyone logging in again. One single sign in flow, 'pre-save forever' (of note: Spotify subsequently made exchange tokens expire after 6 months, so I make that explicit in the flow). I also fetched the user's Top Artists during the token exchange, and returned a custom playlist made with those artists made for them.

Pre-save page on a phone: Papercuts artwork, a green Pre-save on Spotify button, '8-second sign-in. 5872 people have pre-saved.' and an offer of a secret early-listen link
The pre-save page: one button, and a reason to press it.
Spotify's own sign-in screen
The button hands over to Spotify's own sign-in.

Over time the pages around it got simpler. The pre-save page is now just artwork, the Spotify logo and one button. After signing in, the thank-you page pushes you to listen straight away, and the reward (a secret early-listen link) comes by email about five minutes later, so it doesn't compete with the Play button. Getting that link is its own opt-in tick box, separate from the newsletter.

Thank-you page: 'Spotify connected. You're in. Thanks for pre-saving!', a green Listen on Spotify button, and an option to send the thank-you email to a different address
Back on my site: listen first, everything else second.
Thank-you email from MYRY with the Papercuts artwork and a Private listening page button
The reward arrives by email a few minutes later.

2. Ad landing pages I could actually test

Sending a Meta ad straight to a track on Spotify is easy, but knowing what the user actually does is virtually impossible through that route. People open Spotify and never press Play, and Spotify analytics don't let artists see the source of streams by url/campaign. So I put my own landing pages between the ads and the streaming services, and ran A/B tests on them: cleaner single-action pages against richer ones, playlists against single tracks, and personalised pages.

Over time, I have completely changed how I design and run ads based on the data from the user journeys I collected through these experiments.

Not everyone uses Spotify, so the stream pages let you pick your platform first. To avoid automated and bot traffic from Meta ads, I deliberately added a step, balancing the additional friction with the increased intent and quality of the conversion - I made the button stay greyed out until a platform is deliberately chosen, and optimised the ads for button clicks only with Spotify actually selected, since it was more valuable than the other platforms for my specific campaigns.

Maze landing page with 'Choose a platform' and a dimmed Listen now button
No platform chosen: the button stays dim.
Maze landing page with Spotify selected and a bright Listen on Spotify button
Spotify chosen: it lights up and says where it's going.

3. Metify: putting the numbers in one place

Meta tells you what the ads did. Spotify for Artists tells you what happened to the music. Neither talks to the other, and Spotify's public API doesn't give artists those stats. So I built Metify: it pulls ad data from the Meta API, and a browser extension I wrote collects my Spotify for Artists stats, so I can look at spend and streams side by side.

The biggest lesson from all of this was that not every "conversion" means the same thing. An ad click, a click out to Spotify, a completed Spotify sign-in and an actual stream are four different events, and I learnt to optimise for the most meaningful one I could measure.

4. The rebuild

By 2026 the Wix site was doing far more than it was made for, and I longed to have even more control of the code. So I rebuilt it on Cloudflare, step by step, using Astro for optimal page load speed, keeping the old site live until the new one could do everything it did. Release pages now come from one template filled in from each release's data, the listen page works as my own link-in-bio, and the Spotify sign-in was rebuilt with PKCE and encrypted refresh tokens.

MYRY listen page on a phone: artwork, a pre-save and follow button, and compact links to every streaming platform
/listen, my own link-in-bio.
Papercuts release page on a phone: artwork, platform links, genre and description
A release page, built from the release's own data.
Releases page showing a grid of MYRY release artwork
27 releases, one template.

Impact

5M+streams since 2022
5,872pre-saves, shown on the live pre-save page
1.94MSpotify streams in one year (Aug 2024 to Aug 2025)

Throughout the process, I monitored my website's analytics through GA4, as well as Wix's native analytics dashboard before the migration, and PostHog after migrating to Cloudflare. I looked at the funnels to work out where users were dropping off, and tested countless designs for every page.

Though even with Metify and all this it remains difficult to say exactly how many of MYRY's streams came from which process, I like to think that all of the work above contributed.