# MSG-URL-OWNERSHIP — Links must resolve to a domain the brand owns

> URLs in messages must point at the brand’s own domain or a dedicated branded short domain, and must identify the owner.

- **Rule ID:** MSG-URL-OWNERSHIP
- **Layer:** Message content (`MESSAGE_CONTENT`)
- **Checks:** `campaign.sample[]`
- **Severity:** BLOCKING — Breaking this rule gets the submission rejected outright.
- **When it bites:** Gates approval — get this wrong and registration is refused
- **How it is detected:** AI judgement over the submitted form
- **Fix type:** Fix the field — a better value in the form clears it
- **Required by:** CTIA, TCR, Twilio, Bandwidth, AWS
- **Applies:** Applies to every 10DLC registration.
- **Canonical URL:** https://ekas.io/rules/10dlc/message-content/msg-url-ownership/

## Why this rule exists

Public shorteners hide the destination, so carriers cannot assess where a message leads and block them categorically. The standard is stricter than "avoid bit.ly": the shortener must be dedicated to the sender, and the destination must identify the business, because shared redirect infrastructure is what makes a link untraceable.

## How to fix it

Use full URLs on your own domain, or a short domain dedicated exclusively to your business. Confirm the destination page identifies the business by name and carries contact details.

## Example of a compliant value

```text
Shop the sale: https://acmecoffee.com/sale  —  or a dedicated short domain such as https://acme.link/sale
```

## Common mistakes

- A branded short domain on shared redirect infrastructure still fails the dedicated-IP requirement.
- The same defect is remediable under the old code and NOT resubmittable under the new one — assume the strict reading.

## Provider rejection codes

| Provider | Code | Resubmission allowed |
| --- | --- | --- |
| Twilio (gen1) | `30892` | yes |
| Twilio (gen2) | `30963` | no |
