Case study · Hair salon & day spa · Champaign, Illinois
The Egyptian Queen Salon & Spa: booking, retail, email, and search, replaced in one build
- Services
- Website design & architecture · Booking & commerce (StatikBase) · SEO & AI search · DNS & email migration · Care & stewardship
- Stack
- Astro · Cloudflare Pages · StatikBase · Stripe · Google Calendar API · Resend · Cloudflare Turnstile · Neon Postgres · Cloudflare R2 + Images
The situation
The Egyptian Queen Salon & Spa is an owner-operated hair salon and day spa in Champaign, Illinois, known locally for curly-hair and blowout work and carrying a 4.9-star Google rating across several hundred reviews. Its website was a WordPress build (Elementor for layout, WooCommerce for a small shop, a booking plugin for appointments) on managed hosting, with the business email on Google Workspace.
The owner wanted three things at once: a site that matched the salon’s standard, a way for new clients to book a paid phone consultation before their first appointment, and a shop for the salon’s own line of hair and body oils. On the old stack each of those was a separate plugin with its own settings, its own failure modes, and its own monthly cost, and the site was slow enough to hurt.
What Hyrizen built
A static site with a bespoke design system. Every service page, the owner’s profile, visit and contact pages, reviews, and the shop are pre-rendered HTML on Cloudflare Pages. Fonts are self-hosted, images run through an image pipeline, and every page ships one connected schema graph.

Paid consultation booking, on StatikBase. New clients book a fifteen-minute phone consultation and pay a $40 deposit at booking. Availability is calculated from the salon’s hours and exceptions in the salon’s own timezone; a booking places a short hold, takes payment through Stripe on the salon’s connected account, and confirms, with the appointment pushed to the owner’s Google Calendar and her busy blocks closing the matching online slots so nothing double-books. Bot checks, hold caps, and a no-same-day rule came out of the first weeks of real bookings.

A real shop. Twenty products with sizes as variants, stock, photos, shipping and pickup rates, and Stripe checkout; orders, refunds, and “they booked in the salon” outcomes handled from a phone-first dashboard. When the owner edits a price, the site rebuilds and redeploys itself within minutes.

Email that kept working. The domain’s DNS moved to Cloudflare with the Google Workspace mail records carried across byte-for-byte. The migration surfaced a DKIM record that had been silently missing on the old zone (signing would have decayed at cutover without anyone noticing) and seven mail/FTP records that an importer had wrongly proxied. Both were fixed before the switch. Transactional email (booking and order confirmations) sends from a dedicated subdomain with SPF, DKIM, and DMARC set properly.
Search and AI visibility, engineered in. An entity register was researched and confirmed with the owner (name, address, phone, hours from Google Business Profile, coordinates, profile URLs); schema was rebuilt from that single source and bound to the live catalog so product data can never go stale; hours drive copy, schema, and the booking model from one constant. Deprecated FAQ markup came out; every heading got a stable fragment id; the redirect map from the WordPress URLs was written before cutover; and the build fails on broken links, schema regressions, weight budgets, or accessibility violations. Real reviews replaced placeholder text, quoted verbatim from the salon’s Google export with dates.
How it went live
The old site stayed up behind a maintenance curtain while DNS moved and the new site was rehearsed on a staging origin: real slots painted, canary bookings correctly refused at the bot wall, test orders through Stripe, confirmation emails delivered. Uptime monitoring and a booking end-to-end test procedure were in place before the switch. The first real booking arrived within days, and produced the owner-notification email and no-same-day rule that are now standard.
What it costs to run
Hosting is effectively free on Cloudflare. Stripe charges its per-transaction fee. StatikBase, monitoring, updates, and changes are covered by the care plan.
What we’d say to another owner-operator
Nothing here required a big team or a big budget; it required treating booking, shop, email, and search as one system instead of four subscriptions. That is the shape of every Hyrizen build.