Skip to content
ToolsOrbit

Module 04 · SMS & 10DLC

SMS Opt-in Checkbox & Form Builder

Build a sign-up form with a separate, unchecked SMS consent checkbox, preview it live and copy the HTML and CSS into your site.

Module 04 · OPT-IN FORM

Box 1 covers transactional messages, box 2 covers marketing. The cleanest setup when you send both.

Message types (marketing gets its own box)

Live preview

Unchecked by default

Form HTML

<form class="sms-form" action="#" method="post">
  <label class="sms-field" for="sms-name">
    <span>Full name</span>
    <input type="text" id="sms-name" name="name" autocomplete="name" required>
  </label>
  <label class="sms-field" for="sms-phone">
    <span>Mobile number</span>
    <input type="tel" id="sms-phone" name="phone" autocomplete="tel" inputmode="tel" placeholder="(555) 555-0100" required>
  </label>
  <label class="sms-consent" for="sms-consent">
    <input type="checkbox" id="sms-consent" name="sms_consent" value="yes">
    <span>By checking this box, you agree to receive appointment reminders by text message from Acme Dental at the number provided. Message frequency varies. Msg &amp; data rates may apply. Reply STOP to opt out, HELP for help. See our <a href="https://example.com/privacy">Privacy Policy</a> and <a href="https://example.com/sms-terms">Terms of Service</a>.</span>
  </label>
  <label class="sms-consent" for="sms-marketing-consent">
    <input type="checkbox" id="sms-marketing-consent" name="sms_marketing_consent" value="yes">
    <span>By checking this box, you agree to receive marketing and promotional text messages from Acme Dental at the number provided. Message frequency varies. Msg &amp; data rates may apply. Reply STOP to opt out, HELP for help. Consent is not a condition of purchase. See our <a href="https://example.com/privacy">Privacy Policy</a> and <a href="https://example.com/sms-terms">Terms of Service</a>.</span>
  </label>
  <button type="submit" class="sms-submit">Sign up</button>
</form>

Point the action attribute at your form handler. The consent inputs are never pre-checked or required.

Form CSS

