301 vs 302 Redirects: When to Use Each and Mistakes to Avoid
301 redirect or 302? The difference, how Google treats each, Apache and nginx code, a redirect map and the mistakes that cost you traffic.
Key takeaways
Structured data schema in JSON-LD is a block of code on your page that tells search engines exactly what the content represents: a company, an article, a product, a navigation trail. It uses the schema.org vocabulary, and Google recommends the JSON-LD format. The markup does not guarantee rich results and is not a direct ranking factor, but it removes ambiguity and can make a page eligible for certain search features.
In 2026 the picture has changed: Google retired FAQ rich results, after having dropped HowTo earlier. Schema is not useless because of that, but the priorities shift. Below you will see which types are worth implementing, what the code looks like for a company, an article and a product, how to validate everything and which mistakes appear most often. Correct implementation is part of technical SEO, and if you want a starter snippet fast, use our schema generator.
Structured data is information about a page written in a standardized vocabulary so machines can read it without interpreting the prose. That vocabulary is schema.org, founded by Google, Microsoft, Yahoo and Yandex. It defines types (Organization, Product, Article) and properties (name, url, price).
JSON-LD (JavaScript Object Notation for Linked Data) is the format you write that vocabulary in. It sits inside a <script type="application/ld+json"> element, separate from the visible HTML. The alternatives, Microdata and RDFa, attach directly to page elements. Google supports all three but recommends JSON-LD because it is easier to maintain: you change one block instead of dozens of attributes in a template.
Three things to keep in mind:
Google’s feature gallery now includes, among others, Article, Breadcrumb, Local business, Organization, Product, Review snippet, Video, Event, Recipe and Software app. For most service sites and stores, the practical list is shorter:
| Schema.org type | What you use it for | Notes |
|---|---|---|
Organization | Company identity: name, logo, official profiles (sameAs) | On the homepage or the About page |
LocalBusiness | Businesses with an address and opening hours | Complements your Google Business Profile |
Article / BlogPosting | Articles: headline, author, publication dates | Author and dates also visible on the page |
BreadcrumbList | A page’s position in the hierarchy | May appear in results in place of the URL |
Product + Offer | Products with price, stock, reviews | Essential for stores |
Person | The author or specialist | Supports trust signals |
FAQPage | Questions and answers visible on the page | Rich result retired in May 2026 |
About FAQ: according to Google’s documentation, FAQ rich results stopped appearing in Search in May 2026. Since 2023 they had been limited to well-known government and health sites, and HowTo rich results had been retired in 2023 as well. If you already have FAQPage markup, there is no urgency to delete it. If you were planning it now purely for rich results, it is no longer worth it. The questions remain useful as reader-facing text, and clear structure helps with being cited, a topic covered in our guide to GEO for AI search.
The procedure is the same for every type.
Dentist rather than LocalBusiness, if schema.org has it).@id so you do not repeat the same data and so you show relationships (an article written by a person and published by a company).<head> or <body>; both are accepted.<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://www.example.com/#organization",
"name": "Example LLC",
"url": "https://www.example.com/",
"logo": "https://www.example.com/img/logo.png",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://www.facebook.com/example"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+40-700-000-000",
"contactType": "customer service",
"areaServed": "RO",
"availableLanguage": ["ro", "en"]
}
}
</script>Schema.org also has properties for tax identifiers (vatID, taxID) and for the address (address with PostalAddress), which are useful for companies. Use them only with real data that matches your Contact page. For companies registered in Romania, that means the same legal name, VAT number and address you show to customers.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Article headline",
"datePublished": "2026-08-18T09:00:00+03:00",
"dateModified": "2026-08-18T09:00:00+03:00",
"image": "https://www.example.com/img/article.jpg",
"author": {
"@type": "Person",
"name": "First Last",
"url": "https://www.example.com/team/first-last/"
},
"publisher": { "@id": "https://www.example.com/#organization" },
"mainEntityOfPage": "https://www.example.com/blog/article-headline/"
}
</script>Notice that the publisher is only a reference to the entity defined above through @id. The author, dates and headline must appear identically on the page; for building author credibility, see our E-E-A-T guide.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Ergonomic school backpack",
"image": ["https://www.example.com/img/backpack.jpg"],
"description": "Backpack with an orthopedic back panel, 18 liters.",
"sku": "GH-018",
"brand": { "@type": "Brand", "name": "Example" },
"offers": {
"@type": "Offer",
"url": "https://www.example.com/ergonomic-backpack/",
"priceCurrency": "RON",
"price": "249.00",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
</script>The price and availability in the markup must match the page and your product feed. For stores, more on page structure is in our ecommerce SEO guide. For local firms, the LocalBusiness type complements local SEO.
Where you generate JSON-LD matters for maintenance, not for Google.
When a page contains several entities (company, website, page, author, article), you can group them in one block with @graph and link them through @id. Each entity gets a stable identifier, usually the page URL plus a fragment (#organization, #author). The benefit: you state once who the company is and reference it everywhere, instead of repeating the name and address in every block. Fewer copies mean fewer inconsistencies, and inconsistencies are the usual source of misread markup.
A wrong markup can stay invisible until you test it. The recommended routine:
The difference between an error and a warning: an error means a required property is missing and the page is not eligible; a warning flags a missing recommended property, and the page may stay eligible.
There is a lot of talk about schema as a “language for AI.” A little caution helps here. Google’s documentation says structured data helps it understand content, and in its guidance for AI features in Search it stresses that markup should match the visible text. It also states that structured data is not required for its generative AI features and that no special schema.org markup is needed.
The honest summary: schema clarifies entities (who you are, what you sell, who wrote it), and clarity cannot hurt. But do not treat it as a switch. What an AI system cites comes mainly from visible, well-structured, trustworthy content; see how to become a cited source in Google AI Overviews and how to measure visibility in ChatGPT and AI search.
offers without price or priceCurrency." in code.Not every page needs schema, and a few limits are worth knowing:
Organization and a BreadcrumbList cover most of the practical value.A realistic plan for the next few days:
Organization with a logo, sameAs and real contact details.Article with author, dates and image, linked to the company through @id.BreadcrumbList; on stores, add Product with Offer.If you want the implementation, validation and monitoring handled for your site, see our technical SEO service or reach us through contact.
Frequently asked questions
Schema.org is the vocabulary: the list of types (Organization, Product, Article) and properties (name, price). JSON-LD is the format you write that vocabulary in, as a JSON block inside a script tag. The same vocabulary can also be written in Microdata or RDFa, but Google recommends JSON-LD.
Not directly. Google says it helps understand the page and can make it eligible for rich results, with no guarantee of display. Any benefit comes from clarity and from the click-through rate of rich results, where Google still shows them.
Yes, Google supports JSON-LD generated dynamically with JavaScript. Markup in the server-delivered HTML is more reliable, though, because it does not depend on rendering. If you use Tag Manager, test with URL Inspection to confirm Google actually sees the markup.
Pick a single source. Duplication creates conflicting entities, such as two Organization or two Article blocks with different data. Turn off schema in either the theme or the plugin, then confirm in the Rich Results Test that one consistent set of entities remains on the page.
You can keep it or remove it; removal is not required. The markup is still valid schema.org, and other systems may read it. What matters is that the questions and answers are visible on the page as useful text for readers, not only present in the code.
Related service
Keep reading
301 redirect or 302? The difference, how Google treats each, Apache and nginx code, a redirect map and the mistakes that cost you traffic.
Canonical tag explained: how Google handles duplicate content, when to use rel=canonical, code examples, store scenarios and mistakes to avoid.
Site migration SEO without traffic loss: URL inventory, 301 redirect map, staging tests, launch checklist, monitoring and the mistakes that cost the most.
Send us your website address and we’ll reply with a free initial analysis and a concrete SEO strategy — no strings attached.