Case Study - Songly Studios

How we helped Songly Studios save $850 per year hosting costs by offloading media and user generated songs to Cloudflare R2

What is Songly

Songly Studios is an amazing website where you can gift a custom song to your loved ones.

You simply fill out a form and choose the song genre, mood, occasion, vocal type (male or female), and briefly tell the story story between you and the recipient, and leave the rest to the Songly.

What you get is a one-of-a-kind song with unique lyrics written specifically for the person want to surprise.

The gifted song is accessible from a gift page (web page link) where the recipient can listen and download the song, view the lyrics and image carousel.

Songly Gift Page

What exactly Songly needed help with

Previously you could choose a real artist from a group of musicians that fit your music taste and the occasion, but it took a couple of weeks for an artist to write and sing the unique song for you.

While this was great, customers demanded a faster service at a lower price.

The second issue was the constantly increasing web hosting costs, approximately $850 per year, as of August 2026.

Hosting costs were climbing every year, since Songly keeps each unique gift page online indefinitely after purchase.

This means that years later, loved ones can still click their link and hear the magical tune the gifter sent them. To tackle these challenges, Songly reached out to us.

Songly Website - Why choose Songly

Custom WordPress solutions implemented

We can divide the project into two main tasks

  1. Fully automated lyrics, AI song, and gift page generation.
  2. Offloading the media (all custom songs generated since 2020 as well as the new ones) to Cloudflare R2.

Phase 1 – Automated song and gift page generation

Previously, I’ve worked on a couple of WordPress websites that required AI integration for certain tasks but in Songly’s case, the challenge was to integrate multiple AI api integrations into a multi-step form, which ended with a checkout and the instant gift page generation.

Songly song generation form

The idea is to simplify the song generation as much as possible and automating almost everything for the Songly team.

This custom implementation required integrating an existing WordPress forms plugin, communicating with multiple AI API services in different steps of the song generation form, presenting generated song versions, building and previewing the gift page, and finally the checkout.

This might have been easier to build as a SPA (single page application) using React and Next.js but project’s requirements was to build it fully operational within WordPress and keep the existing gift pages online, which were added since 2020.

I’ve built a custom WordPress plugin specifically for this purpose that does all the integration between multiple services as well as other plugins.

This phase of the project has launched in July 2026, and received numerous custom song orders in just a couple of days.

The customers loved the custom songs and beautiful gift pages they could generate themselves online.

Phase 2 – Offloading media to Cloudflare R2

Media offloading was something I’ve heard of but never used it on a live site.

There are excellent media offloading WordPress plugins available to offload WordPress media (specifically image files). One of them is Advanced Media Offloader, built by Masoud Golchin.

While this works well for the media library items, you can’t directly use it with a custom plugin that handles its own operations.

So, I had to integrate a similar functionality that works with the custom WordPress plugin I have built for Songly.

Songly, was already using Cloudflare for full page caching and WAF services. It even had a Cloudflare Worker that does the preloading via our Super Preloader for Cloudflare plugin.

Cloudflare’s object storage solution, Cloudflare R2, was the perfect choice in this case to keep everything under one platform and use the cost benefits of the zero-egress fees.

WordPress and Cloudflare R2 integration required the following bare-minimum functionality:

  • PutObject: upload/write a file to a bucket
  • GetObject: read/download a file
  • HeadObject: check if an object exists + get metadata (size, content-type, etag) without downloading the body
  • DeleteObject: remove a file
  • ListObjectsV2: list objects in a bucket

With these implementations, the Songly WordPress plugin was able to push the custom generated songs to the R2 bucket and retrieve them from the gift page (and even overwrite them manually through the WordPress dashboard if customer requires a revision to their custom song)

Finally, I’ve added a WP CLI function to “migrate” existing songs (about 100 GB) over to the R2 bucket and deployed a Cloudflare worker to do the URL rewriting / binding between regular WordPress media URLs and the stored objects.

Conclusion

This project turned out to be a great success, not only with the fully automated custom song generation that customers love, but also keeping the ever growing hosting costs to a fraction.

I’ve personally enjoyed every moment working on this project and learned a lot during the phases.

From implementing multiple AI API environments to Cloudflare R2 and Cloudflare Workers, every part of this build pushed me to learn something new.

I’m proud of the product we ended up with and looking forward to seeing Songly continue to grow on this new foundation.