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. You can also send one message to everyone with a contact tag, with each person's name filled in.

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. Paid plans send unlimited messages under fair use; on the free trial each row you send uses one of its 50 messages.

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.
  • Room for every row: a number can take 1,000 messages in 24 hours (fair use), and on the free trial the New campaign dialog shows how many messages are left. 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. Choose how it sends

    Under How it sends, tick the numbers to send from (the first connected one is ticked) and pick a Pace. If you like, turn on Start later to pick when it starts, or Only send at certain hours to choose daily hours and days. The last line says when it should finish. See Sending pace.

    How it sends (5): two numbers ticked under Send from, the Normal pace picked, Start later and Only send at certain hours turned on with a start, daily hours and days, and the line saying when it should finish and how many messages each number sends
  6. 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 How it sends section, the first messages, and the Send 11 messages button outlined (6)

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.
  • How it sends: the numbers it goes from, the pace, optional sending times, and "Should finish around …". See Sending pace.

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.

Before you send#

Under the check, Before you send looks for common problems that get numbers reported or blocked: no opt-out line such as "Reply STOP to unsubscribe", messages in capital letters, bare or shortened links, no connected number, more than the fair-use limit for one number, a campaign that takes many days, or the Quick pace for more than 100 messages. These warnings are free and never stop you from sending.

Check with AI has WbizTool AI read the messages too: it lists risks and suggests a better version to paste into your sheet's Message column. It uses a few AI credits and needs a paid plan with WbizTool AI on.

Before you send: the warning that none of the 3 messages checked tells people how to stop getting your messages, and the Check with AI button outlined with its note that it uses a few AI credits

Send to contacts with a tag#

Instead of a sheet, send one message to everyone with a tag on the Contacts page, such as VIP.

  1. Choose Contacts with a tag

    Click New campaign, type a Campaign name, and under Send to click Contacts with a tag.

  2. Pick the tag

    Choose it under Tag. Each tag shows how many contacts have it, such as VIP (146 contacts). With no tags yet, the dialog sends you to Contacts to tag people first.

  3. Write the message

    Type the Message (up to 3,000 characters). {name} becomes each contact's name and {first_name} its first word: Hi {first_name}, our Diwali offer is here reaches Emma Thompson as Hi Emma, our Diwali offer is here. A contact without a name gets the message without it. To send an image or a file, paste its public link under Image or file link (optional): the message is its caption.

  4. Check and send

    Click Check recipients. The check is the same as for a sheet: how many messages are ready, the first ones as they'll go out, and How it sends. Then click Send … messages.

The New campaign dialog sending to Contacts with a tag (1): the VIP tag with its 146 contacts (2), a message starting Hi {first_name} (3), and the Check recipients button (4)
  • The campaign goes to the contacts that have the tag when you click Send; tagging someone afterwards doesn't add them.
  • Groups with the tag get the message in the group. Opted-out contacts fail with Opted out and nothing is sent to them.
  • In the list, the campaign shows "To tag VIP" under its name. A run of a reminder to a tag shows "Reminder to tag VIP".

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 the numbers ticked under Send from (your first connected number unless you tick more).
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 directory).
  • 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#

With more than one connected number, tick them under Send from in How it sends: rows that don't name a number take turns between the ticked numbers, so each number sends a share at its own pace and the campaign finishes sooner. Your first connected number is ticked to start with.

To send a row from one particular number, write its ID in whatsapp_client_id. 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 the numbers ticked under Send from.
  • An ID that isn't one of your numbers (for example a removed one): the row goes from the ticked numbers, 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, See failed and Retry failed links, a line with the pace and when the next message goes, and the Messages, Pause and ⋯ (More actions) buttons

The Status column says where each campaign stands:

StatusMeaning
WaitingNothing has been sent yet.
ScheduledNothing has been sent yet: it starts at the start time you chose.
SendingSome messages are sent, others still waiting.
PausedYou paused it: nothing more is sent until you resume it.
Outside its hoursIts messages wait for the daily hours or days you chose.
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, or Retry … failed to send failed ones again (see Pause, resume and retry). While messages are waiting, a line below says the pace, how many numbers send it and when the next message goes, such as "Normal pace · 2 numbers · Next at 10:32".

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, under ⋯ on the campaign, 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, 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 ⋯ on the campaign, then Cancel waiting.

  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; it then shows as Sent. To stop for a while instead, pause the campaign. To cancel single messages, open Messages and cancel them in Reports.

Pause, resume and retry#

  • Pause: click Pause on the campaign. You see "Campaign paused – nothing more is sent until you resume it." and its status turns to Paused. A message that's being sent at that moment still goes out.
  • Resume: click Resume. The waiting messages go out again at the campaign's pace, not all at once.
  • Retry failed: when failed messages can be sent again, Retry … failed next to See failed shows how many, such as Retry 4 failed. Click it, then Retry. They go back in the queue at the campaign's pace. Messages that can't succeed are left out: numbers not on WhatsApp, invalid or blocked numbers, groups that weren't found, unsupported files or message content, and a send that was interrupted and may already have arrived.

Sending pace#

The Pace is the time between two messages from the same number:

PaceTime between messages
Careful45 to 90 seconds
Normal20 to 45 seconds
Quick8 to 20 seconds

Each gap is picked at random within its range, which looks more natural to WhatsApp. The dialog starts on the pace of your last campaign. Sending also takes a few seconds per message, so at Normal 100 messages from one number take about 80 minutes; "Should finish around …" in the check estimates it for your choices.

  • The pace always holds. Messages that waited (a disconnected number, sending hours, the campaign's own hours, a pause) don't go out back to back when sending resumes: they keep the pace.
  • Several numbers send side by side, each at the pace, so two numbers finish in about half the time. See Choose the sending number.
  • Start later: pick a Start; nothing goes out before it, and the status says Scheduled until then.
  • Only send at certain hours: choose daily hours (Only between … and …) and days (Days). An end before the start, such as 22:00 to 06:00, runs past midnight. Messages outside those hours wait and go out when the hours start; the status then says Outside its hours.
  • Times are in your browser's time zone, shown under the switches.
  • Rows with a Schedule Time are due at that time, but still wait for the hours you chose and keep the pace from the number's other campaign messages.
  • If Sending hours are on with Campaigns ticked, they apply too.
  • 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 Only send at certain hours or Schedule Time, or over several numbers with Send from.

Archive and restore#

Archiving moves a finished campaign out of Active, with its full message history. Click ⋯ on it, then Archive, and Archive again to confirm. To bring one back, open the Archived tab, click ⋯, then Restore, and Restore to confirm.

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."The free trial's messages don't cover the sheet. Remove rows, or choose a plan on Billing & plans.
"No messages left – upgrade your plan on Billing, or wait for it to renew."The free trial's messages are used up. See Plans and billing.
"Over the daily limit: it needs … messages, but the number can take … more today (fair use: 1,000 a day per number). Nothing was sent – send it tomorrow or split it."Send the campaign the next day, or split it into smaller campaigns on different days or numbers.
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.