How to Send Bulk SMS: Planning and Sending Your First Broadcast
Before You Start
Three things need to be in place before your first broadcast:
- A running install. Either the open source SMS Campaign Engine on your own hosting (the documentation covers Docker and shared hosting setup in a few minutes), or the hosted SMS Broadcast app.
- A connected provider. You need a sending number configured with one of the 12 supported providers. If you have not done that yet, start with how to connect an SMS provider, including 10DLC registration, which is required before US carriers will pass your volume.
- Opted-in contacts. Every number on your list must have agreed to receive texts from you. This is a legal requirement, not a suggestion. Our TCPA guide covers what counts as consent.
Step 1: Load Your Contacts
contacts/add for wiring up a signup form plus contacts/upload for bulk imports. Give every contact a feed tag, a short code naming where the contact came from, like webform or store-signup. Feeds let you filter broadcasts later and trace results back to a source.The engine keeps a profile on every contact: carrier, name, state, how many messages they have received, and an activity level that starts at inactive and upgrades to clicker or converter as they engage. That activity level matters, because when a broadcast has fewer slots than you have contacts, engaged people get queued first.
Step 2: Write the Message
Personalize with placeholders. ##FNAME## becomes the contact's first name, and a tracked link is written as https://yourdomain.com/click.php/##SUBID##, which the engine turns into a unique link per recipient so clicks get counted and your landing page receives the tracking id. Include opt-out language, like "Reply STOP to opt out", in the message.
Step 3: Create a List
Carrier caps deserve a word. Your 10DLC trust score limits how much volume each carrier will accept from you per day. Setting caps for tmobile, att, verizon, and the rest keeps the engine inside those limits automatically, which protects your delivery rate instead of burning messages that carriers will silently drop.
Step 4: Schedule the Broadcast
Sends are shifted to each recipient's local timezone based on their area code, so a 10 AM bucket goes out at 10 AM in New York and 10 AM in Los Angeles, not at the same moment everywhere. Spreading also keeps inbound replies and support questions at a pace your team can handle.
If you would rather not schedule by hand at all, the auto scheduler builds the day's broadcasts for you, one per list, rotating through whichever messages you enabled for that weekday. Turn it on in settings and check the weekday boxes on each message you want in the rotation.
Developers can do the same thing programmatically: the broadcast/schedule API endpoint takes the list ID, the message ID, and the total to send. The API documentation has the full field reference and examples.
Step 5: Watch Delivery and Results
A healthy broadcast delivers above 95%. If yours comes in well under that, the usual causes are an unregistered or under-registered number, content that trips spam filters, or volume beyond your trust score. Our deliverability guide covers the fixes.
Common Questions
How fast does it go out? Across the day, in hour buckets. This is deliberate: carriers throttle sudden bursts, and replies arrive at a manageable pace. If you need one message out immediately, the send API endpoint sends a single SMS right away.
What happens to STOP replies mid-broadcast? They are processed automatically and immediately. The number goes on the suppression list and gets no further messages, including any still queued.
Can I send the same broadcast to two lists? Yes, schedule it once per list. Suppression and per-contact history prevent double sends to a contact that appears in both.
More answers in the SMS broadcast software FAQ.
SMS Campaign Engine is free and open source. Install it in minutes and send your first broadcast today.
Get the Code on GitHubPrefer it managed? Contact our team about the hosted SMS Broadcast app.