Skip to main content

How to Connect WAX & Klaviyo

Connect Klaviyo to WAX, sync your data and opt-ins both ways, and target your Klaviyo lists and segments in your campaigns.

Connect your Klaviyo account to WAX so data flows both ways: your WAX opt-ins, tags and attributes show up in Klaviyo, and your Klaviyo lists, segments and profile data can be used in your WhatsApp, RCS and SMS campaigns and flows.

Why connect Klaviyo to WAX?

  • Target your Klaviyo lists and segments in your WAX campaigns, with no manual import.

  • Send your WAX data to Klaviyo (opt-in status, tags, attributes collected in conversations) to segment and add conditions to your emails and SMS.

  • Bring the opt-ins collected by Klaviyo into WAX (pop-up, checkout).

  • Trigger and personalize a WAX flow from a Klaviyo flow with a webhook (abandoned cart, welcome…).

Before you start

  • Access: you need to be able to log in to the Klaviyo account you want to connect and authorize WAX.

  • From WAX to Klaviyo: the tags and attributes you select appear on Klaviyo profiles, prefixed with WAX (e.g. WAX whatsapp_opt_in_status).

  • From Klaviyo to WAX: your Klaviyo lists and segments are fetched automatically for your campaigns. Other data (opt-in, first name, cart URL…) goes through a webhook added to a Klaviyo flow.

  • Opt-in: a contact whose WAX opt-in status is unknown or opted_out does not receive your campaigns. Make sure you bring your Klaviyo opt-ins into WAX (Step 3️⃣).

⚠️ Since July 23, 2026, the WAX opted_out attribute and the Opt-In tag (in WAX tags) are no longer updated. Use WAX whatsapp_opt_in_status and WAX sms_opt_in_status in your Klaviyo segments and flows. Details: Required actions on Klaviyo attributes before July 23rd, 2026.

Step 1️⃣: Connect Klaviyo to WAX

  1. In WAX, go to Settings > Integrations > Klaviyo.

  2. Click Enable Integration.

  3. You are redirected to Klaviyo: click Continue, select the Klaviyo account to connect, then click Allow.

Check the connection

Back in WAX, the Klaviyo integration page shows the active connection.

Your Klaviyo lists and segments then appear in Audience > Lists & Segments.

Step 2️⃣: Send your WAX data to Klaviyo

Sync your WAX tags and attributes to Klaviyo profiles to use them in your segments and flow conditions.

  1. On the Klaviyo integration page, check the tags sync box.

  2. Select the WAX attributes to send to Klaviyo. Example: to use the NPS answers collected on WhatsApp, select the NPS attribute.

  3. Click Save and Synchronize. The sync takes a few minutes.

Opt-in attributes in Klaviyo

Each channel has its own opt-in status attribute, with three possible values: opted_in, opted_out or unknown.

  • WAX whatsapp_opt_in_status: WhatsApp opt-in status.

  • WAX sms_opt_in_status: RCS and SMS opt-in status (a contact opted in to SMS is also opted in to RCS).

  • WAX whatsapp_valid: whether the number can be reached on WhatsApp (Boolean true / false).

💡 Example: in Klaviyo, create a segment with the condition "Properties about someone" WAX whatsapp_opt_in_status equals opted_in. To go further: How to Create a Klaviyo Segment/List Using Data Collected in WAX.

Step 3️⃣: Bring your Klaviyo opt-ins into WAX

Your customers agree to receive your WhatsApp messages through a pop-up or the phone field of your Shopify checkout, and that consent is stored in Klaviyo? A Klaviyo flow and a WAX flow linked by a webhook automatically opt them in on WAX.

Group your opt-ins in a Klaviyo list

Have your collection sources (pop-up, checkout) feed a dedicated Klaviyo list, for example WAX WhatsApp Opt-in.

Create the WAX opt-in flow

  1. In Automations, click Create and name the flow (e.g. "Opt-in from Klaviyo").

  2. Open the Trigger node and select Klaviyo as the Source. WAX generates the Destination URL, the Authorization header and the Bearer Token to paste into Klaviyo.

  3. Add an Opt-In block linked to the trigger: enable Opt-in contact and choose the WhatsApp channel (or RCS/SMS).

  4. Optional: add an attribute to keep the source of consent (e.g. opt_in_source = popup or checkout).

