A Tulsa junk removal site rebuilt off Squarespace, with the price list out front
JunkLimo's Squarespace site had a one-word title tag, no meta descriptions, no structured data and no city pages. We replaced it with a hand-coded 51-page site that publishes all five load prices and hands them to search engines as structured data.
JunkLimo · Tulsa, OK · Launched August 2026 · Visit the live site

The business
JunkLimo
JunkLimo is a junk removal company in Tulsa, OK. They haul furniture, appliances, garage and estate cleanouts, construction and yard debris, and commercial jobs across Tulsa and the surrounding towns. They price by trailer volume and publish the whole list: an $85 minimum up to $425 for a full load.
The old site was on Squarespace. It had 11 pages, carried a second brand name, and gave Google almost nothing to work with: no city pages, no page descriptions, no structured data.
“we get booked up all the time from our website being told that it's the most professional around.”

Owner, Junk Limo
The old site
What they had before.
Front end: what customers saw
- Images
- Most of the images on the old site were AI-generated, still carrying filenames like "generate-an-image-similar-to-the-first...". The rest included a downloaded Google logo and a stock five-star graphic.
- Leftover platform parts
- A shopping cart icon sat in the navigation of a business that sells nothing online. That's a Squarespace default that never got switched off.
- Copy errors
- "Applicance removal" was misspelled, the hours read "Mon-Sun 24/7h.", and "@ 2026" showed up in the copy. The site also claimed 24-hour service, which wasn't their actual schedule.
- Two brand names
- The site used a second name, "Tulsa Junk Co.", alongside JunkLimo. A customer, or a search engine, had no way to tell which one was the business.
- Headings
- Pages carried three competing H1s and lowercase section labels, so there was no clear main heading telling a reader or a crawler what the page was about.
- Service area
- The footer claimed the Tulsa metro, but there wasn't a single city page. The whole site was a homepage, a services page, six service pages, a booking page, contact and a blog.
Back end: what Google and AI saw
- Title tags
- The homepage title was the single word "JUNKLIMO". No service, no city.
- Meta descriptions
- Empty on every page. Google had to guess what to show under the link.
- Structured data
- None. No business markup, no service or price data, no FAQ markup. Nothing a search engine or AI assistant could read as a clean business record.
- Image files
- Uploads went up with names like IMG_0604.jpg and "Untitled design (18).png". Nothing in the filenames said junk removal or Tulsa.
- Hosting and domain
- Site, hosting and domain DNS all lived inside Squarespace. Getting out meant pulling the original photos off Squarespace's image servers before the switch.
What we built
The new site, piece by piece.
- Structure
- 51 pages in the live sitemap: 11 core pages (home, services, pricing, service area, booking, reviews, FAQ, about, contact, commercial, and a junk removal vs dumpster rental comparison), 26 service pages and 14 city pages. Every old Squarespace URL 301-redirects to its new page, and the old /cart goes home.
- Design
- The name is JunkLimo, so the site looks like a limo: near-black paint, chrome trim and gold badging. The gold is sampled from their own black-and-gold logo, which we recovered from the old site. Every number is set in a monospace face so prices read like measurements.
- Published pricing
- All five tiers, from the $85 minimum to $425 for a full load, sit right under the homepage hero and on a gauge that fills as the trailer fills. The prices live in one file that drives the cards, the pricing table and the structured data, and the build fails if anyone types a price anywhere else.
- City pages
- 14 city and neighborhood pages, from Midtown and Brookside to Broken Arrow, Jenks, Owasso and Claremore. Each one is written on its own around real local housing and job types, not a template with the town name swapped in, and each leads with reviews from customers in that area.
- Quote form
- The form emails the lead straight to the owner's inbox from the business's own domain, with the customer's address set as reply-to and the ad click ID, campaign and landing page attached. The customer is told they'll get a text or call with a firm price. If the email can't send, the customer is told to call or text instead. The form never shows a fake success. It works with JavaScript off too.
- Photos by text
- No upload box. The form shows the business number to text photos to, as both a tap-to-text link and plain copyable text, so it works on a phone or a desktop. Photos land in a thread the owner can reply to.
- Tracking
- GA4 and Google Ads run on the live domain only, with form submissions, phone taps and text taps tracked as separate conversions. Microsoft Clarity records sessions with the quote forms masked. Preview builds send nothing.
- Schema
- Every page carries a business record as a service-area business with no street address, plus opening hours and the 14 served cities. Service and Offer markup carries the five load prices as unit price specifications. FAQPage and BreadcrumbList markup sit on top.
- AI search
- robots.txt explicitly allows GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended and CCBot. FAQ answers stay in the page when collapsed, so crawlers read them. The price for every load size is on the page and in the markup, ready for an assistant to quote.
- Build checks
- Three runtime dependencies and no Squarespace scripts. A check runs before every build and fails on a missing image, a photo over 250 KB, a hardcoded price, or hazardous-waste drop-off info written anywhere but its one source file. That file sends customers to the City of Tulsa facility, not the wrong agency.
Old vs new
Side by side.
| Old site | New site | |
|---|---|---|
| Platform | Squarespace | Hand-coded Next.js, three runtime dependencies |
| Pages | 11, no city pages | 51: 11 core, 26 service, 14 city |
| Homepage title | "JUNKLIMO" | "Junk Removal Tulsa, OK | Same-Day Pickup from $85" |
| Meta descriptions | Empty site-wide | Written for every page |
| Structured data | None | Business, Service, Offer with all five prices, FAQPage, BreadcrumbList |
| Images | Mostly AI-generated, default filenames | Real job photos, named for the job and the city, under 250 KB |
| Tracking | Not measured on the old site | GA4, Google Ads conversions for form, call and text, Microsoft Clarity |
| AI crawlers | Not measured on the old site | Eight AI crawlers explicitly allowed in robots.txt |
How a build like this runs, start to finish: See how we work →