A good birthday text message for a customer is short, uses their first name, comes from a named person or business, and goes out on the right day in their time zone. Send it only to people who agreed to receive texts from you, and include an offer only if you'd be fine with it being used.

This guide covers 30 templates you can copy, both with and without offers, plus the parts that decide whether the text works: collecting birthdays with consent, merge fields, timing, automation and cost. We make Ready, so the automation and cost examples use Ready. The templates work on any platform.

What to put in a birthday text message

Most birthday texts that fail have one of three problems. They read like a coupon with "happy birthday" stuck on the front. They arrive at 6:40 AM. Or they go to someone who never opted in. Here's what to include:

  • Their first name, spelled the way they typed it.
  • Who it's from. Use the business name, and a person's name if a person actually knows them.
  • One thing. That's a wish, an offer or a free item. Don't stack all three.
  • Opt-out language on marketing texts ("Reply STOP to opt out"). Birthday texts with an offer are marketing.
  • A sensible length. One segment is 160 plain characters. One emoji drops that limit to 70.

30 birthday text templates

Swap the bracketed fields for your own merge fields. Your platform's syntax may differ. Character counts assume typical name lengths.

Warm wishes, no offer (1 to 8)

  1. Happy birthday, [First name]! Everyone at [Business] hopes today is a great one.
  2. [First name], happy birthday from all of us at [Business]. Thanks for being part of our year.
  3. Happy birthday, [First name]! It's [Staff name] from [Business], just wishing you a good one.
  4. Wishing you a happy birthday, [First name]. We're glad you're one of ours. [Business]
  5. [First name], happy birthday! Hope the day is easy and the cake is good. [Staff name], [Business]
  6. Happy birthday from [Business], [First name]. No offer, no catch, just a happy birthday.
  7. It's your day, [First name]! Happy birthday from the [Business] team.
  8. Happy birthday, [First name]. Thanks for trusting us with [service] this year. [Business]

Birthday offers (9 to 16)

  1. Happy birthday, [First name]! Here's 20% off anything this week at [Business]: code [Code]. Reply STOP to opt out.
  2. [First name], happy birthday from [Business]! Your birthday gift: $10 off your next visit through [Date]. Reply STOP to opt out.
  3. Happy birthday, [First name]! Show this text at checkout for 15% off, valid all birthday week. [Business]. Reply STOP to opt out.
  4. It's your birthday month, [First name]! Use [Code] for free shipping on any order at [Business] until [Date]. Reply STOP to opt out.
  5. Happy birthday from [Business], [First name]! Book this week and your [add-on] is on us. Reply STOP to opt out.
  6. [First name], happy birthday! Double points on everything you buy until [Date]. [Business]. Reply STOP to opt out.
  7. Happy birthday, [First name]! Your birthday discount is waiting: [link]. Expires [Date]. Reply STOP to opt out.
  8. Birthday treat for you, [First name]: [Offer] at [Business] through [Date]. Enjoy! Reply STOP to opt out.

Free item or gift (17 to 21)

  1. Happy birthday, [First name]! Your next [coffee/dessert/wash] at [Business] is free this week. Reply STOP to opt out.
  2. [First name], happy birthday! Stop by [Business] before [Date] and pick up a small gift from us. Reply STOP to opt out.
  3. Happy birthday from [Business]! Your birthday [item] is ready. Just mention this text. Reply STOP to opt out.
  4. It's on us, [First name]: a free [service] with any booking this month. Happy birthday! Reply STOP to opt out.
  5. Happy birthday, [First name]! Reply YES and we'll set aside your free [item] for pickup. Reply STOP to opt out.

Birthday SMS for clients (B2B and professional services) (22 to 26)

  1. Happy birthday, [First name]. Thanks for a good year working together. [Your name], [Company]
  2. [First name], happy birthday from everyone at [Company]. Hope you get the afternoon off.
  3. Happy birthday, [First name]! Enjoy the day. The [project/account] can wait until tomorrow. [Your name]
  4. Wishing you a great birthday, [First name]. Grateful to have you as a client. [Your name], [Company]
  5. Happy birthday, [First name]. A small thank-you is on its way to your office. [Your name], [Company]

