WhatsApp

WhatsApp Bulk Message Sender: Excel to Sent, Ban-Proof in 2026

By Omar Eltak · October 12, 2026 · 12 min read

I built OT1-Pro's bulk sender after one careless blast demoted my own WhatsApp number from Tier 2 back to Tier 1 overnight. I had 1,800 expo numbers in Excel, I sent them through a cheap tool with a 3-second delay, and by morning my quality rating was yellow and my limit was cut to 1,000 conversations per day. That is why our whatsapp bulk message sender works the way it does today: a 5-step wizard, throttle with jitter, reachable-now counts, and honest Skipped N reporting when Meta refuses a message.

I run sales over WhatsApp from Cairo for teams in Egypt, Saudi Arabia, and the Gulf. If you are still fighting the connection layer, start with my Meta App Verification 2026: A Founder's Guide. If you compare tools, read our OT1-Pro vs WATI breakdown and the OT1-Pro pricing page. This post is the Excel-to-sent manual I wish I had before that expo list.

I learned ban-proof the hard way: one blast demoted my number

In early 2025 I collected 1,843 numbers at a New Cairo expo. Names, budgets, notes like wants installment. I cleaned the sheet for twenty minutes, uploaded it to a $29 tool, set a 3-second delay, and launched at night. The dashboard showed 1,843 sent with green checks. By morning Meta had flagged the number. My rating fell to medium, then low. Delivery receipts told the real story: 412 messages never left Meta, 298 numbers were invalid, 61 people blocked me within an hour.

Meta does not punish volume alone. It punishes pattern: identical messages, fixed intervals, high blocks, sends outside the 24-hour window, and spikes from a cold number. One bad blast undid three months of warm-up. Every guardrail below ships in production because I paid for its absence first.

Why most bulk tools get you banned (and what Meta checks)

Most tools selling a whatsapp bulk message sender pitch speed: 10,000 messages in 10 minutes. That pitch triggers Meta's spam classifier. Here is what Meta scores on every blast:

  • Quality rating. Blocks and reports over 7 days. Green is healthy, yellow is throttled, red is restricted. You see it in WhatsApp Manager, not in the bulk tool.
  • Messaging tier. New numbers start at Tier 1 with 1,000 business-initiated conversations per 24 hours. Clean sending promotes you to Tier 2 at 10,000, Tier 3 at 100,000, Tier 4 at unlimited. One spammy blast demotes you within a day. I have lived both directions.
  • Template category. Outside the 24-hour service window you need an approved template: marketing, utility, or authentication. Cold promo as free-form text returns error 2018278.
  • Velocity pattern. Fixed 3-second gaps look robotic. Ten identical messages per minute for an hour from Tier 1 is a classic demotion trigger.
  • Recipient validity. Dead numbers and landlines raise your failure rate, which feeds quality. Invalid rows are not neutral.

Ask any vendor one question: show me skipped and invalid counts. If they cannot, they use a grey-route gateway that will burn your number. Once replies land, we push closed deals to Google Sheet with transparent AI credits so hot leads never rot in a broadcast report.

The 5-step wizard: Upload, Map, Compose, Test, Launch

Our wizard has five steps because each catches a different ban-triggering mistake:

  1. Step 1 — Upload. Drop .xlsx or .csv, 2MB cap. That holds roughly 15,000 to 25,000 rows, already above what Tier 1 should send in a day. Split bigger files by segment. Password-protected files are rejected with a plain reason.
  2. Step 2 — Map. Pick the phone column, name column, and up to three variables like budget. You see five live rows. Swapped columns get caught here, not after 2,000 failures.
  3. Step 3 — Compose. Write Hi {{1}}, your {{2}} viewing is confirmed for {{3}}. The composer checks category, length, and variable count against the approved template.
  4. Step 4 — Test. Send to your own number plus two test numbers over the exact production path, including Arabic shaping on small Android screens.
  5. Step 5 — Launch. You see reachable-now, invalid, skipped, throttle, and finish time before you confirm by typing the list name. No accidental double-click sends.

