Playbooks

Which Channel Booked the Meeting? Attributing Multichannel Outbound Honestly

When LinkedIn and WhatsApp both touch a prospect, last touch takes the credit and lies to you. Here is how to attribute meetings across channels.

Share

A meeting lands on the calendar. The CRM says it came from WhatsApp, because WhatsApp was where the prospect said yes. Nobody records that the same person was found on LinkedIn, accepted a connection there, read two messages and only handed over a number because of the third.

So the next quarter’s plan reads “WhatsApp books meetings, put more budget there,” and the channel that actually created the opportunity gets cut. Attribution in multichannel outbound is not a reporting nicety. It is the mechanism by which teams decide which channel to starve.

Why last touch quietly kills your best channel

Most CRMs have one field for channel, written once, usually by whatever tool created or last updated the record. In a single-channel motion that is harmless. In a two-channel motion it is actively misleading, because the two channels do different jobs.

LinkedIn outreach is where you find people, confirm they are who the list says they are, and earn the first bit of permission. It is slow by design: a connection request, an accept, a message that has to land in a crowded inbox. WhatsApp outreach is where a warm conversation moves fast, because the prospect reads it within minutes and replies in sentences rather than paragraphs.

Give credit to the last channel before the booking and you will nearly always credit the fast one. That is not an insight about channel performance. It is an artefact of where in the funnel each channel sits. The same logic in reverse breaks first-touch reporting: credit the first channel and WhatsApp looks like an expensive extra that books nothing, right up to the quarter you turn it off and watch warm conversations go cold.

Record the touch history, not the channel label

The fix is not a better single field. It is keeping a list.

For every contact in an active motion, you want a timestamped row per meaningful interaction: the channel, the direction, the type, and whether the prospect did anything. Six rows for a worked prospect is normal. Something like: connection request sent on LinkedIn, accepted three days later, first message sent, reply received, number shared, WhatsApp message sent, meeting booked.

Two details decide whether the history is worth anything. First, log inbound events, not just sends. A list of your own outgoing messages tells you about your activity, not the prospect’s. The accept, the reply, the read, the number handed over — those are the state changes attribution needs. Second, keep one identity across both channels. If the LinkedIn profile and the WhatsApp number live on separate records, no model can join them, and you are back to guessing. One contact, two channels, one thread of history.

This is where tooling either helps or quietly ruins the data. If LinkedIn lives in one tool and WhatsApp in another, the join happens in a spreadsheet, by hand, badly. Running both channels from one seat means the touch history is a single sequence by construction rather than a reconciliation job, and how the platform keeps one record across both channels is worth checking before you design a reporting model around two disconnected tools. CRM sync matters for the same reason: if HubSpot, Salesforce or Pipedrive is where your revenue reporting lives, the touch history has to land there too, or your model and your board deck will disagree.

Two numbers, reported side by side

You do not need a weighted multi-touch model with decay curves. Two numbers, reported together, get almost all of the value.

Sourced. Credit the channel of the first meaningful touch — not the first send, the first response. The accept on LinkedIn, the first reply on WhatsApp. This answers “where do our opportunities come from,” which is the question that should drive list building, data spend and which channel you add next.

Assisted. Credit every channel that recorded a meaningful touch before the booking. A meeting can be assisted by both channels, and often is. This answers “what would break if we removed this channel,” which is the question that should drive what you keep running.

Report both for the same set of meetings and read the gap. When a channel sources a lot and assists a lot, it is your engine. When a channel sources almost nothing but assists most bookings, it is a closer: cutting it does not reduce where opportunities come from, it reduces how many of them convert. When a channel sources well but rarely assists, the hand-off is leaking somewhere between the first reply and the booking, and that is a process problem rather than a channel problem.

2 models sourced and assisted
1 record both channels joined
Inbound the events that count

Keep the denominator honest. Attribute meetings booked, or better, meetings that happened. Attributing replies rewards whichever channel is chattiest, and attributing opportunities pulls in everything sales did after you handed the prospect over. Booked and held meetings are the last thing outbound genuinely controls.

For context on what the mix produces, the figures published on vsdr.ai are directional marketing numbers rather than a study: roughly a 31% average reply rate across the motion and around 3.4x more meetings. Useful as a sense of shape, useless as a benchmark for your own channel split. Your sourced and assisted split will be specific to your ICP, your list quality and how disciplined your hand-off is, and the only version worth planning against is the one from your own last full cycle.

What attribution should actually change

A model that does not change a decision is a hobby. Three decisions are worth the effort.

Where the next hour of effort goes. If LinkedIn sources most opportunities, more targeting work and better first messages compound. If WhatsApp assists nearly every booking but sources little, the leverage is in getting more prospects to the point where a number gets shared, not in sending more WhatsApp messages.

Whether to add a seat or a channel. Sourced credit tells you whether your constraint is opportunity creation, in which case more capacity on the sourcing channel helps. Assisted credit tells you whether the constraint is conversion, in which case a second channel on the warm end helps more than more volume on the cold end. The plans and what each seat covers make that a concrete arithmetic question rather than a debate.

Which hand-off to fix. The most common finding is not that a channel is bad. It is that a specific transition loses people: accepts that never get a first message, numbers collected that never get used, replies that sit for a day. Touch history with timestamps shows you the step, and fixing a step is cheaper than replacing a channel.

Where this does not work

At low volume. With a handful of meetings a month, the split between channels is noise. Fifty bookings is where patterns start to mean something; below roughly twenty, read the thread histories individually instead of building a model that will mostly measure luck.

When you cannot act on the answer. If you run one seat, one list and one cadence, and no realistic version of next quarter moves effort between channels, attribution is a report nobody uses. Spend the week on messaging instead and revisit when there is a real decision on the table.

When the data is incomplete by design. Some touches never get logged: a phone call, a reply inside a LinkedIn thread you did not initiate, a referral passed on privately. Attribution is honest about outbound touches it can see, and quietly blind to the rest. Treat the model as partial evidence about channels, not a complete account of why someone bought.

When it becomes a case for defending a channel. The fastest way to corrupt attribution is to pick a model after seeing which one flatters the channel you already decided to keep. Choose the two models up front, report both every cycle, and let a channel look bad when it is.

The short version

Stop asking which channel booked the meeting and start keeping the history that makes the question answerable. One contact record, both channels, timestamped inbound events rather than a log of your own sends. Report sourced and assisted credit side by side on booked meetings, and read the disagreement between them, because that is where the engine, the closer and the leaking hand-off all show up. Then use it for something: where the next hour goes, whether to add a seat or a channel, which transition to fix. And keep the limits in view. At low volume it is noise, some touches are invisible, and a model chosen after the fact is just an argument with numbers attached.

Share

Put this into practice.

VSDR runs the research, the messaging and the follow-up across LinkedIn and WhatsApp, and books the meeting. See it on your own ICP.

Book a demo