Docs/iMessageiMessageBest practices
The complete guide
One page for everything about your line: what it can handle, how to write on it, how to pace sends, how to follow up, and how calls tie back to the same number.
On this page
Start here
Jump straight to what you are looking for.
Line limits at a glance
50
conversations per 24 hours
Per line. Unlimited messages inside each conversation.
30
conversations per 1 hour
Per line. This paces the line so nothing fails later in the day.
The phrase "50 unique contacts per day" causes a lot of confusion, so here is the exact meaning: it is 50 conversations happening within 24 hours on one line. Not 50 messages. Not 50 sends. Fifty separate people you are in a conversation with.
One iMessage line
One device, one number, two capacity limits
50 unique conversations in a 24 hour period. Each square is one conversation, not one message. Unlimited back and forth inside a conversation.
No more than 30 new conversations start inside any single hour. This paces the line so the hardware stays healthy.
The counter resets at 12:00am
Every day, every line, back to zero
12:00am
0 of 50 used
Through the day
Conversations fill the line
Next 12:00am
Counter resets to 0
Yesterday's lead counts again today
If you messaged someone yesterday and message them again after the reset, that counts as one of today's 50. This is a hardware capacity limit, not an opt in or consent limit.
Need more than one line of capacity
50
conversations per 24 hours with 1 device
30 per hour
100
conversations per 24 hours with 2 devices
60 per hour
150
conversations per 24 hours with 3 devices
90 per hour
The daily reset
Lines reset at 12:00am every day. The conversation counter goes back to zero and your line has a full 50 conversations available again. A lead you talked to in the previous 24 hours counts as a unique conversation again the very next day. The counter measures conversations happening in a day, not which people you have ever messaged.
Why the limits exist
These caps come from the infrastructure that powers each line, not from consent rules or reply requirements. A single device can carry 50 unique conversations in a 24 hour window reliably. Beyond that, you start seeing random failures, and a failed message to a hot lead is the most expensive thing that can happen in your follow up.
Lines are capacity, not a billable item
Sendify only bills for usage. That means $0.20 per lead processed through the platform. You are not billed per line, per device, or per conversation. A line is simply the capacity we use to deliver your messages.
What you pay for
Unique leads processed. One lead costs $0.20, no matter how many messages are in the thread or whether the delivery was iMessage or SMS fallback.
What you do not pay for
Lines, devices, line limits, extra capacity, or messages inside an open conversation. Those are part of our infrastructure and are not added to your invoice.
Because lines are not billed, the right move is to tell us when your volume is going to exceed what was discussed for your account. We can add capacity before a spike so nothing throttles, and your bill still only grows by the extra leads that actually run through Sendify.
When to add devices
- Your daily new lead volume is close to or above 50.
- You get lead bursts, like a paid campaign that drops 40 leads in one hour.
- You run multiple offers or locations that each need their own line.
- You are reactivating an old database, which creates a large one time spike.
Each additional device adds another 50 conversations per 24 hours and another 30 per hour. If you expect to exceed your daily or hourly limits, reach out to our team before the campaign launches so we can size your capacity ahead of time.
is a conversation, not a channel
Think about how an iPhone user treats the blue bubble. It is quick back and forth with friends, family, and coworkers. Short lines. One idea at a time. A question that gets answered in seconds. When you talk to leads on the same channel, it should look no different.
The entire point of putting a line into your account is conversational rapport. Rapport is what produces replies, and replies are what produce booked calls. A line used as a broadcast tool does not get either.
Broadcast texting
- Reads like a newsletter, not a person
- Emoji stacks, links, opt out language
- Low replies and a line that looks automated
Conversational texting
- Short, human, one idea per message
- Ends on a question so a reply is easy
- Builds rapport, which is what drives replies
Stop sending reminders and start sending questions
The most common mistake is dropping a line into an account and leaving the old copy in place. The same reminders, the same giant paragraphs, the same emoji stacks and link drops. You will not get the reply rate the channel is capable of, and the line stops looking like a person having a chat.
Apple sees the pattern of the traffic. A thread with real back and forth reads as a real conversation. A stream of one directional announcements reads as a text blast. Rewriting the copy protects the line and lifts the reply rate at the same time.
Turn every reminder into a question
Same job, done the way a person would do it
Reminder style
"Hey John, excited for our consultation! Just need to confirm you can still make it at 3:00 East Coast. Reply STOP to cancel or unsubscribe."
Long, one directional, and carries A2P style opt out wording we no longer use on iMessage.
Conversational style
Short, direct, no opt out language, and it invites a reply that keeps the thread alive.
We are not on A2P, so the words stop, cancel, and unsubscribe do not belong in your copy. A lead who wants out simply says so and the AI closes the thread out.
Keep messages under 160 characters
160 characters is the practical ceiling for a message that still reads like a text. If a message genuinely needs more room, send one of them, then go back to short lines. Never stack 240 character messages back to back to back.
Keep messages under 160 characters
The 160 mark is the line between a text and a letter
One thought, one question. This is what real texting looks like.
Fine occasionally when you genuinely need the context. Never back to back.
Paragraph texting reads as marketing and kills the reply rate.
Pacing: a random 4 to 6 minutes between outbound sends
New outbound conversations, reminders, and follow ups should never go out closer than 4 to 6 minutes apart. The gap has to be a random variant inside that window. Not every 4 minutes, not every 6 minutes, and not alternating between the two.
If you are already replying inside a live conversation, none of this applies. Answer as fast as you want. The rule exists for conversations you are starting.
Our AI has random variants built in. In GoHighLevel or any other CRM you set this yourself with wait timers and smart delays before each outbound send.
Randomize the gap, 4 to 6 minutes
New outbound conversations, reminders, and follow ups only
Not every 4 minutes. Not every 6 minutes. Not alternating. A random value in the window every single time, so the pacing never looks mechanical.
Live conversation
Reply as fast as you like. The 4 to 6 minute rule does not apply here.
Where you set the delay
- Our AI has random variants built in. Set the window and it handles the rest.
- GoHighLevel needs wait steps plus smart delay on the workflow so sends spread out instead of firing in a burst.
- Any other CRM needs the same thing: a wait timer with a randomized range before each outbound send.
Why pacing matters
This is a throughput rule, not an approval rule. Each line runs on real hardware. Push sends faster than the device can process and you get random failures and messages that never actually leave. Pacing keeps every send landing.
Follow-ups are fine, as long as they stay short
Follow-ups work when they feel like a real person nudging a conversation back to life. The best ones are tiny hooks: John??, Are you still there?, or Did you get my text?. Those kinds of follow-ups work all the time because they fit how people actually text.
What does not work is sending giant paragraphs, dropping links again, or hammering someone with back to back messages. If the lead did not reply to your first message, a wall of text just proves the line is being used as a broadcast tool.
Wait 30 minutes to 3 hours after your last outbound before sending a follow-up. That window gives the lead space without making the conversation feel stale.
If they still do not respond, do not message that person again that day. You will burn line usage and increase the chance they report you. You can reach back out in a few days or a week, but if you did not get them on day one with a short follow-up, more texts the same day are not worth it.
Replies are what keep a thread free. When a lead responds, the conversation is live and you are not eating into your line capacity. The goal is simple: only keep texting people who keep texting back.
Follow-ups that work
- One or two words, sometimes a short question
- Feels like a real person nudging the thread
- Invites a reply without using much line capacity
Follow-ups that hurt the line
- Paragraphs, links, and repeated nudges
- Back-to-back sends look like automation
- Higher report risk and wasted limit on non-replies
One follow-up, then stop for the day
Wait, nudge once, and do not keep pushing
Send the first message
Start the conversation the right way: short, one idea, and ending on a question.
Wait 30 minutes to 3 hours
Give the lead real space. A follow-up sent too fast feels aggressive and reads as automation.
Send one short follow-up
Use something tiny like John??, Are you still there?, or Did you get my text?
If they reply, keep going
A live reply means the thread is active. Answer naturally and move toward the booking.
If they do not reply, stop today
Do not send another text to that person today. Extra sends burn limit and raise report risk.
Try again in a few days or a week
A cold lead can warm back up later. Just do not chase them down the same day.
GoHighLevel masking
Masking takes the phone number you already have in GoHighLevel and sets its caller ID to your iMessage number. When you outbound dial from the CRM, the lead sees the number that has been texting them all along.
That matters even when nobody picks up. The call lands in their missed calls list under the same number sitting at the top of their message thread, so the callback has context instead of being an unknown ring.
How to set it up
Open the GoHighLevel sub account you want to mask. Go to Settings, then select Phone system. Inside the phone system, open Configurations and choose the phone number you want to mask. The section is labeled Bring your own number. Inside that section, choose the caller ID you set up previously, which is your iMessage number. That one change makes every outbound dial from that GoHighLevel number appear as your iMessage number.
If you do not see an iMessage number available in the Bring your own number section, contact your Sendify rep. The number has to be provisioned to the sub account before it can be selected.
You can also register your GoHighLevel number on the free caller registry to help protect its reputation and reduce the chance of a spam or scam label.
Set the caller ID in GoHighLevel
Five clicks from settings to masked number
Settings
Inside the GoHighLevel sub account
Phone system
Choose the phone system section
Configurations
Open the number you want to mask
Bring your own number
Choose the caller ID set up previously
Once the caller ID is set, every outbound dial from that GoHighLevel number shows your iMessage number. If you do not see an iMessage number in the dropdown, contact your Sendify rep so we can provision one for the sub account.
How masking works
Your CRM number dials, the iMessage number shows
Dials from
GoHighLevel number
(917) 000 1111
Caller ID set to
Your iMessage number
(917) 335 0841
Lead sees
The number already texting them
One recognizable identity
Even a missed call works for you
Missed call
(917) 335 0841
Same number as the iMessage thread above it
The missed call sits right next to a conversation they already recognize, so the callback rate goes up instead of the call disappearing into an unknown number.
Caller ID and spam labels
A masked caller ID should not show as spam unless the underlying GoHighLevel number was already marked. If that number carried a flag, masking can carry the spam or scam label with it. This is a GoHighLevel and carrier reputation issue, and it has nothing to do with the iMessage line.
First step is the free carrier registry. Search for register my number for free online and submit your GoHighLevel number there. After that, the only thing that clears a label is pickup rate.
So we put the ball in our court. Message the lead over iMessage first, get a reply, let them know a call is coming, then dial. They recognize the number, they answer, and every answered call pushes the reputation back toward clean until the label goes away.
Number already flagged
Scam Likely
(917) 000 1111
If the GoHighLevel number carried a spam label before masking, the label can follow the caller ID. This is a carrier reputation issue on the CRM number, not the iMessage line.
Clean number
No label
(917) 335 0841
A caller ID that was never flagged shows clean. Register the CRM number on the free carrier registry and keep it that way.
The play that clears a flag: text first, then call
Message first
Open the iMessage thread and get a reply.
Set the call
Tell them a call is coming from this number.
Call the same day
The caller ID matches the thread on screen.
Label fades
Answered calls rebuild the number's reputation.
Pickup rate is the only real cure for a spam label. Every call that gets answered pushes the number back toward clean, and warming the lead over iMessage first is what makes them answer.
Temporary guidance
A couple of areas are being fully rebuilt over the next two weeks. They will work much better once the upgrades ship, but for now we recommend steering clear of them.
Copilot is being rebuilt
Copilot is getting a complete revamp and will be significantly better when it returns. For the time being, do not rely on it for live workflows.
Hold off on custom fields in follow-ups
Follow-ups are also getting a complete revamp. Until that ships, do not use custom fields inside follow-ups and do not use regular contact fields as a workaround. Build your follow-ups as plain, short messages for now.
Frequently asked questions
Limits and capacity
What does 50 unique contacts per day actually mean?
It means 50 conversations happening within a 24 hour period on one line. It is not 50 messages. Once a conversation is open, you and the lead can go back and forth as much as you want and it still counts as one conversation.
Is there an hourly limit too?
Yes. One line starts up to 30 conversations inside any single hour. The hourly cap paces the line so the device stays stable through the rest of the day.
When do the limits reset?
The counter resets at 12:00am every day. Every line goes back to zero and you have a fresh 50 conversations for the new day.
If I messaged a lead yesterday, do they count again today?
Yes. After the reset, that lead counts as one of today's unique conversations. The counter tracks conversations per day, not lifetime contacts.
Is this limit about opt in or consent?
No. These caps exist purely because of the infrastructure behind each line. A device can reliably handle 50 unique conversations in 24 hours. Push past that and you start seeing random failures, which is exactly what we protect you from.
What happens if I go over the limit?
The line paces or holds the extra conversations rather than risking failed sends. You are never billed for the extra line or device itself. If your volume is going to exceed what was discussed for your account, tell us ahead of time so we can add capacity before the spike.
How do I get more capacity?
Each additional device adds another 50 conversations per 24 hours and another 30 per hour. Adding a device does not add a line fee to your bill. Tell us your expected daily lead volume and we will size the number of devices to it. You still only pay $0.20 per lead that actually runs through Sendify.
Copy and sending style
How should an line actually be used?
Conversationally. Every iPhone user treats the blue bubble as quick back and forth with people they know. Your outreach should read the same way: short messages, one idea at a time, ending on a question. Rapport is what produces replies.
What happens if I drop into my account and change nothing?
You keep your old SMS copy, which means reminders, paragraphs, emoji stacks, and links. Replies stay low and the line looks like a broadcast tool rather than a person, which is the profile you want to avoid.
Can I still send appointment reminders?
Yes, but rewrite them as a question. Instead of a formal confirmation block, send something like we still good for 3 today. Same job, one line, and it invites a reply.
Should I use the words stop, cancel, or unsubscribe?
No. We are not on A2P, so that language does not belong in the copy. A lead who wants out will say so and the conversation closes out from there.
How long should each message be?
Under 160 characters. Going over occasionally is fine when the context is genuinely needed, but never send long messages back to back.
How long should I wait between outbound messages?
A random gap of 4 to 6 minutes between new outbound conversations, reminders, and follow ups. Not a fixed 4, not a fixed 6, and not alternating. A different value each time.
Does the 4 to 6 minute rule apply during a live conversation?
No. Once a lead is replying you can go back and forth as fast as you want. The pacing rule only applies to conversations you are starting.
Why does pacing matter if Apple is not the issue?
It is a throughput rule. Each line runs on real hardware, and pushing sends faster than the device can process causes random failures and messages that never leave.
Follow-ups
How many follow-ups should I send?
One short follow-up after 30 minutes to 3 hours. If there is still no reply, stop for the day. You can try again in a few days or a week.
What makes a follow-up work?
Keep it tiny and human. Examples like John??, Are you still there?, and Did you get my text? feel natural and invite a reply. Long paragraphs and back-to-back sends do the opposite.
Why stop messaging after one unanswered follow-up?
Extra texts to someone who is not responding burn line usage and increase the chance they report you. A lead that does not engage on day one is unlikely to engage if you keep pushing the same day.
Calls and caller ID
What is GoHighLevel masking?
We set the caller ID on your existing GoHighLevel number to your number. You do this inside the sub account under Settings → Phone system → Configurations. Open the number you want to mask and look for the Bring your own number section. In that section, pick the caller ID you set up previously, which is your number. When you outbound dial from the CRM, the lead sees the same number that has been texting them, including in their missed calls list.
Why does my masked caller ID show as spam?
Because the underlying GoHighLevel number was flagged before masking. That is a carrier reputation issue on the CRM number, not on the line. Register the number on the free carrier registry and build pickup rate to clear it.
How do I get a spam label to go away?
Pickup rate. Message the lead over first, get a reply, tell them a call is coming, then call from the masked number. Answered calls rebuild the reputation and the label fades.
Related articles
Still need a hand?
If your volume is going to run past the daily or hourly limits, or something is not behaving the way these docs describe, talk to our team.