> ## Documentation Index
> Fetch the complete documentation index at: https://docs.photon.codes/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use Stable documentation by default. Honor an explicit Beta request or a URL under /docs/beta/. If the requested version conflicts with the installed CLI package or API origin, clarify the target before writing integration code.
> Pages under /docs/beta/ document Beta; other product pages document Stable. Keep the CLI package, commands, API origin, and credentials within the selected version. State the documentation version in your answer.
> For MCP search, always pass version: Stable or version: Beta. Unfiltered search mixes both versions. For filesystem reads, keep Beta queries under /beta/ and exclude /beta/ from Stable queries; discover paths before reading them.
> The public docs base is https://photon.codes/docs. Convert MCP page paths to public URLs under that base, preserving /beta/ when present. Read https://photon.codes/docs/skill.md for version selection and https://photon.codes/docs/llms.txt for the version indexes.

# 10DLC opt-in form requirements

> Build a web form that collects SMS consent the way 10DLC reviewers require, with a separate checkbox, the full consent text, and policy links.

If people opt in to your texts through a form on a website or in an app,
reviewers open that form and check it. The form must collect clear consent to
receive texts from your brand, separate from everything else on the form.

## What the form must include

**1. A phone number field**

Label the field clearly as a phone number. The field can be required or
optional. If it is required, the SMS consent checkbox must be optional, so
that people can submit the form without agreeing to receive texts.

**2. A separate SMS consent checkbox**

* The checkbox is unchecked by default.
* People can submit the form without checking it.
* It is only for SMS. Don't combine it with accepting your terms, or with
  consent to email or phone calls.
* Its label says exactly what people agree to. "Text me" or "Contact me" is
  not enough.

**3. The full consent text**

Show the consent text next to the checkbox. See [Consent text](#consent-text).

**4. Links to your privacy policy and terms**

Link to both pages from the form, next to the checkbox or in the consent
text. The links must open real pages, not placeholders. See
[Privacy policy and terms](https://docs.photon.codes/docs/beta/messaging/sms/10dlc/privacy-policy.md).

**5. A working submit button**

The form must submit and record the person's consent.

## Consent text

Copy this text and replace each part in brackets:

```text wrap theme={null}
By checking this box, you agree to receive [types of messages] by text from [Brand name]. Message frequency may vary. Message and data rates may apply. Reply STOP to opt out. Reply HELP for help. We will not share mobile information with third parties for promotional or marketing purposes. [Privacy Policy] and [Terms].
```

Each part has a reason:

| Part | Why reviewers need it | Example |
| - | - | - |
| Brand name | People must know who texts them. Use the registered brand name. | Example Co |
| Types of messages | People must know what they will receive. Name every use case of the campaign. | Order updates and delivery alerts |
| Message frequency | People must know how often you text. | Message frequency may vary. |
| Cost | People must know that their carrier can charge them. | Message and data rates may apply. |
| Opt-out | People must know how to stop the texts. | Reply STOP to opt out. |
| Help | People must know how to get help. | Reply HELP for help. |
| No sharing | People must know that you keep their number private. | We will not share mobile information with third parties for promotional or marketing purposes. |
| Policy links | People must be able to read your privacy policy and terms. | Privacy Policy and Terms |

### Extra text for some use cases

* **Marketing:** say that the texts include marketing, for example: "You agree
  to receive marketing texts from Example Co." The checkbox label must also make
  this clear.
* **Political or charity campaigns:** if you will ask for donations, add
  "Donations may be solicited."

## Example form

This form meets every requirement. The checkbox has no `checked` or
`required` attribute, so it is unchecked by default and optional.

```html theme={null}
<form action="/signup" method="post">
  <label for="phone">Mobile phone number</label>
  <input id="phone" name="phone" type="tel" autocomplete="tel" />

  <input id="sms-consent" name="sms_consent" type="checkbox" value="yes" />
  <label for="sms-consent">
    By checking this box, you agree to receive order updates and delivery alerts
    by text from Example Co. Message frequency may vary. Message and data rates
    may apply. Reply STOP to opt out. Reply HELP for help. We will not share
    mobile information with third parties for promotional or marketing purposes.
    <a href="https://example.com/privacy">Privacy Policy</a> and
    <a href="https://example.com/terms">Terms</a>.
  </label>

  <button type="submit">Sign up</button>
</form>
```

## Show reviewers where the form is

* **Public URL:** the form must be at a public URL that opens without a sign-in.
* **Exact location:** in **How people opt in and out**, give the URL of the
  page and say where the form is on it. For example: "The sign-up form at the
  bottom of [https://example.com/contact](https://example.com/contact)."
* **Screenshot:** if the form is in a pop-up, behind a sign-in, or in a mobile
  app, add a link to a screenshot of it. Upload the screenshot to a service
  that gives a public link, such as Google Drive or Imgur, and check that the
  link opens in a private browser window. If the form is a pop-up, also say
  when the pop-up appears.

For the full text of the **How people opt in and out** field, see
[Message flow](https://docs.photon.codes/docs/beta/messaging/sms/10dlc/message-flow.md).

## Common mistakes

| Mistake | Why it is rejected |
| - | - |
| The checkbox is checked by default | Consent must be an action that the person takes. |
| SMS consent is part of accepting the terms | SMS consent must be separate from every other agreement. |
| The checkbox is required | People must be able to submit the form without agreeing to texts. |
| The label only says "Text me" | It doesn't say who will text or what the messages are. |
| Part of the consent text is missing | Every part in the [table above](#consent-text) is required. |
| The consent text doesn't name every use case | The consent must cover everything the campaign sends. |
| There are no links to the privacy policy and terms | People must be able to read both from the form. |
| The form is behind a sign-in and there is no screenshot | Reviewers can't see the form. |
| The form doesn't submit | Consent must be recorded when the form is submitted. |

## If people don't opt in on a form

People can also opt in by phone, in person, on a paper form, or by texting a
keyword. See [Message flow](https://docs.photon.codes/docs/beta/messaging/sms/10dlc/message-flow.md) for a
template for each method.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.