Transactional SMS is a text the recipient needs because of something they already did, such as an order confirmation, a login code or an appointment reminder. Promotional SMS is a text meant to get them to buy, book or come back, and it needs a stronger, written form of consent plus its own handling at 10DLC registration.

The difference matters for three practical reasons. It decides what consent you need before you hit send. It decides which use case you declare when you register with the carriers. It decides whether your messages keep getting delivered after approval. Most of the trouble comes from texts that start out transactional and pick up one promotional line along the way, so this post covers that line in detail.

What transactional SMS is (and isn't)

A transactional text carries information the recipient expects because of an existing relationship or action. The test is simple: would the person be confused or worse off if the text didn't arrive?

Typical transactional messages:

  • Order and shipping updates: "Your order #1042 has shipped."
  • One-time passcodes and login alerts: "Your code is 482913. It expires in 10 minutes."
  • Appointment reminders: "Reminder: your cleaning is tomorrow at 2:30 PM. Reply C to confirm."
  • Account and billing notices: "Your card ending 4421 was declined. Update it in your account settings."
  • Service alerts: "Your technician is 15 minutes away."

What makes them transactional is the purpose, not the format. A shipping update is transactional. A shipping update that ends with "Use SAVE10 for 10% off your next order" is promotional. We cover that in its own section below because it is where most senders go wrong. If you want a broader look at notification-style texts, our post on what an SMS notification is walks through more business examples.

What promotional SMS is

A promotional text tries to drive a new action that benefits the sender commercially. Typical promotional messages:

  • Sales, discounts and coupon codes
  • New product or menu announcements
  • "We miss you" win-back messages
  • Event invitations meant to sell tickets or drive foot traffic
  • Abandoned-cart nudges with an incentive
  • Review requests bundled with an offer

Some of these feel like service. A "your cart is waiting" text with no discount sits in a gray area. Once it includes an incentive, though, nearly everyone treats it as marketing. When in doubt, classify a message as promotional. Over-classifying costs you very little. Under-classifying can cost you a lot.

The consent each one needs

This is general guidance, not legal advice. The TCPA and state laws vary, and compliance is ultimately the sender's responsibility.

TransactionalPromotional
Typical consent standardPrior express consent (often given when the person provides their number for that transaction)Prior express written consent: a clear, signed or e-signed agreement to receive marketing texts
Must the opt-in mention marketing?No, but it should describe what you'll sendYes, explicitly
Can consent be a condition of purchase?N/ANo; the disclosure should say so
Opt-out (STOP) honored?YesYes
Typical 10DLC use caseAccount Notification, 2FA, Customer Care, Delivery NotificationMarketing (or Mixed)

The gap between the two columns is where liability sits. Someone who gave you their number to receive a delivery update has not agreed to receive your Friday sale. Texting them that sale relies on consent you don't have. TCPA exposure is commonly cited at $500 to $1,500 per text. For the full breakdown, read prior express written consent vs implied consent.

A practical pattern is two separate checkboxes at signup or checkout: one for order and account texts and one for marketing texts. Leave the marketing box unchecked by default. Store the timestamp, the exact wording and the page URL for each person. That record is yours to keep. Your messaging provider is not going to keep it for you.

The one-line test: when a transactional text turns promotional

Here's the same message written twice:

A: "Hi Sam, your order #1042 has shipped and should arrive Thursday. Track it: [link]"

B: "Hi Sam, your order #1042 has shipped and should arrive Thursday. Track it: [link]. Loving your gear? Get 15% off your next order with code BACK15 ๐ŸŽ‰"

Message A is transactional. Message B is promotional, because the coupon turns the whole message into marketing. A carrier reviewer or a plaintiff's attorney won't split the difference.

The added line also changes the cost. Message A is about 95 GSM-7 characters, so it fits in 1 segment. Message B is about 160 characters including an emoji, and that emoji drops the limit to 70 characters per segment (67 per part once it splits). Message B comes out to 3 segments.

Worked example, at Ready's Standard rate of $0.0075/segment plus a $0.0045 carrier fee, for 5,000 orders in a month:

  • Message A: 5,000 ร— 1 segment = 5,000 segments โ†’ $38 plus 5,000 ร— $0.0045 in carrier fees
  • Message B: 5,000 ร— 3 segments = 15,000 segments โ†’ $113 plus 15,000 ร— $0.0045 in carrier fees

The upsell triples your segment count and brings promotional consent requirements onto every order. If you want to cross-sell, do it in a separate message to the people who checked the marketing box.

Why mixing them hurts 10DLC registration

Every 10DLC campaign is registered under a declared use case, with sample messages and a description of how people opt in. Carriers compare what you declared to what you actually send. Mixing the two types causes problems in three places.

At submission

If you register as "Account Notification" but your sample messages include a discount code, the reviewer sees a mismatch. Mismatches are a common rejection reason. The reverse also happens: you declare Marketing, but your opt-in language never mentions marketing texts. Our guide to opt-in wording that clears registration covers the exact phrasing reviewers look for.

After approval

Approval doesn't settle the question. If a notification campaign starts carrying promotions, carriers can filter the traffic or suspend the campaign. You usually notice when delivery rates drop, and there's no warning beforehand.

Throughput

Carriers meter throughput per campaign, and the figures are approximate because no official rate card exists. A fresh standard campaign with no vetting often gets around 1 to 4 segments per second. At an assumed 2 segments per second, that 15,000-segment promo takes roughly 2 hours to clear (15,000 รท 2 = 7,500 seconds). If your login codes share that campaign, they compete for the same allowance during those 2 hours. Separating the campaigns keeps a big promo send from slowing your time-sensitive texts.

A "Mixed" use case does exist for senders who genuinely send both from one campaign. It can work at modest volume. The tradeoff is that your samples and opt-in flow have to support both types clearly. For more on choosing the use case, see matching your use case to what you actually send.

How to keep the two separate in practice

Register two campaigns under one brand

One brand can hold multiple campaigns. On Ready, the brand is $10/mo, each campaign is $20/mo and each number is $2/mo. A brand with one notification campaign and one marketing campaign, with one number on each, costs:

$10 (brand) + $20 + $20 (campaigns) + $2 + $2 (numbers) = $54/mo

That's $22/mo more than running a single campaign on one number. You pay that to keep your transactional delivery insulated from your marketing. Registration has no setup fee, and the charge at submit is the first month. Most approvals take 2 to 7 days, and the whole flow is handled in-app.

Send each type from its own number

If you send through the API, pass the right from number for each message type. Set consent_attested only when you hold consent for that specific type of message:

POST https://api.tryready.com/v1/messages
X-API-Key: <key>
Idempotency-Key: 6f1c2a9e-3b7d-4e21-9a0c-5d8e7f1b2c34

{"to": "+12125550199", "body": "Your order #1042 has shipped.", "from": "+13125550123", "consent_attested": true}

Ready records that attestation per send, meaning who sent the message, to how many people and when. That creates an audit trail on our side. It is not a per-contact consent record, so your opt-in timestamps and wording still belong in your own store. Full request details are in the messages API docs.

Plan for STOP crossing campaigns

On Ready, an inbound STOP is honored and propagated across campaigns. A contact who opts out of your promos won't receive your shipping updates from that account either. That is the conservative behavior, and it is also a real tradeoff. Set expectations in your opt-in copy, and make your promotional cadence gentle enough that people don't reach for STOP.

Scrub the promotional list

Litigator and DNC scrubbing matters most for promotional sends to older or imported lists. The standalone TCPA & DNC Litigator Scrub is $0.005 per contact. You can also switch scrubbing on for an account, which adds $0.003 per segment. It reduces risk. It doesn't make you immune.

The takeaway

Classify every message by its purpose. If a text carries any offer, treat it as promotional. Collect separate consent for each type, declare a use case that matches what you send, and keep promotions off the campaign that carries your codes and receipts. Two campaigns cost a little more each month, and they are much easier to keep compliant and delivering than one mixed campaign.

If you want to test your flows, create an account. The first 20 one-to-one texts are free, and to send any text you need a card and a number ($2 a month, the first month charged when you get it). Use those free texts before you register, then submit your campaigns in-app.

FAQ

Is an appointment reminder transactional or promotional?

It's transactional, as long as it only confirms, reminds or reschedules. If you add "book your next visit and save 20%," the message becomes promotional.

Do transactional texts need opt-out language?

Carriers expect STOP to be honored on every campaign. Including "Reply STOP to opt out" in the first message to a contact is good practice. Ready handles inbound STOP automatically either way.

Can one 10DLC campaign carry both types?

Yes, under a Mixed use case. Your sample messages and opt-in flow have to support both types clearly. At higher volume, or when you send time-sensitive codes, separate campaigns are usually the safer setup.

Does Ready charge differently for transactional and promotional texts?

No. Both types are billed at the Standard rate of $0.0075/segment plus the $0.0045 carrier fee, and replies you receive are billed the same way. The only difference in cost is the segment count, which depends on message length and characters.

Do I need a TCPA scrub for transactional texts?

It matters less there, because transactional recipients just interacted with you. The scrub earns its $0.005 per contact on promotional sends, especially to lists that have sat unused for a while.