Product guides
Campaigns from a spreadsheet
Upload an Excel or CSV file where each row is one WhatsApp message, and Wbiztool sends them for you as a campaign. It's the quickest way to message a list of customers or groups when every row already has its own text.
Open it from Tools → Send via Excel in the sidebar, or go to /campaigns/.
Before you start#
- A WhatsApp number showing Connected on WhatsApp settings.
- Enough credits for every row. The page shows how many messages remaining you have.
- A
.csv,.xlsor.xlsxfile in the format below.
File format#
The first row must contain these column headers, spelled exactly as shown. Click Sample Format on the page to see an example, or download the sample CSV. Replace the sample's phone number and its 2024 schedule time before uploading. A past time sends immediately.
In a dashboard set to another language, the Sample Format window shows these column names translated. Your file must still use the English headers listed here.
| Column | Required | What to put in it |
|---|---|---|
To | Yes | The phone number with country code, such as 919876543210, or the exact name of a WhatsApp group, such as Family Group. |
Message | Yes | The message text. WhatsApp formatting such as *bold* works. |
Image/File Url (Optional) | No | A public link to an image or file. The row's Message is sent as its caption. |
whatsapp_client_id | No | The Whatsapp Client ID of the number to send from, from WhatsApp settings. Use 0 or leave empty to send from your first connected number. |
Schedule Time (Optional) | No | When to send the row, in ISO format with a timezone offset, such as 2026-12-25T14:30:00+05:30. A time without an offset, such as 2026-12-25T14:30:00, is read in the server's timezone, so always add +05:30, Z (UTC) or your own offset. Leave empty to send as soon as possible. |
In Excel files, Whatsapp Number or Contact phone Number also work instead of To. In a CSV file without a To header, the first column is read as the number and the second as the message, whatever their headers say, so keep the number first and the message second. Image/File Url and Schedule Time also work without "(Optional)".
Example rows:
| To | Message | Image/File Url (Optional) | whatsapp_client_id | Schedule Time (Optional) |
|---|---|---|---|---|
| 919876543210 | Hi Aman, your order has shipped. | 1234 | ||
| Family Group | Happy holidays everyone! | 1234 | 2026-12-25T16:00:00+05:30 | |
| 919876543211 | This week's offers | https://example.com/offer.jpg | 1234 |
Phone numbers and groups#
- Write numbers with the country code and digits only. A leading
+, spaces and a leading 0 are removed. - A
Tovalue that contains letters, dashes or brackets is treated as a group name, so98765-43210would be sent to a group of that name and fail. Remove dashes and brackets from numbers. - Group names must match the WhatsApp group exactly, and the sending number must be a member. Use group names that aren't shared by other chats.
Images and files#
- Links ending in
.jpg,.jpeg,.png,.gif,.bmp,.tiffor.svgare sent as images. Any other link is sent as a file. - Links must open the file directly without a login. Upload files to the Media library to get a link.
- The recipient sees a file name taken from the end of the link. Use links that end in the right extension, such as
.pdf; otherwise.pdfis added to the name.
Start a campaign#
Name the campaign
Under Start New Campaign, type a Campaign Name. If a campaign with that name already exists, a number is added, such as
Diwali offer (1).Choose your file
Under Upload Excel/CSV File, choose your
.csv,.xlsor.xlsxfile.Start
Click Start Campaign. When the file is read, you see "N messages saved in new campaign" and the campaign appears under All Campaigns.
Rows without a number are skipped, and so is every row if the file has no Message column (except a CSV without a To header, as described above). If you have no connected number and the file doesn't name one in whatsapp_client_id, every row is skipped. If no rows can be used, the campaign isn't created and doesn't appear under All Campaigns.
Sending pace#
Rows without a Schedule Time are spaced out automatically: the first is due about 5 seconds after upload, and each next one a random 5 to 30 seconds after the previous. Rows with a Schedule Time are due at that time.
Messages are sent in order by the WhatsApp number that sends them, only while that number is connected. A busy or disconnected number delays its messages. Keep to the Best Practices shown on WhatsApp settings, such as 150–200 messages per number per day.
Track a campaign#
The All Campaigns table lists your campaigns, newest first, 20 per page:
| Column | Meaning |
|---|---|
| Campaign Date | The campaign name (despite the column title). |
| Total Messages | Messages created from the file. |
| Pending | Queued and not sent yet, including scheduled rows. |
| Delivered | Sent from your WhatsApp number. |
| Cancelled! | Failed, cancelled or expired. |
Campaigns created from Template messages also appear here, named Template Messages - followed by the date and time.
Open Actions on a campaign to:
- Download Report: an Excel file with each message's Whatsapp Number, Customer Number, Msg, Created Time, Sent Time and Status (Created, Sent, Failed, Cancelled or Expired). Times are in UTC.
- View Messages: open Reports filtered to this campaign, with the reason for any failure.
- Cancel Pending Messages: shown when the campaign still has pending messages.
- Archive or Restore.
Finished messages are removed after about 90 days, so download reports you want to keep.
Cancel pending messages#
Open the campaign's actions
In All Campaigns, open Actions on the campaign and click Cancel Pending Messages.
Confirm
Click Yes, cancel messages!. You see "N pending messages cancelled successfully".
Cancelled messages don't use credits. Messages that were already sent aren't affected, and cancelling can't be undone.
Archive and restore#
Archiving hides a finished campaign from the main list. Click Archive in its Actions menu and confirm with Yes, archive it!. To see archived campaigns, turn on Show Archived Campaigns, then click Restore to bring one back.
Troubleshooting#
| Message or problem | What to do |
|---|---|
| "Please enter a campaign name." | Fill in Campaign Name. |
| "Please upload a file before saving the campaign." | Choose a file first. |
| "Invalid file format" | Save the file as .csv, .xls or .xlsx. |
| "Low credits" | You have no credits left. Upgrade on Billing & Plans. |
| "Not enough credits: this file would create…" | Split the file or upgrade, then upload again. |
| "0 messages saved in new campaign" | Check the headers are exactly To and Message (in a CSV, keep the number in the first column and the message in the second), and that a number is connected. |
| "An error occurred while uploading the campaign" | The file couldn't be read. Re-save it as .xlsx or UTF-8 .csv and try again. |
| Messages stay in Pending | The sending number must be Connected. Check the whatsapp_client_id in your file belongs to a connected number. The ID of a number you deleted or disconnected is still accepted and its messages stay pending; only an unknown ID or 0 falls back to your first connected number. |
| Scheduled rows sent at the wrong time | Include the timezone offset, such as +05:30, and format the column as text in Excel. A time that can't be read is sent immediately. |
| Messages to a number fail | Check the View Messages error. Numbers need the country code, with no dashes or brackets. |
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
