What you’ll do (high level)
Create a WhatsApp template in KwikEngage
Create a Klaviyo Automation inside KwikEngage to get the Webhook URL + JSON payload
Build a Klaviyo flow with your trigger (e.g., Added to Cart)
Add a 15-minute delay
Add a Webhook step pointing to KwikEngage
Paste & map the JSON (replace placeholders with Klaviyo variables)
Test, validate, and launch
Prerequisites
Admin access to Klaviyo and KwikEngage
WhatsApp channel enabled in KwikEngage
A pre-approved WhatsApp template (or create one in Step 1)
Profiles have valid WhatsApp consent + E.164 phone numbers
Step-by-Step
1) Check the WhatsApp Template (KwikEngage)
Go to KwikEngage → Template Builder → WhatsApp.
Create/open your template (e.g.,
abcart_k_2sept
).Check the placeholders for: first name, product name, image URL, destination URL.
2) Create a Klaviyo Automation inside KwikEngage (to get URL + JSON)
Go to KwikEngage → Flows → Klaviyo Automations → Create Flow.
Name:
KwikEngage | Klaviyo | ABCart
(or your naming convention).Automation (metric): pick the conversion event you’ll wire later (Order Created).
Automation Type:
marketing
.Template: select the WhatsApp template from Step 1.
3) Build the Flow in Klaviyo
In Klaviyo → Flows → Create flow → Create manually.
Name:
KwikEngage | Klaviyo | ABCart
.Trigger: select your event.
Profile filter to exclude recent purchasers/checkout started.
4) Add a Time Delay (Klaviyo)
Drag Time delay under the trigger.
Set to 15 minutes (Minutes, not Days/Hours).
This avoids instant messages and gives users a chance to complete checkout.
5) Add the Webhook Step (Klaviyo)
Drag Webhook under the delay.
Destination URL
Go to the Klaviyo settings page and click 'Get Webhook link'
Copy the generated Webhook URL.
Go to Flows -> Klaviyo Automations
Click the {} button on the automation you are creating for
Click Copy Template Payload to grab the JSON (contains template + components + meta)
JSON body: paste the JSON payload copied in Step 2 and click Expand to edit.
6) Map Placeholders to Klaviyo Variables
Use Profile props for identity; Event props for context.
Common mappings (examples—match to your schema):
Header image URL →
{{ event.ImageURL }}
Body variable 1 (first name) →
{{ person.first_name|default:'' }}
Body variable 2 (product name) →
{{ event.ProductName }}
Recipient “to” →
{{ person.phone_number }}
(must be E.164)meta_data.destination_urls[0] →
{{ event.URL|default:'' }}
(product or cart URL)
Tips
Use View profile & event properties in the Webhook panel to open Preview Profile Info and confirm exact field names present on your trigger.
Add
|default:''
to avoid nulls breaking JSON.Keep field names in your JSON aligned with your KwikEngage template variables.
7) Test & Launch
Use a test profile with valid phone + WhatsApp consent.
Trigger the chosen event (e.g., add item to cart).
Wait 15+ minutes (delay).
In Klaviyo, check the Webhook step status
In KwikEngage, verify the payload arrived and the WhatsApp template sent.
Set the flow Live.
Troubleshooting (quick checks)
Webhook not firing: Flow/step enabled, URL correct, JSON valid,
Content-Type
header present.Missing values: Correct profile vs event tokens; confirm the event actually carries those fields.
No WhatsApp send: Template must be approved/active; phone must be E.164; user must have WhatsApp consent.
Wrong recipients: Recheck trigger and exclusion filters.
Delay wrong: Make sure it’s 15 Minutes (not 15 Days/Hours).
Best Practices
Consistent naming across both tools (flows, automations, templates).
Consent enforcement at segment/flow level.
Start small (test cohort), then scale.
Monitor both ends: Klaviyo Webhook success rate + KwikEngage delivery metrics.
Document mappings (a short table) next to your JSON for future edits.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article