| Layer | Evidence |
|---|---|
| Local evidence packet | Version, missing consent proof, invalid URLs, incomplete autoresponses |
| Sent request validation | Wrong camelCase, unsupported field, invalid use case, sample count/length, volume type |
| TCR submission | submittedToTCR, registry error/reason, brand or campaign status |
| Carrier operations | Campaign active but filtering, DCA election, content mismatch |
Do not create a new campaign until the failing layer is known.
- Wrong endpoint model: operate campaigns under the profile and create a dedicated brand within profile creation.
- Inheritance conflict: disable
inherit_tcr_campaignbefore managing a dedicated campaign; do not supplybrandwhile brand inheritance is true. - Wrong field casing: serialize
useCases,messagingUseCaseUs, andsampleMessagesexactly. - Too few samples: provide 1–5 structurally; provide at least two for marketing/mixed compliance.
- Weak opt-in: add observable proof and a complete message flow.
- Autoresponse failure: add brand, STOP/HELP, unsubscribe confirmation, and support details as applicable.
- Traffic mismatch: select a use case that matches actual content rather than rewriting only the example.
SENT_CREATED means a Sent campaign record exists. submittedToTCR: true records registry submission. ACTIVE means operational activation, while EXPIRED is not send-ready. Preserve unknown status strings and any tcrSyncError rather than replacing them with a guessed category.
- Save the original response and reason.
- Fix the versioned evidence packet if necessary.
- Rebuild and validate the API request.
- Use
sandbox: true. - Show the exact diff.
- Obtain confirmation before the real mutation.