Prismic · AsyncAPI Specification
Prismic Webhooks
Version
View Spec
View on GitHub
GraphQLHeadless CMSContent ManagementPage BuilderJAMstackMarketingContent DeliveryDeveloper ToolsMCPWebhookLocalizationDigital Asset ManagementAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-13'
method: searched
source: https://prismic.io/docs/webhooks
spec_type: none
spec_note: >-
Prismic publishes NO AsyncAPI document. Probes for /asyncapi.yaml and
/asyncapi.json on prismic.io and the API hosts missed, and there is no event
catalogue in the GitHub org. What Prismic does publish is a documented webhook
surface with a fully specified payload schema and a stated delivery contract,
captured below. This artifact is therefore a Webhooks catalogue, not an
AsyncAPI spec — no AsyncAPI pointer is wired in apis.yml.
surface: webhooks
direction: outbound (Prismic -> subscriber)
transport: HTTP POST
subscriber_url: caller-supplied
docs: https://prismic.io/docs/webhooks
status_page_component: Webhooks (https://status.prismic.io/)
management:
cli:
create: npx prismic webhook create https://example.com/my-endpoint
scoped_create: npx prismic webhook create <url> --trigger documentsPublished --trigger
documentsUnpublished
help: npx prismic webhook --help
ui: Repository Settings > Webhooks
default_triggers: all events
api: none — webhooks are managed via the CLI or the dashboard only. There is no HTTP
API for webhook subscriptions.
security:
secret:
supported: true
mechanism: An optional shared secret configured on the webhook and echoed back in
the payload's `secret` property.
note: >-
This is an echoed shared secret, NOT a request signature. There is no HMAC
signature header, no timestamp, and therefore no replay protection — a
subscriber can only compare the secret in the body. Prismic documents no
signing scheme.
signature_header: none
ip_allowlist: not published
delivery:
success_condition: subscriber responds 200
retries: 5
retry_interval: 10 minutes
auto_disable: Prismic disables a webhook automatically after five consecutive failures.
logs: Most recent triggers are listed on the repository's Webhooks page; the Logs
tab shows all events from the past 30 days.
ordering: not published
delivery_guarantee: not published (at-least-once implied by the retry policy)
events:
documented_summary:
- A page is published or unpublished.
- A release is created, edited, or deleted.
- A tag is created or deleted.
trigger_names:
- documentsPublished
- documentsUnpublished
trigger_note: >-
Prismic names exactly two `--trigger` values in its documentation
(documentsPublished, documentsUnpublished) while describing seven distinct
events that can fire a webhook. The full trigger vocabulary is discoverable
only from `npx prismic webhook create --help`, not from the docs — an
undocumented gap between the described events and the addressable triggers.
example_payload_scenarios:
- A page is published
- A page is unpublished
- A release is created
- A release is updated
- A release is deleted
- A tag is created
- A tag is deleted
payload:
content_type: application/json
discriminator: type
types: [api-update, test-trigger]
ambiguity_warning: >-
Prismic states plainly that the payload for a page PUBLISHED is identical to
the payload for a page UNPUBLISHED, and recommends configuring two separate
endpoints to tell them apart. A single subscriber cannot distinguish the two
from the body alone.
properties:
- {name: type, type: 'api-update | test-trigger', required: true, description: Type
of the webhook.}
- {name: secret, type: 'string | null', required: false, default: 'null', description: The
configured secret, if there is one.}
- {name: masterRef, type: string, required: true, description: The new master ref.}
- {name: domain, type: string, required: true, description: Your Prismic repository
name.}
- {name: apiUrl, type: string, required: true, description: Your Prismic repository
URL.}
- {name: documents, type: 'string[]', required: true, description: A list of page
IDs that changed.}
- {name: releases, type: object, required: true, description: A list of changes
made to releases.}
- {name: releases.addition, type: 'object[]', description: 'Added releases — each
carries id, ref, label and the IDs of the pages in the release.'}
- {name: releases.update, type: 'object[]', description: 'Updated releases — each
carries id, ref, label, scheduledAt and the page IDs.'}
- {name: releases.deletion, type: 'object[]', description: 'Deleted releases — each
carries id, ref, label, scheduledAt and the page IDs.'}
- {name: tags, type: object, description: A list of changes made to tags.}
- {name: tags.addition, type: 'object[]', description: Added tags, each with an id.}
- {name: tags.deletion, type: 'object[]', description: Deleted tags, each with an
id.}
- {name: bookmarks, type: object, deprecated: true, description: 'Legacy field.
Do not use.'}
- {name: collection, type: object, deprecated: true, description: 'Legacy field.
Do not use.'}
payload_carries_content: false
payload_note: >-
The payload is a change NOTIFICATION, not a change feed. It carries page IDs
and the new master ref, never the changed content. A subscriber must call the
Content API with the supplied `masterRef` to read what actually changed —
which is exactly the intended pattern, since that ref is the cache key.
common_uses:
- name: Trigger a static rebuild on publish
hosts_documented: [Netlify, Vercel, AWS Amplify]
pattern: 'npx prismic webhook create <build-hook-url> --trigger documentsPublished
--trigger documentsUnpublished'
gaps:
- No AsyncAPI document.
- No request signature (HMAC) — only an echoed shared secret.
- No published trigger vocabulary beyond two named values.
- Published and unpublished events are indistinguishable in the payload.
- No API for managing webhook subscriptions (CLI/UI only).
- No streaming or pub/sub surface — webhooks are the entire event story.