CMS Compliance: Sample Flows

This article presents possible use cases and corresponding sample flows that you can support. It provides a useful starting point as you plan your implementation.

Review CMS content changes for compliance

When a user changes content, you can review the change before deciding whether it should stand. The review request gives you both the live version and the proposed version, so you can see exactly what is changing.

To review a content change:

  1. Subscribe to the Review Requested webhook.
  2. When a user submits a publishing or unpublishing workflow, the CMS host calls Request Review, and you receive a Review Requested event.
  3. Read the action to see what the user did.
  4. Compare currentDataItem, the live version, with proposedDataItem, the version submitted for approval. For PUBLISH_DRAFT, only proposedDataItem is present. For UNPUBLISH_PUBLISHED, only currentDataItem is present.
  5. For UNPUBLISH_CHANGED, read versionOnUnpublish when present to determine whether the user requested to preserve the latest draft edits or the live published version.
  6. Apply your review decision in your own system, using submittedByUserId and submittedAt to record who submitted the change and when.

Review a batch of CMS content changes in one call

When a user submits several items from the same collection at once, the whole selection arrives as one event instead of one event per item. This keeps a multi-item submission together, so you can review it as the single unit of work the user intended.

To review a batch of content changes:

  1. Subscribe to the Bulk Review Requested webhook. Subscribing to Review Requested doesn't deliver batches.
  2. When a user submits a selection of items, the CMS host calls Bulk Request Review with the shared collectionId and one entry per item, and you receive a single Bulk Review Requested event.
  3. Read bulkComplianceReviewRequest.complianceReviewRequests to get every review request in the batch, in the order the items were submitted.
  4. Iterate over the list and read each request's action, because a single batch can combine actions. Compare currentDataItem and proposedDataItem per request exactly as you would for a single review.
  5. Apply your review decision in your own system. Because the call is all-or-nothing, receiving the event means every item in the batch was fetched successfully, so you never need to reconcile a partially delivered batch.

Forward content changes to an external compliance system

If you maintain an external audit or compliance system, you can keep it in sync with every reviewable content change on the site.

To forward content changes to an external system:

  1. Subscribe to the Review Requested and Bulk Review Requested webhooks, so that both single submissions and batches reach your system.
  2. On each event, extract the complianceReviewRequest object, or for a batch, each object in bulkComplianceReviewRequest.complianceReviewRequests. Include the action, currentDataItem, proposedDataItem, optional versionOnUnpublish, and submittedByUserId.
  3. Transform the data into your external system's format.
  4. Send the transformed records to your external system.

Last updated: 7 October 2026

Did this help?