In short
- Put the numbers in a column called phone. Add a column for anything you want to personalise, such as name or time.
- In Google Sheets, download the sheet as .xlsx or .csv. Excel files work as they are.
- Install the DroidSender app on an Android phone and pair it with the six-character code from the dashboard.
- Create a campaign, upload the file, and write the message. Type @ to drop a column into the text.
- Send now or schedule it. Replies land in Conversations, next to what you sent.
What you need
- An Android phone with a SIM card that can send texts. A plan with unlimited SMS is worth it if you send in volume.
- A computer for the dashboard.
- Your list in Excel, Google Sheets or any tool that exports .csv.
Why send from a spreadsheet at all
If you have a list of customers, patients, members or students, it is already in a spreadsheet. The usual way to text all of them is an SMS gateway: you pay per message (in Europe often five to nine cents each), register a sender, wait for approval, and the texts arrive from a number nobody recognises.
DroidSender takes a different route. A normal Android phone with a normal SIM card becomes the sender. You upload the spreadsheet on the computer, the phone sends the texts through your existing plan, and replies come back to the same number your customers already have saved. This guide walks through the whole thing, from the spreadsheet to the first reply.
Prepare the spreadsheet
One column has to hold the phone numbers, and its header has to be exactly phone. That is the name the upload looks for; with any other name the numbers are not detected.
Every other column becomes a variable you can use in the message. A minimal file looks like this:
| phone | name | time |
|---|---|---|
| +12025550143 | Maria | 09:30 |
| +12025550176 | John | 10:15 |
| 3105550198 | Ana | 11:00 |
A few things that save trouble later:
- Any country works. The numbers can be from anywhere; what matters is the SIM in the phone that sends. If the SIM is from the same country as the numbers, you do not need the prefix: 3105550198 is read as a US number on a US SIM, 912345678 as a Portuguese number on a Portuguese SIM. The country is detected from the SIM automatically.
- Use the international format (+ and country code, like +12025550143) when the list mixes countries, or when the numbers are not from the SIM's country.
- One row per person. Duplicated numbers are skipped automatically and listed before you send.
- Keep the header row. It is what names the variables. "name" in the header is what you type as @name in the message, and "phone" is what marks the numbers column.
- Empty cells are fine, but that person's message will have a gap where the variable was. Fill the column or leave it out of the message.
The file can be .xlsx, .xls or .csv, up to 10 MB.
Export from Google Sheets
Google Sheets does not upload directly, but the export takes ten seconds. Open the sheet, then File, Download, Microsoft Excel (.xlsx) or Comma Separated Values (.csv). Either works. If the sheet has several tabs, .xlsx keeps them all and the first tab is used; .csv exports only the tab you have open.
Excel files upload as they are. If you keep the list in Numbers, Notion or a CRM, export to .csv and you are in the same place.
Connect the phone
The phone is the gateway, so it has to be paired once. This is the part that takes the five minutes, and you only do it the first time.
- On the phone, open droidsender.com/install and download the app. It is an APK, not a Play Store app, because Google restricts apps that send texts this way. Android will warn you that the file is from outside the store; that warning is normal. Install, then open.
- On the computer, log in to the dashboard with your Google account. The first thing you see is a notice that no phone is connected. Click it, and in Devices click Connect a phone. You get a six-character code.
- Type the code into the app on the phone. It asks whether to import your existing conversations. Say yes, so that when someone replies later you see the full history rather than a bare number.
- Allow the permissions Android asks for. The app needs them to send, to read replies, and to stay running in the background.
Back on the dashboard, the phone shows as connected, with its battery and whether it is online. If it drops offline later, the campaign waits in the queue and resumes when it is back.
Create the campaign and upload the file
Go to Campaigns and click New campaign.
- Name it something you will recognise in a month, like "October appointment reminders".
- Pick the sending phone. If you have several phones on the account, this is where you choose which one sends. You can also allow another phone to stand in if the chosen one is offline at send time.
- Upload the file. Drop the .xlsx or .csv in the Contacts box. It reads the file, tells you how many numbers it found, and lists the extra columns as variables. If some rows have no valid number, you see them listed with the reason, and you decide whether to continue with the rest.
Nothing has been sent yet. The campaign is a draft until you press send.
Write the message with each person's details
You can send the exact same text to everyone. Or you can personalise it: type @ in the message box, pick a column, and it drops into the text as a variable. At send time each person gets their own value.
Hi @name, your appointment is tomorrow at @time. Reply YES to confirm.
Maria receives "Hi Maria, your appointment is tomorrow at 09:30", John receives his. Same campaign, a different message for every row.
Two things to watch while you write:
- Length. A standard SMS is 160 characters. Accented characters (ã, ç, é and so on) switch the message to a different alphabet where the limit drops to 70, so a two-line reminder becomes two or three messages. The composer counts this for you and offers to convert the accents with one click.
- Variables that get long. A name is short; a full address is not. Check the preview with the longest value in your file.
Send now or schedule
Press Send now, or choose Schedule campaign and pick the date and time your customers actually read texts (mid-morning beats 11 pm).
Before anything goes out, the message passes a quick automated review. It is a safety check on the content and it is there to protect your number. It takes seconds. If the text matches a pattern that needs a human look, the campaign is held and the dashboard tells you why; duplicating it with adjusted wording sends it again.
Then it starts, and you watch the progress bar fill.
What happens while it sends
It sends at a human pace, roughly one message every couple of seconds. It does not fire the whole list at once, and that is deliberate: it is how you stay on good terms with your carrier and how your number stays clean. A list of 1,000 numbers takes about 35 to 40 minutes.
Nothing gets lost. Every message sits in the queue and goes out in order. If the phone loses signal or battery, the queue waits and resumes. On the campaign page you see what was delivered, what failed and why, and which phone each message went from.
Where the replies go
This is the part most people do not expect. Go to Conversations. Every thread from that phone is there, and when people reply, their answers land next to what you sent them. You answer from the computer, like WhatsApp Web, and the reply goes out from the number your customers already recognise.
So it is not just a one-way blast. A campaign from a spreadsheet becomes a real two-way channel, running on the phone in your pocket.
Common mistakes
- The numbers column is not called phone. Rename the header to phone before uploading.
- The numbers column has a formula or is formatted as a number. Excel drops the leading + or 0. Format the column as text before typing, or use the international format with the + in front.
- Numbers from another country without the +. A Portuguese number on a US SIM written as 351912345678 is read as a US number and fails. Add the + whenever the number is not from the SIM's country.
- RCS chats are on in the phone's messaging app. With RCS on, Android stops delivering messages as SMS and syncing stops. Turn RCS off in the messaging app settings.
- Sending 3,000 messages on the first day. Carriers notice sudden jumps. Start with a few hundred, then raise the volume.
- Testing with real customers. Put your own number in the first row and send a campaign of one before the real one.
Questions people ask
- Does it work with Google Sheets, or only Excel?
- Both. Google Sheets does not upload directly, so download the sheet as .xlsx or .csv first (File, Download). The columns come through exactly the same.
- How many numbers can I send to?
- A file can have up to 50,000 rows and 10 MB. What limits you in practice is your mobile plan, the monthly SMS included in your DroidSender plan, and the human pace of sending, roughly one message every couple of seconds. A list of 1,000 takes about 35 to 40 minutes.
- What format do the numbers need?
- International (+12025550143) or national (2025550143). National numbers are read in the country of the SIM in the sending phone, so numbers from that country need no prefix. Spaces, dashes and brackets are cleaned up. Rows without a valid number are listed before you send, and the rest go out normally.
- Will my carrier block me?
- Unlimited plans have fair-use rules, which is why DroidSender sends at a human pace and never fires everything at once. Start with smaller lists and raise the volume gradually. A campaign runs on one phone, so for a big list split it into two campaigns on two phones.
- Can people reply?
- Yes. Replies arrive on the phone and appear in Conversations on the dashboard, in the same thread as the message you sent. You answer from the computer and the reply goes out from your number.
- What does it cost per message?
- There is no per-message fee. The messages go out through your own SIM card, so the cost is whatever your mobile plan already charges, which is usually nothing on an unlimited plan. DroidSender plans include a monthly number of messages, 100 on the free plan and 2,000, 10,000 or 50,000 on the paid ones.