For accountants, lawyers, insurance agents and other advisors, templates 22 to 26 are the safe default. A discount from your accountant on your birthday reads strangely. A plain note doesn't.

Reminders and follow-ups (27 to 30)

  1. Hi [First name], your birthday offer from [Business] ends [Date]. Just a heads-up. Reply STOP to opt out.
  2. [First name], 2 days left on your birthday [offer]. Hope you had a great one! [Business]. Reply STOP to opt out.
  3. Thanks for celebrating with us, [First name]! Hope we made your birthday a little better. [Business]
  4. Hi [First name], we'd love to send you something on your birthday. Reply with the month and day (MM/DD) if you'd like that. [Business]

Template 30 is how you collect a birthday by text from contacts who already opted in. More on that below. Limit reminders to one per birthday. Two texts about a 15% code starts to feel like a drip campaign.

How to collect birthdays with consent

You need two separate things. One is permission to text the person. The other is their birthday.

Permission comes first. Birthday texts with an offer are marketing, so you need the contact's consent to receive marketing texts. That's typically a checked box on a form or a keyword opt-in, with wording that says what they'll get. The TCPA exposure for texting without it is commonly cited at $500 to $1,500 per text, which is a bad trade for a free cupcake. Your store, form tool or CRM should keep each contact's opt-in record: when they opted in, the exact wording and the page. Ready records your attestation for each bulk send and each API send that sets consent_attested (who sent it, to how many, and when). That gives you an audit trail of your sends. It is not a per-contact consent record, so keep that one yourself.

Then collect the birthday. Good places to ask:

  • The signup form for your loyalty program or list ("Birthday (month and day), optional, for a birthday treat")
  • The checkout or booking form
  • A text to existing opted-in contacts (template 30)

Ask for month and day only. You don't need the year, people give it more readily without one, and you avoid storing a date of birth you have no use for. Store it in a dedicated date field on the contact, not in a notes field.

Merge fields that make it feel personal

The first name does most of the work. These additions are worth the setup:

Merge fieldExample useWatch out for
First name"Happy birthday, Dana!"Blank names. Set a fallback like "there" or skip the send
Staff name": Marcus at Northside Auto"Staff who've left. Keep the field updated
Last service or product"Thanks for trusting us with your roof"Stale data from 3 years ago
Offer expiry date"valid through June 14"Calculate it per contact, not per campaign
Unique code"code DANA20"Long codes add characters

Two cleanup rules. Fix all-caps names ("DANA" to "Dana") before the send, not after. And if a name field holds something like "Dana and Mike Smith," either write the template to handle it or exclude that contact.

When to send

  • Time of day: mid-morning in the recipient's time zone, roughly 10 AM to noon. Ready enforces quiet hours based on the recipient's area. A send that lands outside permitted hours is held and goes out later, and it's only charged when it sends. That's a safety net. You should still schedule for a good hour on purpose. Our post on the best time to send SMS marketing texts breaks timing down by industry. Campaigns, drip campaigns and automations wait up to 24 hours for the window; a one-to-one or API text is held only if the window opens within 6 hours, otherwise it is refused and must be resent; a one-to-one reply to someone who texted you in the last 24 hours goes out at any hour.
  • Day: send on the birthday itself for wishes. For offers, either send on the birthday or at the start of the birthday week, with the offer valid for 7 to 14 days.
  • February 29: decide now. Most teams send on February 28 in non-leap years.
  • Weekends: a Saturday birthday still gets its text on Saturday. Moving it to Friday reads as a scheduled send.

Automating birthday sends from contact fields

In the Ready app

The setup is short:

  1. Store each contact's birthday in a date field on the contact record.
  2. Build an automation that fires on that date and sends your chosen template, with merge fields filled in.
  3. Send it from a number on a registered campaign that covers marketing messages.

