Blog
August 14, 2026

Klaviyo, SMS, and Ads in One Engine

One try-on payload, three destinations: Klaviyo for email, Postscript for opted-in SMS, ads for anonymous recovery. How to connect them without rebuilding each flow.

Aaron
Aaron
10 mins read

A shopper completes a virtual try-on for a burgundy blazer, gives her email to save the look, and leaves. Klaviyo records the address. Postscript sees a phone number from an older checkout. Google Ads recognizes the browser. By the afternoon, three platforms consider her available.

That is not orchestration. It is three tools noticing the same person independently.

A connected remarketing engine creates one product-intent record, then gives Klaviyo, opted-in SMS, and advertising a permission-appropriate view of it. The shared record carries the event, product, identity, consent, time, and purchase state. Each destination receives only what it needs, while one set of rules controls priority, suppression, and expiry.

The remarketing engine definition explains why this is a system rather than a collection of campaigns. From a lifecycle marketer’s desk, the practical job is to make three destinations agree about what happened and when to stop.

Lifecycle marketer routing one Shopify try-on payload into Klaviyo, Postscript, and an advertising audience

Klaviyo, Postscript, and ads should receive different views of the same Shopify product-intent record. Editorial image in Classic Antla disposable-camera style.

Give the engine one record of intent

The common failure is a different definition of the shopper in every platform. Klaviyo has last_product_viewed, Postscript has a campaign tag, and the ad account has everyone who visited /collections/jackets. Those fields do not describe the same action.

Start with a canonical record. The Shopify remarketing engine build order covers the wider stack. For destination wiring, every qualifying event should carry:

FieldExampleWhy all destinations need a version of it
Event identityevent_id, try_on_completedNames and deduplicates the intent
Event timeUTC timestampControls freshness, ordering, and expiry
Product identityShopify product ID, variant ID, SKUKeeps the exact burgundy blazer attached
Return pathCanonical product URLSends the shopper back to the relevant PDP
Shopper identityCustomer ID, email, phone, or anonymous IDDetermines which destinations can recognize the shopper
PermissionEmail, SMS, and advertising consent statesPrevents one identifier from becoming blanket permission
OutcomePurchase, cancellation, return, or unresolvedStops or changes recovery

Keep readable product titles, but use stable Shopify IDs for joins. Titles are edited. URLs are redirected. The marketing calendar calls the same jacket “Wine,” “Bordeaux,” and “Holiday Red” before lunch.

Treat the record as an event, not a permanent profile opinion. A second try-on should create another event rather than overwrite the first. Durable properties such as consent status can live on a profile, while behavior stays in event history.

The detailed try-on data destination map specifies the identity, product, and purchase fields for these handoffs. The engine layer adds the shared decisions around channel eligibility, precedence, expiry, and suppression.

Project the record into three destination views

One source record does not mean copying every field into every vendor. A destination view preserves the event and product while respecting what the channel can identify, display, and use.

Klaviyo gets the identified email view

Klaviyo should receive the event ID, timestamp, email or customer identity, product and variant IDs, product URL, email permission, and purchase state. A secure saved-look reference may be appropriate under the merchant’s privacy policy. Sending the personal image everywhere by default is not.

Klaviyo Flows can act on profile and behavioral data. That makes Klaviyo the natural destination when the engine has an identified, email-eligible shopper and the creative needs visual detail, fit context, or room to compare products.

Trigger choices, waits, branches, and template fields belong in the Klaviyo virtual try-on flow guide. Wiring and campaign construction are separate jobs. Mixing them makes every schema change a reason to rebuild the flow.

Postscript gets the opted-in SMS view

Postscript should receive a phone identity only when explicit SMS permission is present. Its useful payload is compact: event ID, product and variant, short product label, return URL, timestamp, purchase state, and SMS consent evidence or status.

Postscript is designed for Shopify SMS. The engine should still decide whether the channel is eligible before the record reaches promotional automation. A phone number collected for delivery updates does not silently become remarketing consent.

SMS needs a higher activation threshold than email. A recent try-on plus an opted-in restock request may justify a text. A general product view from twelve days ago does not. Eligible data need not trigger an immediate send.

Ads get the anonymous recovery view

Advertising is the fallback when the shopper remains anonymous but can be recognized under the store’s consent settings. Pass the event type, catalog product ID, timestamp, eligibility, and purchase or exclusion update.

Google Ads guidance on data segments describes how prior site and app visitors can be reached across Google inventory. The important lifecycle decision happens before audience delivery: a completed try-on deserves a different audience definition from a collection-page load.

Do not export the customer’s generated try-on image as ad creative by default. Ads need the intent signal and catalog reference, not a personal photo. Purchase, consent withdrawal, out-of-stock state, or expiry should end recovery eligibility.

