Skip to content
Back to guides
crm9/14/2026

Multi-Channel Campaigns: Coordinating Email, SMS, Zalo, and Calls in One Plan

CareSuite's campaigns can span email, SMS, Zalo, events, and calls with trigger-based targeting — a genuinely different feature from the separate email app's own campaign tool, and worth telling apart clearly.

crmcampaignsmulti-channel

Piskes has two features that both answer to "campaigns," and confusing them will send you looking in the wrong place for the wrong thing. This guide is about the one that lives inside CareSuite (frontend/apps/crm) — a multi-channel campaign tool scoped to customer-care and retention work. It is not the email app's own campaign builder, which is a separate email-marketing product with its own audience, templates, and send infrastructure. More on that distinction below.

What a CareSuite campaign is

A campaign in CareSuite (care_campaigns) has a channel — email, SMS, Zalo, event, or call — a status (draft, running, or done), a start and end date, a budget, and a running sent_count. Targets are stored separately in care_campaign_targets, each pointing at a target type and id, so a single campaign's audience can be built up from more than one kind of source rather than a flat, fixed list.

What makes this distinctive is the trigger layer. Campaigns can be scoped by conditions like "no contact in N days" or "N days after an order" — behavioral triggers based on your actual customer data, not a static list you exported once. Paired with that, campaigns can drive actions beyond just sending a message: creating a follow-up task or opening a care ticket automatically as part of the campaign's execution.

Coordinating across channels

Because channel is a field on the campaign rather than a separate tool per channel, planning a retention push that spans email, SMS, and Zalo together happens inside one place rather than three disconnected ones. A campaign aimed at customers who haven't ordered in 60 days, for instance, can be built once around that trigger and executed across whichever channels make sense for your audience — a Zalo message for customers who engage there, SMS as a backup, email for the segment that responds better to it — with the same underlying targeting logic driving all of it.

Calls and events are included as channels too, which is a meaningful acknowledgment that not every customer touch in a Vietnamese SMB context is digital — a scheduled call list or an in-person event invitation can be tracked as a campaign the same way a Zalo blast is.

Not the same thing as the email app's campaigns

This is worth stating plainly, because the overlap in naming is a real trap. The email app (frontend/apps/email) is a separate, standalone email-marketing product — campaigns, subscriber lists, automations, and a drag-and-drop template studio, running on its own worker and its own D1 tables. It has no connection to CareSuite's care_campaigns, no shared audience, and no shared execution path. A CareSuite campaign with channel: 'email' and the email app's own campaign builder are two different systems that happen to both send email — they don't share contacts, templates, or send infrastructure.

Which one you want depends on what you're actually doing. If the work is customer-retention or customer-care outreach tied to your CareSuite customer records — win-back campaigns triggered by inactivity, post-purchase follow-ups, service reminders — that's a CareSuite campaign. If the work is broad email marketing with its own subscriber list, professionally designed templates, and drip automation independent of your CRM data, that's the email app.

Setting one up

Define the trigger first — what customer behavior or time-based condition should this campaign respond to. Pick the channel or channels that fit your audience and the message. Set a budget if you're tracking spend against the campaign, and decide whether the campaign should also fire a follow-up action — a task for your team, or a ticket — as part of reaching its targets, rather than ending at "message sent."