Output mode
Import existing JSON-LD(paste code or read it from a URL)
Paste ContactPage JSON-LD (an @graph with the Organization works best) to load the page, organization and contact points.
Page information
Organization & contact points
Address, hours & profiles
Address
Opening hours
An Organization has no opening hours, so these are written as hoursAvailable on each contact point.
Social profiles (sameAs)
- Add the page URL.
- Add the organization name.
- Add at least one phone number or email.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ContactPage"
}
</script>How to use
Auto-fill or load an example
Paste your contact page URL and press Auto-fill from URL, or load the Small business, SaaS company or Multi-department example. Keep Recommended mode unless your organization markup is elsewhere.
Add contact points
Fill the organization name, URL and logo. For each department, press Add contact point and set the type, phone with country code, email, languages and area served.
Copy and test
Add address, hours and profiles if you like, check the Validation panel, press Copy script and paste the block on your contact page. Use Test in Google Rich Results Test or Validate at validator.schema.org to check it.
Why Contact Page Schema Generator
- Links the ContactPage to your Organization or LocalBusiness by @id.
- One ContactPoint per department: sales, support, billing and more.
- Address, opening hours and sameAs profiles on the organization.
- Three ready examples, plus import of existing JSON-LD.
Three contact page schema examples
The example buttons in the tool load these three setups. Each output is an @graph with a ContactPage and an Organization, linked through the organization @id built from the site's root URL.
Every example uses placeholder names and .example domains, so replace the names, numbers and addresses with your own before publishing. The structure stays the same whether you have one contact point or ten.
| Example | Contact points | What stands out in the JSON-LD |
|---|---|---|
| Small business (plumber) | customer support with phone and email, languages English and Spanish, area US | availableLanguage becomes an array of two languages |
| SaaS company | sales with phone and email; technical support with email only | A ContactPoint can carry just an email |
| Multi-department firm | sales, customer support, billing and media | Four ContactPoints; media has no phone |
ContactPage, Organization contactPoint or LocalBusiness
Contact details can live in three places, and they work together rather than replacing each other.
A common setup is an Organization with contact points on the homepage, the same organization @id referenced from the ContactPage, and LocalBusiness on each location page if you have premises. Recommended mode writes the first two pieces for the contact page; the Local Business Schema Generator covers the third.
Whichever pieces you use, keep the phone numbers and emails identical in all of them.
| Markup | What it describes | Where it goes |
|---|---|---|
| ContactPage | The contact page as a web page | The contact URL only |
| Organization with contactPoint | How to reach each department | Homepage or contact page, one consistent copy |
| LocalBusiness | A place customers visit, with address and hours | Homepage or each location page |
Mistakes to avoid
These are the problems seen most often in contact page markup.
Validators check syntax, not accuracy, so they slip through easily. Compare the output with the visible page before you publish, and update the markup whenever a number or email changes.
- Phone numbers without a country code.
- Contact points in the markup that are not shown on the page.
- A second Organization block on the contact page with a different name or logo from the homepage one.
- ContactPage used on a page that is mainly a sales landing page with a form.
- Old phone numbers left in the markup after the page was updated.
- Emails written with a mailto: prefix inside the email property, which should hold only the address.
Common questions
What is a contact page schema example I can start from?
What does ContactPage schema do for SEO?
What is the difference between Recommended and Page only mode?
How do I add several departments to ContactPage JSON-LD?
How does the contact page generator find my phone number?
Can a ContactPoint list more than one language?
Should phone numbers in contact schema include the country code?
Does ContactPage markup help local SEO?
Why put contact schema on the contact page rather than the homepage?
How do I add opening hours to ContactPage markup?
More Schema tools
View allAutomatic Schema Markup Generator
Crawl your site, auto-detect + generate JSON-LD for every page
Schema Markup Generator
JSON-LD or microdata for 10 types, plus a validator
FAQ Schema Generator
Build FAQPage JSON-LD by hand, paste or URL import
Article Schema Generator
Build Article, BlogPosting or NewsArticle JSON-LD