Shopify · Domains

Self-Serve Domain Renewals

Shopify sells domains as an accredited registrar partner reseller, letting merchants manage DNS, renewals, and business operations in one place. Our team identified that merchants found the renewal process confusing and difficult to manage, often leading to missed renewals and loss of domain access. My goal was to give them more control with clearer visibility into payment and renewal status, streamlining the self-serve experience to be more intuitive and efficient.

RoleLead Product Designer
TimelineNov 2025 – Jan 2026
TeamEngineering, Product Manager, Writer
ToolsFigma · Ballpark · Cursor · Claude
Shopify domain management UI showing renewal status and self-serve renewal flow
93%
Reduction in renewals handled via support
65
Fewer domain support tickets per day
150
Attempted self-serve renewals per day
Challenge

Domains are one of the more technically complex parts of running an online store, and merchants consistently struggled with them. When a renewal failed or a domain expired, merchants had no way to fix it themselves. The only option was to contact support.

  • 13% of domain-related support tickets were tied to renewals.
  • Auto-renewal failed more than 40% of the time, usually because of an expired payment method.

My domain has expired and I need to renew it, but the admin page is asking me to contact support.

Merchant support ticket
Opportunity

If merchants could see what was happening with their domain earlier in the process and act on it themselves, most renewals would never need support. The goal was to give them more control:

  • Clearer visibility into payment and renewal status
  • A self-serve way to renew, without contacting support
  • Notifications that clearly tell merchants exactly what to do next
What I Did

As lead product designer, I worked very closely with engineering, a product manager, and a content designer. I held weekly syncs with engineering and product management to move quickly and stay aligned.

  • Mapping the renewal lifecycle. I mapped every domain status and every admin notification and email trigger. I used Cursor to find the active triggers in the codebase, then validated them with engineering.
  • Researching from three angles. I analyzed support tickets and Sidekick recordings, created and ran usability studies of the 30-day renewal email and the domain detail page, and reviewed how GoDaddy, Namecheap, and Hostinger handled renewals.
  • Setting direction with product. I drafted the hypothesis and worked with the PM to define the MVP scope, then captured decisions and trade-offs in a shared design document.
  • Prototyping before committing. I built interactive prototypes with Cursor to test messaging and renewal flows. Testing led us to choose a dedicated confirmation page over a toast notification.
  • Designing around the registrar. I couldn't change when OpenSRS sent its emails, so I moved Shopify's reminder from day 30 to day 21. I redesigned 6 emails and created 2 new ones, including one that lets merchants know when their auto-renew setting was changed.
  • Raising the quality bar. Rather than add renewal features to a page built on legacy Polaris components, I used the opportunities identified in the usability study to reorganize the domain detail page. I moved auto-renew information to the top, brought contact information and DNS settings out from under a menu so they're visible on the page. I also added renewal status and a "Renew now" button, and designed a self-serve renewal checkout with auto-renew on by default.
Domain renewal notification lifecycle from 30 days before expiry to 40 days after, mapping every email and admin alert by sender and auto-renew state
Documenting all emails in the renewal lifecycle and revising them
Outcome

Self-serve renewal shipped in December 2025, and the email updates followed in January 2026. Within the first few days, 126 merchants clicked "Renew now."

  • 150 attempted self-serve renewals per day
  • 93% fewer renewals handled by support, down from 70 a day to 5
  • Fewer domain support tickets, down from 120 a day to 65
Key Learnings
  • Bring in content design early. Our team didn't have a content designer, so partway through I asked one from another team to review the emails I was writing. We also discovered new content guidelines midway through. Having that expertise from the start would have kept the tone and voice consistent and avoided rework.
  • A constraint isn't a dead end. Working with an external registrar, OpenSRS, limited what we could change in the emails. That didn't rule out a solution. It meant finding a different way around the limitation, which led to moving Shopify's reminder from day 30 to day 21.
Shopify domain renewals UI showing renewal status, self-serve checkout flow, and domain lifecycle state management
Shopify domain detail page showing an expired domain alert with a prominent Renew now CTA, auto-renewal toggle, DNS settings, and subdomains list
Shopify self-serve domain auto-renew billing failure email with action required to update billing information so domain does not expire
Shopify self-serve domain renewal checkout showing contact information, payment method, order summary with today and annual renewal costs, and a Renew domain CTA
Turning off auto-renew confirmation modal to prevent accidental cancellation

For a closer look at this project or my full process behind it

Contact me