Structured dataBeginner

BlogPosting Schema

BlogPosting is the Schema.org Article subtype for blog posts, carrying headline, dates, images, author and publisher for each post on a company blog.

Also called: BlogPosting structured data

BlogPosting is a subtype of Article (via SocialMediaPosting) intended for blog entries. Google documents it alongside Article and NewsArticle and handles it the same way. For a SaaS company blog, it is usually the most accurate type to output from the post template, connecting each post to its author, publisher and site.

A practical BlogPosting block

Beyond Google's recommended Article properties, a few others help describe the post: publisher referencing the Organization, mainEntityOfPage pointing to the post URL, and description matching the post summary. Keep everything sourced from the same CMS fields that render the page.

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Webhook retries explained",
  "datePublished": "2026-05-20T08:00:00Z",
  "author": { "@id": "https://www.drumlinworks.example/authors/li-wen/#person" },
  "publisher": { "@id": "https://www.drumlinworks.example/#org" },
  "image": "https://www.drumlinworks.example/img/webhooks.png",
  "mainEntityOfPage": "https://www.drumlinworks.example/blog/webhook-retries"
}

When to use Article instead

Not everything on a blog is a blog post in the editorial sense. Research reports, documentation and evergreen guides can use Article or TechArticle. The practical effect in Google is the same; the point is describing the content honestly, which helps any parser that does distinguish them.

Listing pages

Blog index and category pages are collections, not posts. Avoid outputting BlogPosting there. A CollectionPage with an ItemList of post URLs is the accurate description, though Google does not use it for a rich result on blog listings.

Example

Template-level implementation

A developer tools company, Drumlinworks, adds BlogPosting to its Next.js post template. The component reads frontmatter for title, date, author slug and cover image, references the author and publisher by @id, and runs in a CI check that validates the JSON on a sample of posts.

Common mistakes

Marking up the blog index as a BlogPosting

Listing pages hold many posts. Marking them as one post misdescribes the page.

Questions

No documented difference exists in Google. Choose the type that best describes the content.

Know the terms. Now win the searches.

We find the searches your buyers make, then build, publish and improve the pages that win them.