23 WhatsApp Campaign Mistakes That Can Ruin Delivery

Sep 5, 2026 | Critical, General

A WhatsApp campaign can fail long before you click Send.

Sometimes the problem is an incorrectly formatted phone number. Sometimes it’s a CSV column that wasn’t mapped. Sometimes a contact is marked inactive when they should actually be unsubscribed. And sometimes everything looks perfectly fine in your dashboard, only for Meta to block or throttle the campaign.

If you use WhatsApp for marketing, customer communication, or bulk campaigns, getting your contacts and campaign settings right is just as important as writing a good message.

Here are 23 things to check before sending your next WhatsApp campaign.

Part 1: Contact Upload — The Stuff That Breaks Delivery Before a Campaign Even Starts

1. Don't leave a leading 0 after the country code

09876543210 is not the same as +919876543210.

This is particularly common with Indian phone numbers exported from Excel or a CRM. The leading 0 is a trunk prefix and should not be retained when you're storing an international WhatsApp number.

A safe format is:

+919876543210

Always make sure your numbers include the correct country code and are formatted consistently before uploading them.

2. Excel can silently ruin your phone numbers

Long phone numbers can be converted by Excel into scientific notation such as:

9.87654E+10

That isn't a WhatsApp number anymore.

Before working with phone numbers in Excel, format the entire phone column as Text. Better still, export your contacts directly from your CRM rather than copying and pasting numbers through spreadsheets.

3. Upload a CSV, not an Excel file

Your contact import should be a CSV file.

An .xlsx file, an Excel export from Google Sheets, or a semicolon-separated CSV can result in failed imports or incorrectly mapped columns.

For the safest import, export your file as:

CSV UTF-8, comma-separated

4. Map the Phone column — Name is optional

The phone number is the one field you absolutely need.

If the Phone column isn't mapped during import, those rows can be skipped.

Don't assume a column named Mobile, WhatsApp, or Contact will automatically be recognised as the phone field. Check the mapping before completing the import.

A name is useful for personalisation, but it isn't required to create the contact.

5. Re-uploading the same number updates the contact

Importing a number that already exists doesn't necessarily create a second contact.

The existing contact can be updated and new tags can be added.

That's useful when you're enriching your database over time, but it can also be dangerous if you accidentally upload outdated information and overwrite existing contact data.

Always review your CSV before importing it.

6. Status accepts only the expected values

When importing contact status, use the exact supported values:

  • active
  • inactive
  • unsubscribed

Don't assume variations such as Active, Opted out, or Do not disturb will be interpreted correctly.

If the status isn't recognised, the contact can remain active — which means they may still be included in campaigns.

7. Inactive does not mean opted out

This is an important distinction.

An inactive contact can still receive messages.

If someone has explicitly asked you to stop messaging them, they need to be treated as unsubscribed.

In other words:

Inactive ≠ Opted out

Don't use an inactive status as a substitute for consent management.

8. Tags are comma-separated

If you're importing multiple tags, use commas:

VIP, Lead

Not:

VIP; Lead

And not:

VIP | Lead

There's another detail that is easy to miss: when you target multiple tags, the audience is widened using OR logic.

For example, selecting:

VIP + Lead

can target contacts who have either the VIP or Lead tag, rather than only contacts who have both.

So adding more tags can actually increase your audience.

9. Custom fields need to be imported

Want to personalise a campaign using a customer's company, city, order ID, or another custom field?

Those fields need to exist on the contact.

If your template uses variables such as {{1}} or {{2}}, make sure the corresponding custom fields are imported and mapped before running the campaign.

Otherwise, missing values can result in a blank placeholder or a fallback such as -.

10. Landlines, VoIP numbers, and numbers without WhatsApp won't deliver

Having a correctly formatted phone number doesn't guarantee that WhatsApp can deliver a message to it.

Landlines, unsupported VoIP numbers, and mobile numbers that don't have WhatsApp can fail delivery.

After a failed send, a contact may be marked unreachable and excluded from future campaigns until their status changes.

Cleaning your contact list before sending can therefore save both messaging quota and frustration.

11. Don't include your own WhatsApp number

Your business's connected WhatsApp number should not be included as a campaign recipient.

Sending a campaign to the same number that is connected as the sender can result in a Meta error.

Before importing your list, filter your own business number out.

12. Check Created, Updated, and Skipped after every import

A successful import doesn't necessarily mean every row was imported.

Always check the import summary:

  • How many contacts were created?
  • How many were updated?
  • How many were skipped?

Rows can be skipped because of missing phone numbers, invalid data, or contact limits on your plan.

A campaign can look ready to send while a significant portion of your intended audience never made it into the database.

Part 2: Before You Hit Send

Your contact list is clean. Great.

Now there are a few more things to check before launching the campaign.

13. Templates must be approved — and available on the active WhatsApp account

A template that's pending, rejected, or paused can't be used for a campaign.

If you've connected multiple WhatsApp numbers, also make sure you're working with the active WhatsApp account.

It's surprisingly easy to prepare a campaign using one account while the actual sending account is another.

14. Map every template variable

Suppose your template says:

Hi {{1}}, your order is ready.

