vibeyour website Hire us
All prompts
Static HTML/CSS Plumber / Handyman 16.2k chars

Vibe Code a Plumber Website

Free vibe coding prompt to build a plumber website. Emergency click-to-call, service area, instant quote form, and Plumber schema markup. Mobile-first HTML file, ready to deploy.

Tested with: ChatGPT, Claude · Updated 2026-08-11 · License: do whatever you want, it's yours
static-plumber.prompt · 16.2k chars
Build a one-page plumbing / handyman emergency service website as a single
self-contained HTML file (inline CSS and JS, no external dependencies except
Google Fonts and Unsplash images via their CDN).

═══════════════════════════════════════════════════════════════
BUSINESS DETAILS
═══════════════════════════════════════════════════════════════
- Business name: [BUSINESS NAME]
- Owner: [NAME], licensed plumber #[LICENSE NUMBER]
- Years experience: [N]+
- Service area: [CITY + SURROUNDING ZIP CODES / NEIGHBORHOODS]
- Phone (24/7): [PHONE]
- Email: [EMAIL]
- Address: [FULL ADDRESS]
- Hours: 24/7 emergency, business hours [WEEKDAY / SAT / SUN]
- Insured + licensed + bonded
- Services: leak repair, drain cleaning, water heater, toilet, faucet,
 garbage disposal, pipe replacement, sewer line, sump pump
- Booking: quick quote form + click-to-call (call is primary)

