
Mass and trigger are two tools, not two tiers of quality. A mass campaign serves company-level events (a sale, an announcement); a triggered campaign serves customer-level events (a cart, a browse). The launch mechanics look similar, but the logic is different — mature marketing uses both.
Triggers are more effective because they arrive at the moment of customer interest. On average, about 10x higher CTR than mass campaigns. But they don't replace mass campaigns — they complement them.
Manual sending doesn't scale to behavior. Reacting manually, in real time, to the actions of hundreds of thousands of customers is impossible. This is exactly where workflows take over.
A workflow is a rule described once that the system carries out automatically for every customer. The marketer shifts from "I send campaigns every day" to "I design the communication logic."
Workflows are the connective layer of the CDP. They activate every previous layer together: data → profile → segment → channel → message. Without them, the CDP remains just a data warehouse.
Every workflow needs an entry point and an exit point. A start event launches it, and a stop condition ends it. A workflow with no stop condition burns budget and irritates customers.
Every workflow is built from three answers: when to start, when to stop, what happens in between. The first two live in the Start block; the third lives on the canvas.
The Start block is mandatory and indestructible. It holds the entire start and stop configuration. The workflow grows out of it.
The start type is the first strategic decision. Event-based (behavioral triggers), regular (scheduled lifecycle), on field change (reacting to data), event-based with segment parameters (audience-specific). The type defines the workflow's nature.
Start parameters protect against duplicates. "Process repeated events" and "avoid starting if already in progress" determine whether a customer gets one relevant message or several of the same kind.
The stop condition mirrors the workflow's goal. Goal: "bring back to purchase" → stop: "placed an order." A workflow without a stop burns budget and irritates customers. Multiple stop events work on OR logic.
The body of a workflow is built from blocks across six groups. The backbone of most workflows is message blocks, timers, and tasks. The timer sets the rhythm of communication — it's not just "waiting."
Start, body, and stop work together. The stop condition runs continuously: it can cut off the workflow at any moment, the instant the goal is reached, no matter which step of the body the contact is currently on.
Channel message blocks don't duplicate channel settings — they simply insert an already-created message at the right moment. The power isn't in any single block, but in how you connect them with timers and checks into a cascade.
Mandatory, transactional messages bypass subscription categories and the annoyance level. An order confirmation or delivery status reaches even an unsubscribed contact, since it's service information, not advertising.
The timer is a rhythm tool, not just a pause. It controls the pace of the relationship with the customer and can work according to time zone, and even according to a time the user chose themselves.
Contact blocks let a workflow manage the contact's state — updating fields, adding to and removing from segments. A workflow doesn't just send messages; it keeps data in order too.
The Task block is service-level logic with no message attached. Confirming a contact, retrieving an order, issuing a promo code — it's exactly what turns generic emails into specific ones.
The checkpoint is your eyes inside the workflow. It shows where contacts are dropping off and makes diagnostics possible.
All blocks share data through the workflow context. Everything a workflow has collected along the way becomes available to the blocks that follow — and that's the foundation of real personalization.
Condition blocks turn a linear workflow into a decision tree. The workflow starts looking at a contact's behavior and data and choosing what to do specifically for that contact.
There are two ways to branch: individual checks and the Branch block. Individual checks handle a single yes/no question. Branch handles complex routing in multiple directions — it evaluates branches top to bottom, routes down the first match, and has a fallback branch for everything else.
A wide range of signals can drive a decision. Message activity, contact fields, segment membership, trigger event parameters, behavior over a time window, current time, and channel availability. Each check unlocks its own class of workflows.
Channel fallback via Branch is the heart of the omnichannel cascade. The workflow moves down from cheap channel to expensive on its own, delivers the message through the optimal channel, and saves budget.
The Condition block is useful for more complex, unstructured data. It comes in when you need to look up a value by pattern in a loaded profile or a Webhook response.
The power of checks is that they let you build layered, economical logic. A cheap move first, and only for those it didn't reach — a stronger, more expensive one.
A/B testing replaces guesswork with facts. Instead of "I think this subject line is stronger," you get a result verified on a real audience. Systematic testing can increase eCommerce revenue by 50% — not from one winning subject line, but as the cumulative effect of a testing culture.
The Split block is the classic A/B test where the decision is yours. It divides the audience into parts (50/50 for a clean test, or 20/20/60 to find a winner and send it to the rest), and you compare results in the report and choose the winner yourself.
Two testing disciplines are non-negotiable. Test one variable at a time, otherwise the result can't be attributed; and don't declare a winner on a small sample, because small samples lie.
The "One from Many" block is continuous machine-learning-based testing that compresses the entire classic A/B cycle into a single step. You load dozens of variants (grouped by tags), the system automatically sends the one with the higher CTR more often, and filters out weak ones by a clear rule — over a hundred sends and a probability of being the best below two percent means an automatic "Underperformed" tag and removal from rotation. New ideas can be added mid-flight, and the same variant isn't repeated to a contact within four days.
The main value of continuity is that the campaign doesn't go stale between reviews. The winner of a classic test freezes in time and quietly loses effectiveness as audience behavior and offers change. "One from Many" keeps testing on its own, so a trigger that worked in March stays optimized in November without your involvement. For international campaigns, AI also generates translations of variants for all languages at once.
Choosing between the blocks means choosing between control and scale. One-off campaign — Split. A long-running trigger with tens of thousands of launches — "One from Many."
The AI generation mode showed that machine learning on real audience reactions systematically beats intuition. The Promova case: +82% CTR. A smart marketer hands the job of cycling through variants to the system, and focuses their own attention on strategy.
A webhook is a bridge between a workflow and an external system. It's needed when data isn't available inside Yespo: personal promo codes from an external generator, a real-time loyalty balance, warehouse or CRM data pulled at the moment of sending.
The block supports two request types. GET fetches data from outside (get a promo code by email); POST sends data outside and receives a response in return. In simple terms: "give me data" versus "here is data, process it and tell me the result."
The webhook response lives in the workflow context. It can be inserted into a message via a variable, or checked in a Conditions block via regex — meaning the workflow can both show external data to the customer and make decisions based on it.
Setting up a webhook is quite easy. Authentication (basic, token, API key, OAuth) is simply entered in the settings — no coding required. The test button in the block panel lets you verify the connection before a single live contact ever sees it.
Don't use a webhook where a simpler path exists. Promo codes stored in Yespo are issued by the Task block; data already in the contact record is inserted directly. A webhook is only for external data that can't be prepared in advance.
Diagnostics is reading, not guessing. Yespo records everything that happens in a workflow, and the marketer's job is to look at those records — not to randomly rearrange blocks.
First, identify the category of the problem. Either the workflow is not launching at all, or it is launching but doing the wrong thing. These are two different diagnostic paths, and mixing them up wastes time.
If it's not launching, check in order: whether the workflow is active, whether a start event is configured, whether the event is arriving in the event history, and whether the event name exactly matches the start configuration. The most common cause is simple — the workflow is just not activated.
The event history answers "did the signal arrive?" It's the log of all system events; if the event you need isn't there, the problem isn't in the workflow — it's that your system isn't sending the event.
The launch history answers "what happened inside." Its blue path shows the contact's actual route through the blocks, and the "with errors" tab gives the exact description of a failure on a specific block — not a guess, but the cause.
For regular workflows, check the segment. The workflow doesn't see a contact who isn't in the segment; segment tracking shows whether anyone is in there at all.
There is a baseline set of seven triggers to start with. Subscription confirmation, welcome, birthday, abandoned browse, abandoned cart, reactivation, review request. This is the foundation — not the full list of what is possible.
Abandoned browse outperforms abandoned cart in total revenue contribution, even though cart conversion per message is higher. The reason is reach: only a tiny percentage of visitors make it to the cart, while the vast majority simply browse and leave. If you only have the cart workflow, you're working with just the tip of the iceberg.
A multi-step reminder sequence outperforms a single email. A soft reminder with no discount → an argument and social proof → a discount only in the last step. Never lead with a discount in the first email — it trains customers to abandon their cart on purpose.
Combining channels and value-weighted omnichannel improve results. Email plus push delivers more than either channel alone; and the intensity of communication should be calibrated to the potential value of recovering that specific customer.
Wishlist triggers are underestimated but among the highest-converting. The audience has already self-selected as intentional. Five trigger types, triple conversion compared to a standard promotional broadcast, and a meaningful lift in average order value.
The best triggers are often niche-specific. The pet store case shows that tying communication to data unique to your business delivers results that no generic workflow list can match.
Yespo answers "what happened in the message," Google Analytics answers "what happened after the click." A campaign with a great CTR can turn out to be a failure in revenue terms — and you'll only see that in analytics.
In Yespo, UTM tags are generated automatically — no separate Google Analytics integration is needed. It's enabled with a single toggle in the link settings at the account level.
Dynamic variables make tags self-populating: message type, channel, name, message and contact identifiers, tags. The channel variable is critical — without it, all channels are attributed as email.
The automatic split between promotional and triggered sends lets you compare in Google Analytics not clicks, but revenue from automation versus manual campaigns.
UTM tags do double duty: they attribute traffic and identify the contact for web tracking. Turning off tags breaks the connection between channels — and behavioral triggers will stop firing.
When a message is copied, its tags are copied too. Check them in every duplicate, or last year's campaign will come back to life in the middle of summer.
GA4 only sees email, SMS, and mobile push by default. For all other channels, you need to create a custom channel group — otherwise the omnichannel picture will be incomplete.
Last-click attribution systematically undervalues email. This is not a configuration error — it's a property of the model, and it should be stated explicitly when reporting results.
A report gives you a number, not an answer. For a number to become meaningful, you need to know its denominator and the limits of what it can fairly be compared against — without that, any conclusion is guesswork.
The denominator is always the population that could physically have performed the action. Delivery errors are calculated from sent messages, since an undelivered email couldn't have arrived. Opens come from delivered messages, since you can only open what you received. Conversions come from clicks, since only someone who visited the site could buy there.
"CTR" is an ambiguous label that hides two different metrics. It can mean clicks from delivered messages (typically a few percent) or clicks from opens — CTOR (often around 15%). Whenever "CTR" comes up, the first question is always "calculated from what?" — and your own reports should name the denominator explicitly.
The click map shows how much the denominator changes the story, inside a single report. By contacts, percentages can add up to over 100%, since one person can click multiple links. By clicks, the total is always exactly 100%. Same data, two different questions — reach versus share of attention.
Never compare the incomparable. A triggered birthday email will always outperform a mass promotion, because they reach different audiences with different intent. Track trends over time under consistent conditions instead — this month's trigger against last month's, not two campaign types against each other.
Triggered reports show dynamics, not a single result — and the pencil icon marks exactly when something changed. Since a triggered workflow runs for months, its report shows day-by-day charts. A pencil icon flags the moment a message was edited, which is the first place to check when metrics suddenly shift.
Channels can only be compared through a shared denominator: conversion or revenue. Open rates and "read" rates are tracked differently per channel and mean different things, so a 90% Viber open rate versus a 20% email open rate proves nothing on its own. Even conversion needs context — a high In-App conversion rate partly reflects that only the most loyal users are in the app to see it.
Revenue reporting depends on three setup steps and comes with real limitations. Sending order data, enabling visualization, and configuring attribution rules per channel are all required. Revenue uses last-touch attribution, counts only delivered orders, excludes returns, and transactional messages must be tagged and excluded — otherwise a password-reset email ends up looking like it drove a sale.
A list is an asset with a structure and a health state. Campaign reports show symptoms; contact statistics show the cause. Falling open rates are often fixed not by subject lines, but by the list.
The four contact states have precise definitions. Active subscribers — opened in the last three months. Inactive — the broadest and most deceptive category: it includes those who opened six months ago, those who never opened at all, soft bounces, and unconfirmed contacts. Lost — unsubscribes, spam complaints, blocklist. Plus, separately, those who were never contacted at all.
Lost contacts are not passive dead weight — they are active damage. They sit in the denominator and pull down your metrics, and — most importantly — they signal low engagement to mailbox providers, degrading deliverability for the live part of your list.
The cleanup logic differs by segment. Lost contacts should be removed without hesitation. Inactive contacts should be broken down first: those who once opened are candidates for reactivation; those who never opened once cannot be won back by reactivation. The WINETIME case: removing 17% of invalid contacts led to nearly doubled channel revenue in six months.
Growth without engagement is worthless. Look at growth bars together with the engagement line: if the list grows while engagement falls, the problem is not quantity — it's the acquisition source.
BigQuery is needed when your question is not covered by the interface. The most concrete argument: standard reports export up to six months of data, while the storage holds history without limits.
The exchange is bidirectional: metrics, activity, orders, and revenue flow out; aggregated segments and enriched attributes come back in. Export happens once a day; export tables are created automatically.
Two traps cost the most. An incorrectly mapped unique contact field creates duplicates instead of updates; segmentation using warehouse data only works for contacts that exist in both systems — synchronize before the campaign, not after.
This course contains the use of artificial intelligence.
A workflow you can't diagnose, test, or measure isn't automation — it's a black box that happens to run on its own. This module covers the full lifecycle of a workflow: building it correctly, making it smart, keeping it healthy, and proving what it actually delivered.
You'll start with the fundamental distinction between mass campaigns and triggered workflows, and why a workflow with no stop condition quietly burns budget and irritates customers. From there, you'll build the anatomy of a workflow — start type, stop conditions, and the six block groups that make up its body — before moving into the blocks that make a workflow genuinely smart: individual checks and the Branch block, which routes contacts by behavior, segment membership, event data, current time, and channel availability, turning a chain of nested conditions into one readable decision tree.
You'll then cover testing two ways: the classic Split block, where you decide the winner, and "One from Many," where machine learning continuously tests and optimizes on its own — including a documented case where AI-generated copy outperformed marketer-written variants by 82%. Webhooks bring in data that lives outside Yespo entirely, and a dedicated diagnostics lecture teaches you to read event history and launch history instead of guessing why a workflow isn't working.
The module closes with the eCommerce trigger map every business should build first, and three analytics lectures that answer the question testing alone can't: did it actually work? You'll learn to avoid misleading metrics like ambiguous CTR figures, track what happens after the click with UTM tags and Google Analytics, and use BigQuery and contact analytics to judge the health of your list, not just a single campaign.
By the end, you'll be able to design, test, fix, and prove the value of a complete automated communication system.