Put channel arbitration above all three tools

Three connected destinations can still produce three simultaneous messages. The remedy is a channel policy that sits above campaign settings.

Write eligibility and activation as separate states:

  • Eligible for email means an identified shopper has email permission and a fresh product-intent event.
  • Eligible for SMS means explicit SMS permission exists and the intent is strong enough for an interruptive channel.
  • Eligible for ads means advertising consent and platform recognition permit audience use.
  • Activated means the engine selected that channel now, after checking priority and frequency.

This distinction supports a simple arbitration table:

Shopper statePrimary actionOther destination behavior
Anonymous, ad eligibleAdd to product-intent ad audienceNo email or SMS
Email identified, no SMS opt-inMake Klaviyo eligibleAds may remain eligible within policy, but frequency is coordinated
Email and SMS eligible, normal considerationPrefer emailHold SMS unless a separate urgent event appears
SMS opted in, requested variant restockedAllow SMS prioritySuppress overlapping same-day email
Matching purchase receivedStop recoverySuppress email and SMS, exclude from ads

Priority should follow the customer’s state, not vendor ownership. Without a shared rule, the customer can receive a text, an email, and six blazer ads after buying the blazer.

Antla’s email capture feature can connect a completed try-on to an email address when the shopper saves the result. The engine should stitch it to the anonymous event and preserve the event ID. It should not create another try-on or infer SMS permission.

Make purchase suppression the shared finish line

A remarketing engine is connected only if an order changes every destination that received the intent. Sending the original event is half the integration. Closing it is the other half.

Use Shopify orders to match the purchased variant or an explicitly defined product family. Then update the canonical record first. Destination adapters should translate the same outcome:

  1. Klaviyo marks the event resolved and blocks recovery messaging.
  2. Postscript receives the purchase update and removes promotional eligibility for that product.
  3. Advertising receives the conversion and audience exclusion signal.
  4. The engine records when each destination acknowledged the change.

Do not depend on each platform discovering the purchase independently. A shared suppression message gives the team one timestamp to inspect when a buyer reports seeing recovery creative.

Reconcile a sample of event IDs to confirm that every destination received the correct product, consent, and outcome. Failed handoffs should enter a retry queue.

Track four operational rates:

  • destination delivery rate by channel
  • duplicate-event rate
  • purchase-suppression delay
  • unmatched product or identity rate

These are engine health metrics. Opens, clicks, and platform-attributed revenue come later.

Measure the engine across channels, not inside one dashboard

Klaviyo, Postscript, and Google Ads will each report performance through their own attribution rules. Adding the three revenue numbers can credit the same order several times. It also cannot show what would have happened without remarketing.

Litmus email benchmark guidance is useful for email delivery and engagement context, but channel benchmarks do not replace an incrementality test. Keep a stable holdout at the engine level so held-out shoppers do not receive the equivalent recovery through another destination.

The full Shopify remarketing engine measurement guide covers holdouts, recovered revenue, contribution margin, and frequency caps. For this wiring stage, preserve the shared event ID and holdout assignment in every destination. Without those two fields, cross-channel reporting becomes a contest between dashboards.

Start the engine with one high-intent event and one product set. Check that the record reaches only eligible destinations, that one channel wins when several qualify, and that a purchase closes every route. Once those handoffs are reliable, adding more campaigns is a creative decision instead of another data migration.

Questions lifecycle marketers ask

How do I connect Klaviyo and ads into one remarketing engine?

Create one canonical product-intent event with an event ID, timestamp, Shopify product and variant IDs, identity, permission, and purchase state. Send an identified email view to Klaviyo and an anonymous, consented catalog-event view to the ad platform. Keep priority, expiry, holdout assignment, and purchase suppression in a shared control layer rather than recreating them in both tools.

Where does SMS belong?

SMS belongs after identity and channel permission are resolved. Route a compact product-intent view to Postscript only for shoppers with explicit SMS consent. Activate it for strong, recent, concise reasons to return, and coordinate it with email so both channels do not respond to the same event at once.

What payload should every destination share?

Every destination should share the same event ID, event type, timestamp, Shopify product and variant identity, return path, relevant shopper identifier, permission state, and purchase outcome. Each platform should receive only the identity and properties required for its job. A generated personal try-on image should not be copied into every destination by default.


About the author: Aaron is the founder of Antla. He wants the same product-intent record in email, SMS, and ads, not three teams inventing three versions of the shopper.

Trace one completed try-on through email, SMS, ads, and purchase suppression before adding another audience. Add Antla to Shopify when you want a product-specific intent event and an identity-capture moment to feed the engine.