Product guides
Campaigns: bulk WhatsApp messages from a spreadsheet
Upload a CSV or Excel sheet where each row is one WhatsApp message, check what Wbiztool read from it, and send the rows as a campaign. It's the quickest way to message a list of customers or groups when every row already has its own text.
Who can do it: Owners and Editors start, cancel and archive campaigns. Analysts can see campaigns, open their messages and download reports. Campaigns work on every plan, including the free trial, as long as the workspace has messages left: each row you send uses one message.
Open Campaigns under Send in the sidebar, or go to /campaigns/.
Before you start#
- A WhatsApp number showing Connected on WhatsApp numbers. See Connect your WhatsApp number.
- Enough messages left for every row. The New campaign dialog shows how many are left on your plan. See Plans and billing for what each plan includes.
- Plan for about 150–200 messages per number per day: see Sending pace.
- A
.csv,.xlsor.xlsxfile of up to 10 MB with the columns below. The dialog has a Sample CSV and a Sample Excel to start from.
Start a campaign#
Open the dialog
On Campaigns, click New campaign.
Name the campaign
Type a Campaign name that helps you find it later. If a campaign with that name already exists, a number is added, such as
Diwali offer (1).Add your sheet
Check the sheet
Click Check sheet. Nothing is sent yet: Wbiztool reads every row and shows what will go out. See What the check shows.
Send
What the check shows#
- The summary: how many messages are ready to send, how many rows will be skipped (in red), how many go to groups and how many go out at their own
Schedule Time. Below it, how many messages are left on your plan now and afterwards, and the country code that numbers without one get, such as "+91 (India)" (see Numbers and groups). - Rows to look at: the rows that will be skipped, with the reason in red, and rows that will be sent but have a warning, in amber. Up to 100 are listed; when there are more, you see "Showing 100 of … rows to look at." Each starts with its row in the sheet, such as "Row 9", and the number as it will be sent, such as
+91 98765 43210. - First messages: the first few rows as they'll go out, with the number they're sent from and when ("Now" or "At …"). Rows to a group have a Group badge, rows with a link an Image or File badge.
Empty rows are ignored. To fix a row, correct the sheet and save it, click Back, then Remove, choose the file again and click Check sheet. The campaign name is kept.
Sheet columns#
The first row of the sheet holds the column names. Spell them exactly as below, in English, whatever language your dashboard uses. The dialog lists them under Columns in your sheet.
| Column | Required | What to put in it |
|---|---|---|
To | Yes | A WhatsApp number, such as 919876543210 (one without its country code is completed, see Numbers and groups), or the exact name of a WhatsApp group, such as Family Group. |
Message | Yes | The message text. WhatsApp formatting such as *bold* and _italic_ works, and so do links. |
Image/File Url | No | A public link to an image or file. The row's Message goes with it as the caption. |
whatsapp_client_id | No | The ID of the number to send from. Leave it empty or write 0 to send from your first connected number. |
Schedule Time | No | When to send the row, such as 2026-12-25T14:30:00+05:30 (25 Dec 2026, 2:30 PM in India). Leave it empty to send now. |
Example:
| To | Message | Image/File Url | whatsapp_client_id | Schedule Time |
|---|---|---|---|---|
| 919876543210 | Hi Aman, your order has shipped. | |||
| Family Group | Happy holidays everyone! | 1234 | 2026-12-25T16:00:00+05:30 | |
| 919876543211 | This week's offers | https://example.com/offer.jpg | 1234 |
- In Excel,
Whatsapp NumberorContact phone Numberalso work instead ofTo. In a CSV without aTocolumn, the first column is read as the number and the second as the message, whatever their names, so keep them in that order. Image/File Url (Optional)andSchedule Time (Optional)work too, as in the sample files. Other columns are ignored.- CSV files can use commas or semicolons, in UTF-8 or a Windows encoding.
Numbers and groups#
- Write numbers with the country code where you can. Spaces, dashes, dots and brackets are removed, and a
+or00at the start means the number has its country code, so+91 98765-43210,0091 98765 43210and+44 (0)20 7946 0018work. - A number without its country code, such as
98765 43210or09876543210, gets the country code of the number that sends the row: the one inwhatsapp_client_id, else your first connected number. If that number's country can't be told, the workspace's Country for numbers without a country code is used. A number that already starts with a valid country code is never changed. - A number that already reads as one with a country code is sent as it is: from an Indian number,
6581234567goes to Singapore (+65 8123 4567). The check doesn't flag these, so write such local numbers with91first. - These rows are skipped, and the check lists them so you can fix the sheet: a number with fewer than 7 or more than 15 digits (with its country code), a number Excel rounded (see below), and a number that starts with
0and can't be completed, for example because no country is known for it. - A
Tocell with letters is read as a group name. Digits with dashes, dots or brackets, such as98765-43210, are a number, unless they have fewer than 7 digits, such as2024-25, or match the name of a group already in your Contacts, such as2024-2025(only for fewer than 10 digits: 10 to 15 digits are always a number). Check the "go to groups" count in the check. - Group names must match the WhatsApp group exactly, and the sending number must be a member that's allowed to send. Wbiztool sends only to a group named exactly like the
Tocell: a partial name, or a contact with the same name, doesn't match and the message fails with "Group not found".
Images and files#
- A link ending in
.jpg,.jpeg,.png,.gif,.bmp,.tiffor.svgis sent as an image. Any other link is sent as a file. MP3, M4A and AAC files arrive as audio, with the text as a separate message; WAV and OGG files arrive as documents, with the text as caption. - The link must open the file directly, without a login. Upload your files in Media directory to get one (see Media library).
- The recipient sees the file name from the end of the link, in lower case. It keeps its extension if the Media directory accepts that type, such as
.pdf,.docx,.xlsx,.csvor.zip(and a few more, such as.webmor.xlsm: full list on Send message). A link with no extension, or another one, gets.pdfadded to the name. - Images can be up to 16 MB, videos 64 MB and other files 100 MB.
Choose the sending number#
The Columns in your sheet box lists your numbers with their IDs, such as 1234 = Orders. On WhatsApp numbers, each number shows its ID on a button, such as ID 1234 ⧉: click it to copy the ID.
- Empty or
0: the row goes from your first connected number. - An ID that isn't one of your numbers (for example a removed one): the row goes from your first connected number, with a warning in the check.
- A disconnected number: the row waits until that number is connected again, with a warning.
- If no number is connected and the row names none that exists, it's skipped.
Schedule rows#
- Write the date, time and your time-zone offset:
2026-12-25T14:30:00+05:30. UseZfor UTC, such as2026-12-25T09:00:00Z. - A time without an offset, such as
2026-12-25 14:30, is read in your browser's time zone. The dialog shows which one, for example "Schedule Times without a time-zone offset are read in Asia/Kolkata." - Write the year first. A date like
05/12/2026is read as 12 May. - A time in the past, or one Wbiztool can't read, skips the row. In Excel, a cell formatted as a date can't be read: format the column as Text and type the time.
Track a campaign#
The Active tab lists your campaigns, newest first, 25 to a page, with when each was created. Search by name in Search campaign name.
The Status column says where each campaign stands:
| Status | Meaning |
|---|---|
| Waiting | Nothing has been sent yet. |
| Sending | Some messages are sent, others still waiting. |
| Done | Every message was sent. |
| Done · … failed | Finished, but some messages failed. |
| Done · … cancelled | Finished, and some messages were cancelled or expired. |
| Stopped | Every message was cancelled or expired before any went out. |
| Old campaign | Its messages were deleted after 90 days ("Its messages are no longer kept"). |
The Messages column shows a bar and the count of sent, waiting, failed, and cancelled or expired messages. Click See failed or See waiting to list those messages.
On each campaign:
- Messages: opens Reports with this campaign's messages, their status, times and why any failed.
- Download report: an Excel file of its messages. See Download a report.
- Cancel waiting: shown while messages are waiting. See Cancel waiting messages.
- Archive: see Archive and restore.
Campaigns sent from Template messages are listed here too, named Template Messages - with the date and time (UTC).
Download a report#
Download report saves an Excel file named after the campaign, one row per message, newest first: Whatsapp Number (sent from), Customer Number, Msg, Created Time, Sent Time (N/A if not sent) and Status (Created for waiting, Sent, Delivered, Read, Failed, Cancelled or Expired). Times are in your browser's time zone. The file doesn't say why a message failed: use Messages for that.
Messages are deleted 90 days after they're sent, failed or cancelled. The campaign then shows Old campaign and has nothing to download, so save reports you want to keep.
Cancel waiting messages#
Find the campaign
In Active, click Cancel waiting on the campaign.
Confirm
In "Cancel … waiting messages?", click Cancel messages. You see, for example, "41 messages cancelled".
Cancelling can't be undone. Messages already sent aren't affected, and cancelled messages don't count against your plan. A message that's being sent at that moment may still go out. To cancel single messages, open Messages and cancel them in Reports.
Sending pace#
- Rows without a Schedule Time go out one after another: the first about 5 seconds after you click Send (inside your sending hours, if you use them), each next one a random 5 to 30 seconds after the previous. 100 messages take about half an hour.
- Rows with a Schedule Time are due at that time. Rows with the same time aren't spaced out.
- Each number sends its own messages, only while it's connected. Messages for a disconnected number wait until it's back.
- If Sending hours are on with Campaigns ticked, rows that fall outside those hours wait and go out when the hours start, in the workspace's time zone. The check doesn't know about sending hours and still shows "Now".
- Messages that waited, for a disconnected number or outside sending hours, are all due by the time sending resumes, so they go out back to back, without the 5 to 30 second gaps.
- Stay under about 150–200 messages per number per day (Keep your numbers safe from bans on WhatsApp numbers). Spread a large list over several days with
Schedule Time, or over several numbers withwhatsapp_client_id.
Archive and restore#
Archiving moves a finished campaign out of Active, with its full message history. Click Archive on it, then Archive to confirm. To bring one back, open the Archived tab and click Restore, then Restore.
Troubleshooting#
| Message or problem | What to do |
|---|---|
| "The file is larger than 10 MB. Split it into smaller sheets." | Send it as two or more campaigns. |
| "This file couldn't be read. Save it as CSV or Excel (.xlsx) and try again." | Re-save the file as .xlsx or UTF-8 .csv. |
| "The first row of your sheet has no … column, so no row can be read." | Compare the names under "Columns found" with Sheet columns: spelling, capitals and spaces must match. |
| "No row can be sent. Fix the rows below and check the sheet again." | Read the reasons under Rows to look at. |
| "This needs … messages but your plan has … left." | Remove rows, or add messages on Billing & plans. |
| "No messages left – upgrade your plan on Billing, or wait for it to renew." | Your plan's messages are used up. See Plans and billing. |
| New campaign is grey: "Only the owner or an editor can do this" | You're an Analyst in this workspace. Ask an Owner. |
| "Skipped: the number starts with 0 and no country is set to complete it – …" | Write the number with its country code, such as 919876543210, or ask an Owner to set the country for numbers without a country code. If a country is set, check that the number is valid in that country. |
| "Skipped: the number in To is too short – …" or "… has more than 15 digits" | Check the number: with its country code it has 7 to 15 digits. |
| "Skipped: Excel rounded the number (it reads like 9.19877E+11) – …" | In Excel, format the To column as Number or Text and save the sheet again, or upload the .xlsx file. |
| "Skipped: Schedule Time is in the past" | Set a future time or clear it. |
| "Skipped: Schedule Time couldn't be read – …" | Write it like 2026-12-25T14:30:00+05:30. In Excel, format the column as Text. |
| "Skipped: no connected WhatsApp number to send from" | Connect a number, then check the sheet again. |
| Messages stay Waiting | The sending number isn't connected (see WhatsApp numbers), the rows are scheduled for later, or it's outside the workspace's sending hours. |
| Scheduled rows went at the wrong time | Add the offset, such as +05:30, and write the year first. |
| "Something went wrong: …" right after editing the sheet | Click Remove, choose the file again and check it again. |
| Failed with "Phone number invalid" | The number isn't on WhatsApp, or its country code is missing or wrong. |
| Failed with "Group not found" | Wbiztool sends only to a group named exactly like the To cell. Check the name, that no contact has the same name, and that the sending number is in the group and allowed to send. |
| Failed with "Image Url Error" or "File Url Error" | The link must be public and open the file directly. |
| Failed with "File exceeds WhatsApp size limit (… max)" | Use a smaller file: images 16 MB, videos 64 MB, other files 100 MB. |
| Failed with "The file is empty" | The link gives an empty file. Check the link in a browser and upload the file again. |
| Failed with "Sending was interrupted and may have been delivered. Check WhatsApp before resending." | Look at the chat in WhatsApp before you send it again. |
Related#
- Template messages
- Media library
- Reports & message history
- Connect your WhatsApp number
- Google Sheets integration for rows that keep arriving
- API: Send to multiple numbers and Schedule message


