Skip to content
Wbiztool

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/.

The Campaigns page with Campaigns selected in the sidebar and the New campaign button lit; the list of active campaigns is dimmed

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, .xls or .xlsx file 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#

  1. Open the dialog

    On Campaigns, click New campaign.

  2. 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).

  3. Add your sheet

    Drop your file on the box under Sheet, or click browse and choose it. To pick another file, click Remove.

    The New campaign dialog with a name typed in (2), the drop area for the sheet (3), the columns the sheet needs with the IDs of your numbers, and the Check sheet button (4)
  4. 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.

  5. Send

    If the check looks right, click Send … messages, for example Send 11 messages. You see "Campaign started: 11 messages queued", and the campaign appears at the top of Active.

    The check of an uploaded sheet: 11 messages ready to send, one row skipped because its Message cell is empty, the line naming the country code that numbers without one get, the first messages, and the Send 11 messages button outlined (5)

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.

ColumnRequiredWhat to put in it
ToYesA 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.
MessageYesThe message text. WhatsApp formatting such as *bold* and _italic_ works, and so do links.
Image/File UrlNoA public link to an image or file. The row's Message goes with it as the caption.
whatsapp_client_idNoThe ID of the number to send from. Leave it empty or write 0 to send from your first connected number.
Schedule TimeNoWhen 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:

ToMessageImage/File Urlwhatsapp_client_idSchedule Time
919876543210Hi Aman, your order has shipped.
Family GroupHappy holidays everyone!12342026-12-25T16:00:00+05:30
919876543211This week's offershttps://example.com/offer.jpg1234
  • In Excel, Whatsapp Number or Contact phone Number also work instead of To. In a CSV without a To column, 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) and Schedule 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 + or 00 at the start means the number has its country code, so +91 98765-43210, 0091 98765 43210 and +44 (0)20 7946 0018 work.
  • A number without its country code, such as 98765 43210 or 09876543210, gets the country code of the number that sends the row: the one in whatsapp_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, 6581234567 goes to Singapore (+65 8123 4567). The check doesn't flag these, so write such local numbers with 91 first.
  • 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 0 and can't be completed, for example because no country is known for it.
  • A To cell with letters is read as a group name. Digits with dashes, dots or brackets, such as 98765-43210, are a number, unless they have fewer than 7 digits, such as 2024-25, or match the name of a group already in your Contacts, such as 2024-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 To cell: 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, .tiff or .svg is 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, .csv or .zip (and a few more, such as .webm or .xlsm: full list on Send message). A link with no extension, or another one, gets .pdf added 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. Use Z for UTC, such as 2026-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/2026 is 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 Active campaigns list: a status for each campaign, a bar with sent, waiting and failed messages, and the Messages, Download report, Cancel waiting and Archive buttons

The Status column says where each campaign stands:

StatusMeaning
WaitingNothing has been sent yet.
SendingSome messages are sent, others still waiting.
DoneEvery message was sent.
Done · … failedFinished, but some messages failed.
Done · … cancelledFinished, and some messages were cancelled or expired.
StoppedEvery message was cancelled or expired before any went out.
Old campaignIts 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:

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#

  1. Find the campaign

    In Active, click Cancel waiting on the campaign.

  2. 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 with whatsapp_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 problemWhat 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 WaitingThe 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 timeAdd the offset, such as +05:30, and write the year first.
"Something went wrong: …" right after editing the sheetClick 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.