PublicationEvent
PublicationEvent is an Event subtype for the publication or release of a creative work: a book launch, a film release, an album drop, a broadcast premiere. It has 2 properties of its own: publishedBy (the agent behind the publication) and publishedOn (the broadcast service or platform). PublicationEvent works for any CreativeWork type, not just books.
The type hierarchy is Thing → Event → PublicationEvent. It has 2 subtypes: BroadcastEvent (for live broadcasts with 4 additional properties) and OnDemandEvent (for on-demand releases with no additional properties). The creative work references back to its publication via releasedEvent on Movie, publication on CreativeWork, or datePublished for the simple case.
Full example of schema.org/PublicationEvent json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@id": "https://xoofilms.dk/the-childrens-doctor/release-nordic-stream#publication",
"@type": "PublicationEvent",
"name": "The Children's Doctor: Nordic Streaming Release",
"url": "https://xoofilms.dk/the-childrens-doctor/release",
"description": "Streaming premiere of The Children's Doctor documentary on NordicStream. Available with Danish audio and English, Swedish, and Norwegian subtitles.",
"image": "https://xoofilms.dk/the-childrens-doctor/release-banner-16x9.jpg",
"startDate": "2026-11-01",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
"@type": "VirtualLocation",
"url": "https://nordicstream.dk/watch/the-childrens-doctor"
},
"publishedBy": {
"@type": "Organization",
"name": "Xoo Films ApS",
"url": "https://xoofilms.dk"
},
"publishedOn": {
"@type": "BroadcastService",
"name": "NordicStream",
"url": "https://nordicstream.dk",
"broadcastDisplayName": "NordicStream"
},
"workFeatured": {
"@id": "https://xoofilms.dk/the-childrens-doctor#movie",
"@type": "Movie",
"name": "The Children's Doctor"
},
"inLanguage": "da",
"isAccessibleForFree": false
}
</script>publishedBy
publishedBy takes a Person or Organization. This is the agent responsible for making the work public: the publisher, the record label, the film distributor, the broadcasting organization. It differs from organizer (who organized the event) and publisher (a property on CreativeWork, not on the event). For a film premiere, publishedBy is the distribution company; organizer might be the venue.
publishedOn
publishedOn takes a BroadcastService object: the TV channel, streaming platform, or radio station where the work was published. For a film released on a streaming platform, publishedOn is the platform. For a book published by a traditional publisher, publishedOn is less relevant (use publishedBy instead). This property is most useful for broadcast and streaming content.
PublicationEvent vs releasedEvent
A Movie can have a releasedEvent property pointing to a PublicationEvent. The PublicationEvent is the standalone entity describing the release. The Movie's releasedEvent is a pointer. For festival premieres, the releasedEvent might be a ScreeningEvent (which extends Event, not PublicationEvent). For streaming releases, it is a PublicationEvent or OnDemandEvent.
BroadcastEvent and OnDemandEvent
BroadcastEvent adds broadcastOfEvent, isLiveBroadcast, videoFormat, and subtitleLanguage. Use it for live TV premieres, radio broadcasts, and live-streamed events. OnDemandEvent adds nothing of its own. Use it for on-demand streaming releases (Netflix, Spotify, podcast platforms) where the work becomes available at a specific date but is not broadcast live.
Minimal valid version
The smallest markup that still produces a valid PublicationEvent entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "PublicationEvent",
"name": "The Children's Doctor: Nordic Streaming Release",
"startDate": "2026-11-01",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": { "@type": "VirtualLocation", "url": "https://nordicstream.dk/watch/the-childrens-doctor" },
"publishedBy": { "@type": "Organization", "name": "Xoo Films ApS" },
"image": "https://xoofilms.dk/the-childrens-doctor/release-banner-16x9.jpg",
"description": "Streaming premiere of The Children's Doctor documentary on NordicStream."
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsEvent rich result (indirect)
Common PublicationEvent mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
Using Event for a content release
Wrong"@type": "Event" for a film or album releaseRight"@type": "PublicationEvent" (or OnDemandEvent for streaming, BroadcastEvent for live broadcast)PublicationEvent signals that this is a release of a creative work, not a public gathering. It gives you publishedBy and publishedOn, which generic Event does not have. Google and media aggregators read the subtype to classify the event correctly.
- 02
Confusing publishedBy with organizer
Wrong"organizer": { "@type": "Organization", "name": "Xoo Films ApS" } on a PublicationEventRight"publishedBy": { "@type": "Organization", "name": "Xoo Films ApS" }publishedBy is the agent responsible for the publication (the distributor, the label, the publisher). organizer is who organized the event. For a streaming release, there is no event organizer in the traditional sense. Use publishedBy.
- 03
Missing VirtualLocation for an online release
WrongPublicationEvent with eventAttendanceMode "OnlineEventAttendanceMode" but location as a physical PlaceRight"location": { "@type": "VirtualLocation", "url": "https://nordicstream.dk/watch/..." }Online releases happen on a platform, not at a physical venue. Use VirtualLocation with a url pointing to where the content can be accessed. A physical Place as location for a streaming release is misleading.
Schema properties in this example
About the example data
The streaming release of The Children's Doctor documentary on a fictional Nordic streaming platform. This is the distribution event, separate from the US premiere screening at The Thunderdome. publishedBy references the production company Xoo Films ApS.
Comments
Loading comments...