Solution Recipe 7: Using Zapier with Klaviyo to Automate Tasks and Ingest Data from Third-Party Apps

11min read
Developer recipes
February 15, 2022

Solution Recipes are tutorials to achieve specific objectives in Klaviyo. They can also help you master Klaviyo, learn new third-party technologies, and come up with creative ideas. They are written mainly for developers & technically-advanced users.

  • WHAT YOU’LL LEARN: How to use Zapier to send data from a third-party application without a native integration to Klaviyo without having to write any code.
  • WHY IT MATTERS: If you use an application that integrates with Zapier, but doesn’t have a productized integration with Klaviyo (such as Slack, for example), you might think you are out of luck or that you’ll have to build potentially complicated middleware. Zapier can be used to handle a lot of the complexity around infrastructure, logging, and reliability — meaning all you have to think about is creating a Zap which maps the data and sends it to Klaviyo’s APIs.


If you ever tried to integrate other apps with Klaviyo, you may have seen our many productized integrations. But what if you need to ingest data from apps for which there are no pre-built integrations? This data can be valuable for targeting and personalizing messaging to your contacts from Klaviyo .

Luckily, this is where a Zapier integration can come into play. Zapier integrates with more than 400 apps, allowing you to send data from those apps to Klaviyo. The good news is that you don’t have to be a developer, or know how to code to be able to execute these steps.


Before we deep-dive into the topic, let’s go over a few basics, such as what Zapier does and what a “Zap” is.

  • Zapier: A tool that helps automate tasks between two or more apps with no code necessary. When an event happens in one app, Zapier can listen for it and then tell another app to execute a particular action.
  • Zap: In Zapier, a “Zap” is a configured path that links two or more applications. This follows the pattern of a trigger and an action, such as “if this happens, then do that”. You can think of a Zap as a similar to a flow in Klaviyo, but for third-party apps.


One of the most powerful things about Klaviyo is its flexibility for data ingestion. Any time you try to move data from point A to point B, you have to go through a process of “mapping”. Mapping is a simple concept of making sure that the source data matches the schema required by the destination app.

Klaviyo’s ingestion engine is schema-less, meaning, we don’t require any mapping done beforehand. Our architecture allows customers to decide on the keys that they would like to use inside of Klaviyo on the fly.

For more details, see how the Klaviyo data model is designed below:

You might wonder, when exactly it would be appropriate to use Zapier to push the third party data into Klaviyo? The simple answer is — if you don’t see a direct integration listed in our Partner directory or in our Help Center’s lists of ecommerce integrations and non-ecommerce integrations, you should consider Zapier.

To recap, Zapier is built to provide a flexible UI for transferring data between applications.

It’s also worth noting that outside of prebuilt Zapier connectors, it also provides webhook functionality which can be used in a Zap to facilitate more customized integrations.
For example, there may be an instance where there’s a Zapier integration with some actions and triggers that match existing API functionality, but they do not cover all of the custom fields you might want to access — in that case, you could use a webhook to call that endpoint in a Zap, in addition to any other steps.
There are also apps that don’t yet have Zapier integrations, but are able to send hooks. In this situation, a Zap with a webhook trigger could catch information from that app and use Zapier to push it into Klaviyo.
Most of the time however, pre-built actions and triggers exist in Zapier and they may already have the fields you need.

Luckily Zapier’s Klaviyo integration is quite advanced, providing custom & default fields and events without the need to use Zapier’s webhook functionality.


  • Klaviyo Account
  • Zapier Account
  • Slack Account


Step 1: Zapier account setup and configuration

Before we dive into the explanation on how the ingestion of the data into Klaviyo can be achieved, make sure your Zapier account is set up.

Step 2: Zapier’s Klaviyo integration

We will also be using Zapier’s Klaviyo integration which means we need to add it as a connection in Zapier.

  1. Navigate To “My Apps”
  2. Select “Add Connection
  3. Search for and select “Klaviyo”
  4. Add your account API keys

It may be helpful to familiarize yourself with some of the options this connection provides

Instructions — Slack to Klaviyo

Next, we will push the data into Klaviyo from a platform that Klaviyo doesn’t integrate with directly, but Zapier does, by creating a Zap.

For this example, let’s say you want to bring over the data from Slack. After checking Zapier’s and Klaviyo’s integration directories, we can see that while Klaviyo doesn’t have a native integration with Slack, Zapier does.

What you need to do next is create a Zap in Zapier. As mentioned earlier, a Zap is an automated task executor that connects multiple apps together. Every Zap consists of at least a “Trigger” step and one or more “Action” steps.
The “Trigger” indicates the action that needs to occur in the indicated app for the Zap to activate. An “Action” is what the Zap will execute in the designated app when it is triggered.

Step 1: Create a new Zap

Go to your Zapier account and click “Create Zap”

