---
title: Klaviyo
slug: klaviyo
image: https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/PREVIEW_klaviyo.png
docTags: 
createdAt: 2025-02-03T13:29:06.382Z
---

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/FbGl1mFmbVOao209T_9fH-20251126-124705.png" size="50" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
Klaviyo is a marketing automation platform for email and SMS campaigns, enabling businesses to segment audiences and personalize communications. With Klaviyo modules in Make, you can manage the campaigns, events, metrics, profiles, lists, and segments in your Klaviyo account.
:::
::::

To use the Klaviyo modules, you must have an account. You can create an account at [klaviyo.com](https://www.klaviyo.com/sign-up).

Refer to the [Klaviyo API documentation](https://developers.klaviyo.com/en/reference/api_overview) for a list of available endpoints.

# Connect Klaviyo to Make

To establish the connection in Make:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your Make account, add a Klaviyo module to your scenario, and click **Create a connection**.
:::

:::WorkflowBlockItem
Optional: In the **Connection name** field, enter a name for the connection.
:::

:::WorkflowBlockItem
In the **Additional Scopes** field, enter the scopes for every API call you will make using the **Make an API Call** module.

For details, see the **Set custom scopes** section in the [Klaviyo API Documentation](https://developers.klaviyo.com/en/docs/authenticate_#set-custom-scopes).
:::

:::WorkflowBlockItem
Optional: Switch on ​**Show advanced settings**​ and enter your Klaviyo client credentials. For more information on how to obtain your credentials, refer to the [Klaviyo Developers OAuth page](https://developers.klaviyo.com/en/docs/set_up_oauth).


If requested, use the following Redirect URI when setting up your client credentials: `https://www.make.com/oauth/cb/klaviyo2`
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
If prompted, authenticate your account and confirm access.
:::
::::

You've successfully created the connection and can now use the Klaviyo app in your scenarios. If you want to make changes to your connection in the future, follow the steps [here](https://help.make.com/connect-an-application#tN2pJ).

# Klaviyo modules

After connecting the app, you can perform the following actions:

**Campaigns**

- Watch Campaigns (Deprecated)
- Create a Campaign (Deprecated)
- Update a Campaign (Deprecated)
- Update a Campaign Send Job
- List Campaigns (Deprecated)
- Delete a Campaign
- Clone a Campaign (Deprecated)
- Create a Campaign Send Job

**Events**

- Watch Events
- Create an Event

**Metrics**

- Get a Metric
- Get Metric Aggregates
- List Metrics

**Profiles**

- Create a Profile
- Update a Profile
- Get a Person's Attributes
- Search List Profiles
- List Segment Profiles
- List Profiles

**Lists & Segments**

- Create and Add a Profile to a List
- Add/Subscribe Profiles to a List (Deprecated)
- Get List Details
- Unsubscribe and Remove Profiles from a List

**Other**

- Make an API Call

# Migrate to the new Klaviyo modules

On October 15th, 2026, Make will update the **Klaviyo&#x20;**&#x61;pp with new versions of the following modules to match changes in Klaviyo's API. These modules still work for now and are labeled **Deprecated&#x20;**&#x69;n the Scenario Builder.&#x20;

To migrate, review the breaking changes for each module below. Replace the deprecated modules in your scenario with their new versions, then re-map the fields.

## Add or Subscribe Profiles to a List

| **Change**                                                                                                                        | **What to do**                                                                                                                                        |
| --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| The **Attributes&#x20;**&#x61;nd **Subscriptions&#x20;**&#x63;ollections are now required when subscribing (previously optional). | Fill in both collections in the new module. Scenarios that left them empty need values before they can run.                                           |
| **List ID** is now a required top-level field (previously nested under **Relationships&#x20;**> **List**).                        | Re-map your List ID into the new top-level field.                                                                                                     |
| A new **Historical Import&#x20;**&#x62;oolean is required.                                                                        | Set it to **No** for normal use. Set it to **Yes** only when importing historical consent data. This enables a `consented_at` date field per channel. |
| The action selector is renamed from **Type of Action** to **Action**.                                                             | No action needed. Re-select your action when replacing the module.                                                                                    |

## List Campaigns

| **Change**                                                                                                                                                                                                                                                                              | **What to do**                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Filtering changed from a free-text **Filter&#x20;**&#x66;ield (raw API filter syntax) to structured fields: <br />- **Campaign IDs**<br />- **Name Contains**<br />- **Status&#x20;**(multi-select, 17 options)<br />- **Archived**<br />- **Date filters** (field, operator, value)    | Rebuild your filters using the new structured fields. Raw filter strings can't be pasted in. |
| In the output, `attributes.send_strategy.options_static`, `options_throttled`, and `options_sto` are removed. They're replaced by flat `attributes.send_strategy.datetime` and `attributes.send_strategy.options` (`is_local`). The module now also returns `scheduled_at` by default.  | Re-map anything that used these fields.                                                      |
| The channel field is renamed from `campaignChannel` to `messages_channel`.                                                                                                                                                                                                              | Re-select the channel when replacing the module.                                             |
| Field selection is renamed from "Fields Campaign" (raw API field names) to **Extend Campaign Output** (human-readable labels).                                                                                                                                                          | Re-select the fields you want returned using the new labels.                                 |
| Sort options now use human-readable labels (**Created At**, **Created At&#x20;**(**Descending**)) instead of raw values (`created_at`, `-created_at`).                                                                                                                                  | Re-select your sort order when replacing the module.                                         |

## Watch Campaigns

| **Change**                                                                                                                                                                                                                                                                           | **What to do**                                                                                      |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| The default channel changed from **SMS&#x20;**&#x74;o **Email**.                                                                                                                                                                                                                     | Check the channel setting after replacing the module. If you watched SMS campaigns, select **SMS**. |
| In the output, `attributes.send_strategy.options_static`, `options_throttled`, and `options_sto` are removed. They're replaced by flat `attributes.send_strategy.datetime` and `attributes.send_strategy.options (is_local)`. The module now also returns `scheduled_at by default`. | Re-map anything that used these fields.                                                             |

## Create a Campaign

| **Change**                                                                                                                                                                                                                               | **What to do**                                                                                                                                     |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| A new UTM tracking setting replaces the old tracking-params.                                                                                                                                                                             | Re-configure your tracking parameters using the new UTM tracking setting.                                                                          |
| Campaign message content is now required at creation: `subject`, `from_email`, and` from_label` must be provided.                                                                                                                        | Add the message content fields to your module setup.                                                                                               |
| The **Send Strategy** structure is flattened: `method `> `options_static`, `options_throttled`, `options_sto` becomes `method `> `datetime`, `options.is_local`, `throttle_percentage`, `date`.                                          | Re-map your send strategy values into the new flat fields.                                                                                         |
| The **Smart Send Time** date changed from a date field to a text field (format: `YYYY-MM-DD`).                                                                                                                                           | Pass the date as text in `YYYY-MM-DD `format. Date pills mapped directly may need `formatDate()`.                                                  |
| A new `fields[campaign]` multi-select is available for sparse fieldsets.                                                                                                                                                                 | No action needed. Optionally select fields to limit the returned campaign payload.                                                                 |
| In the output, `attributes.send_strategy.options_static`, `options_throttled`, and `options_sto` are removed, replaced by flat `send_strategy.datetime` and `send_strategy.options.is_local`. `scheduled_at` is now returned by default. | Re-map any `options_static`, `options_throttled`, and `options_sto` mappings to the new flat `send_strategy.datetime` and `send_strategy.options`. |

## Update a Campaign

| **Change**                                                                                                                                                                                                                                                                   | **What to do**                                                                                                                                      |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Audiences&#x20;**&#x6E;ow replace the existing included and excluded audiences on the campaign (previously described as the audiences to include or exclude).                                                                                                              | Map the full audience lists you want on the campaign. Audiences you don't include will be removed.                                                  |
| The **Send Strategy** structure is flattened: <br />`method `> `options_static`, `options_throttled`, and `options_sto`<br /> becomes <br />`method `> `datetime`, `options.is_local`, `throttle_percentage`, `date`<br />.                                                  | Re-map your send strategy values into the new flat fields.                                                                                          |
| The **Smart Send Time&#x20;**&#x64;ate changed from a date field to a text field (format: `YYYY-MM-DD`).                                                                                                                                                                     | Pass the date as text in `YYYY-MM-DD` format.                                                                                                       |
| In the output, `attributes.send_strategy.options_static`, `options_throttled`, and `options_sto` are removed, replaced by flat `attributes.send_strategy.datetime` and `attributes.send_strategy.options (is_local)`. The module now also returns `scheduled_at` by default. | Re-map any `options_static`,  `options_throttled`, and `options_sto` mappings to the new flat `send_strategy.datetime` and `send_strategy.options`. |

## Clone a Campaign

| **Change**                                                                                                                                                                                                                                                                   | **What to do**                                                                                                                                     |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| The **Name&#x20;**&#x66;ield is now renamed **New Name** and is explicitly optional.                                                                                                                                                                                         | Re-map your campaign name into **New Name**. Leave it empty if you want to keep the source campaign's name.                                        |
| In the output, `attributes.send_strategy.options_static`, `options_throttled`, and `options_sto` are removed, replaced by flat `attributes.send_strategy.datetime` and `attributes.send_strategy.options (is_local)`. The module now also returns `scheduled_at` by default. | Re-map any `options_static`, `options_throttled`, and `options_sto` mappings to the new flat `send_strategy.datetime` and `send_strategy.options`. |

# Templates

You can look for Klaviyo templates in [Make's template gallery](https://www.make.com/en/templates), where you'll find thousands of pre-created scenarios.

# Klaviyo resources

- [Klaviyo API Reference](https://developers.klaviyo.com/en/reference/api_overview)
- [Klaviyo Help Center](https://help.klaviyo.com/hc/en-us)