.sms-form { max-width: 480px; font: 15px/1.5 system-ui, sans-serif; color: #111827; display: grid; gap: 14px; }
.sms-field { display: grid; gap: 6px; font-weight: 600; }
.sms-field input { font: inherit; font-weight: 400; padding: 10px 12px; border: 1px solid #cbd5e1; border-radius: 8px; }
.sms-field input:focus { outline: 2px solid #2563eb; outline-offset: 1px; }
.sms-consent { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; line-height: 1.45; color: #374151; }
.sms-consent input { margin: 3px 0 0; width: 18px; height: 18px; flex: 0 0 18px; accent-color: #2563eb; }
.sms-consent a { color: #2563eb; text-decoration: underline; }
.sms-submit { font: inherit; font-weight: 600; color: #fff; background: #2563eb; border: 0; border-radius: 8px; padding: 12px 18px; cursor: pointer; }
.sms-submit:hover { filter: brightness(0.92); }

Do

  • Keep the SMS checkbox separate from "I agree to the terms".
  • Leave the box unchecked. The person has to tick it.
  • Show the full disclosure next to the box, not behind a link.
  • Let the form submit without the marketing box ticked.
  • Link to a privacy policy and SMS terms on the same domain.

Do not

  • A pre-checked consent box.
  • Consent bundled into the terms and conditions checkbox.
  • A disclosure hidden in a tooltip, modal or footer.
  • Making SMS consent required to book, buy or get a quote.
  • Collecting the number on one page and the consent on another.

Runs in your browser. Nothing you enter is uploaded.

Checklist

How to use the opt-in checkbox

  1. 01

    Choose one checkbox (everything in one consent) or two (transactional messages in one box, marketing in a second).

  2. 02

    Enter your business name, tick the message types, set the frequency and add your privacy policy and SMS terms URLs.

  3. 03

    Pick an accent colour and button text so the form matches your site. The preview on the right updates as you type.

  4. 04

    Copy the HTML and CSS, paste them into your page and point the form action at your form handler or CRM.

  5. 05

    Store each submission with the date, time, the number entered and the exact disclosure text shown. That record is your proof of consent.

Telemetry

How it works

The builder generates plain HTML with no JavaScript dependencies: a name field, a phone field, one or two consent checkboxes with full disclosures and links, and a submit button. The CSS is scoped to the form's own class names so it will not fight with your site's styles. Three rules are enforced in the generated code and cannot be switched off:

The consent checkboxes never carry the checked attribute

The consent checkboxes never carry the required attribute

Every disclosure includes the frequency, "Msg & data rates may apply", STOP and HELP, and links to the Privacy Policy and Terms of Service

Worked example

With "Acme Dental" sending appointment reminders, in two-checkbox mode, the first box reads: "By checking this box, you agree to receive appointment reminders by text message from Acme Dental at the number provided. Message frequency varies. Msg & data rates may apply. Reply STOP to opt out, HELP for help. See our Privacy Policy and Terms of Service."

The second box covers marketing and adds "Consent is not a condition of purchase." A customer can tick the first box to get reminders without agreeing to promotions, which is exactly the separation carriers and the TCPA expect.

Why the checkbox has to be separate and unchecked

Consent to receive text messages has to be an affirmative action by the person signing up. A box that is already ticked is not an action, and a single "I agree to the terms" box that silently includes SMS marketing is not specific. Both are treated as no consent by the courts that hear TCPA cases, by the CTIA guidelines carriers enforce, and by the reviewers who vet A2P 10DLC campaigns. A pre-checked or bundled box is one of the most common reasons a campaign is rejected, and it is also the easiest to fix.

The generated form keeps SMS consent on its own checkbox, below the phone field, with the full disclosure as the label. The input has no checked attribute and no required attribute, so the form submits whether or not the box is ticked. Your form handler should record the checkbox value and only add the number to your texting list when it is "yes".

One checkbox or two?

If you send only transactional messages (appointment reminders, order updates, account alerts, verification codes), one checkbox is enough. If you send marketing messages as well, use two. US law sets a higher bar for marketing consent, and a customer who wants appointment reminders should be able to get them without agreeing to promotions. Two boxes make that choice explicit and give you two separate consent records.

In two-checkbox mode the builder automatically moves "Marketing and promotions" into the second box and adds the sentence that consent is not a condition of purchase. In one-checkbox mode that sentence is added whenever marketing is among the ticked types.

What to do with the submission

  • Save the phone number, the timestamp, the page URL, the IP address if your handler has it, and the disclosure text that was displayed. Platforms and carriers can ask for this when a complaint is filed.
  • Send the keyword confirmation reply right away. The opt-in language generator writes one that fits in a single segment.
  • If the person did not tick the box, do not text them. A submitted phone number is not consent.
  • Keep the form on a public page so campaign reviewers can see it, or take a screenshot and host it at a public URL for gated flows.

Do and do not

DoDo not
Keep SMS consent on its own checkboxPre-check the consent box
Show the full disclosure next to the boxHide it in a tooltip, modal or footer
Let the form submit without the marketing box tickedBundle consent into the terms checkbox
Link to a privacy policy and SMS terms on the same domainMake SMS consent required to book, buy or get a quote
Collect the number and the consent on the same pageCollect the number on one page and consent on another

Styling and embedding the form

The CSS uses system fonts, a 480px maximum width and your accent colour for the focus ring, the checkbox and the button. Everything is scoped to the .sms-form, .sms-field, .sms-consent and .sms-submit classes, so you can paste it into any page or a CMS "custom HTML" block without side effects. If your site already has form styles, keep the HTML and drop the CSS.

Form builders such as HubSpot, Typeform, Jotform or Gravity Forms can reproduce the same structure: add a single checkbox field, paste the disclosure as its label, leave it unchecked and optional, and add the links. The point is the structure, not the markup. Before you submit a campaign, run through the website compliance checker to catch anything the reviewers will look at beyond the form.

Mission briefing

Frequently asked questions

Q01 Can I make the SMS checkbox required so the form always captures consent?

No. Required consent is not freely given, especially for marketing. The generated checkboxes never include the required attribute. Make the phone field required if you need the number for something else, and only text people whose box value is "yes".

Q02 Does the generated form submit anywhere?

Not by itself. The action attribute is set to "#" so you can point it at your form handler, CRM endpoint or form service. The checkbox values are "yes" under the names sms_consent and sms_marketing_consent.

Q03 Why does the preview sit inside a frame?

The preview is rendered in an isolated frame so your site's styles do not affect it and the form's styles do not leak out. What you see is what the pasted HTML and CSS will look like on a plain page.

Q04 Can I use this with a form builder instead of raw HTML?

Yes. Recreate the structure: a checkbox field with the disclosure as its label, unchecked and optional, plus links to your privacy policy and terms. Copy the disclosure text from the preview or the HTML.

Q05 Do I still need a privacy policy and terms page?

Yes. The disclosure links to both, and campaign reviewers follow the links. The privacy policy generator and SMS terms generator on this site produce documents that include the sentences reviewers look for.

Q06 What proof of consent should I keep?

The phone number, the date and time, the page where the form lives, the exact disclosure text shown, and the checkbox value. Keep it for as long as you message the person and for a reasonable period after they opt out.

SMS & A2P 10DLC cluster

Every SMS tool on ToolsOrbit is part of one kit for registering and running a compliant texting program. Here are the other 8 modules.

Runs in your browser. Nothing you enter is uploaded.

This tool runs entirely on your device. There is no server-side processing and no account. Last reviewed October 28, 2026. Read the disclaimer.