Try it yourself: start free on OT1-Pro and run the test step to your own phone first.

Your Excel will lie: the 2.011E+11 problem and the 2MB rule

Excel corrupts phone numbers silently. Numbers like 201026361218 paste fine, then someone sorts the column, Excel treats it as numeric, and re-export gives 2.011E+11. That is not a phone number. Every row like that fails with invalid parameter.

Our uploader has a sci-notation guard for values like 2.011E+11 and 9.66E+11. It stops the wizard and tells you the fix: set Format Cells to Text, re-paste originals with a leading apostrophe, save, re-upload. We also strip spaces and dashes, normalize 0020 and +20 prefixes, and flag local numbers like 01026361218 so one country pick fixes thousands of rows.

The 30-country dropdown sets the default code once — Egypt, Saudi Arabia, UAE, and 27 others — while preserving explicit +966 or +971 prefixes. Expo sheets are always mixed: half +20, half 01, a few 00201. One default resolves over 95% without manual edits. The 2MB cap also forces discipline. My old 40MB broker files had 30% invalid rows and zero opt-in. Smaller, cleaner lists rank better with Meta than one giant cold dump.

Reachable-now counts: sent is not delivered

Sent counters lie. They count rows processed, not humans reached. We show four numbers before and after launch:

  • Uploaded: rows in file. Example: 2,000.
  • Invalid: rejected before spend — bad length, impossible prefix, sci-notation damage, duplicates. Example: 184.
  • Skipped: valid numbers Meta refuses at send time, mostly error 2018278 with no 24-hour window. We auto-skip instead of retrying blindly. Example: 96.
  • Reachable-now: uploaded minus invalid minus skipped. Humans who can receive today. Example: 1,720.

A 5,000-row sheet with 800 invalid and 600 skipped is a 3,600 campaign with a data problem, not a 5,000 win. I prefer 1,720 reachable-now with zero surprises over 2,000 sent with 300 silent failures. Every skipped row keeps its Meta error string so you fix the template instead of guessing.

Throttle math: size, setting, time, and ban risk

Throttle decides whether Meta sees a campaign or a spam burst. Our default is 30-60s jitter between messages, enforced per team on the server. You can raise it, never lower it below the floor, because one reckless blast hurts shared reputation. Times below assume ~45 seconds average per message on one sender identity:

List size (reachable-now)Throttle settingExpected timeBan risk Tier 1 / Tier 2
200 contacts30-60s jitter, 1 sender~2.5 hoursLow / Low — safe daily volume
500 contacts30-60s jitter, 1 sender~6.2 hoursMedium on Tier 1 / Low on Tier 2
1,000 contacts30-60s jitter, 1 sender~12.5 hours over 2 daysHigh on Tier 1 / Low on Tier 2
2,500 contacts30-60s jitter, 2 days~6 hours per dayVery high on Tier 1 / Medium on Tier 2
5,000 contacts30-60s jitter, 5 days~6 hours per dayCertain demotion on Tier 1 / Medium on Tier 2

A Tier 1 number should never attempt 1,000 reachable-now on day one. Start with 200, watch blocks for 48 hours, then scale. Promotion takes 7 clean days. Demotion takes one greedy afternoon. If a manager demands 5,000 today, segment by city or recency and send the hottest 500. Hot segments reply at 8 to 12%. Cold dumps reply under 1% and earn the blocks that demote you.

The 30-60s jitter and per-team throttle

Fixed delays are fingerprints. Messages exactly 5 seconds apart look mechanical. Our jitter randomizes every gap between 30 and 60 seconds, so a 200-contact run mixes 31-second and 59-second gaps with no repeating pattern. Average is 45 seconds, sequence never looks scripted.

Per-team throttle matters more. Most tools throttle per browser tab, so three open tabs triple your speed and risk. We enforce one shared clock per team on the server: one send at a time, whatever the tabs do. A second campaign queues visibly. I added this after three teammates each launched 400 contacts from different laptops and fired 1,200 messages in an hour from Tier 1. Demoted by dinner.

