Next Best Action for E-Commerce: How to Choose, Constrain and Measure It

Next best action (NBA) is a decision approach that chooses the single message, offer, channel or deliberate silence most likely to improve a business outcome for one customer at a given moment. It differs from a campaign because it starts with the customer's current state and compares competing options, instead of starting with a message and finding people to send it to. Prove it works by comparing results with a randomly assigned group where no action was taken. Measuring clicks alone doesn't show that.
This guide covers how NBA decisions are made, the rules that keep them safe, a worked example and a test setup that shows whether the program is adding value.
What next best action means in practice
A segment groups people with similar traits. Personalization changes content for that group. Next best action goes one step further: it chooses among competing actions for one person by answering four questions:
- What to do: a product recommendation, a replenishment reminder, an educational message, an offer or a service update
- Where to do it: email, SMS or WhatsApp (with opt-in), Viber, push, in-app or on-site
- When to do it: now, later today or after the next event
- Whether to do anything at all
The last question matters more than most teams admit. Sending nothing is often the best choice. That's true when the customer is likely to buy anyway, when consent for the relevant channel is missing, or when another message would add cost and fatigue without changing behavior.
Say a skincare shopper viewed sunscreen yesterday. They could receive an educational email, an in-app product comparison, a replenishment reminder or nothing. The right choice depends on recent activity, purchase history, consent, past channel response, margin rules and the outcome you want to improve. If the goal is incremental revenue, the winning action isn't the one that gets the most clicks. It's the one that changes behavior compared with doing nothing.
Practical rule: treat NBA as a decision policy with an approved list of actions, not as a pile of personalized templates.
Campaigns, journeys and decisions
- Broadcast campaign: starts with a message, then finds people who qualify for it.
- Static journey: starts with a trigger and follows fixed branches.
- Next best action: starts with the customer's current state and checks which approved actions are available and allowed right now.
In practice, most teams use NBA as a decision step within a journey, not as a separate system. The journey handles the trigger, timing and exit. The decision step picks the action.
How a next best action decision gets made
A working NBA setup has three layers. Keep them separate so you can troubleshoot each one.
- Prediction. Estimate what's likely to happen, such as purchase likelihood, churn risk or response to a channel.
- Policy. Choose an action from the approved list based on the objective and rules.
- Measurement. Test whether the chosen action caused an improvement compared with a holdout.
Signals worth collecting
Useful inputs include:
- Recent purchases, order value and product categories
- Browsing and search sequences, cart adds and cart abandonment
- App activity: sessions, feature use, push opt-in status
- Message history: recent sends per channel, clicks, replies, unsubscribes
- Channel consent and topic preferences
- Subscription or loyalty status
- Open service tickets, returns or refunds
A prediction alone isn't enough. A customer with a high purchase likelihood may already be ready to buy, so a discount would simply reduce margin. The decision layer has to compare actions against the objective and, where possible, against a no-action baseline.
Where AI fits
AI can help draft content, segments and journeys for your team to approve. Once a journey is activated, AI can personalize the message, channel and send time for each customer within rules your team has set. Keep it draft-first: people approve new content and journeys before they go live, and lift is measured against a control group. Marketers understand inventory priorities, margin pressure, legal limits and service issues that may not show up in event data.
Tone is a good example of a choice that varies by customer. Some customers respond better to direct, practical messages, and others to warmer ones. In Joryio, a customer engagement platform, the AI analyzes which tone has worked for each audience and can suggest adding a variant with a different tone. The marketer adds that variant, and each customer then gets the one that fits them, with lift measured against a control group. The tone feature is available on all plans.
Business rules that keep next best action safe
A model can rank actions well and still create a poor customer experience if the guardrails are weak. Use hard rules for obligations and risk, then let the model optimize among the remaining options.
- Consent and eligibility: suppress SMS, WhatsApp and Viber actions without the matching opt-in. Respect email permissions and topic preferences. Email consent isn't SMS consent.
- Cross-channel frequency limits: set contact caps across all channels and journeys, rather than within each campaign. A customer shouldn't get three "best" actions in one day because three teams picked them.
- Quiet hours: store each customer's time zone and apply quiet hours before send-time optimization.
- Channel rules: define when each channel is allowed. A preferred channel isn't automatically a permitted one.
- Offer limits: control discount eligibility, product exclusions, margin floors, stock conditions and expiry.
- Suppression states: exclude customers with open service issues, active refunds or a very recent purchase.
- Content rules: define approved language, banned claims, required disclosures and brand voice limits before AI drafts anything.
Let the model choose among safe actions. Don't ask it to decide what "safe" means.
Avoid rule sprawl
Teams often respond to every edge case by adding another condition. Over time, the journey becomes hard to audit, and conflicting rules block good actions from reaching eligible customers. Keep consent, frequency and critical business restrictions as hard rules. Use experiments and model scores for softer choices such as content angle, timing, channel preference and offer framing. Document why each rule exists, and review the list every quarter.
Example: a next best action decision for skincare reactivation
Say a skincare brand wants to bring back customers who haven't bought in a while. It currently sends the same discount email to everyone who qualifies. That treats someone who browsed moisturizers yesterday the same as someone who hasn't visited in months.
Step 1: Define the eligible audience
- order_count ≥ 1
- days_since_last_order between 60 and 180
- Consent active for at least one channel the action could use
- No open support ticket, refund or return in the last 14 days
- Not in another promotional journey right now
- At least one tracked event in the last 30 days, or flagged as "dormant" for a separate path
Step 2: Reserve a holdout
Before launch, randomly assign 10% of eligible customers to a holdout group that gets no reactivation action. Keep that assignment stable throughout the test.
Step 3: Set up the decision options
Write the decision logic as a set of customer states, each with an action, constraint and outcome:
Browsed moisturizer and abandoned cart in the last 7 days
- Action: in-app message with a sample offer, or email if the customer doesn't use the app
- Constraint: in-app eligibility or email opt-in; no promotional contact in the last 3 days
- Primary outcome: purchase within 7 days
Read educational content but no cart activity in the last 14 days
- Action: educational email (routine guide or ingredient explainer), no discount
- Constraint: email opt-in; quiet hours respected
- Primary outcome: return visit and product view within 7 days
No activity in the last 30 days
- Action: one low-pressure reactivation message on the customer's highest-ranked channel with active consent, or nothing
- Constraint: cross-channel frequency limit; compared with holdout
- Primary outcome: purchase within 14 days
Open service issue
- Action: service update only
- Constraint: all promotional content suppressed
- Primary outcome: issue resolved
Step 4: Decide at the moment, not at enrollment
Evaluate the customer's state when they reach the decision step, not just when they enter the segment. That way, the system can exclude someone who just purchased, hold back someone with a new support ticket, and switch actions when new behavior changes the picture.
Step 5: Measure
Once the outcome window closes, compare purchase rate, revenue per eligible customer and unsubscribe rate between the NBA group and the holdout.
Optimize for incremental value, not engagement
Opens and clicks are useful for troubleshooting, but they don't prove that a message created value. A highly active customer may click every promotion and buy anyway. Give that customer a discount, and the report shows strong engagement even as margin falls and incremental revenue stays flat.
Different metrics carry different risks:
- Engagement metrics (opens, clicks, push taps, sessions): can reward messages sent to people who would have acted anyway.
- Conversion metrics (purchases, renewals, upgrades): can still overstate impact without a no-action comparison.
- Economic metrics (incremental revenue, margin, retention): need clear attribution windows and careful handling of delayed outcomes.
- Guardrail metrics (unsubscribes, opt-outs, complaints, support contacts): a positive result can hide fatigue or harm.
An engagement-focused approach ranks actions by how likely they are to get a response. An incremental-value approach ranks them by how likely they are to change that response compared with doing nothing. That changes who gets a promotion. A customer with a high baseline purchase likelihood may be a poor discount target. A customer with a moderate purchase likelihood may be worth more if the right message moves them from considering to buying.
Separate objectives by program
Don't force one universal score across every lifecycle program. A retention journey might value continued subscription. A promotional journey might value incremental margin. A service journey might value resolution with no offer at all. Count each conversion once across channels, and include negative effects like unsubscribes.
Measuring next best action with holdouts
A holdout provides a counterfactual for the decision. Without one, you know what happened after the message, but not what would have happened without it.
For apps and other settings with repeated decisions, one useful design is a micro-randomized trial. At each decision point, the system checks eligibility and randomly assigns the person to receive the message or not, then measures a defined behavior over a fixed window. In a published micro-randomized study of a health app, sending a tailored push message made users an estimated 3.9% more likely to engage with the app in the next 24 hours than sending nothing (JMIR mHealth and uHealth, via PubMed Central). The authors call that a relatively small effect. That's a useful reminder that real lift is often modest and only visible with a proper control.
A test setup you can reuse
- Define eligibility: the event, lifecycle state, consent requirement and suppression conditions.
- Choose the outcome window: for example, 24 hours for an app action or 7 to 14 days for a purchase.
- Randomize at the decision point: assign treatment or holdout when the decision happens, not from an old segment.
- Name one primary outcome: the behavior tied to the business goal, not the click.
- Track guardrails: delivery rate, opt-outs, unsubscribes, complaints and support contacts.
- Log exposure: the chosen action, channel, timing, eligibility state and whether the message was delivered.
Send-time optimization belongs in the same framework. Test its effect on downstream conversion, not just open or tap rates.
Getting started with next best action
Start with one decision, not a company-wide AI rollout:
- Pick one journey where you can clearly define eligibility, two to four competing actions, a primary outcome and suppression rules.
- Audit the event and consent data the decision needs. Fix gaps before adding model scores.
- Make sure your channels can carry the actions. If your customers are active in your mobile app or have opted in to WhatsApp or Viber, an email-only setup will limit what NBA can do.
- Launch with a holdout, run it for at least one full purchase cycle and review incremental results before expanding the action list.
For a broader look at what to expect from the underlying platform, see our guide to choosing a customer engagement platform.
Frequently asked questions
Is next best action the same as product recommendations?
No. Product recommendations are one possible action. Next best action chooses among recommendations, service messages, education, offers, channels and doing nothing, based on the customer's current state and your objective.
Do we need machine learning to start?
Not necessarily. Many teams start with rule-based decisions: clear customer states mapped to approved actions, plus a holdout. Model scores can replace or refine those rules later, once you know which decisions matter and have clean data.
How large should the holdout be?
Large enough to detect the effect you care about within a reasonable time. That depends on your audience size and baseline conversion rate. As a starting point, you might hold out 10% and adjust after reviewing the initial results. Keep assignment stable for the duration of the test.
How do we stop customers getting too many "best" actions?
Set frequency limits across all channels and journeys, not per campaign. Give the decision step a ranked fallback so it can choose "no action" when a customer has hit their limit.If you're bilding next best action into your lifecycle program, see how Joryio works or talk to the Joryio team about your current setup.