- Platform
- Web App
- Duration
- 12 weeks
- Industry
- Marketing Tech
- Read time
- 6 min read
In short
RaftLabs migrated their own website from Webflow to a Sanity headless CMS with Gatsby and Next.js, launching 3,000+ programmatic SEO pages in 12 weeks with zero downtime. The migration moved 12,000 monthly visitors to the new platform without traffic loss. Organic traffic grew 30% in the first year. The headless architecture decoupled content management from the frontend, letting the team generate programmatic pages from structured Sanity content without per-page editorial work. Non-technical team members can now manage and publish content directly without developer involvement. Built on Sanity CMS, Gatsby, Next.js, and Vercel.
A website that cannot generate pages programmatically is a ceiling on SEO. Webflow let us build and design, but it could not support a pSEO strategy at scale: launching thousands of pages based on structured data, without manual editorial work for each one. Content updates required developer involvement. Plugin restrictions blocked advanced SEO customization. The platform was not designed for what we needed to do next.
We migrated to Sanity CMS with Gatsby and Next.js. The goal: a headless architecture where structured content feeds programmatic page generation, non-technical team members can manage content without developer support, and Core Web Vitals stay strong as page volume grows. We launched 3,000+ pages with zero downtime, moved 12,000 monthly visitors without traffic loss, and grew organic traffic 30% in year one.

before & after
What changed
- Webflow's limited plugin support blocked advanced SEO customization, automated metadata generation, and performance tuning at the page level
- Launching a programmatic SEO strategy required generating thousands of pages from structured data: Webflow could not support that volume without manual page-by-page work
- Content updates required developer involvement; the marketing team could not publish or edit without opening a development ticket
- Core Web Vitals scores were constrained by Webflow's rendering approach, with limited control over what loaded and when
- Migration risk was high: any new platform launch that caused downtime or URL structure changes would disrupt 12,000 monthly visitors and damage hard-won rankings
- Sanity's structured content model feeds Gatsby's build pipeline directly: 3,000+ programmatic pages generated from content schemas without per-page editorial input
- Non-technical team members manage, update, and publish content through Sanity Studio without developer involvement; changes go live through the staging review workflow
- Sub-second page loads across all pages, with strong Core Web Vitals scores on mobile and desktop
- The migration moved 12,000 monthly visitors to the new platform with zero downtime and no disruption to existing rankings or traffic
- Organic traffic grew 30% in year one as the pSEO page coverage expanded into search terms that the old platform had no capacity to target
What we had to solve
- 01
Migrating 12,000 monthly visitors to a new architecture without disrupting rankings or causing downtime
A website migration that causes even a brief downtime or URL restructure can set organic rankings back months. With 12,000 monthly visitors and an established link profile, we could not afford a cutover that broke existing URLs, dropped pages from the index, or created a traffic gap while search engines recrawled the new domain. The migration ran in phases: URL structure was preserved across the transition, redirects were audited before the cutover, and the new platform was validated in staging against real crawler behavior before any traffic moved.
- 02
Building a content model that generates programmatic pages without per-page editorial work
Programmatic SEO only works if the content model is designed for it from the start. Generating 3,000+ pages requires a schema structure where each page's unique content (headline variations, location or category modifiers, structured data) derives from a set of base records rather than individual entries. Building that schema in Sanity so it was both editorially manageable and technically capable of feeding Gatsby's build pipeline at scale was the design challenge at the core of the project.
outcomes
What we achieved
Webflow's capacity and plugin limitations made it impossible to launch programmatic SEO pages at scale. Every page required manual creation, capping how far the SEO strategy could reach.
A platform migration with any downtime or URL disruption would have lost rankings built over years. The risk of a poorly executed migration was higher than the cost of staying on Webflow.
The old platform had no capacity to target the long-tail keyword clusters that programmatic SEO covers. Every month on Webflow was organic traffic left on the table.
the build
What we built
The architecture separates the content model from the frontend so each can evolve independently: Sanity holds the structured records, Gatsby and Next.js consume them, and Vercel delivers the output at the edge.
12,000 monthly visitors moved to the new platform, no URLs broke, no rankings dropped
The migration ran in phases with URL structure preserved throughout. Existing pages, redirects, and canonical signals were audited before any traffic moved. Search engines recrawled the new platform before the cutover completed. The 12,000 monthly visitors moved to the new platform without service disruption; no URLs broke, no rankings dropped during the transition.

Pages load in under one second: performance gains came from the architecture, not patches
Static site generation eliminated server render time. Pages load in under one second across mobile and desktop. Core Web Vitals scores improved across LCP, CLS, and FID, metrics that directly affect how search engines rank and feature pages. The performance gains came from the architecture, not post-launch patches.

Marketing team publishes content changes in minutes, no development ticket needed
Content changes go through a staging environment before they reach the live site. The marketing team reviews updates, checks rendering, and approves changes in Sanity Studio, then deploys with one action. No developer is in the loop for routine content updates. The workflow that previously required a development ticket now takes minutes.

