Marshall Hauling: a Duda site that took 10 seconds to load on a phone, rebuilt as 52 pages
The old site loaded its main content in 10.41 seconds on mobile, ran three review widgets and had no page for any town it served. The new one loads in 3.34 seconds and has a page for every town, service and question customers ask.
Marshall Hauling · Marshall, MI · Launched August 2026 · Visit the live site

The business
Marshall Hauling
Marshall Hauling is a veteran-owned junk removal and dumpster rental company in Marshall, Michigan. It started in 2021 with one dump trailer and now runs 10 and 20 yard dumpsters plus junk removal across Calhoun County and the towns around it, from Battle Creek and Albion to Jackson and Coldwater.
The business already had the hard part: 159 five-star Google reviews and prices it was willing to publish. The website wasn't pulling its weight. It was slow on phones, it contradicted itself, and it had no pages for the towns the calls come from.
The old site
What they had before.
Front end: what customers saw
- Mobile speed
- Lighthouse scored the old homepage 58 on mobile. The main content took 10.41 seconds to show up and the first paint took 5.89 seconds.
- Dead buttons
- Four buttons pointed at old http:// links that went nowhere. A customer ready to call or book hit a dead end.
- Reviews
- Three separate review widgets competed on the page, and one of them was broken. Each one loaded its own scripts from its own server.
- Pricing
- Dumpster prices were on the homepage but not on the dumpster page, which is where search traffic lands. Dumpster dimensions were never published anywhere.
- Conflicting facts
- The footer said closed Sundays while the Google profile said 9 to 3. The site claimed over 20 years in business for a company founded in 2021, and the Facebook link was misspelled.
- Town coverage
- The business served 21 communities and none of them had a page. Someone searching for dumpster rental in Battle Creek had nothing to land on.
- Terms
- The Terms link opened an editable Google Doc instead of a page on the site.
Back end: what Google and AI saw
- Third-party load
- The mobile homepage made 108 requests and weighed 2.09 MB. Main-thread work ran 3.59 seconds, with 2.5 seconds of that spent running JavaScript.
- Structured data
- There was no schema anywhere on the site. Google and AI tools had to guess the hours, prices and service area from the page text.
- Title tag
- The homepage title led with the phrase Bin Rental. Michigan customers don't search that, so the strongest on-page signal was spent on the wrong words.
- Logo file
- The logo image was labeled on every page as a junk removal company in Knoxville, TN. That's a different business in a different state.
- Best practices
- Lighthouse scored best practices 69 on both mobile and desktop. The page logged browser errors to the console and set third-party cookies.
What we built
The new site, piece by piece.
- Structure
- The sitemap lists 52 pages: 11 core pages, 6 buying guides, 12 service pages, 19 town pages and 4 town-level dumpster rental pages. The guides cover dumpster sizing, junk removal vs. a dumpster, cost, moving cleanouts, what they take and where the junk goes.
- Migration
- Every old URL 301-redirects to a live page in one hop. The Search Console verification token carried over, so the business kept its full search history through the move.
- Design
- Colors come straight from the company logo, deepened where needed so text passes contrast rules. The owner story, crew photo and job photos are the business's own, and there is no animation library or carousel slowing the page down.
- Pricing tools
- Prices sit on every page that needs them: $375 for a 10 yard, $525 for a 20 yard, junk removal from $95. A live estimator, to-scale dumpster drawings with the real can dimensions and a "Do you take this?" item lookup answer the questions before the phone rings.
- Online booking
- Book Now buttons on the homepage and dumpster pages open the online booking flow. The booking script loads only after the page is ready, and if it ever fails the button falls back to the quote form with the service already filled in.
- Quote form
- Each request goes straight to the owner's inbox. If a send ever fails, the form says so and shows the phone number instead of pretending it worked. A hidden field and a fill-time check screen out bots.
- Schema
- Every page carries a business record with hours, location, prices, the 19 towns served and the 159-review rating. Service, FAQ and breadcrumb schema sit on top, generated from the same data files as the visible copy so they can't drift apart.
- AI search
- robots.txt explicitly allows GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot and Google-Extended. Published prices, dimensions and item answers give AI tools real numbers to quote.
- Speed
- The new build scored 90 on mobile and 100 on desktop in Lighthouse. Mobile main content loaded in 3.34 seconds on 0.48 MB and 37 requests.
Old vs new
Side by side.




Old site: Lighthouse capture, August 20, 2026. New site: captured September 27, 2026.
| Old site | New site | |
|---|---|---|
| Mobile performance (Lighthouse) | 58 | 90 |
| Desktop performance (Lighthouse) | 92 | 100 |
| Mobile Largest Contentful Paint | 10.41s | 3.34s |
| Mobile page weight | 2.09 MB | 0.48 MB |
| Mobile requests | 108 | 37 |
| Best practices (Lighthouse) | 69 | 96 |
| Town pages | None for 21 communities served | 19 town pages + 4 town dumpster pages |
| Structured data | None | Business, Service, FAQ and breadcrumb schema |
| Dumpster dimensions | Not published | Published with to-scale drawings |
| Reviews | Three widgets, one broken | Reviews built into the page, no widget |
How a build like this runs, start to finish: See how we work →