{
  "id": "XBC-006",
  "slug": "xbc-006",
  "title": "The brand must be verified before its campaign is submitted",
  "statement": "A campaign must not be submitted until the brand reaches an approved, verified identity status.",
  "rationale": "A campaign is judged against the brand as it stands the moment it arrives, so one submitted against an unverified brand is refused — and the refusal names the campaign. Teams then rewrite the description, the samples and the flow, none of which was the problem, and resubmit into the same wall. It happens because the brand call returns 200 with a pending status and looks like success.",
  "layer": "CROSS",
  "layerSlug": "cross",
  "object": "brand.identity_status + campaign submission",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "TERMINAL_EXTERNAL",
  "authorities": [
    "TCR",
    "AWS",
    "Twilio"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Hold the campaign until the brand identity status reads VERIFIED or VETTED_VERIFIED, and sequence the two submissions off the brand status event rather than off a timer. Done when the brand is in a final verified state at the moment the campaign is sent.",
  "notes": "The wait is at the registry and nothing here shortens it. What the user has to do is order the two submissions — brand first, campaign only once the status is final — because a campaign refused for this reason still consumes a submission and, at some providers, a fee. An UNVERIFIED status is not a brand defect on its own: it is the state a brand sits in while the check runs.",
  "catalogIds": [
    "OPS-312"
  ],
  "phase": "approval",
  "automated": true,
  "attestation": {
    "question": "Does the brand read VERIFIED or VETTED_VERIFIED at the moment the campaign is submitted, rather than PENDING?",
    "howToCheck": [
      "Fetch the brand immediately before submitting the campaign and read the identity status — do not rely on the 200 the create call returned, which succeeds while the status is still pending.",
      "Sequence the campaign off the brand status webhook rather than off a timer, so the campaign leaves only once the status is final."
    ],
    "failureLooksLike": "The campaign is refused and the error names the campaign, so the description, samples and flow are rewritten and resubmitted into the same wall — while the brand was the thing that was not ready."
  },
  "url": "https://ekas.io/rules/10dlc/cross/xbc-006/",
  "markdown": "https://ekas.io/rules/10dlc/cross/xbc-006.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