The quickstart guide covers current setup. Ready's AI message writer and spam-filter check can help you tighten a template before you turn it on.

On step 3: if your campaign was registered for appointment reminders only, birthday offers don't match it. Read matching your use case to what you actually send before you go live. Offer texts can also be filtered even on an approved campaign. Generic link shorteners and aggressive discount wording are common triggers, and this post on content-level filtering covers what to change.

If you run on GoHighLevel, its workflows can trigger off a contact's date of birth. With Ready connected, the outbound text and any reply sync both ways for each sub-account.

From your own app, via the API

If birthdays live in your own database, run a daily job that finds today's birthdays and sends one personalized text per contact:

POST https://api.tryready.com/v1/messages
X-API-Key: <key>
Idempotency-Key: <uuid>

{"to": "+12125550199", "body": "Happy birthday, Dana! 20% off all week at Northside: code DANA20. Reply STOP to opt out.", "consent_attested": true}

A few practical notes:

  • Use POST /v1/messages per contact. The bulk endpoint sends one identical body to up to 100 numbers, which doesn't work for per-name messages.
  • Generate the Idempotency-Key from the contact ID plus the year, as a deterministic UUID. Then a job that reruns after a crash won't send anyone two birthday texts.
  • Opted-out numbers, numbers on your Ban list and known landlines are refused up front and not charged. You don't need to pre-filter them yourself, though it keeps your logs cleaner.

The messages API docs have the full request reference.

What a year of birthday texts costs

Here's a worked example. Assume 2,000 opted-in contacts with birthdays on file, one text each per year, on Ready's Standard rate of $0.0075 per segment plus a $0.0045 carrier fee per segment.

  • Template 9 without emoji runs about 110 characters, which is 1 segment. Cost: 2,000 × 1 × $0.0075 = $15, plus 2,000 × $0.0045 in carrier fees, for the whole year.
  • The same text with a 🎂 added becomes unicode, so its limit drops to 70 characters per segment (67 for multipart). That makes it 2 segments. Cost: $30, plus 4,000 × $0.0045 in carrier fees. The emoji doubles the bill.

Replies are billed the same way as sends, at the per-segment rate plus the carrier fee. Factor in a few "thank you!" replies.

If you switch on TCPA/DNC scrubbing or landline validation for the account, each adds $0.003 per segment. Both are off by default. Registration is separate: $25 at submit, which covers the first month, then $25/mo for registration and $2 per number. See the full breakdown of 10DLC fees.

The practical takeaway

Collect month and day with clear consent. Store the birthday in a real date field. Pick one template from each category you'll actually use, and keep it to one plain-text segment. Automate the send for mid-morning local time. For clients rather than customers, skip the offer and just say happy birthday.

To test a template on your own phone first, sign up. Your first 20 texts are free one-to-one sends, so use them before you register, and to send any text you need a card and a number ($2 a month, the first month charged when you get it).

FAQ

Should a birthday text include a discount?

Only if the economics work and it fits your relationship with the customer. Retail, restaurants, salons and ecommerce do well with offers. For professional services and B2B clients, a plain wish (templates 22 to 26) usually lands better.

Can I send a happy birthday text to customers who never opted in?

No. If the text promotes anything, it's marketing and needs prior consent. Even a pure wish from a business is safest sent only to opted-in contacts. Ask for consent on your forms, and keep each opt-in record in your own system.

What time should a birthday text go out?

Mid-morning in the recipient's time zone, roughly 10 AM to noon. Ready holds anything that would land during quiet hours, but schedule deliberately rather than relying on that.

How long should a birthday SMS for clients be?

Keep it under 160 plain characters so it's one segment. Avoid emoji unless you're fine paying for 2 segments, since one emoji cuts the limit to 70 characters.

Do I need 10DLC registration to send birthday texts?

Yes, for ongoing sends from a local number. Unregistered traffic gets filtered by carriers. Register a campaign that covers marketing messages. Most approvals take 2 to 7 days, so set it up before your first birthday automation goes live.