Alma: from a site nobody could change to a content platform the marketing team runs and tests

Three years, a Sanity content platform, six A/B tests in a year, a provider-page test at +55% conversion, and a Gatsby to Next.js migration that kept the CMS.

Alma is a national mental-health care platform: it helps therapists run their practices and helps patients find care. Its marketing site serves both audiences, carries paid traffic for both, and sits next to a product with its own design system. Over three years I took that site from a build that needed a developer for most changes to a content platform the marketing team runs, tests, and extends on its own. In 2025 the same platform moved from Gatsby to Next.js, and from Netlify to Vercel, without losing the CMS or a page of content.

The numbers below are Alma's, from its web team's own status reports, and are published with Alma's approval.

What did the marketing team get?

A site it could change, test, and extend without waiting for a developer.

  • A provider-page test at +55% conversion rate and 57% lower cost per conversion. The EHR page test ran from January 7 to February 14, 2025, through the site's own A/B module, and the winner went live the day it was called.
  • +9% consultation-request conversion on the redesigned How it Works page, where 42% of visitors used a cost estimator rendered live from the product's API, and the insurance section drew a 65% click-through rate.
  • Six A/B tests shipped and read in a year. The last one, on the For Providers page, was conclusive in nine days at +10.8% conversion over control with a 98.6% probability to win. The Insurance page test before it delivered +13% conversion and +114% click-through on a page that had been losing engagement for six months.
  • Location landing pages in all 50 states, built from one template with real, available providers pulled from the product, converting at 9.1% against 7.7% for the standard directory.
  • A per-page control over which URLs AI search engines are pointed at (llms.txt, 24 curated pages at launch), managed by the content owner from the CMS since July 2025.

None of those required a developer to build a page. Variants are content and a flag; templates are content; the llms.txt list is a toggle on a document.

What was built?

A Sanity content platform with the brand designed in, the product's data available, and testing built into the pages.

  • The brand design system inside the CMS. Colours, typography, iconography, and reusable modules ("stacks"), kept in parity with the product's design system, so every page composed in the Studio is on-brand by construction.
  • A landing-page template library, designed in Figma and integrated into the CMS, for paid guides, podcasts, events, and payer pages, with personalization driven by UTM parameters.
  • Page-level and module-level A/B testing, wired through LaunchDarkly and Snowplow, so a test is a CMS change and a feature flag rather than a rebuild, and results connect to downstream conversions by session.
  • Three product APIs rendered inside marketing pages: provider profiles (filtered by location, modality, availability), a cost estimator, and a guided path to a consultation request. A paid landing page can show a visitor real therapists in their state.
  • A modalities hub with 31 therapy types, clinician-written articles, and provider lists filtered to match, linking straight into the directory.
  • A legal hub in the CMS: privacy policy, applicant privacy policy, and digital accessibility statement, with a table of contents and modules built for legal text and tables.
  • A shared header and footer package used by both the marketing site and the secure application, with its content managed in Sanity.
  • Operational structure: a weekly QA checklist, a Friday release tracker tied to tasks, a UI audit run as a punch list, and a phased plan to bring every component to WCAG standards.

What did the migration look like?

A move from Gatsby to Next.js, keeping Sanity, with the content and the URLs intact.

Gatsby was losing support, including at the host, and the site needed native personalization, dynamic routing, and Sanity's draft mode for content preview. The migration ran in the second half of 2025: a roadmap, a proof of concept, a new repository, page development against the existing content model, then DNS. The CMS, the design system, the templates, the tests, and the API integrations carried over; the hosting moved to Vercel. This is the migration the playbook describes, run on a high-traffic healthcare site with two audiences and paid campaigns live throughout.

Why does this matter for a healthcare marketing team?

Because the site stops being a thing you ask for and becomes a thing you use.

A CMS that carries the design system means a marketing coordinator can't build an off-brand page. Templates mean a campaign page is an afternoon, not a sprint. Testing built into the pages means the team learns what converts instead of guessing, and rolls the winner out the same day. Product data on marketing pages means the site can show a patient a real provider, not a stock photo. And a migration that keeps all of that intact means the platform outlives the framework it happened to be built on.

If your site is where Alma's was three years ago, the assessment is where this starts: a scorecard of your current site, a content model, and a fixed price for the build.