Rebuilding a Queen Creek plumber's site and routing leads to HubSpot
Streamline Plumbing's old site was on a vendor-controlled WordPress install the owner could not log into. We backed it up, rebuilt it as a static Astro site on Cloudflare Pages, and wired every lead into the company's own HubSpot.


- Client
- Streamline Plumbing AZ
- Location
- Queen Creek, AZ
- Industry
- Plumbing
- Built
- Aug to Oct 2026, live Oct 11
- Stack
- Astro, Cloudflare Pages, HubSpot, GTM, GA4
- Service area
- Queen Creek, Gilbert, Chandler, Mesa and the East Valley
The challenge
The old site ran on WordPress and Elementor controlled by a previous vendor, and the owner had no admin access. Over the 3 months to Aug 19, 2026, organic search brought in 4 non-branded clicks from 65,294 impressions, with no impressions in the top three positions.
The site listed a second, different address in its footer and schema, and the review widget count did not match the Google Business Profile. Customer and job history sat in Thryv instead of a CRM the company owned.
What we did, step by step
- Back up without admin accessOn Aug 5, 2026 we captured byte-exact HTML for all 82 URLs with a checksum manifest, a full mirror, 506 full-resolution media files and a per-URL SEO extract, plus a restore guide.
- Rebuild with a parity checkWe generated an Astro static rebuild from the backup with a check that fails on any change to URL coverage, title, description, canonical, H1 or schema type. All 82 of 82 pages passed. The homepage went from 451 KB of HTML to 41 KB, and from 35 stylesheets to 1.
- Audit search and trackingWe audited organic search, local SEO, technical health and AI search, and built a Tag Manager container with Google Ads conversions and eight GA4 events.
- Fix the old site firstWhile the rebuild was in progress we fixed metadata, phone links, review schema, internal links and images on the old site, with rollback records.
- Go live on Cloudflare PagesOn Oct 11, 2026 we moved DNS to Cloudflare Pages. All 85 URLs from the old sitemap and Search Console return 200, legacy WordPress paths redirect, and 235 old images were copied over.
- Clean up local signalsWe set one Queen Creek address and phone on every page, replaced placeholder images with real van and job photos, and noindexed 16 thin city and service pages.
- Send leads to HubSpotEvery form now writes to HubSpot before it confirms: it matches the contact, opens a deal in the jobs pipeline, adds a note and a callback task, and saves the Google click ID. Spam is filtered and does not fire Ads conversions.
- Move the customer historyCustomer and job history moved into HubSpot from Thryv with a repeatable script, and record counts were checked against the Thryv exports. We wrote the owner a guide to finding old invoices and payments.
What's on it
- Native lead forms that save to HubSpot first
- Deal, note and callback task created for each lead
- Google click ID saved on the contact for offline conversions
- Spam filter that keeps spam out of Ads conversions
- Careers application form
- City hub and city service pages
- Real company photos
- Q4 social media calendar
Search and local setup
- 82 of 82 pages matched on title, description, canonical, H1 and schema
- All 85 old URLs kept working, legacy paths redirected
- One consistent name, address and phone
- Plumber, FAQPage and BreadcrumbList schema
- 10 city hubs and 21 city service pages, 16 thin pages noindexed
- 97 URLs in the sitemap, 0 broken internal links at launch
- llms.txt for AI crawlers
- GA4 events and Google Ads conversions that fire only after HubSpot saves the lead
Questions people ask about this work
Can I get my website back if my marketing vendor won't give me access?
Often, yes. For Streamline Plumbing we had no WordPress login, so we captured the public site byte for byte, including all 82 URLs and 506 media files, then rebuilt it from that backup. The owner now controls the code and hosting.
Why does my plumbing website get impressions but no clicks?
This site had 65,294 impressions and 4 non-branded clicks in 3 months, with nothing ranking in the top three. Slow pages, a conflicting address and thin city pages all played a part. We fixed the address, sped up the pages and noindexed thin pages.
How do I connect my plumbing website forms to HubSpot?
We built a small server function that writes each lead to HubSpot before showing a thank you message. It creates the contact, a deal, a note and a callback task, and only then fires the Google Ads conversion.
Services in this project
Related projects

Level Up Garage Door
Level Up Garage Door is a family-owned garage door company in Queen Creek.
Baja Plumbing Co
Baja Plumbing Co is a new plumbing company serving Arizona.
Squeaky Clean Turf
Squeaky Clean Turf cleans artificial turf across Greater Phoenix and sells its own turf cleaner.
Built and written up by John M. Williams, founder of It All Started With An Idea in Queen Creek, AZ. 15+ years and $350M+ in managed ad spend.