Plumber Schema Generator for LocalBusiness JSON-LD
Build Plumber structured data with service areas, opening hours, license credentials, contact details, and service lists for plumbing business pages.
🏪Local Business Schema
Fields marked with * are required for valid schema markup.
JSON-LD Output
<span class=400">"text-gray-500"><script type=400">"application/ld+json"></span>
{
400">"@context": 400">"https://schema.org",
400">"@type": 400">"Plumber"
}
<span class=400">"text-gray-500"></script></span>Copy this code and paste it into the <head> section of your HTML page.
Plumber-Specific Properties
| Property | Type | Example |
|---|---|---|
areaServed | City[] / AdministrativeArea[] | List of cities/ZIPs you serve |
availableService | string[] / Service[] | "Drain Cleaning", "Water Heater" |
hasCredential | string / Credential | License number |
openingHoursSpecification | OpeningHoursSpec[] | 24/7 for emergency plumbers |
paymentAccepted | string | "Cash, Check, Credit Card" |
Copy-Paste Ready Example
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Reliable Rooter Services",
"url": "https://reliablerooter.com",
"telephone": "+1-555-456-7890",
"priceRange": "$$",
"description": "24/7 emergency plumbing services in the Phoenix metro. Licensed, insured, free estimates.",
"image": "https://example.com/plumber-truck.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Industrial Way",
"addressLocality": "Phoenix",
"addressRegion": "AZ",
"postalCode": "85001",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 33.4484,
"longitude": -112.0740
},
"areaServed": [
{ "@type": "City", "name": "Phoenix" },
{ "@type": "City", "name": "Scottsdale" },
{ "@type": "City", "name": "Tempe" },
{ "@type": "City", "name": "Mesa" },
{ "@type": "City", "name": "Glendale" }
],
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
"opens": "00:00",
"closes": "23:59"
},
"availableService": [
"Drain Cleaning",
"Water Heater Installation",
"Sewer Line Repair",
"Leak Detection",
"Fixture Installation",
"Emergency Plumbing",
"Free Estimates"
],
"hasCredential": "Arizona ROC #123456 (Licensed & Insured)"
} Where to Put This Schema
WordPress (most plumbing sites)
Use Yoast SEO Local, Rank Math, or AIOSEO with their LocalBusiness modules — set @type to "Plumber". For custom emergency-services schema, paste directly into functions.php via wp_head action.
Wix / Squarespace
Settings → SEO/Advanced → Code Injection → Header. Paste full script block.
Service-area landing pages
Create dedicated /plumber-[city]/ pages, each with its own Plumber schema scoped to that city via areaServed. This pattern dominates the plumbing local-pack — every major plumbing site does it.
HomeAdvisor / Angi / Thumbtack listings
Those platforms have their own systems — schema on YOUR site drives YOUR ranking, independent of platform listings. Both channels matter; schema is the moat for organic Google traffic.
Plumber Schema Best Practices
- Always use Plumber over generic LocalBusiness — Google understands plumbing-intent better.
- List all served cities/areas in areaServed, not just your home base.
- For 24/7 services, use openingHoursSpecification for all 7 days with 00:00-23:59.
- Include license number in hasCredential — major trust signal.
- List every service (drain cleaning, water heaters, sewer, etc) in availableService — drives matching for service-specific queries.
- Add insurance info to the description text.
- Create per-city landing pages with city-specific schemas. Generic state-wide pages lose to city-specific competitors.
- Use accurate priceRange — $$ for typical residential, $$$ for commercial-focused.
Frequently Asked Questions
Should plumbers use Plumber or HomeAndConstructionBusiness schema?
Plumber is the most specific subtype — use it. HomeAndConstructionBusiness is the parent class. Going specific (Plumber) over generic (HomeAndConstructionBusiness or LocalBusiness) significantly helps Google match plumbing-intent queries.
How do I show 24/7 emergency availability?
Use openingHoursSpecification with all 7 days, opens '00:00', closes '23:59'. Add 'emergency plumber' to keywords and create a dedicated /emergency-plumbing/ page with its own schema emphasizing 24/7 availability.
What's the difference between address and areaServed for plumbers?
address is your physical location (office, dispatch base). areaServed is the geographic radius you actually serve — often much larger than your address. Plumbers typically serve 25-50 mile radius. Use both fields.
Should I list my plumbing license number?
Yes — add as a hasCredential property (EducationalOccupationalCredential). License numbers are a major trust signal and may be required by state contractor licensing boards for online listings.
How do I list services like drain cleaning, water heater, etc?
Use availableService array with each service as a string or Service object. Examples: 'Drain Cleaning', 'Water Heater Installation', 'Sewer Line Repair', 'Leak Detection'. Drives matching for service-specific queries.
Will Plumber schema help me rank for 'plumber near me'?
Indirectly — schema doesn't directly improve ranking but ensures Google has clean data to surface in the local 3-pack. The 'near me' algorithm combines Google Business Profile data, schema, and proximity. All three matter.
Can I list multiple service areas?
Yes — areaServed accepts arrays. List cities, ZIP codes, or counties. Better than a single huge radius. Some plumbers create per-city landing pages (/plumber-denver/, /plumber-aurora/) each with a tighter areaServed.
Should I include free estimate availability?
Yes — add 'Free Estimate' to availableService and mention in description. High-intent query and competitive differentiator. If true, also add to your Google Business Profile attributes.
Related Industry Schemas
- LocalBusiness Hub — other industries
- General Contractor Schema — similar service-area patterns
- Auto Repair Schema — also uses areaServed heavily