You build an SMS marketing list by collecting express written consent at every point where a customer already gives you their number: web forms, checkout, keyword texts and in-person sign-ups. Each opt-in needs clear disclosure and a record you keep. You do not build one by buying, renting or scraping numbers.

The rest of this post covers how to do that well. It explains which opt-in sources produce texts people actually want, what the disclosure language has to say, what to store as proof, and what a welcome text costs to send. We make Ready, so where our product handles a piece of this we say so, and where it doesn't (consent forms, for one) we say that too.

Why consent comes before list size

There are three reasons, and all of them cost money.

  1. The TCPA. Marketing texts sent without prior express written consent expose you to statutory damages of $500 to $1,500 per text. A 2,000-contact send to an unconsented list puts a seven-figure number on the table.
  2. Carrier registration. When you register an A2P 10DLC campaign, the carriers ask how recipients opt in. If you can't describe a real opt-in flow, the campaign gets rejected. If you describe one and then send to people who never went through it, complaints pile up and the campaign gets filtered or suspended. Our 10DLC rules and requirements post goes through what reviewers check.
  3. Engagement. Opted-in lists are why SMS performs at all. Engaged opted-in lists reply. That falls apart when the list is padded with strangers.

A 3,000-person list that asked to hear from you is worth more than a 30,000-person list that didn't. It also costs less to message.

Where to get opt-ins for your SMS marketing list

Here are the sources that work, roughly ordered by how much effort they take to set up.

Opt-in sourceHow consent is capturedWhat you should store
Website form or popupUnchecked SMS box plus disclosure textTimestamp, page URL, exact disclosure wording, IP
CheckoutSeparate unchecked SMS box (not bundled with email)Order ID, timestamp, checkbox wording
Keyword text ("Text JOIN to...")The inbound text itself, followed by a confirmation replyInbound message, time, keyword, the confirmation you sent
QR code or SMS linkOpens a pre-filled text; the send is the opt-inSame as keyword
In person (counter, front desk, event tablet)Signed or tapped form with disclosureForm record, staff member, date
Phone callRecorded or logged verbal consent, then a confirming textCall log and the confirmation text

Web forms and popups

This is the highest-volume source for most businesses. The form needs:

  • A phone field that's separate from email, with its own unchecked consent checkbox
  • Disclosure text next to the box, not buried in the terms
  • A link to your terms and privacy policy

Disclosure wording that covers the usual requirements reads something like this:

By checking this box, you agree to receive recurring marketing texts from Maple & Oak at the number provided. Consent is not a condition of purchase. Up to 4 msgs/mo. Msg & data rates may apply. Reply HELP for help, STOP to cancel. See Terms and Privacy.

You can collect sign-ups on a Ready-hosted opt-in page, which stores each sign-up (time, IP address and exact wording), or on your own site builder, ecommerce platform or CRM form. Then send the number to Ready through the API or a contact import.

Checkout

Checkout is where you collect the most numbers you already have a relationship with. It's also where most of the mistakes happen. A transactional number (order updates) is not marketing consent. Use a separate unchecked box that says marketing texts. Never pre-check it, and never make buying anything depend on it.

Keywords

"Text DEALS to (555) 010-0100" works on receipts, packaging, signage and social posts. The inbound text shows intent, and your confirmation reply closes the loop. You can register keyword opt-in as a method in your 10DLC campaign.

One plain note: on Ready, an inbound keyword reply does not create a per-contact consent record. Ready records the sender's attestation on each bulk send and each API send that sets consent_attested: who sent, to how many, and when. It does not store each recipient's opt-in time, wording or source. Keep that record in your own system (your store, CRM or database), and keep it for as long as you text the person. (A contact who signs up on a Ready-hosted opt-in page is the exception: Ready stores that sign-up, with the time, IP address and exact wording, and support@tryready.com can send you a copy.)

QR codes and SMS links

A QR code or link that opens a pre-filled text ("DEALS") removes the typing step, which is most of the friction in a keyword opt-in. Our guide on how to create an SMS link shows the formats that work on both iPhone and Android.

In person and on the phone

A counter tablet, a paper sign-up at an event, or a front-desk question ("Want texts when we run specials?") all count, as long as the disclosure is shown and you log it. For verbal consent, follow up right away with a confirmation text that restates what they signed up for and how to stop.

The welcome text: confirm, set expectations, offer the exit

Every new subscriber should get one text right away that confirms the sign-up, says how often you'll text, and says how to opt out. For example:

Maple & Oak: You're in! Up to 4 deals/mo. Msg & data rates may apply. Reply HELP for help, STOP to cancel.

That's about 105 GSM-7 characters, so it's 1 segment. Add a single emoji and the whole message switches to unicode, where a segment holds 70 characters. The same text becomes 2 segments. At 140 characters with one emoji it becomes 3.

Worked example: the cost of welcome texts

Assumptions: 1,000 new subscribers a month, a 1-segment welcome text, Ready Standard at $0.0075 per segment plus a $0.0045 carrier fee per segment.

  • 1,000 × 1 segment × $0.0075 = $8 in per-segment charges
  • plus 1,000 × $0.0045 in carrier fees, itemized separately
  • If you add an emoji and the text grows to 3 segments, both figures triple: $23 plus 3,000 × $0.0045

These figures don't include the compliance surcharge. If you switch on scrubbing or landline validation for the account, each adds $0.003 per segment. Both are off by default. Replies are billed like sent texts, so a list that answers back costs a little more. That's a good problem to have.

