A good referral text message goes to a customer who already agreed to hear from you, arrives within hours of a good experience, names a specific reward for both people, and gives the friend a way to reach you. You should never text the friend yourself. Everything below is templates and the mechanics around them: timing, reward wording, consent, keyword tracking, and how to automate the ask.

This post is for any business that already texts its customers, including home services, clinics, salons, ecommerce stores and SaaS products. The templates are short enough to send as single SMS segments, and the cost math uses our actual Standard rate. That way you can see what a referral program costs per month before you build one.

When to send a referral text message

Timing matters more than wording. A referral ask sent while the customer is still pleased gets read as a friendly nudge. The same text sent three weeks later reads as a marketing message.

The moments that work

  • Right after the job is done or the appointment ends. Send it within a few hours, while the result is still in front of them.
  • A few days after delivery for physical products. The box needs to be opened and used first.
  • After a positive reply. If a customer texts "thanks, looks great," that reply is your signal to ask.
  • After they leave a 4- or 5-star review. They have just told the public they like you, so asking them to tell a friend is a small step.

The two-step version (recommended)

Don't ask everyone. Send a one-line satisfaction check first, then send the referral ask only to people who score you highly:

  1. "Hi Dana, how did today's visit go? Reply 1 to 5, 5 is great."
  2. Replies of 4 or 5 get the referral template. Replies of 1 to 3 get a personal follow-up from a human.

This keeps you from asking an unhappy customer to spread the word, and it routes your problems to someone who can fix them. Send both texts during normal daytime hours. Our best time to send SMS marketing guide breaks this down by industry.

Templates by situation

Each template below fits in one 160-character GSM-7 segment as written. Long business names or long codes can push a template over the limit, so check the count before you save it. Swap in your own names, codes and rewards.

After a completed service

Hi Dana, thanks for choosing Brightside Plumbing. Know someone who needs a plumber? Give them code DANA20 and you both get $20 off. Reply STOP to opt out

After a 5-star rating reply

Thank you, Dana! If a friend could use us, have them text DANA to this number. You each get $20 off your next visit.

Ecommerce, a few days after delivery

Hope you're loving the order, Sam. Share code SAM15 with a friend: they get 15% off, and you get $15 credit when they buy.

Clinic or salon (keep it light, no health details)

Thanks for coming in today, Priya. Friends who book with code PRIYA get $25 off their first visit, and so do you.

SaaS or B2B

Glad the setup went smoothly, Alex. Know a team that could use us? Send them code ALEX and you both get a free month.

A forwardable version

Want to pass us along? Forward this: "I used Brightside Plumbing and they were great. Text DANA to 555-010-0199 for $20 off."

The forwardable template does the most work of any on this list. The customer sends it person to person, from their own phone, and the friend contacts you first. That matters for consent, which we cover below.

A note on STOP language: put opt-out wording in the first marketing text a contact receives, and repeat it periodically after that. You don't need it in every reply within a live conversation.

Wording the reward

Be specific and double-sided

"Refer a friend and get rewarded" gives the customer nothing to say to their friend. "You both get $20 off" gives them a sentence they can repeat. Rewards for both people generally beat rewards for the referrer alone, because the customer gets to offer something rather than ask for something.

Write like a person, not a coupon flyer

Carriers filter on content, and a registered campaign does not exempt you from that. Some patterns get referral texts filtered:

  • ALL CAPS and stacked punctuation ("FREE!!!")
  • Public link shorteners. Use your own domain, or skip the link and use a code.
  • Vague cash language ("earn money," "get paid")

Our post on content-level filtering after approval covers the patterns in more depth.

Watch the emoji

One emoji switches the entire message to unicode, which cuts the segment limit to 70 characters (67 per part when it splits). A 140-character referral ask with one party emoji costs 3 segments instead of 1. That makes every send 3x the price for a decoration.

The consent problem: never text the friend directly

The tempting version of a referral program goes like this: "Reply with your friend's number and we'll send them the offer." Don't do it.

Your customer can agree to receive your texts. They cannot agree on their friend's behalf. A friend who never opted in and gets a marketing text from a business they've never heard of is a cold contact. Texting cold contacts is how businesses end up facing TCPA claims, where statutory exposure runs $500 to $1,500 per text. Our stance is simple: cold contact happens by phone and mail, and SMS goes to people who consented or who contacted you first.

These three patterns keep you clean:

  1. The customer forwards the message. That's one person texting another, and your business never touches the friend's number.
  2. The friend texts a keyword to you. They started the conversation, so you can answer it. Before you add them to marketing campaigns, ask for and record their opt-in.
  3. The friend signs up on a landing page with a clear SMS consent checkbox.

