Call the gate immediately before your sequencer enqueue operation:
Map the message recipient, subject, text/HTML body, model name, and a stable
campaign/send identifier to POST /v1/gate/outbound.
Do not use status !== "BLOCKED" as the condition for sequencer enqueue.
QUEUED must remain on hold until a reviewer approves it.
Use metadata.source_records for CRM or enrichment facts and
metadata.planned_crm_actions to audit downstream writes that would occur after
release. DataVibe records these planned actions; it does not execute arbitrary
CRM mutations.