Sending WhatsApp Messages via Webhooks (Klaviyo → KwikEngage)

Modified on Sun, 7 Sep at 2:24 AM

What you’ll do (high level)

  1. Create a WhatsApp template in KwikEngage

  2. Create a Klaviyo Automation inside KwikEngage to get the Webhook URL + JSON payload

  3. Build a Klaviyo flow with your trigger (e.g., Added to Cart)

  4. Add a 15-minute delay

  5. Add a Webhook step pointing to KwikEngage

  6. Paste & map the JSON (replace placeholders with Klaviyo variables)

  7. 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)

  1. Go to KwikEngage → Template Builder → WhatsApp.

  2. Create/open your template (e.g., abcart_k_2sept).

  3. Check the placeholders for: first name, product name, image URL, destination URL.


2) Create a Klaviyo Automation inside KwikEngage (to get URL + JSON)

  1. Go to KwikEngage → Flows → Klaviyo Automations → Create Flow.

  2. Name: KwikEngage | Klaviyo | ABCart (or your naming convention).

  3. Automation (metric): pick the conversion event you’ll wire later (Order Created).

  4. Automation Type: marketing.

  5. Template: select the WhatsApp template from Step 1.


3) Build the Flow in Klaviyo

  1. In Klaviyo → Flows → Create flow → Create manually.

  2. Name: KwikEngage | Klaviyo | ABCart.

  3. Trigger: select your event.

  4. Profile filter to exclude recent purchasers/checkout started.


4) Add a Time Delay (Klaviyo)

  1. Drag Time delay under the trigger.

  2. 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)

  1. Drag Webhook under the delay.

  2. 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)

  3. 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

  1. Use a test profile with valid phone + WhatsApp consent.

  2. Trigger the chosen event (e.g., add item to cart).

  3. Wait 15+ minutes (delay).

  4. In Klaviyo, check the Webhook step status

  5. In KwikEngage, verify the payload arrived and the WhatsApp template sent.

  6. 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

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article