Ramp’s engineering team set out to migrate ramp.com—an at-scale marketing site with 300k+ pages—from Webflow to a Next.js frontend backed by Sanity CMS.
The constraints were explicit: no downtime, no SEO regressions, and no disruption to the marketing team’s publishing workflow.
The team reached out to Tinloof after adopting its open-source Sanity tooling.
This led to a broader collaboration focused on executing the migration safely, and supporting a production rollout under live traffic.
Content migration
Content migration was approached as an iterative process involving schema design, frontend adaptation to new data shapes, and repeated extraction of content from Webflow into Sanity.
To support this, plug-and-play migration scripts were built to map different Webflow document types to the evolving Sanity schemas. The scripts were designed to be idempotent, allowing them to be run repeatedly without creating conflicts as schemas and frontend requirements changed.
This made it possible to migrate selective chunks of pages incrementally, preserve URLs and content parity, and unblock frontend development while the remaining content was still in flight.
Iterative content migration
Performance and CMS usage
Traditional time-based cache busting forces a trade-off: shorter cache windows reduce time-to-publish but significantly increase CMS origin traffic, while longer TTLs improve efficiency at the cost of delayed content rollouts.
To avoid this, the setup was built around Sanity’s Live API where queries are automatically tagged at the CMS level and kept cached indefinitely.
Content changes trigger revalidation events via WebSocket messages emitted by the Sanity API, allowing affected pages to be invalidated and refreshed immediately.
The result: published content is instantly live and CMS usage is at its minimum.
CMS caching strategies
Migration misc.
Beyond the core migration work, a few platform-level details were addressed to ensure the site behaved correctly at scale.
Custom image and video components were implemented across the frontend and CMS to serve assets using optimal strategies, balancing image quality, performance, and layout stability, and avoiding layout shifts.
In parallel, SEO was set up using custom CMS fields aligned with Google’s best practices, with frontend abstractions automatically consuming and applying the defined data.
Finally, sitemaps were configured to be automatically generated and segmented by site groups, improving crawlability and index control.
Programmatic SEO