If {{1}} is mapped to the contact's name but the contact doesn't have a name, the recipient may see a fallback such as -.

Set a sensible fallback such as:

Hi there

And make sure names and custom fields are imported before launching the campaign.

15. Media templates need campaign-time media

For image, video, or document templates, the sample media you submitted during template creation is primarily there for Meta's review.

When you actually run a campaign, make sure the campaign has its required header media attached.

Depending on the template, this can mean a JPEG, PNG, MP4, or PDF that also complies with Meta's applicable size and format limits.

16. Meta's messaging limit is different from your Samvad quota

There are two different limits to keep in mind.

Meta has its own messaging limits, while your Samvad plan has its own monthly messaging quota.

These are not the same thing.

As your WhatsApp account builds quality and eligibility, Meta can increase the number of unique recipients you can message within its applicable limits.

So if you attempt a very large campaign, you may not be able to reach your entire audience immediately even if your Samvad plan has enough monthly quota.

17. Check your Meta payment method and display name

Connecting a WhatsApp number isn't the final step.

Your WhatsApp Business Account also needs the necessary Meta billing/payment setup, and your business display name needs to meet Meta's requirements.

If either isn't properly configured, your messages can be blocked even though the number itself appears connected.

18. Quality matters more than simply sending more messages

Sending more messages isn't automatically better.

Blocks, reports, poor engagement, and messaging people who didn't actually opt in can hurt your WhatsApp quality.

Lower quality can eventually lead to restrictions, throttling, or paused templates.

And repeatedly attempting to message unreachable or opted-out contacts only makes the situation worse.

A clean, opted-in audience is more valuable than a huge database.

19. Inbox conversations aren't the same as campaign messages

There is an important difference between replying to someone in your Inbox and starting a campaign.

Free-form replies are generally available within WhatsApp's 24-hour customer-care window after a customer messages you.

Outside that window, you need to use an approved template to initiate or continue the conversation.

Campaigns therefore rely on approved templates rather than ordinary free-form messages.

Part 3: The Compliance Rules People Skip — and Meta Doesn't

Technical configuration is only half the story.

You also need to make sure you're allowed to message the people on your list.

20. You need explicit opt-in for marketing messages

Before sending marketing templates, customers should have clearly agreed to receive WhatsApp communications from your business.

That opt-in could happen through:

  • A website form
  • A checkout checkbox
  • A QR code
  • SMS
  • Another clearly communicated consent mechanism

Buying a database or scraping phone numbers isn't a substitute for consent.

A bigger contact list isn't useful if those contacts never agreed to hear from you.

21. Make your unsubscribe instruction clear

If your campaign tells customers:

Reply STOP to unsubscribe

then make sure your process is configured to handle that instruction correctly.

Don't hide the unsubscribe mechanism.

Customers should have a clear and simple way to stop receiving marketing messages, and your system should honour that request.

22. Know the difference between Marketing and Utility

A template's category needs to match its actual purpose.

For example, a message presented as an "order update" but containing promotional content may not qualify as a utility message.

Similarly, don't try to disguise marketing content as transactional communication.

And when you're directing customers to a website from a marketing template, use the appropriate URL button rather than treating the message body like a generic link dump.

23. Country restrictions can still stop delivery

A perfectly formatted number doesn't guarantee delivery.

Meta can restrict messaging to particular destination countries or corridors depending on the WhatsApp Business Account and applicable policies.

So if a number looks completely valid but a message still won't deliver, the problem may not be your CSV at all.

The 60-Second Pre-Campaign Checklist

Before you hit Send, quickly verify:

Contacts

  1. ✓ Numbers include the correct country code
  2. ✓ No unnecessary leading 0
  3. ✓ Phone numbers weren't converted by Excel
  4. ✓ File is CSV UTF-8
  5. ✓ Phone column is mapped
  6. ✓ Duplicate imports are intentional
  7. ✓ Status values are valid
  8. ✓ Unsubscribed contacts are excluded
  9. ✓ Tags are correctly formatted
  10. ✓ Custom fields are imported
  11. ✓ Unreachable numbers are understood
  12. ✓ Your own business number is excluded
  13. ✓ Import totals have been reviewed

Campaign

  1. ✓ Template is approved
  2. ✓ Correct WhatsApp account is active
  3. ✓ Variables are mapped
  4. ✓ Fallback values are configured
  5. ✓ Required media is attached
  6. ✓ Meta messaging limits are considered
  7. ✓ Your plan quota is sufficient
  8. ✓ Meta payment and business details are configured
  9. ✓ Account quality is healthy

Compliance

  1. ✓ Recipients have opted in
  2. ✓ Unsubscribe requests are respected
  3. ✓ Marketing and utility messages are categorised correctly
  4. ✓ Destination countries are supported

Final Thought

WhatsApp campaign delivery isn't just about writing the right message.

It's about having the right contacts, the right data, the right template, the right account configuration, and the right consent — all at the same time.

Most campaign problems become much easier to solve when you check these things before you press Send.

So before your next campaign goes out, take 60 seconds and run through this list.

It could be the difference between a campaign that reaches your audience and one that quietly skips half of it.