Runs also auto-pause on quality signals. If block rate crosses our threshold mid-run, the run pauses for human review instead of finishing the list. I prefer a pause at 60% with an explanation over 100% with a demotion.

Plan limits that protect you: Free 1, Starter 5, Pro 25

Free allows 1 bulk campaign per month. Starter allows 5 per month. Pro allows 25 per month. Campaign counts, not contacts, resetting monthly. New users call this stingy until I explain the logic.

Unlimited free blasts attract brokers with 100,000 scraped numbers and zero opt-in. One broker blast poisons reputation for everyone. The Free limit forces one careful shot: clean sheet, test send, best segment. Starter at 5 fits a weekly promo. Pro at 25 fits daily follow-ups plus re-sends to non-openers. Check current allowances on the OT1-Pro pricing page since Meta template prices shift. My best customer sends two blasts monthly to 800 opted-in buyers at 11% replies. My worst ex-customer sent nine cold blasts in a month and got demoted twice.

Meta 24h window and error 2018278: Skipped N is honesty

Error 2018278 means the customer has not messaged you in 24 hours and no approved template covers your text. Meta closed the free-form window and you pushed anyway. Our sender auto-skips those contacts, tags the exact error, and continues. No blind retries, no fake sent check, no charge for unsent delivery. The report shows Skipped N — for example Skipped 96 of 1,816 valid — with per-row reasons.

That honesty looks worse than competitors showing 100% sent. Their 100% includes 96 Meta rejections. Repeated 2018278 failures signal poor hygiene and drag your tier. My rule: skips under 5% mean healthy, over 15% mean stop and fix the template. Utility updates about orders rarely skip. Cold promo without a marketing template skips constantly.

My Excel-to-sent checklist you can copy

This is the checklist my team runs before every blast:

  • 1. De-duplicate by normalized phone. 01026361218, +201026361218, and 00201026361218 are one human. Normalize first or one person gets three messages and three block buttons.
  • 2. Re-export numbers as Text. Format Cells to Text, re-paste, save. Search for E+ in a plain editor. Any 2.011E+11 means fix and re-upload.
  • 3. Pick country once. Use the 30-country dropdown for the majority, keep explicit prefixes for the rest. Eyeball five rows including local and plus formats.
  • 4. Segment 200 to 500 for day one. Hottest intent first: last-30-day inquiries and carts. Cold lists wait for Tier 2.
  • 5. Test to three phones. Your Android, a teammate iPhone, one Arabic-name variable row. Read breaks, tap buttons, confirm opt-out line.
  • 6. Launch before noon with 30-60s jitter. Morning replies reopen 24-hour windows. Night blasts earn blocks. Tell teammates so nobody queues a second blast on top.
  • 7. Read Skipped N within an hour. Export skipped rows, tag for template re-send, never hammer with free-form retries.

A whatsapp bulk message sender stops being a gamble when you follow that list: clean Excel in, reachable-now out, throttle guarding your tier, skips telling the truth. My expo disaster taught me more than any docs page. Start with your best 200 rows, measure replies not sends, then scale the way Meta rewards. Create your free OT1-Pro account, compare WATI on broadcast pricing, and keep the Meta verification guide bookmarked for your second number.

Stop losing the leads you already earned

OT1-Pro runs your follow-up, broadcasts, and AI replies in one inbox — WhatsApp, Instagram, Messenger, Telegram, and email, in Arabic or English, scored by lead quality, with every AI credit receipted in a transparent ledger. Free plan, no credit card.

Start free → · Sales follow-up automation · Lead follow-up software · Pricing · vs WATI · Talk to the founder on WhatsApp

Ready to try OT1-Pro?

Connect WhatsApp, Instagram, Facebook & Telegram with AI that sells for you.

Get started free
Keep reading

Related stories