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.


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.


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.


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.


Impact
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.
