Wright Group Event Services
Wright Group Event Services — event rental site moved from WordPress to Cloudflare in 7 days
A Denver event-rental company's 37-page, 112-article WordPress site rebuilt on Astro and Cloudflare Workers in 7 days: new design, 2026 prices, a lead admin with analytics, every old URL redirected, Lighthouse 100.
WordPress → Cloudflare Workers · 7 days to launch- Year
- 2026
- Duration
- October 2026 · 7 days
- Industry
- Event rental & production
- Country
- United States (Denver, Colorado)
- Services
- Web Design, Web Development, SEO
Before and after
The results
-
7 days
From the first export of the old site to the live domain
-
2,005
Old URLs that still answer, each redirect landing on a working page
-
100
Lighthouse on desktop: performance, accessibility, best practices and SEO
-
113
End-to-end tests in Chrome, Firefox, Safari's engine and an iPhone screen
Project overview
Wright Group Event Services rents tents, stages, tables, chairs, linens, lighting and AV for weddings, corporate events, festivals and private parties across Colorado. The company has served the state since 1996 from its base near Denver, and its site had grown with it: 37 pages, 112 articles, 1,981 URLs counting the media, and almost 400 MB of photos and video, all on WordPress with a page builder.
The brief was to move the whole thing onto a fast, modern site without losing anything: not a page, not an article, not a single address Google had indexed. On the way I found what years of edits leave behind: duplicate “-2” URLs, four phone numbers and three addresses on different pages, the company’s age stated four different ways, and analytics counting every view twice. The new site had to fix that and give the owner something WordPress never did: a place where every quote request lands, with the source it came from.
My role in the project
I personally led the project from the first export of the old site to the live domain, seven days later. The areas I owned and delivered directly:
- Discovery: a full export of the old site, an inventory of every URL with its live status, and a register of 2,058 statements the old pages make about the company, each verified word for word and sent to the client for a fact check
- The new design, built 1:1 from the approved layout: 11 page designs and 12 components
- Content migration: 112 articles, 14 rental pages, 8 event types and 10 pages, with a word-count report proving nothing was lost
- Lead capture, first-party analytics and an admin panel on Cloudflare’s database
- SEO: the redirect layer, structured data, sitemaps, the files for AI crawlers and a performance budget
- The launch on the client’s own Cloudflare account, with a rollback plan and the old host kept warm
What I built: the site
- A home page, 14 rental pages and 8 event-type pages with the migrated content laid out into the new design’s sections, FAQ, reviews and awards
- Nine new category pages (tents, tables, chairs, linens, lighting and AV, heaters and generators, dance floors, barricades, lounge furniture, pipe and drape) and four area pages (Colorado Springs, Fort Collins, Boulder and the mountain towns), each with what’s delivered there and the 2026 starting prices
- The 2026 price list imported from the client’s QuickBooks export into price blocks on every rental page, with a check at build time that no item is left out
- A wedding tent guide with a size calculator: guest count, layout and extras turn into a tent size, a price and a starter list
- News with 110 articles and an archive, a site search, About, Contact, legal pages with a privacy opt-out form, and a 404 page that searches
- Real Google reviews from an export, each linking to the original, and 144 photos that had no alt text described one by one
- 11 videos re-encoded from 31.5 MB to 7.4 MB, served from Cloudflare’s storage along with every old upload at its old address
What I built: leads and the admin
- Quote forms that work without JavaScript: Turnstile loads on the first touch of a form, a hidden honeypot, a rate limit and a duplicate check keep spam out, and every request is saved with its source, campaign and ad click IDs before an e-mail goes to the office
- First-party analytics: visitors, sessions, page views, scroll depth, phone, e-mail and CTA clicks, video and gallery use, summed into daily statistics every night
- Events for GA4 and the Meta Pixel through one Google Tag Manager import, so calls and quote requests count as conversions
- An admin panel of its own: a dashboard that compares any period with the one before, leads with statuses, notes, search, filters and CSV export, each lead’s visit history, analytics by page, source and visitor, a 404 log that writes the redirect line for you, and settings with users. It runs within the free Workers plan
What I built: SEO and launch
- Every one of the old site’s 2,005 URLs answers: 375 exact redirects, 149 for addresses without a slash, 10 dynamic ones, and a Worker that handles different casing, encodings and the old
?p=links; missing pages return a real 404 - Structured data on every page: the business, its services, articles, breadcrumbs, FAQ and reviews, with zero errors in Google’s and schema.org’s validators; share images, sitemaps with images, RSS, a KML file and IndexNow
- robots.txt that names 19 AI crawlers, plus llms.txt and a full-text version for AI assistants, built from the content; a check in the build fails if any removed claim sneaks back into them
- Security headers, a cookie notice and a privacy opt-out page
- A performance budget enforced by Lighthouse in CI, and an audit of every image on every page in the build
- The launch: a Cloudflare zone on the client’s account, the database and media storage near Denver, a 34-point launch check, and the WordPress host kept for rollback
Stack and performance
Astro 7 with TypeScript and Tailwind CSS 4, deployed as static files with server routes on Cloudflare Workers; D1 for leads, analytics and the admin, R2 for media; Turnstile for spam protection, Resend for e-mail, Pagefind for search. 113 Playwright tests run in Chrome, Firefox, WebKit and an iPhone screen on every push, and axe finds zero WCAG 2.1 AA violations. On the live site, Lighthouse gives 100 across the board on desktop and 96–97 for performance on mobile, with zero layout shift and 5–10 KB of JavaScript per page.
Key screens
Full homepage, desktop
Tech stack
- Astro 7
- TypeScript
- Tailwind CSS 4
- Cloudflare Workers
- D1 + R2
- Cloudflare Turnstile
- Resend
- Pagefind
- Playwright
- GitHub Actions
Want a similar project done?
Tell me about the task. I will personally look at your project and suggest the right way to deliver it.
Discuss your project with me