How to Measure WhatsApp Incrementality: Free Claude Skill and Step-by-Step Guide

Share Now

 

Table of Contents

 

1. The Gap Between Attributed and Incremental Orders
2. The Control Group You Already Have
3. What We Built
4. A Real Example: One D2C Brand’s Sale Campaign
5. Three Ways to Measure It (Options 1 to 3)
6. Five Mistakes to Avoid
7. Honest Limitations
8. How to Get Started
9. FAQs

 

The Gap Between Attributed and Incremental Orders

 

When we checked this for one D2C brand, their WhatsApp tool credited a sales campaign with 453 orders. About 256 happened because of the messages. The rest would have happened anyway.

 

That’s the problem with WhatsApp attribution. Your WhatsApp tool counts anyone who ordered after reading a message, including people who were going to buy anyway. And since your WhatsApp list is usually your best customers, they would have bought more anyway.

 

That gap is the difference between attribution and incrementality. It decides whether you keep sending, change who you send to, or stop. Below, we show how to measure it with a free Claude skill, or by hand in Google Sheets.

 

The Control Group You Already Have

 

To measure incrementality, compare two groups of similar customers: one that got your message and one that didn’t. If the first group orders more, the difference is what your message earned.

 

You may already have that second group. WhatsApp limits how many brand messages a person can receive, so on every campaign some customers never get your message. In your message report, they show up as “failed”, with a reason like “not delivered to maintain healthy ecosystem engagement”. In the raw log, Meta marks them with two codes:

 

Failure Code What It Means
131049 Per-user marketing cap: the person was on your list, but Meta capped them
130472 Random experiment holdout: Meta randomly held the person out

 

These people are your control group. If your report doesn’t show the failure reason, skip to Option 3 below.

 

What We Built

 

/whatsapp-incrementality is a free, open-source Claude skill that compares the orders of people who got your message with those who were capped or held out, within the same recency and order-history segments.

 

You give it two CSV exports: your WhatsApp message log and your store orders. It works with any WhatsApp platform built on Meta’s API (BiteSpeed, Interakt, Wati, AiSensy, Gallabox, Limechat) and with Shopify, WooCommerce or similar stores. No API or MCP connector is needed.

 

For each campaign or journey, you get:

 

  • Orders the platform claimed vs orders the messages caused
  • Cost per incremental order
  • Lift by customer segment, so you know who to keep messaging
  • A verdict: KEEP, TEST WITH HOLDOUT, RETIME OR STOP, STOP OR FIX, or NOT MEASURABLE FROM HISTORY

 

Everything runs on your own computer. Before Claude sees anything, one privacy command swaps every phone number for a code generated from a secret key that stays on your machine, and removes names, emails and addresses. Claude never sees a real phone number.

 

Get the skill: https://github.com/smacient/marketing-skills/tree/main/skills/whatsapp-incrementality

 

A Real Example: One D2C Brand’s Sale Campaign

 

Here is what the data showed for one D2C brand:

 

  • The WhatsApp tool credited a sales campaign with 453 orders. About 256 happened because of the messages.
  • Messages to people who had never bought brought in zero extra orders.
  • A “time to reorder” reminder got people to order a few days sooner, but no extra orders overall.
  • Loyal customers who hadn’t ordered in 4 to 8 months responded the most. Recent buyers ordered the same with or without a message.
  • On the sale’s last day, 43% of messages were blocked, against 14% on its first day.

 

Your customers may respond differently, which is exactly why it’s worth measuring your own data.

 

Three Ways to Measure It

 

Option 1: Let Claude do it (about an hour)

 

  1. Download the message report from your WhatsApp tool and an orders export from Shopify for the same period plus two weeks.
  2. Run the privacy command in your terminal so Claude only sees coded files.
  3. Open Claude with the skill installed and say: “Check if this WhatsApp campaign actually brought in extra sales.”
  4. Answer a few questions, such as which campaigns belong together and what a message costs you (about Rs 1 in India).
  5. Read the verdict for each campaign.

 

