Key Takeaways
- CSV import is a campaign pipeline, not a firehose. Map columns, honor STOP, then pace to the radio.
- Bulk from Excel/CSV is a Professional and Business feature. Isolate OTP devices from the import pool.
- A dry run on staff numbers beats a 40,000-row first send.
- Suppression must live in the same list you re-import. Otherwise STOP dies on the next upload.
- Operator airtime still pays for every row that leaves the SIM, including retries.
- Confirm live send fields in Developer Center. This page is setup order and failure modes.
Summary
Setting up bulk CSV import on an Android SMS gateway is a consent and pacing job first, a spreadsheet job second. The file is only a list. The last mile is still one or more SIMs with OEM rate ceilings and carrier fair-use. A careful setup maps columns, proves STOP suppression, dry-runs staff rows, then ramps. A careless setup pastes 20,000 numbers into a phone that also sends OTP.
Match the product pillar bulk SMS from Excel and CSV. Import and campaign tools sit on Professional and Business. You still bring the Android phone and operator SMS credit. Platform pricing is devices plus send volume — not aggregator per-message credit packs.
If the next upload can resurrect a STOP’d number, you did not finish setup. You built a leak.
Spreadsheet to radio
The happy path looks simple: upload, map phone + body, send. Production adds three gates. Consent flags in the file or a suppression list that wins. Column types that survive Excel’s habit of turning MSISDNs into scientific notation. A send pace the radio can hold, not the pace your laptop can POST.
Search intent for android sms gateway bulk csv is usually “how do I not destroy the SIM on day one.” Keep that the plot. Confirm live request shapes in SMS API documentationif you drive the same file through HTTPS instead of the panel.
Context
Teams land here after a staging import “worked” on ten rows and then failed on a real list: encoding, missing plus signs, duplicate keys, or a phone that Doze-killed overnight mid-campaign. Android SIM gateways expose radio reality. Feature enablement without owners creates silent OTP failures when bulk and auth share a device.
Android connectivity and SMS behavior is documented by Google at Android connectivity docs. OEM send ceilings and operator fair-use are not in that page. Your runbook has to be.
Setup sequence
- Put bulk on Professional/Business devices that are not the OTP pool.
- Export a tiny CSV: staff numbers, E.164, a test body, a consent column.
- Map columns once. Save the mapping. Reject files that still look like “Name, Phone, Phone2.”
- Dry-run ten rows. Wait for DLR. Fix encoding (UTF-8) and leading zeros before the rest.
- Join suppression: STOP from auto-reply and STOP must drop rows before enqueue.
- Pace. Hold a sustain SMS/min you already measured on that SIM — see load test carefully.
Pair and charge from the device setup guide. A sleeping phone with a 15,000-row queue is not a campaign. It is a Pending museum.
Column map
| Column | Required | Setup miss |
|---|---|---|
| MSISDN (E.164) | Yes | Excel scientific notation; stripped plus |
| Body / template key | Yes | Spintax untested; GSM vs Unicode length |
| Consent / source | Yes for promo | Blank “yes” column nobody audits |
| Locale / language | If you localize | Mixed scripts in one GSM template |
| Send-after timestamp | If scheduled | Timezone naive midnight blasts |
| External id | Recommended | No idempotency when the file is re-uploaded |
Cost and airtime
Every accepted row spends operator credit. Retries from a impatient client spend it twice. Model devices + platform volume + carrier SMS. Free is 300 SMS lifetime — not a bulk budget. Starter and above uncap platform send volume on those SKUs and still meter devices; carrier fair-use remains. See device and SMS volume pricing.
Name who tops up the promotional SIM before the campaign window. Empty prepaid mid-file looks like an API outage.
Operations
Watch queue depth and last-seen for the whole send, not only the first hundred rows. After OEM updates, re-run the dry-run file. Keep a spare charged device on the same plan device cap so you can fail over without inventing a procedure.
Two-way replies during a blast belong on two-way SMS inbox. Do not bury STOP in an unread panel.
Consent and STOP
Promotional CSV without a suppression join is a compliance defect. Record opt-outs in the system you re-import from. Redact message bodies in support exports. Protect API keys if the same file is posted by a worker. Consent is yours; the gateway is transport.
When to go live
Go live when dry-run DLR is clean, STOP drops rows, pace is documented, and OTP is on another pool. Delay if last-seen is flaky or the file still has national-format leftovers. If you cannot staff a handset, this is the wrong product for that list — compare aggregator lanes honestly, not with a spreadsheet hero send.
Checklist
- Plan includes CSV import (Professional / Business).
- OTP devices excluded from the campaign pool.
- UTF-8 file, E.164 numbers, saved column map.
- Staff dry-run with DLR.
- STOP / suppression joined before enqueue.
- Sustain SMS/min written for that SIM.
- Airtime budget includes retries.
- Last-seen alert live for the send window.
- On-call named.
- Developer Center checked if you send via API.
Next steps
Open the pillar bulk SMS from Excel and CSV, keep consent language on bulk SMS with consent, and pair hardware from setup. Feature list context: SMS gateway features.
Deep dive: production hardening
Freeze a file naming convention: market, date, version. Accidental re-upload of yesterday’s full list with no external ids is how people get double-texted. Store the mapping next to the runbook, not in one operator’s head.
Unicode vs GSM-7 length changes segment count and airtime. Preview a worst-row before the campaign, not after finance asks.
Scheduled columns need the timezone you actually operate, not the laptop’s zone. Midnight UTC into a local morning is a classic complaint.
Deep dive: scaling and failure modes
Throughput scales with device count, not with a bigger CSV. Split files by device or let multi-device routing pick healthy last-seen. Sequential numbering in a column is a spam fingerprint; shuffle if the source is an incrementing id.
Typical failures: scientific notation MSISDNs, Windows-1252 files, STOP not joined, OEM sleep at row 8,000, prepaid empty, OTP sharing the radio. None of those are “the API is down.”
Starter, Professional, and Business list Unlimited SMS as platform send volume; that is not unmetered carrier SMS. Platform volume on paid SKUs is not operator airtime.
Deep dive: integration discipline
If a worker posts the CSV via HTTPS, use the same idempotency you would for a single send. Persist gateway message ids per row. Webhook handlers must tolerate replay when DLR arrives twice.
Developer Center owns live fields. This setup page stays conceptual so it does not drift from the reference. You bring the Android phone and operator SMS credit.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- bulk SMS from Excel and CSVSpreadsheet campaigns
- bulk SMS with consent best practicesHigh-volume outreach
- SMS API documentationLive endpoint reference
- device and SMS volume pricingPlans and allowances




