Integrations & API
0/4 steps complete
Prerequisites
Klaviyo flows can start on metrics — not only native Shopify or form events. When you POST an event to the Events API, you create (or reuse) a metric by name and attach it to a profile. That metric can power a flow, split tests, and reporting like any other event. Common uses: back-office milestones (e.g. warranty registered), offline or partner actions, or anything Zapier can catch from another system — then pass those fields into Klaviyo as properties on the same event.
metric.attributes.name is the human-readable metric name you will see in Klaviyo when building a flow (use a stable label such as EVENT NAME in the example below). profile.attributes.email (or phone with the right profile shape) ties the event to a person; Klaviyo merges on identifier. properties is a JSON object for anything else you want in the event — Zapier can map prior steps into key/value pairs here (order IDs, amounts, SKUs, pipeline stage, etc.). Start with {} and add fields as you need them.
In Klaviyo, open your account menu → Settings → API keys. Create a new private API key (not the public site key). Name it something you will recognize. Enable the scopes this integration needs — for the Events endpoint, include access to create events and read/write profiles as required by your account’s key model. Copy the key when it is shown; you typically cannot view the full secret again afterward. Store it only in secure places (password manager, server env vars) — never in frontend code or public repos. You will paste it into the curl command in the next step where it says YOUR_PRIVATE_API_KEY.
Replace YOUR_PRIVATE_API_KEY with your private key and person@yourdomain.com with the recipient. Replace EVENT NAME with the metric label you want to appear in Klaviyo. Authorization must use the prefix Klaviyo-API-Key . The revision header pins the API version — check Klaviyo’s docs if a newer revision is required. After a successful response, the metric appears under Metrics and can be selected as a flow trigger.
Pro Tip: If you get 401, confirm the key is private (not public) and not expired. If the profile doesn’t exist yet, Klaviyo typically still creates or updates the profile from the payload.
Use Zapier’s Webhooks by Zapier action (Custom Request): method POST, URL https://a.klaviyo.com/api/events, and the same headers as in the curl example. Build the JSON body from earlier Zap steps — map dynamic fields into properties and set the profile email from your trigger (e.g. CRM, spreadsheet, support tool). That way any Zap “flow” becomes a Klaviyo-visible event without a custom app. Other tools (Make, n8n, your own server) follow the same POST contract.
In Klaviyo: Flows → Create flow → trigger by metric → choose the metric name you used in the payload. Add filters on event properties if you only want certain property values to enter the flow. Send a test event from curl or Zapier, then verify the profile entered the flow in the flow’s activity view.
Want us to handle this for you?
Our team implements these playbooks daily across hundreds of brands.
Book Implementation Call →