Case study · Technology
Moving zylpe.com off WordPress without changing a URL
A same-to-same rebuild of a WordPress and Elementor site as a Next.js application: every public URL, title and section preserved, the Elementor layout reproduced from the crawled CSS, legacy demo URLs redirected, and a cutover plan that leaves email DNS untouched.
- Client
- Zylpe Technologies
- Industry
- Technology
- Solutions
- Application Development
- Technology
- Next.jsReactTypeScriptTailwind CSSVercel
Challenge
Zylpe Technologies, an Atlanta-based IoT analytics and digital transformation consultancy, had a public site built in WordPress with the Elementor page builder, a caching plugin and a commercial theme, hosted on shared hosting. Forty-seven public pages and posts across analytics, advisory and industries, plus two mega menus and a form, all defined inside the page builder.
The site also carried the theme's baggage: dozens of indexed demo URLs for products and projects that were never Zylpe content, lorem-ipsum fragments in the footer, lazy-loaded images that only existed in data attributes, and low-resolution banner photos stretched across the viewport. The brief was explicit: preserve the URLs, the content and the look exactly, change nothing about email, and keep a rollback. Redesign waits for a later phase.
Context
AMTEX delivered the migration as a crawl-driven rebuild rather than a page-by-page recreation, so the content became structured data that a redesign can reuse without another extraction.
Architecture
Source
- WordPress + Elementor
- XML sitemaps
- Per-page Elementor CSS
- Media library
Extraction
Crawler
Browser headers, CDATA sitemaps
Section classifier
banner · split · boxes · counters · cta…
Asset map
Lazy-load and slider attributes
Content
- Typed pages47 pages, sections, SEO
- Menus
- Redirect table
- Image sizes + display widths
Site
- Next.js App Router
- Section renderers
- Contact APIValidation · rate limit · honeypot
Delivery
- Vercel
- DNS cutoverWeb records only
Solution
A crawler walked the sitemaps and every page, then a classifier turned each Elementor section into a typed section (banner, split, two-column, icon boxes, logo grid, gallery, counters, video, call to action, form) with its background colour or image read from the per-page CSS. Images were recovered from the caching plugin's lazy-load attributes and the slider's own data attributes, downloaded, and mapped to local paths. The result is a content file, not a pile of HTML.
The Next.js site renders those sections with components that reproduce the live typography, colours, container width and the diagonal purple banner overlay. The heading typeface is self-hosted, the header has the same two mega menus and sticky behaviour, and the footer repeats the full menu with icons the way the template did. Where Elementor had set an image width, the same width is applied; where it had not, images render at their natural size, which is what the builder did.
- Every public URL is served at the same path with a trailing slash, and every title follows the live format.
- Fifty-three indexed theme demo URLs redirect permanently, as do the legacy sitemap and feed paths; PDFs keep working at a documents path.
- The contact form posts to a route with schema validation, a honeypot and per-IP rate limiting, and never echoes submitted fields.
- Security headers and a content security policy ship with the site; the WordPress attack surface disappears with the WordPress install.
- A review document lists everything that is Zylpe's decision rather than ours: demo content, outdated claims, unlicensed-looking stock previews, missing legal pages.
The cutover plan changes exactly two DNS records, the apex address and the www alias, and lists the MX, SPF, DKIM and DMARC records that must not be touched. The old host stays up as the rollback for thirty days.
Business impact
Parity was verified mechanically rather than by eye: all forty-seven public URLs return successfully on the new site, titles match the live format, demo URLs redirect, no page references the old host for any asset, and the sitemap lists the same URLs. Search engines see the same site at the same addresses.
Zylpe now owns its content as structured data instead of inside a page builder, which is what makes the next phase, a redesign, a rendering change rather than another migration. Performance figures will be published once the domain has cut over and real traffic is measured.
47 of 47
Public URLs preserved
53
Legacy demo URLs redirected
282
Images carried over with recorded dimensions
0
References to the old host
Key takeaways
- 01Crawl into structured data, then render. Recreating pages by hand preserves nothing reliably.
- 02Read the builder's CSS, not just its HTML: backgrounds and image widths live there.
- 03Decide the fate of every indexed URL, including the ones the client forgot were indexed.
- 04Touch only the web DNS records. Email outages are how migrations get remembered.
Facing something similar?
We will walk you through how we approached this one and what would be different for you.