# CMP-023 — Declared embedded links must come with a sample URL

> A campaign declaring embedded links must supply the example link, at most 255 characters and at most fifteen entries.

- **Rule ID:** CMP-023
- **Layer:** Campaign (`CAMPAIGN`)
- **Checks:** `campaign.embedded_link_sample`
- **Severity:** HIGH — Rejected by at least one carrier or provider, and a common cause of failure at the rest.
- **When it bites:** Gates approval — get this wrong and registration is refused
- **How it is detected:** Deterministic (settled in code from the submitted values)
- **Fix type:** Fix the field — a better value in the form clears it
- **Required by:** TCR, Vonage
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/campaign/cmp-023/

## Why this rule exists

The declared link sample is what a reviewer screens for a shortener, a mismatched domain, or a destination that has nothing to do with the brand — so declaring that your messages carry links and then supplying none leaves the most-screened element of the campaign unreviewable. It fails on resubmission more often than first submission, because the attribute is flipped to true after a rejection and the sample field is not filled in with it.

## How to fix it

Paste a real link your messages will contain into the URL sample field — the live destination, on your own domain, not a placeholder or a shortener. Done when every distinct link domain your campaign sends appears in the list.

## Example of a compliant value

```text
embeddedLink: true · embeddedLinkSample: https://acmecoffee.com/sale
```

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| TCR | `501` | yes |

## Notes

One field, two provider names: TCR takes a single embeddedLinkSample, Vonage takes a URL Samples list of up to fifteen (catalog CMP-171). The obligation is the same in both, so it is one rule reading one input rather than two rules differing only in arity.