═══════════════════════════════════════════════════════════════
BRAND
═══════════════════════════════════════════════════════════════
- Brand colors: deep blue (#0d3b66), urgent red (#e63946) for emergency
 CTAs, warm white (#faf8f3), graphite text (#1a1a1a). Override if user
 provides hex values.

═══════════════════════════════════════════════════════════════
DESIGN DIRECTION
═══════════════════════════════════════════════════════════════
- Mobile-first, function over form. The user is a homeowner panicking on
 their phone, they need to CALL fast. Phone number is visually the
 largest element on every screen.
- Type pairing: bold sans for headings (Inter, DM Sans, or Bricolage
 Grotesque) + Inter for body. NO script fonts.
- Eyebrow labels: uppercase, tracked .18em, blue, prefixed by a 24px CSS
 ::before line.
- Headlines: short, urgent, with ONE italic accent ("Burst pipe? We're
 *on the way*."). Italic word in urgent red.
- High contrast (AA at minimum, AAA where possible). Large tap targets
 (≥56px on mobile). Generous spacing.
- Icon system: 24x24 line icons, fill="none", stroke="currentColor",
 stroke-width 1.8, round caps. Cover: drop, pipe, wrench, faucet, toilet,
 heater, drain, sewer, shield, clock, phone, mail, pin, check, dollar.
- Icon containers: 48x48 rounded squares (8-12px corners) with blue-tinted
 bg, flip to filled blue with white icon on hover.
- Motion: minimal. Only scroll fade-ins and 4px hover lifts. The pulse on
 the emergency phone number is the only animated element.

═══════════════════════════════════════════════════════════════
SECTIONS (in this exact order)
═══════════════════════════════════════════════════════════════

1. EMERGENCY BAR (top, fixed)
 - Red gradient bar, full width
 - "24/7 EMERGENCY" label + HUGE click-to-call phone button on right
 - Pulsing white dot before "24/7 EMERGENCY"
 - Sticky on scroll, always visible

2. FIXED NAV (below emergency bar)
 - White translucent bg + backdrop blur
 - Wordmark left | anchor nav center | "Get a quote" blue pill CTA right
 - On mobile: simpler nav, hamburger menu

3. HERO
 - Large left-aligned: eyebrow ("WE'RE OPEN NOW"), HUGE headline ("Burst
 pipe? *We're on the way.*"), 2-line subhead, two CTAs (red "Call
 [phone]" full-width on mobile, blue-outline "Request quote")
 - Right (desktop): photo (Unsplash: "plumber under sink" or "wrench in
 hand") rounded 12px
 - Below CTAs: trust strip, "Licensed #[NUMBER] • Insured • [YEARS]+
 years • Same-hour response"
 - Mobile: hide photo, stack CTAs full-width, phone number remains
 unmissable

4. SERVICES
 - Eyebrow + headline ("What we *fix*")
 - Auto-fit grid (minmax 240px) of 8 service cards
 - Each: 48x48 blue-tinted icon badge + service name (sans) + 2-line
 description as prose + price-from chip in monospace ("From $89")
 - One card highlighted (red gradient, white text): "Emergency Leak Repair"

5. EMERGENCY CARD (full-width)
 - Red gradient background, white text
 - Eyebrow "AVAILABLE 24/7" with pulsing white dot
 - Massive headline "Burst pipe right now? Call [PHONE]"
 - Sub-headline: response time pledge ("Most calls answered within
 [N] minutes. On-site within [N] hours.")
 - HUGE click-to-call button (red on white) full-width on mobile

6. SERVICE AREA
 - Two-column: text left, simple list right
 - Left: eyebrow, headline ("Serving *[CITY] + surrounding*"), short
 paragraph
 - Right: list of 10-12 neighborhoods / zip codes in 2-column compact
 grid (clickable, anchors to # for now)

7. ABOUT THE OWNER
 - Two-column: owner photo left, text right
 - Right: eyebrow, headline ("[FIRST NAME] has *plumbed [CITY]* since
 [YEAR]"), 2-paragraph story (apprenticeship, family business,
 license prominent), license + insurance details displayed
 prominently in a small card

8. WHY US (TRUST)
 - Eyebrow + headline ("Why [CITY] *trusts us*")
 - 4-column row (stack mobile)
 - Each: 48x48 blue-outline icon badge + bold heading + 1-line subhead
 - Pillars: Licensed & Bonded, Upfront Pricing, Satisfaction Guarantee,
 Locally Owned

9. CUSTOMER REVIEWS
 - 4 quote cards in 2x2 grid
 - Each: oversized opening quotation in muted blue, quote body (specific
 emergency, specific time of day, specific repair, "called at 11pm,
 here by midnight, fixed by 2am", varied lengths), 5 red SVG stars,
 separator, gradient-circle initials avatar + first name + last initial
 + neighborhood ("Westend resident")

10. QUICK QUOTE FORM
 - Two-column: pitch left, form right
 - Left: eyebrow, headline ("Non-emergency? *Request a quote*"), 3
 bullets with check icons ("Free estimate", "No charge if you don't
 approve", "Most jobs same-day")
 - Right: warm-white card with blue border (2px)
 • Fields: full name, phone (LARGEST field, most critical),
 property address, problem description (textarea), photo upload
 (optional, single image), preferred contact time
 • Submit blue button, full-width
 • Inline JS success message (preventDefault)
 - Below form: "For burst pipes or no water, please CALL, we respond
 faster than we read forms."

11. HOURS & SCHEDULING
 - Two-column: hours table left, FAQ-style 24/7 callout right
 - Left: business hours table for non-emergency scheduling
 - Right: red card "24/7 EMERGENCIES: any time, any day, any season"
 with HUGE click-to-call number below

12. FAQ
 - 6 collapsible <details>: "What's the after-hours rate?", "Do you
 give estimates over the phone?", "Are you licensed and insured?",
 "Do you do commercial?", "How quickly can you arrive?", "Payment
 methods?"

13. STICKY MOBILE BOTTOM BAR
 - One HUGE red click-to-call button: "Call now [PHONE]", full width

14. FOOTER (deep blue)
 - Centered wordmark + license number prominently
 - Below: HUGE phone number (click-to-call) for mobile users
 - Italic serif tagline (NOT handwritten, e.g., "Local plumbers since
 [YEAR]")
 - Bottom: address + license # + "Licensed, Bonded, Insured" + BBB
 typeset name + copyright

═══════════════════════════════════════════════════════════════
TECHNICAL REQUIREMENTS
═══════════════════════════════════════════════════════════════
- Single index.html, no build step
- JSON-LD `Plumber` schema in <head> with name, address, telephone,
 openingHours: ["Mo-Su 00:00-23:59"], areaServed (list of zips/cities)
- Lighthouse Performance score MUST be 95+. Critical CSS inlined, minimal
 JS, no external libraries.
- Real Unsplash images via CDN with ?w=800&q=75&auto=format&fit=crop
 (lower q for performance)
- Hero loading="eager", everything else "lazy"
- tel: links on EVERY phone occurrence; phone visually 60-72px on mobile,
 always tappable
- Sticky bottom mobile bar with single Call CTA
- Responsive at 900px and 500px breakpoints
- Tap targets ≥56px (panicked thumbs)
- Semantic HTML5; aria-labels on icon-only links
- WCAG AAA contrast on emergency text where possible
- Favicon: inline SVG data URI (wrench or drop mark)

═══════════════════════════════════════════════════════════════
COPY VOICE
═══════════════════════════════════════════════════════════════
Direct, urgent, plain. Speak as a calm professional to a panicking
homeowner. Use clear time pledges ("Within the hour", "Same day"). Specific
over generic ("Sewage backup, frozen pipe, no hot water, call us first" - 
not "any plumbing problem"). Headlines short and active. Body copy short
sentences. Testimonials should feel like real Google reviews, specific
time of day, specific repair, varied lengths.

═══════════════════════════════════════════════════════════════
ANTI-PATTERNS TO AVOID
═══════════════════════════════════════════════════════════════
- No emojis (including the wrench / water-drop / fire emojis)
- No script/handwritten fonts
- No cartoon plumber mascots or comic illustrations
- No fake stock photos of "happy homeowner" + "smiling plumber"
- No "Award-winning plumber" Yelp-badge graphics, use typeset names
- No "passion for plumbing" or "love what we do" filler
- No animated dripping faucets or bouncing icons
- No bullet lists in card copy (write as prose)
- No exclamation marks except in emergency callouts
- No bright corporate-blue gradients that look like utility company sites


═══════════════════════════════════════════════════════════════
SEO & DISCOVERABILITY
═══════════════════════════════════════════════════════════════
Implement all of the following so the page ships production-ready for search
engines and social sharing. This is not optional; treat it as part of the
build, not an afterthought.

DO NOT INVENT DATA: never fabricate business names, addresses, phone or email, license or certification numbers, coordinates, prices, reviews or ratings, team members, photos, press mentions, or results and stats. If a detail is not provided, leave a clearly labeled {{TODO: ...}} placeholder — never a plausible-looking fake. Any form must POST to a real endpoint (Formspree, Web3Forms, Basin, or similar) or fall back to a mailto:/tel: link — never show a fake "success" message with no backend. Wrap every motion effect in @media (prefers-reduced-motion: reduce), and make sure any accent color used for text, links, or prices meets WCAG 2.2 AA contrast against its background.

1. TITLE TAG & META DESCRIPTION
   - <title> tag: "[Business Name] - [Primary Service] in [City]" (under 60 chars)
   - <meta name="description"> 150-160 chars, include the city/area, primary
     service, and a call to action (e.g., "Book online" / "Call now")
   - <meta name="robots" content="index, follow">

2. OPEN GRAPH & TWITTER CARDS
   - og:title, og:description, og:image (hero image), og:url, og:type=website
   - twitter:card=summary_large_image, twitter:title, twitter:description,
     twitter:image
   - Place all OG/Twitter meta in <head>

3. STRUCTURED DATA (JSON-LD)
   - Insert a <script type="application/ld+json"> block in <head> with
     @type: "Plumber" schema
   - Include: name, description, url, telephone, email, address
     (streetAddress, addressLocality, addressRegion, postalCode,
     addressCountry), image. Add geo, openingHoursSpecification, and priceRange ONLY when the user supplied real values — never invent them; and do NOT output aggregateRating or Review markup unless the user provides real, verifiable reviews (fabricated ratings violate Google's structured-data spam policy)
   - Add BreadcrumbList schema: Home > [Category] > [Business Name]
   - If the page has a FAQ section, add FAQPage schema with every Q&A pair

4. HEADING HIERARCHY FOR SEO
   - Exactly ONE <h1> per page — use the real, human headline the design calls for; put keywords in the <title> and meta, not the visible H1
   - Logical H2 > H3 nesting for every section; never skip a level
   - Section headings should include secondary keywords naturally
     (keep the section's real, human label; put keywords in the title and meta, not stuffed into headings)

5. IMAGE SEO
   - Every <img> must have a descriptive alt attribute that includes
     relevant keywords (NOT just "image1.jpg")
   - Format: alt="[what the image shows] - [Business Name] in [City]"
   - Use the client's own images, or neutral solid/gradient placeholders with a visible "replace with your photo" note — never hardcode Unsplash photo IDs (they often resolve to the wrong or trademarked image). Always set width + height (or aspect-ratio) to prevent layout shift

6. LOCAL SEO SIGNALS
   - Include full NAP (Name, Address, Phone) in the footer, matching the
     schema data exactly
   - Add a link to Google Maps with the business address
   - Use location-specific keywords in at least 3 section headings
   - If the page has testimonials, include the reviewer's city/area

7. TECHNICAL SEO
   - Canonical tag: <link rel="canonical" href="[PAGE URL]">
   - Language: <html lang="en">
   - Charset: <meta charset="UTF-8"> + viewport meta (already required)
   - All internal anchor links use descriptive text (not "click here")
   - Loading performance: critical CSS inline, fonts via display=swap,
     hero image eager, everything else lazy
   - Keep the CSS and JS readable and editable — do NOT minify (this file is meant to be customized by the owner)

8. CONTENT SEO SIGNALS
   - Write real, useful body copy (not just headings and bullet points).
     Each major section should have at least one paragraph of 2-3 sentences
     that describes the offering in natural language a search engine can parse.
   - Use the primary keyword once or twice where it reads naturally; keep the rest in the title tag and meta description, never stuffed into copy.
   - Include a clear call-to-action with anchor text that includes the
     service keyword (e.g., "Book your appointment" not "Click here").

═══════════════════════════════════════════════════════════════
DELIVERABLE
═══════════════════════════════════════════════════════════════
One polished HTML file (~50-60KB, performance-optimized), production-ready.
Include JSON-LD schema. Phone number must be the most prominent element on
every viewport. Show the file as a single code block and briefly
summarize the design decisions made.

This prompt builds a mobile-first website for a plumber or handyman service in one pass: a giant tap-to-call button, an emergency hero, a services list, a service-area map, and license and insurance details. Paste it into ChatGPT or Claude and you get a single self-contained HTML file, ready to open in a browser and put online the same day. Every choice in the layout points a stressed homeowner toward one action, tapping your number, because that is where a service call actually starts.

What does the plumber website prompt build?

The spec is designed around one goal, getting a homeowner to call fast: a navigation bar with a giant phone number, a hero with an emergency call to action, a services section, a service-area map or ZIP list, a trust band for license and insurance, testimonials, an FAQ on pricing and response time, and a quick quote form for non-urgent jobs. The whole thing loads fast because it is one file, not a plugin-heavy build. If you would rather steer the edits by chatting with an AI, our guide to build it with Claude walks through it.

Who is this plumber prompt for?

It is built for plumbers, handymen, HVAC techs, electricians, and drain and sewer pros who run on emergency calls. Other trades use the same playbook; the auto repair shop prompt is a close relative for shops that live on the phone. If you would rather not build it yourself, we build static sites for a flat fee.

What’s inside the prompt?

  • Business details block for company name, service area, hours, and phone
  • Giant click-to-call button in the hero and pinned in the mobile navigation
  • Services list covering repairs, installs, and emergency work
  • Service-area section listing the towns, boroughs, or ZIP codes you cover
  • License and insurance band for your license number, bonding, and coverage
  • Plumber JSON-LD schema plus title tag, meta description, and local signals
  • Anti-pattern list that blocks emojis, script fonts, and generic stock photos

Frequently asked questions

Does the site have an emergency click-to-call button?

Yes. A large call button is the primary action in the hero and sticks to the mobile navigation as the visitor scrolls, because a homeowner with a burst pipe wants to dial you in one tap, not stop to fill out a form.

Can I show the areas or ZIP codes I serve?

The service-area section lists the towns, boroughs, or ZIP codes you cover, and that same information feeds the local SEO signals, so nearby homeowners are the ones who find you first.

Where do my license and insurance details go?

There is a trust band for your license number, bonding, and insurance coverage, which reassures a homeowner before they agree to let a stranger into their home for a repair. It is also the detail insurers and property managers check first.

Will it help me rank for “emergency plumber near me”?

The prompt outputs Plumber structured data with your service area, hours, and phone, plus location wording in the copy, so search engines and AI assistants can match urgent local queries to your business.

Can visitors still request non-urgent work?

Alongside the call button, a quick quote form captures details for scheduled jobs like water-heater swaps or a bathroom remodel, so you catch planned work as well as the 2 a.m. emergencies. Both paths land in your inbox with the details you need to price the job.

How to actually run this.

01

Copy the whole thing

All of it. Do not trim it down, every line is in there for a reason.

02

Swap in your details

Find the BUSINESS DETAILS part and drop in the real business. Name, what they do, all of it.

03

Paste and wait

Drop it into Claude for the first pass, or v0 if it is a landing page. Give it a minute.

04

Clean it up

Tweak the boring 10 percent. Spacing, mobile, that one cringe line. Ship it.

What’s next: from generated code to a website that works

The prompt did the hard 90 percent. What’s left is the boring 10 percent that turns a folder of code into a site people can actually find and trust. Here’s the whole checklist, in order.

1. Buy a domain

Grab your name at a registrar like Namecheap, Cloudflare, or Porkbun — about $10 to $15 a year for a .com. Skip the ten-year prepay and the upsells; you just need the domain and, ideally, the free WHOIS privacy most registrars now include.

2. Put it online

If the AI built you a static site (HTML, CSS, and JavaScript), you can host it for free: drag the folder into Netlify or Vercel, or connect a GitHub repo, then point your domain at it. If it built a WordPress theme, you need WordPress hosting — pick a managed host, install WordPress, upload the theme, and connect the domain. Either way, turn on HTTPS; it’s free and automatic on every modern host.

3. Wire up the parts AI skips

Generated sites almost always ship with a contact form that goes nowhere and a fake “success” message. Connect it to a real endpoint (Formspree, Web3Forms, or a plain mailto link) so leads actually reach you. While you’re in there: add a favicon, swap the placeholder images for your own compressed photos, and open the site on your phone to catch whatever breaks on a small screen.

4. Do the basic SEO and AI-search setup

This is what gets you found on Google and cited by ChatGPT, Perplexity, and AI Overviews. The essentials: a unique title tag and meta description on every page, one clear topic per page, an XML sitemap submitted to Google Search Console, basic structured data (Organization and FAQ schema), and an llms.txt file so AI crawlers can read you. If that reads like a foreign language, our SEO optimization service does it as a flat-fee pass, and our free SEO checklist walks the DIY route step by step.

5. Make it fast

AI builders love shipping four-megabyte images and render-blocking scripts. Compress your images, lazy-load anything below the fold, and run the page through PageSpeed Insights until Core Web Vitals turn green — speed lifts both rankings and conversions, so it’s the rare fix that pays twice. Our speed optimization service handles it if you’d rather not.

6. Get found locally, and measure it

Add analytics (GA4, or a lighter option like Plausible) so you can see what’s working instead of guessing. If you serve a local area, set up a Google Business Profile and use the exact same business name, address, and phone number everywhere — that consistency is what lands you in the map pack and in local AI answers.

7. Keep it alive

A website isn’t set-and-forget, especially on WordPress. Budget for backups, security, and updates so a routine plugin update doesn’t take the site down six months from now. Our care plans cover all of it from $290 a month, or you can do it yourself — you own all the code either way.

When it’s worth handing off

If any of these steps stall you — and hosting, DNS, and SEO stall a lot of people — that’s exactly what we’re for. We build the whole thing at a flat fee, ship it live, and hand you the code on GitHub, having read every line the AI wrote. Or take the free prompts and run with it yourself. Both outcomes are genuinely fine with us.

More from the stash.

You read. We build.

No free weekend? We will build it for you.

This is the exact prompt we would use. Flat fee, real deadline, code is yours.

Have us build this one Fixed fee · Fixed timeline