Step 2: Set up a Slack Trigger

  1. Select Slack as the Trigger
  2. Once you click on Slack being a “Trigger” in Zap, you will see a list of Trigger Events to choose from, such as:
    – New Mention (triggers when a username or a highlight word is mentioned in a public #channel)
    – New Message Posted to Channel (triggers when a new message is posted to a specific #channel of your choice)
    – New Public Message Posted Anywhere (triggers when a new message is posted to any public channel)
    In our case, let’s pick the Slack trigger event “New Message Posted to Channel”, which will trigger when a message goes out in #channel X
  3. Once you pick the trigger event, you will have to choose the Slack account where you want the Zap to be connected to
  4. Then you have to pick a Slack channel that will connect your trigger event. Let’s say it’s a channel named #klaviyo
  5. Once the trigger event setup is complete, Zapier will ask you to test the trigger
  6. Click on Test the Trigger and you should see the confirmation message saying that the Slack Trigger setup is successful

Step 3: Set up a Klaviyo Action

  1. Select Klaviyo as an Action
  2. Now you have to choose an Event that will occur once the Slack trigger goes off
    There are quite a few options you can pick from, such as:
    – Create event
    – Add a subscriber
    – Update subscriber
    – Find Subscriber
    Let’s say we want to “Create event” for a specific metric when the Slack trigger event goes off
  3. Once we pick the Action Event, you will have to choose the Klaviyo account that you want the Slack trigger to be connected to
  4. Next, you can select an existing metric in the account or enter a custom name to create a new metric. In this example, I entered “Posted to Channel”
  5. Then we need to insert the email address of the person who triggered the event, in this case: “ User Profile Email”
  6. Setting an Event ID would be the next step, which is a unique identifier you can define for an event. For our use-case, I picked the event id to be: “User name,User ID,Ts Time”.
  7. Once the above step is completed, we can set value for the event. This is a numeric money value to associate with this event (eg. the dollar value of a purchase). For this example, since there is no revenue associated with this slack message, I just set this to 0.
  8. Finally, click on Continue you should get a success notification saying that your Zap is ready to be turned on:

Once you click “Turn on Zap”, an event will be created in Klaviyo whenever someone posts a new message in the given Slack channel, no coding necessary.

Your setup should now appear as shown below

Instructions — Klaviyo to Slack

To showcase the reverse is possible, let’s create a new Zap where Klaviyo is the Trigger app and Slack is the Action app.

Step 1: Create a new Zap

Go to your Zapier account and click “Create Zap”

Step 2: Set up a Klaviyo Trigger

  1. Select Klaviyo as the Trigger
  2. Click on “New Event” in the trigger event tab
  3. Choose the Klaviyo account you want Slack to be connected to
  4. Select a Trigger metric. I picked “Clicked Email” for our recipe example, as shown below:

5. Test the trigger to make sure the event is valid in Klaviyo. Once you get the confirmation message click on continue to setup the Action Event for Slack.
Here is what the test trigger should look like:

Step 3: Set up a Slack Action

  1. Select Slack as an Action
  2. Choose an Action Event which is performed when the Zap runs.
    In our example, I chose “Send the Private Channel Message”, meaning that once someone clicks an email from Klaviyo, the private channel message will be sent out to the group to follow-up with those recipients
  3. Choose an account you want the private channel message to be sent to
  4. Then you have to choose the channel and message text to send in Slack. In our example, I picked a channel called #klaviyo-slack and the message text is: “person $email: clicked an email
  5. You can also add the additional settings such as what the Bot name should be that appears as a bold username above the message inside the Slack; Bot Icon etc
  6. Finally, click on Test & Continue.
    You should get the confirmation message saying that the test was successful and then you should be able to turn the Zap on

Zapier Webhooks:

On a side note, it’s also possible to use the Zap webhook functionality to do the same that native integrations would do.
Most of the time — if a Zapier integration is built in such a way that the triggers, actions, and fields you see are what you need— you can just use those. There may be a time where there’s a Zapier integration with some actions and triggers that match some of an API’s functionality, but does not cover all of the endpoints you need — in cases like these, you could use a webhook action to call that endpoint in a Zap in addition to any other steps.

Another key usage of webhooks is as a trigger. Klaviyo is integrated with Zapier, but there may be another app that aren’t a Zapier partner, but are able to send out webhooks. In these situations, a Zap with a webhook trigger could catch information from that app, and use Zapier to push it into Klaviyo, even without an integration for the former app.


Now the events in your Klaviyo account can be used as triggers to kick off automated actions in your favorite apps. In the same vein, the events in your favorite apps can be used a triggers to kick off automated actions in Klaviyo.

As mentioned above, if the app has a native integration with Zapier, you can directly push the information to Klaviyo by creating a Zap without additional processing steps required. If the app doesn’t have a native integration with Zapier and Klaviyo, you can still use Zapier’s webhook functionality to ingest the data.

Tasks that used to require custom code or take hours of manual labor porting information between Klaviyo and your apps can now happen automatically through automation with the Zapier platform, streamlining your workflow and letting you prioritize what matters to you most. It helps avoid complexities and heavy time commitment letting you use the data from different apps that would have otherwise been limited to their own silo. Action Events are triggered automatically without any manual interaction, sending the data in real-time when a triggering action takes place.

In other words, using Zapier with Klaviyo to automate tasks and ingest the data from non-native third-party apps is like having your customized coffee order show up (the action) automatically whenever you start to get tired (the trigger).

David Henriquez