Adding channels does not by itself add revenue. Sending the same message by email, then SMS, then WhatsApp is not a multi-channel campaign — it is the same campaign three times, and your unsubscribe rate will say so.
A drip campaign that works across channels does something different: it assigns each step to the channel that suits that moment, and it lets the sequence build. This guide covers how to decide which channel does what, how to time the waits, what each channel actually costs, and the design mistakes that quietly ruin cross-channel sequences.
Campaigns and flows: get this straight first
Two different things share the word "drip", and mixing them up leads to the wrong build.
| Scheduled campaign | Event-triggered flow | |
|---|---|---|
| Audience | One you choose, fixed at launch | None up front — shoppers enroll individually |
| Start | When you launch it | When a shopper does something |
| Typical use | Product drop, sale sequence, re-engagement push | Cart abandonment, first purchase, browse |
| Multi-step, multi-channel? | Yes | Yes |
The consequence of that first row is the one people get caught by: a campaign's audience is a snapshot, so someone who joins the segment tomorrow is not swept into a run that started today. If you want everyone who ever abandons a cart to get the sequence, you need a flow. Our marketing automation playbook covers the always-on side; this guide is mostly about sequence design, which applies to both.
What each channel is actually for
Channel choice comes down to three variables: cost per message, how much context it carries, and how much it interrupts.
| SMS / RCS | |||
|---|---|---|---|
| Cost per message | Lowest | Meaningfully higher | Varies by template category; conversations are free |
| Detail it carries | Highest | Lowest (RCS adds images and buttons) | High — rich media, buttons, a persistent thread |
| Interruption | Lowest | Highest | Medium |
| Best at | Product education, comparisons, imagery, anything needing consideration | Genuine time pressure — a sale ending, low stock, a delivery update | Removing purchase objections, because the customer can reply |
| Weakness | Easy to ignore; a message that must be seen today often is not | The channel people resent most when misused — the bar for sending is higher | Outbound needs an approved template; you cannot improvise |
Two things to design around
RCS has to fall back. Not every recipient's device and carrier support it, so the card content still needs to make sense as plain text, with any button links written into the fallback body. A card whose only call to action is a button becomes a dead end for everyone who receives the SMS version.
WhatsApp's 24-hour window is an opportunity, not just a constraint. Free-form replies are allowed for 24 hours after the customer messages you — so a step that invites a reply opens a window in which your team can answer questions freely and at no message cost.
SMS is also the most heavily regulated channel here: consent, sending hours, and — in the US — carrier registration all apply before your first send. Our SMS compliance guide covers what is required, and the WhatsApp Business API guide covers template categories and pricing.
Sequencing: match the channel to the intent
The reliable pattern is to escalate. Start on the cheap, low-interruption channel and move to the expensive, high-attention ones only as intent proves itself or a deadline approaches.
Worked example: cart recovery
| When | Channel | The message | Why this channel |
|---|---|---|---|
| Hour 1 | The cart contents, a clear path back, no discount | Most recoveries happen here and cost nothing but a send | |
| Hour 24 | "Still deciding? Reply here if you want sizing help" | The shopper can raise the actual objection — and the reply opens a free 24-hour window | |
| Day 3 | SMS | A deadline and a link. One sentence | Only if the cart value justifies the cost |
Three steps, three jobs, escalating cost. Compare that to sending the same "you left something behind" three times.
Worked example: winning back a lapsed customer
| When | Channel | The message | Sent to |
|---|---|---|---|
| Day 0 | What is new since they last bought — no offer yet | Everyone lapsed. The point is to see who still cares | |
| Day 4 | A reason to return, aimed at the category they used to buy from | Everyone lapsed | |
| Day 8 | WhatsApp or SMS | The direct ask | Only people who clicked one of the first two |
Timing the waits
There is no universal cadence, but there is a rule: the wait should match the decay rate of the intent you are responding to.
| Sequence | Wait between steps | Because |
|---|---|---|
| Cart abandonment | Hours | Intent evaporates fast — a two-day delay is a different campaign entirely |
| Browse abandonment | 12–24 hours | Real interest, not yet a decision |
| Welcome series | Days | You are building a relationship, not closing today |
| Win-back | Days to weeks | The customer is not in-market right now, and pressure reads as desperation |
Two practical adjustments. Respect quiet hours on SMS and WhatsApp — a 3am message is a lost subscriber and, in some jurisdictions, a violation. And do not let a wait run so long that the context is gone: an email about a cart from three weeks ago is confusing rather than persuasive.
Design mistakes that break cross-channel campaigns
- No exit condition. If someone buys at step one, steps two and three must not send. This matters more with every channel you add — a mistimed email is annoying, a mistimed WhatsApp message about something already purchased is worse and costs you money to deliver.
- Duplicate contacts across sources. The same person imported from two systems receives everything twice. Deduplicate on email and phone before you launch, not after someone complains.
- Unresolved merge variables. A message that goes out reading "Hi {{first_name}}" or with a broken product link is worse than no message. Give every variable a fallback and send a test first.
- Treating a WhatsApp read receipt like an email open. Read receipts only arrive when the recipient has them switched on, so WhatsApp "open" numbers are structurally lower than email's. That is a measurement artefact, not weaker performance — compare clicks and conversions instead.
- Ignoring per-channel consent. Someone who subscribed to your newsletter has not agreed to receive texts. Consent is per channel and needs to be recorded that way.
- Assuming the same length works everywhere. A paragraph that reads well in an email is a wall of text on a phone. Rewrite per channel; do not truncate.
Measuring a multi-channel campaign
Per-channel metrics will mislead you here, because the channels are supposed to work together. Judge the sequence at two levels:
- The whole campaign — revenue and conversions attributed to the run, against its total sending cost across all channels. This is the number that answers "was this worth it".
- Each step — delivered, clicked, and conversions after that step, so you can tell which one is carrying the sequence and which is filler.
Two specifics worth watching. First, "sent" is not "delivered" — a provider accepting a message means it took responsibility, not that it arrived, and the gap between the two is where template rejections and bad phone numbers hide. Second, look at where conversions cluster: if 80% land after step one, your later steps are costing money to annoy people. Cut them. Our campaign analytics guide covers attribution properly.
How CampGain runs this
CampGain is built specifically for this shape of campaign: one workflow, multiple channels, waits in between.
- Build the sequence once. Add steps, pick a channel and a template per step, and set the wait between them. Email goes through your own SendGrid, Resend, or Gmail connection; SMS and RCS through Twilio; WhatsApp through Meta or Twilio.
- One audience across every step. Segments combine your own contact rules with Shopify conditions, and duplicates are collapsed by email or phone before the run starts, so nobody gets the sequence twice.
- Merge variables that resolve per recipient, drawing on your synced Shopify catalog so product names, prices, and links are current at send time.
- RCS with automatic SMS fallback, including carrying the card's button links into the fallback text so recipients on plain SMS still get somewhere to click.
- Launch, pause, resume, or cancel a run mid-flight, and restart a finished campaign as a fresh copy with its own statistics rather than rebuilding it.
- Per-step and per-contact results, with the provider's stated reason on every failure — so a step that underperforms tells you whether it was the template, the audience, or the channel.
- Test the whole workflow first by sending it to a handful of contacts and checking every step renders and delivers before the segment sees it.
See how a campaign gets built, from connecting channels to launching the run.
Start with two channels
Take one sequence you already run over email — cart recovery is the usual candidate — and add a single non-email step, gated on people who did not convert from the first message. Compare revenue per recipient against the email-only version over a few weeks.
That one comparison teaches you more about your customers' channel preferences than any benchmark will, and it costs a fraction of building a full cross-channel programme you have not yet validated.