Create the Klaviyo flow

  1. In Klaviyo, go to Flows > Create Flow > Build your own and name the flow (e.g. "Opt-in to WAX").

  2. Choose the Added to List trigger and select your opt-in list.

  3. Add a Webhook action: paste the Destination URL, then the Authorization header and the token copied from WAX.

  4. In the JSON body, send at least the phone number. Paste the variables copied from Preview Profile Info (Profile tab) between the quotes:

{
"attributes": {
"phone_number": "",
"email": "",
"first_name": ""
}
}

Turn on both flows

Set the Klaviyo flow to Live and activate the WAX flow. Then add your own number to the Klaviyo list and check on your WAX contact profile that the WhatsApp Opt-in Status is now opted in.

⚠️ Only opt in to WhatsApp contacts who have explicitly agreed to receive your messages on WhatsApp. If your pop-up only collects SMS consent, choose the RCS/SMS channel in the Opt-In block.

Catch up on opt-ins collected before the setup

The flow only processes contacts added to the list after it is turned on. For contacts already in the list, send a silent campaign to your Klaviyo list: a campaign that only contains an Opt-In block linked to the Start node, with no message. Your contacts receive nothing and the send is not billed. Step by step: Opt in your contacts with a silent campaign.

Step 4️⃣: Trigger and personalize your WAX flows with Klaviyo data

The same webhook approach lets you trigger any WAX flow from a Klaviyo flow (abandoned cart, welcome…) and pass two kinds of data to it:

  • Profile data (Klaviyo Profile tab): first name, email, phone, custom properties. Put them in the "attributes" block.

  • Event data (Event tab): cart URL, products… Put them outside the "attributes" block.

Example: to use your customers' pet name (a custom Klaviyo property) and the abandoned cart URL in your WhatsApp message, add one key per value, then paste the matching Klaviyo variable between the quotes:

{
"attributes": {
"phone_number": "",
"first_name": "",
"dog_name": ""
},
"checkout_url": ""
}

In your WAX flow, then insert these variables in your messages (e.g. first_name in the text, checkout_url on the reminder button).

💡 The full guide, with step-by-step videos and the testing method, is here: How to Create a Webhook to Connect WAX in a Klaviyo Flow. Variables only display correctly when the flow is actually triggered by Klaviyo: see also How to Send a Test for a Klaviyo Webhook?

Step 5️⃣: Send a campaign to a Klaviyo list or segment

  1. Create your list or segment in Klaviyo.

  2. In WAX, create your campaign (see How to create a campaign in WAX?).

  3. At the Audience step, select your Klaviyo list or segment directly.

  4. At the Review & Schedule step, the list import starts: from a few seconds to a few minutes depending on its size (about 2 minutes for 10,000 contacts).

  5. Once the import is done, the estimated total cost is updated: send or schedule the campaign.

Scheduled campaigns: list refresh

  • Send scheduled more than 2 hours ahead: the list is refreshed automatically at send time to include contacts added in the meantime.

  • Send scheduled less than 2 hours ahead: the list is not refreshed.

Why does the number of contacts change between steps?

This is expected: WAX automatically excludes contacts without a phone number. The count shown at the Review & Schedule step can therefore be lower than at the Audience step.

Disable the integration

In Settings > Integrations > Klaviyo, click Disable Integration.

Tips

  • Check the phone numbers in your Klaviyo lists before a campaign: contacts without a number won't be targeted.

  • Can't find a recent list? WAX refreshes your Klaviyo lists regularly. If a list you just created doesn't show up yet, use the Synchronize button in Audience > Lists & Segments.

  • One Klaviyo list per opt-in source (pop-up, checkout): you keep a clear record of where consent came from.

  • Avoid sending on two channels: use WAX whatsapp_opt_in_status in your Klaviyo flows so you don't send the same message by SMS and WhatsApp.

  • JSON error? A comma or a brace is often missing: have an AI assistant (Claude, ChatGPT) review your JSON body before saving.

See also

Did this answer your question?