Limited Time: Start your 14-day free trial, no credit card required
Help Center
Getting Started

Send WhatsApp messages from an Excel sheet (bulk sender guide)

Turn an Excel sheet into a personalised WhatsApp campaign. Upload, map columns, set delays, send.

6 min readUpdated May 3, 2026excel · csv · bulk whatsapp

If you already keep your contact list in Excel, Google Sheets, or any CSV-export tool, you don't need a developer to send WhatsApp messages from it. Walytic ingests the spreadsheet directly, lets you map any column to a message variable, and ships personalised messages to every row.

This guide walks through the full flow: prepare the sheet, upload, map columns, write a personalised message, set safe send pace, and watch delivery in real time.

Why send WhatsApp from Excel (vs copy-paste)

A spreadsheet upload beats pasting numbers for three reasons:

  • Personalisation per row. Pull first name, order ID, appointment time, or any other column straight into the message — no manual edit per recipient.
  • No accidental duplicates. Walytic dedupes on phone number at upload time, so the same lead never gets two copies.
  • Fail-tracking by row. Every failure links back to the original spreadsheet row, so you can fix one record and re-send only that record.

If your audience lives in a CRM, export to CSV first; the same flow applies.

Prepare your spreadsheet

Walytic accepts .xlsx, .xls, and .csv files. There are only two hard rules:

1. Header row required. The first row must be column names (e.g. phone, firstName, orderId).

2. One phone column. It can be named anything (phone, mobile, whatsapp, number); Walytic auto-detects it during upload.

Phone numbers should be in international format without a leading +. Examples:

  • 919876543210 (India)
  • 447911123456 (UK)
  • 12025550123 (US)

Walytic strips spaces, dashes, and parentheses automatically, but keeping the spreadsheet clean speeds up the upload.

Sample structure

phonefirstNameorderId
919876543210PriyaORD-2041
919812345678RahulORD-2042

You can add as many extra columns as you want — every column becomes available as a message variable.

Upload and map columns

1. In Walytic, open CampaignsNew Campaign.

2. Pick the WhatsApp number you want to send from.

3. In Recipients, click Upload Spreadsheet and select your file.

4. Walytic shows a preview of the first 10 rows. Confirm which column is the phone number (auto-detected, but you can override) and confirm the mapping for any other variables.

5. Click Continue. Walytic reports total valid rows, duplicates removed, and any rows skipped because the number was malformed.

If a row is rejected, the upload modal lists the row number and the reason — fix the source file, re-upload, and Walytic will only re-process new rows.

Write a personalised message

In the message textarea, type your message and reference any column from the spreadsheet using {{columnName}}. Examples:

Hi {{firstName}}, your order {{orderId}} has shipped. Track it here: https://...

Walytic substitutes {{firstName}} with the value from the firstName column for every row at send time.

For larger sends, combine variables with spintax so each recipient gets a slightly different phrasing — this lowers the chance Meta's deduper flags the campaign as spam:

{Hi|Hello|Hey} {{firstName}}, {your order|order} {{orderId}} {has shipped|is on the way}.

You can also attach a media URL (image, video, PDF, audio) that the same message body uses for every row.

Set send pace and window

The default 3–5 second randomised delay between messages is fine for warmed-up numbers and small lists. For larger or colder sends, slow down:

  • 100–500 recipients on a fresh number: 15–30 second delays.
  • 500+ recipients: 30–60 seconds, and split across 2–3 days.
  • First send from a brand-new number: never exceed 50 recipients on day one.

Optionally set a send window (e.g. 10am–6pm IST, weekdays only) so messages only fire during business hours. Anything queued outside the window resumes the next time it opens.

For more on safe pacing, see the WhatsApp anti-ban playbook.

Schedule or send

  • Send Now: the campaign starts queueing messages immediately.
  • Schedule: pick a future date/time. The campaign sits idle until then.

Once running, the campaign view shows a live counter:

  • Sent — handed off to WhatsApp.
  • Delivered — confirmed received on the recipient's device (the double tick).
  • Read — recipient opened the chat (the blue tick, if recipient has read receipts on).
  • Failed — message rejected. Click the row to see the WhatsApp error code.
  • Pending — still queued behind the delay or send window.

Recover from failures

A campaign rarely hits 100% delivery — even healthy numbers see 5–10% bounce because of invalid numbers, blocks, or recipients who don't have WhatsApp on that number.

After the campaign completes:

1. Filter the campaign view by Failed.

2. Export the failed rows back to CSV.

3. Re-upload the cleaned file as a new campaign — only the previously failed numbers run.

If failure rate exceeds 30%, stop and investigate before sending more. A single bad campaign on a number can degrade its quality rating with Meta. Read What to do if your number is banned or rate-limited.

What's next

Need more help?

Browse the rest of the help center or contact support directly.