{
  "id": "CMP-028",
  "slug": "cmp-028",
  "title": "Opt-in evidence must be a JPG, PNG or PDF under 500 KB",
  "statement": "Uploaded opt-in evidence must be a JPG, PNG or PDF file no larger than 500 KB.",
  "rationale": "The upload field rejects anything else outright, and the two formats people actually reach for are the two that fail: a phone screenshot saved as HEIC, and a full-resolution PNG straight off a retina display that is several megabytes. Both look like ordinary screenshots to the person attaching them, so the rejection reads as arbitrary.",
  "layer": "CAMPAIGN",
  "layerSlug": "campaign",
  "object": "campaign opt-in evidence upload",
  "severity": "BLOCKING",
  "detectability": [
    "DETERMINISTIC"
  ],
  "failureClass": "TERMINAL_EVIDENCE",
  "authorities": [
    "AWS",
    "TextUs"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Export the screenshot as PNG or JPG — on iOS, change Settings › Camera › Formats to \"Most Compatible\", or open the file and re-save it — and shrink it below 500 KB by cropping to the consent surface rather than the whole page. Done when the file opens in a browser and its size reads under 500 KB.",
  "pitfalls": [
    "Cropping to reduce the size is the right move only until it cuts off the disclosure text; a small screenshot that no longer shows what the consumer agreed to trades this failure for a worse one."
  ],
  "notes": "Verbatim from the AWS campaign registration form: \"The supported file type are PNG, JPEG, and PDF and the maximum file size is 500KB.\" Size is checked only where the registration carries upload metadata; a bare hosted URL gives us the file type from its extension and nothing about its weight, and the check says which of the two it settled rather than implying it checked both.",
  "catalogIds": [
    "CMP-029",
    "CON-022",
    "OPS-330"
  ],
  "phase": "approval",
  "automated": true,
  "url": "https://ekas.io/rules/10dlc/campaign/cmp-028/",
  "markdown": "https://ekas.io/rules/10dlc/campaign/cmp-028.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