Option 2: Do it in Google Sheets (about half a day)

 

  1. Put both reports in one sheet, on a Messages tab and an Orders tab.
  2. Make phone numbers match by keeping only the last 10 digits on both tabs.
  3. Split people into “Got it” (delivered) and “Didn’t get it” (failed with the “healthy ecosystem” reason). Ignore other failures.
  4. Mark who ordered between the send date and two days after the sale ended.
  5. Compare the two groups:
Group People Ordered % Who Ordered
Got it 10,000 300 3.0%
Didn’t get it 2,000 40 2.0%

 

The message added 1 percentage point, so about 100 of the 300 orders came from the message. The other 200 would have happened anyway.

  1. Repeat for each customer type: bought in the last 4 months, 4 to 12 months ago, over a year ago, and never bought. Usually one or two groups respond strongly, and others don’t move at all.

 

Option 3: Start fresh with your next campaign (simplest)

 

Before your next send, randomly set aside 1 in every 10 people and don’t message them. After the campaign, compare how many people ordered in each group. It’s the cleanest test you can run.

 

How to decide

 

What You See What to Do
Clear extra orders, and a message costs less than an order earns Keep sending to this group
Small difference, hard to tell Test again with Option 3
No difference Stop messaging this group, or change the offer
Extra orders in the first 2 to 3 days, gone by 2 weeks Retime it: people ordered sooner, not more

 

Five Mistakes to Avoid

 

  1. Trusting the dashboard number. “Orders after a message” are not “orders because of a message”.
  2. Comparing your message list with everyone else. Your list is your best customers. Of course they buy more.
  3. Counting order confirmation messages as sales. Those people had already bought.
  4. Checking only the first 3 days. A reminder that makes people order sooner looks great on day 3 and does nothing by day 14.
  5. Sending your biggest blast on the busiest day. On crowded sale days, WhatsApp blocks more messages.

 

Honest Limitations

 

  • The capped group isn’t random. Meta caps less-engaged users more, so this comparison tends to overstate lift. The random holdout is unbiased but small. The skill reports both.
  • Matching is by phone number. Orders placed under another number are missed.
  • It only measures messages you sent. It says nothing about segments you’ve never messaged.

 

For decisions that matter, confirm with a planned holdout (Option 3).

 

How to Get Started

You need: Claude Code (requires a Claude subscription or Console account), Python 3.10 or later, a WhatsApp message export that includes the failure reason, and an orders export from your store.

Install the skill:

git clone https://github.com/smacient/marketing-skills
cp -r marketing-skills/skills/whatsapp-incrementality .claude/skills/whatsapp-incrementality
pip install -r .claude/skills/whatsapp-incrementality/requirements.txt

Run the privacy step:

python .claude/skills/whatsapp-incrementality/scripts/pseudonymize.py exports/messages.csv exports/orders.csv --out safe --key-file pseudonym.key

Run the analysis: open Claude Code in your project folder, type /whatsapp-incrementality, and point Claude at the two coded files.

 

FAQs

 

1. What is WhatsApp incrementality?

It’s the number of orders that happened only because you sent a WhatsApp message, as opposed to every order placed after a message, which is what most WhatsApp tools report.

2. Is the skill free?

Yes. It’s open source at github.com/smacient/marketing-skills and needs no API, connector or paid credits.

3. Does Claude see my customers’ phone numbers?

No. A privacy command on your computer replaces every phone number with a code before Claude sees anything.

4. What if my report doesn’t show the failure reason?

Past campaigns can’t be measured this way. Use Option 3 and hold out 1 in 10 people on your next send.

5. Can I do this without Claude?

Yes. Option 2 shows how to do it in Google Sheets in about half a day.

 

Related Blogs

Claude Skill for Amazon Market Research (No Helium10 or JungleScout subscription required)

How to Analyze the Amazon Search Query Performance Report: A Complete Guide with Free Claude Skill

 

 

 

 

 

 

 

 

Share Now

Leave a Comment

Your email address will not be published. Required fields are marked *

Hire a machine, don’t be one!

Need a custom AI-powered solution to any marketing problem? We help build bespoke AI-driven solutions to help marketers automate processes and be more productive.

Contact Us