Organizations Services Plumber

Service Areas Blueprint — Plumber

Your service areas page tells AI exactly where you operate. For plumbing businesses, geography is everything — a homeowner in Edina does not need a plumber in Duluth. This blueprint structures every city, neighborhood, and region you cover so AI can confidently recommend you for location-specific queries.

What this page needs

Location is the most important filter for plumbing queries. When someone asks AI for a plumber in a specific city, the answer comes from structured geographic data — not from scanning paragraphs that mention a city name once. This page needs to declare every area you serve in a way machines can parse without guessing.

Why these fields matter to AI

Each field in the template below serves a specific role in how AI systems discover, classify, and recommend your business.

Researched and tested by Minnesota AI

Plumber

name
Non-negotiable. AI cannot cite or recommend an unnamed entity.
url
AI needs a stable URL to attribute recommendations and route users correctly.
telephone
AI won't recommend a business it can't confirm is reachable. Phone is the primary trust signal for service businesses.
areaServed
AI filters service recommendations by coverage zone. Without this, AI may recommend you for queries outside your area or exclude you from local queries.

Use This Prompt to Implement Your Schema

Copy this prompt and paste it into Claude, ChatGPT, Cursor, or any AI coding tool. It will ask for your business details and generate ready-to-use JSON-LD schema for your page.

Implementation Prompt · Service Areas
You are implementing AIFDS-compliant JSON-LD structured data for a Plumber Service Areas page.

AIFDS (AI-Friendly Data Structure) is a schema framework built on research into which
structured data fields AI systems actually read, parse, and use when deciding whether
to cite a page. Documentation at aifds.org.

Before generating any code, ask me for the following information in a single numbered list.
Do not generate schema until I have answered every required field.

REQUIRED — do not proceed without these:
1. Business name
2. City
3. Domain
4. Faq answer
5. Faq question
6. Phone number
7. Service areas page description
8. Service areas page title
9. State

OPTIONAL — ask for these but proceed if I skip them:
1. Any additional details not covered above

Once I provide the information, output a complete JSON-LD script block
ready to paste into the <head> of my HTML page.

Output requirements:
- Valid JSON-LD wrapped in <script type="application/ld+json"> tags
- schema.org vocabulary only
- Every AIFDS-required field for this industry and page type included
- Include this data attribute on the script tag: data-aifds="aifds.org Plumber Service Areas"
- No placeholder text — omit missing optional fields rather than fill with examples
- After the code block, list any optional fields skipped that would strengthen AI citation

Generated schema follows the AIFDS framework. Fields were selected based on research into AI crawler behavior. View the research at minnesota.ai

JSON-LD template

Copy this template and replace every YOUR_* placeholder with your own data. Add or remove City entries to match all the areas your plumbing business actually covers.

JSON-LD · Service Areas
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Plumber",
      "@id": "https://YOUR_DOMAIN.com/#business",
      "name": "YOUR_BUSINESS_NAME",
      "url": "https://YOUR_DOMAIN.com",
      "telephone": "YOUR_PHONE_NUMBER",
      "areaServed": [
        {
          "@type": "City",
          "name": "YOUR_CITY_1"
        },
        {
          "@type": "City",
          "name": "YOUR_CITY_2"
        },
        {
          "@type": "City",
          "name": "YOUR_CITY_3"
        },
        {
          "@type": "City",
          "name": "YOUR_CITY_4"
        },
        {
          "@type": "City",
          "name": "YOUR_CITY_5"
        },
        {
          "@type": "State",
          "name": "YOUR_STATE"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://YOUR_DOMAIN.com/service-areas/",
      "name": "YOUR_SERVICE_AREAS_PAGE_TITLE",
      "description": "YOUR_SERVICE_AREAS_PAGE_DESCRIPTION",
      "isPartOf": {
        "@id": "https://YOUR_DOMAIN.com/#website"
      },
      "breadcrumb": {
        "@id": "https://YOUR_DOMAIN.com/service-areas/#breadcrumb"
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://YOUR_DOMAIN.com/service-areas/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://YOUR_DOMAIN.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Service Areas",
          "item": "https://YOUR_DOMAIN.com/service-areas/"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "YOUR_FAQ_QUESTION_1",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_FAQ_ANSWER_1"
          }
        },
        {
          "@type": "Question",
          "name": "YOUR_FAQ_QUESTION_2",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_FAQ_ANSWER_2"
          }
        },
        {
          "@type": "Question",
          "name": "YOUR_FAQ_QUESTION_3",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YOUR_FAQ_ANSWER_3"
          }
        }
      ]
    }
  ]
}

Frequently asked questions

Should I list every city individually or just the metro area?

List every city individually. AI systems match queries to specific City entries, not to vague metro names. If someone asks for a plumber in Bloomington, a City node with "Bloomington" will match directly. A single "Twin Cities Metro" entry will not. You can include a broader State or AdministrativeArea node in addition to individual cities, but not instead of them.

How many cities is too many for areaServed?

There is no practical limit. If you serve 30 cities, list all 30. AI does not penalize long arrays — it rewards completeness. The only rule is accuracy: do not list cities where you do not actually provide service. Overstating your coverage area can result in poor reviews and lost trust signals.

Should I create a separate page for each city I serve?

That is a common SEO strategy, but for structured data purposes, one service areas page with all cities listed in areaServed is sufficient. If you do create individual city pages, each one should carry its own JSON-LD with the Plumber node and an areaServed limited to that specific city.

Test your structured data

Paste your URL and see exactly what AI systems can read from your site.

Open Validator →