If your sign-up form posts to your backend, sending the welcome text is one request:

curl -X POST https://api.tryready.com/v1/messages \
  -H "X-API-Key: $READY_API_KEY" \
  -H "Idempotency-Key: 3b1f6c2e-8d4a-4f7e-9c11-2a5e0b7d9f40" \
  -H "Content-Type: application/json" \
  -d '{"to": "+12125550199", "body": "Maple & Oak: You'\''re in! Up to 4 deals/mo. Msg & data rates may apply. Reply HELP for help, STOP to cancel.", "consent_attested": true}'

consent_attested: true is your promise that this person agreed to texts. Ready records that attestation, but your form record is still the proof. The Idempotency-Key means a retried request after a network blip won't send the welcome twice. The full reference is in the messages API docs.

What not to do with purchased lists

Don't text them. That covers bought lists, rented lists, "opted-in" lists from lead vendors, co-registration lists where your brand wasn't named, and numbers scraped from directories or websites. The TCPA asks whether this person agreed to marketing texts from you, and a vendor's say-so doesn't answer that.

Common rationalizations, and why they don't hold up:

  • "The vendor says they're opted in." Opted in to the vendor, maybe. Consent isn't transferable to whoever buys the file.
  • "We'll scrub it first." A litigator and DNC scrub removes some of the riskiest numbers. It doesn't create consent for the rest.
  • "We'll only send one text asking if they want more." That first text is a marketing text to someone who didn't consent. It's the exact text the law is about.

If you have a list of prospects without SMS consent, contact them by phone or mail and invite them to opt in there, for example with a postcard that has a QR code. SMS is for people who asked for it or who have already replied to you.

Keeping the list clean once you have it

A list decays. Numbers get reassigned, people change jobs, and interest fades. A few habits help:

  • Honor STOP everywhere. On Ready, an inbound STOP or UNSUBSCRIBE is honored automatically and the opt-out carries across every campaign. You can read opt-outs back with GET /v1/opt-outs to sync your own database. That list holds only this account's opted-out contacts, so check GET /v1/opt-outs/:phone before another tool texts a number.
  • Validate numbers. Landlines can't receive texts. GET /v1/validate/:phone checks a number, and on Ready known landlines and opted-out numbers are refused up front and not charged.
  • Scrub when the risk justifies it. The standalone TCPA and DNC litigator scrub is $0.005 per contact and checks known TCPA-litigator and DNC-complainer lists. Treat it as cheap risk reduction, not a lawsuit shield.
  • Respect quiet hours. Ready holds campaign and drip sends outside permitted local hours, based on the recipient's area, and charges only when the text actually sends. A single API text, like a welcome text, is held only if sending opens within about 6 hours; otherwise it is refused with the reopen time and you send it again.
  • Re-permission dormant contacts. If someone hasn't heard from you in a year, a short "Still want deals from us? Reply YES to stay on" is safer than resuming your full cadence.

Compliance is ultimately the sender's responsibility. Tools reduce risk, but the consent record, the disclosure and the decision about who to text are yours.

Registering before you send marketing texts

Marketing texts to a list need a registered A2P 10DLC campaign. Unregistered traffic gets carrier-filtered. In Ready, registration happens in-app. There's no setup fee: the first month, $25, is charged at submit. After that it's $25/mo for registration and $2 per number. Most approvals take 2 to 7 days. If you're new to this, start with what 10DLC is.

Your registration should describe the opt-in flows from the table above, in plain language, with your disclosure text. Reviewers compare that description against your website. The more your real form matches what you submitted, the smoother approval goes.

The practical takeaway

Pick two or three opt-in sources where customers already hand you their number, usually web forms and checkout, plus a keyword or QR code. Add proper disclosure to each. Store the consent record in your own system. Send a 1-segment welcome text that sets expectations. Skip purchased lists entirely.

Once the list is growing, running your first SMS campaign is the next step. If you want to try Ready, your first 20 texts are free one-to-one sends; use them to test your welcome message before you register. To send, you add a card and get a number, which is $2 a month with the first month charged when you get it. You can sign up here or see the Standard rate first.

FAQ

How long does it take to build an SMS marketing list?

It depends on traffic, not tools. A store with steady checkout volume and an SMS box at checkout grows a list every day. A business that relies only on a keyword on a sign will grow slowly. Adding opt-ins at checkout and on your site is usually the fastest legitimate path.

Can I text customers who gave me their number for order updates?

You can send them the order updates they asked for. Marketing texts need separate express written consent, so add a marketing opt-in box rather than assuming it.

Does Ready store proof of each subscriber's consent?

No. Ready records the sender's attestation on each bulk send and each API send that sets consent_attested (who sent, to how many, when). It does not store each recipient's opt-in time, wording or page URL. Keep that in your store, CRM or database. (A contact who signs up on a Ready-hosted opt-in page is the exception: Ready stores that sign-up, with the time, IP address and exact wording, and support@tryready.com can send you a copy.)

Is a double opt-in required?

It isn't universally required, but a confirmation text after sign-up is standard practice, and carriers expect to see one. Asking people to reply YES to confirm adds proof that the number belongs to the person who signed up.

Can I import a list I collected years ago?

Only if the people on it gave consent that covers the texts you plan to send, and you still have the records. For old or uncertain lists, send one re-permission message to contacts you're confident opted in, and drop anyone you can't document.