# og:type is set appropriately per content type

- **Pattern:** `ab-001809` (`marketing-social-sharing.open-graph.og-type-appropriate`)
- **Severity:** medium
- **Lifecycle:** active
- **Last modified:** 2026-04-18
- **Canonical URL:** https://auditbuffet.com/patterns/ab-001809
- **License:** CC-BY-4.0 — attribute to AuditBuffet Pattern Catalog (https://auditbuffet.com/patterns/ab-001809)

## Why it matters

Setting og:type correctly unlocks platform-specific display features. Facebook and LinkedIn parse `og:type: 'article'` to expose article-specific properties — `article:published_time`, `article:author`, and `article:section` — which enable richer presentation in article feeds and content discovery systems. When blog posts use `og:type: 'website'`, these article-specific fields are ignored even if present, and the platform cannot categorize the content correctly. Per ogp.me, the type field is mandatory for structured content; the default `website` type is a catch-all that opts the content out of article-specific distribution features. The findability impact is real for content-driven sites dependent on social amplification.

## Severity rationale

Medium because incorrect og:type causes article pages to be classified as generic websites, forfeiting article-specific display features on Facebook and LinkedIn without breaking the share entirely.

## Remediation

Set `og:type: 'article'` at the blog route level, not in the root layout. Override per page type:

```ts
// app/blog/[slug]/page.tsx
openGraph: {
  type: 'article',
  publishedTime: post.publishedAt,
  authors: [post.authorUrl],
  section: post.category,
}
```

For marketing pages, landing pages, and the homepage, omit `og:type` entirely or set `type: 'website'` explicitly. Never set `type: 'article'` in `app/layout.tsx` — it will misclassify every page in the site.

## Detection

- **ID:** `og-type-appropriate`
- **Severity:** `medium`
- **What to look for:** Check `og:type` values across different page sections. The default `og:type` is `"website"`, which is acceptable for most pages. However, blog posts and articles should use `"article"`, and product pages may use `"product"`. Look for `metadata.openGraph.type` in page or layout files. Check if any blog/news/article route sections set `og:type: "article"`. Count all instances found and enumerate each.
- **Pass criteria:** Article or blog post pages use `og:type: "article"`. All other pages use `og:type: "website"` or omit the field (defaulting to `"website"`). The root layout or any section does not set `og:type: "article"` for non-article pages. At least 1 implementation must be confirmed.
- **Fail criteria:** Blog or article pages use `og:type: "website"` (or omit it) when they should be `"article"`, OR `og:type: "article"` is set on a root layout that applies to all pages indiscriminately.
- **Skip (N/A) when:** The project has no blog, news, or article content section.
- **Detail on fail:** `"Blog route section uses og:type='website' — article pages should set og:type='article' to enable article-specific features on Facebook and LinkedIn"` or `"Root layout sets og:type='article' — this incorrectly classifies non-article pages"`
- **Remediation:** The `og:type` value affects how platforms like Facebook and LinkedIn parse and display your content. Article pages with `type: "article"` can include `article:published_time`, `article:author`, and `article:section` properties which enhance display:

  ```ts
  // app/blog/[slug]/page.tsx
  openGraph: {
    type: 'article',
    publishedTime: post.publishedAt,
    authors: [post.authorUrl],
    section: post.category,
  }
  ```

  For landing pages, marketing pages, and the homepage, omit `og:type` or explicitly set `type: 'website'`.

## External references

- external ogp.me — https://ogp.me/#types

Taxons: findability

HTML version: https://auditbuffet.com/patterns/ab-001809