Keep your own records here. When you send through Ready, we record your opt-in attestation for each bulk send and each API send that sets consent_attested: who sent it, to how many people, and when. That is an audit trail of your promise. It is not a per-contact consent record. We don't store each recipient's opt-in time, wording or page URL, and a keyword reply doesn't create one. Your CRM or signup form needs to keep that record. Compliance is ultimately the sender's responsibility. Our tools reduce risk; they don't remove it. (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.)

Tracking referrals with a keyword

The simplest tracking system is a unique code per customer, used as an inbound keyword: "Have them text DANA to this number."

How it works

  • Generate a code from the customer's first name plus a number to keep it unique (DANA20, DANA21).
  • Friends text the code to your business number, and the message lands in your Inbox like any other reply.
  • You reply, confirm the reward, ask for consent to future texts, and credit Dana.

Reading codes programmatically

If you have a developer, pull inbound messages with GET /v1/messages (paged with before_id). Match message bodies against your code list and credit referrers automatically in your own database. The messages API docs cover the details.

Budget for this: replies you receive are billed like sent texts, at the per-segment rate plus the carrier fee.

Automating the ask in Ready

Three ways to set it up

  • Inside the Ready app: save the templates, then use automations and drip campaigns to send the satisfaction check and the follow-up. The AI message writer and spam-filter check can tighten wording before you save a template. New accounts can't create an AI agent that replies on its own. An account that set up an AI agent before agents were retired still has it, and an agent in auto mode answers texts on its own until you pause its automation in Automations.
  • In GoHighLevel: Ready installs natively. Your existing workflow (for example, "opportunity marked won → send SMS") sends through Ready, and replies sync back into the GHL conversation.
  • From your own software: when a job closes in your system, call the API:

POST https://api.tryready.com/v1/messages Headers: X-API-Key: <key>, Idempotency-Key: <any UUID>

{"to": "+12125550199", "body": "Hi Dana, thanks for choosing Brightside Plumbing. Give a friend code DANA20 and you both get $20 off. Reply STOP to opt out", "consent_attested": true}

The idempotency key means a retried request never sends twice. Opted-out and numbers on your Ban list are refused up front and aren't charged. A text sent through the API that would land in the recipient's quiet hours is held, then sent and charged later, only if sending opens within about 6 hours. Otherwise it's refused, and you send it again once sending opens.

What it costs (worked example)

The assumptions are 400 completed jobs a month, a one-segment satisfaction check to all 400, and roughly half scoring 4 or 5:

  • Satisfaction checks: 400 × 1 × ($0.0075 + $0.0045)
  • Score replies: assume about 300 reply, so 300 × 1 × ($0.0075 + $0.0045)
  • Referral asks to the ~200 happy customers: 200 × 1 × ($0.0075 + $0.0045)

Ready's all-in prices per segment include the carrier fee but not screening: Scrub lists and Number validation, the two switches in Settings under Compliance, each add $0.003 per segment when switched on, shown as screening on your bill, and both are off by default. Unless you turn the opt-out footer off, the first text to each contact, and one again from time to time, also gets "Reply STOP to opt out" and your business name if the message does not already have them, so a text close to the segment limit can bill one more segment.

That's 900 segments, or $18 at the $0.0075 Standard rate, plus 900 carrier fees itemized separately. Add the emoji to every message and the same flow becomes 2,700 segments.

Referral asks are marketing, so they need to run on a registered 10DLC campaign with the right use case. See our use-case picking guide. Registration has no setup fee. You pay $25 at submit for the first month, then $25/mo for registration + $2 per number. Most approvals take 2 to 7 days. Your first 20 texts are free one-to-one sends, so use them for testing 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.

If your current provider already sends this flow well, keep it. Raw carrier APIs and GoHighLevel's LC Phone charge less per message than we do. What we offer is registration, compliance tooling and the inbox in one place.

The practical takeaway

Ask only happy customers, ask within hours, name a reward for both sides, and let the friend come to you through a forward, a keyword or a form. Keep it to one segment and skip the emoji. Track with per-customer codes. If you want to try the flow end to end, sign up, load the templates above, and send your first few asks one-to-one before building the automation.

FAQ

What should a referral text message say? Thank the customer, name the reward for both people ("you both get $20 off"), and give one simple action: a code or a keyword to text. Include opt-out wording on the first marketing text.

Can I text the friend my customer referred? Not first. Your customer can't consent for their friend. Let the friend text you, forward your message, or sign up on a form with SMS consent.

When is the best time to send a referral ask? Within a few hours of a completed service, a few days after delivery, or right after a positive rating reply. Send during normal daytime hours.

How do I track which customer referred someone? Give each customer a unique code and have friends text it to your number or enter it at checkout. Match codes in your inbox, or pull messages through the API.

Do emojis matter in referral texts? Yes. One emoji drops the segment limit to 70 characters, so a 140-character message becomes 3 billed segments instead of 1.