3,000+ pages generated from one schema set, no per-page editorial entry required
The Sanity content model defines the base records from which programmatic pages derive. Service, industry, technology, and location combinations generate distinct pages at build time from a single schema set. No per-page editorial entry. The system supports 3,000+ pages, processes 30,000+ API requests, and manages 966 MB of assets through 75 GB bandwidth without performance degradation under load.

Engagement
How we worked together
- 01Weeks 1–2
Discovery and scoping
We map the problem before writing code. Two weeks of technical audit, stakeholder interviews, and prototype — so both teams align on scope and risk before sprint one.
- 02Ongoing
Two-week Agile sprints
Each sprint ends with working software, not a status update. You review a real build, request changes, and approve before we move forward. No surprises at handover.
- 03Ongoing
Daily async updates
Slack for daily progress, Asana for task visibility, weekly video calls for decisions. You have full visibility without needing to attend every meeting.
- 04Final
Handover and warranty
Full code handover with deployment runbooks and documentation. Thirty-day warranty period for production issues at no extra cost.
stack
Why we chose this stack
- 01Programmatic page generation at 3,000+ pages needs a content model where structured records feed the build pipeline directly, not one-by-one editorial entries. Sanity's schema-first approach let us define content types that Gatsby could consume at build time. The Studio interface gave non-technical team members a clean editing experience without exposing the underlying schema complexity.Sanity CMS
- 02Static site generation at scale required a build pipeline that consumed Sanity content via GraphQL and produced pre-rendered pages with no server overhead. Gatsby's build system handled the 3,000+ page volume without runtime latency and kept load times sub-second across the full pSEO page set.Gatsby
- 03Marketing and campaign pages needed server-side rendering for dynamic metadata, real-time content updates, and ISR revalidation: patterns that static generation alone cannot support. Next.js handled those surfaces while Gatsby owned the high-volume pSEO routes, each doing the job it was designed for.Next.js
- 04Deploying both Gatsby and Next.js on one platform with edge CDN delivery, preview environments for every pull request, and zero-configuration SSL. Vercel's global edge network kept the site fast across the US, UK, and Australia (the primary traffic regions) without a separate CDN configuration layer.Vercel
Common questions about this migration
The site was working for content, but Webflow has a hard ceiling for programmatic SEO. Generating thousands of pages based on structured data (service + industry + location combinations, technology pages, pSEO clusters) is not something Webflow supports at scale. Every page would have required manual creation. The migration was not about fixing something broken; it was about removing a constraint that prevented the SEO strategy from running at all.
The answer is in the content model. Sanity holds base records (service categories, industries, technology types, location data) that the build pipeline combines into distinct pages. Each programmatic page gets its unique metadata, structured data, and on-page signals from the schema rather than from a human sitting down to write each one. Editorial work happens at the schema level, not the page level. Once the model is right, the page volume is a function of the record count.
Zero traffic was lost. The migration preserved the existing URL structure so search engines did not need to re-evaluate the site's link profile. Pages that ranked before the migration ranked afterward. The 12,000 monthly visitors moved to the new platform without experiencing any downtime. Rankings held, and organic traffic grew 30% in year one as the new pSEO pages indexed and started driving long-tail traffic the old platform could not capture.
Non-technical team members manage content in Sanity Studio, a clean editing interface that surfaces only the fields each content type needs. Writing, updating, and publishing a page does not require a developer. Changes go through a staging environment for review before the team deploys them to production. The workflow that previously required a development ticket now takes minutes and sits entirely within the marketing team's control.
We completed the full migration (content architecture, schema design, Gatsby and Next.js build, Sanity Studio setup, pSEO page generation, staging workflow, and zero-downtime cutover) in 12 weeks. Timeline is affected by three factors: the volume and structure of existing content (complex content types with many fields take longer to model), the number of programmatic page combinations the schema needs to support, and how much existing redirect and URL audit work is required before cutover. Contact us to scope based on your current platform, content volume, and pSEO targets.
Related work
More work like this
AI phone agents automate global feedback loops through voice interviews
We transformed a text-based AI interview platform into a voice-first system that conducts automated phone interviews globally, eliminating user friction and delivering richer insights through natural conversations.
Read case study

Musgrave's SuperValu and Centra ran weekly prize draws across 18 stores without a manual receipt check
RaftLabs built an AI receipt-validation platform for Musgrave's SuperValu and Centra. 471 users and 76 winners in week one. 1,062 users in four weeks. AI validation accuracy improved from 80% to near 99% in production.
Read case study
LoyaltyPass delivers wallet-native loyalty cards with 60% higher enrollment than app-based programs
LoyaltyPass runs loyalty programs inside Apple Wallet and Google Wallet. Customers earn and redeem without a separate app download, and businesses get real engagement data without the friction of a native app.
Read case study







