How to integrate Klaviyo MCP with Google ADK

This guide walks you through connecting Klaviyo to Google ADK using the Composio tool router. By the end, you'll have a working Klaviyo agent that can add new subscribers to main email list, clone last week's campaign for reuse, estimate recipients for upcoming product launch through natural language commands. This guide will help you understand how to give your Google ADK agent real control over a Klaviyo account through Composio's Klaviyo MCP server. Before we dive in, let's take a quick look at the key ideas and tools involved.

Klaviyo logoKlaviyo
Api KeyOauth2

Klaviyo is a data-driven email and SMS marketing platform for e-commerce brands. It helps deliver targeted messages, track conversions, and build scalable customer relationships.

225 Tools

Introduction

This guide walks you through connecting Klaviyo to Google ADK using the Composio tool router. By the end, you'll have a working Klaviyo agent that can add new subscribers to main email list, clone last week's campaign for reuse, estimate recipients for upcoming product launch through natural language commands.

This guide will help you understand how to give your Google ADK agent real control over a Klaviyo account through Composio's Klaviyo MCP server.

Before we dive in, let's take a quick look at the key ideas and tools involved.

Also integrate Klaviyo with

TL;DR

Here's what you'll learn:
  • Get a Klaviyo account set up and connected to Composio
  • Install the Google ADK and Composio packages
  • Create a Composio Tool Router session for Klaviyo
  • Build an agent that connects to Klaviyo through MCP
  • Interact with Klaviyo using natural language

What is Google ADK?

Google ADK (Agents Development Kit) is Google's framework for building AI agents powered by Gemini models. It provides tools for creating agents that can use external services through the Model Context Protocol.

Key features include:

  • Gemini Integration: Native support for Google's Gemini models
  • MCP Toolset: Built-in support for Model Context Protocol tools
  • Streamable HTTP: Connect to external services through streamable HTTP
  • CLI and Web UI: Run agents via command line or web interface

What is the Klaviyo MCP server, and what's possible with it?

The Klaviyo MCP server is an implementation of the Model Context Protocol that connects your AI agent and assistants like Claude, Cursor, etc directly to your Klaviyo account. It provides structured and secure access to your marketing campaigns, contact lists, and automation features, so your agent can perform actions like creating campaigns, managing subscribers, sending messages, and analyzing engagement—all on your behalf.

  • Automated campaign creation and sending: Instantly have your agent create new marketing campaigns, clone existing ones, and trigger campaign sends to targeted audiences.
  • Subscriber and list management: Add or update profiles in specific Klaviyo lists, subscribe contacts to marketing lists, and ensure your audience is always up to date.
  • Event and engagement tracking: Automatically record customer activities or bulk-create profile events to power segmentation and analytics.
  • Catalog and back-in-stock automation: Let your agent create product catalog categories, manage restock alerts, and help drive timely customer notifications about inventory.
  • Campaign recipient estimation and analytics: Start background jobs to estimate campaign reach and analyze how many recipients meet your targeting criteria before a send.

What is the Composio tool router, and how does it fit here?

What is Composio SDK?

Composio's Composio SDK helps agents find the right tools for a task at runtime. You can plug in multiple toolkits (like Gmail, HubSpot, and GitHub), and the agent will identify the relevant app and action to complete multi-step workflows. This can reduce token usage and improve the reliability of tool calls. Read more here: Getting started with Composio SDK

The tool router generates a secure MCP URL that your agents can access to perform actions.

How the Composio SDK works

The Composio SDK follows a three-phase workflow:

  1. Discovery: Searches for tools matching your task and returns relevant toolkits with their details.
  2. Authentication: Checks for active connections. If missing, creates an auth config and returns a connection URL via Auth Link.
  3. Execution: Executes the action using the authenticated connection.

Step-by-step Guide

Step by step09 STEPS
1

Prerequisites

Before starting, make sure you have:
  • A Google API key for Gemini models
  • A Composio account and API key
  • Python 3.9 or later installed
  • Basic familiarity with Python
2

Getting API Keys for Google and Composio

Google API Key
  • Go to Google AI Studio and create an API key.
  • Copy the key and keep it safe. You will put this in GOOGLE_API_KEY.
Composio API Key and User ID
  • Log in to the Composio dashboard.
  • Go to Settings → API Keys and copy your Composio API key. Use this for COMPOSIO_API_KEY.
  • Decide on a stable user identifier to scope sessions, often your email or a user ID. Use this for COMPOSIO_USER_ID.
3

Install dependencies

bash
pip install google-adk composio python-dotenv

Inside your virtual environment, install the required packages.

What's happening:

  • google-adk is Google's Agents Development Kit
  • composio connects your agent to Klaviyo via MCP
  • python-dotenv loads environment variables
4

Set up ADK project

bash
adk create my_agent

Set up a new Google ADK project.

What's happening:

  • This creates an agent folder with a root agent file and .env file
5

Set environment variables

bash
GOOGLE_API_KEY=your-google-api-key
COMPOSIO_API_KEY=your-composio-api-key
COMPOSIO_USER_ID=your-user-id-or-email

Save all your credentials in the .env file.

What's happening:

  • GOOGLE_API_KEY authenticates with Google's Gemini models
  • COMPOSIO_API_KEY authenticates with Composio
  • COMPOSIO_USER_ID identifies the user for session management
6

Import modules and validate environment

python
import os
import warnings

from composio import Composio
from dotenv import load_dotenv
from google.adk.agents.llm_agent import Agent
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset

load_dotenv()

warnings.filterwarnings("ignore", message=".*BaseAuthenticatedTool.*")

GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not GOOGLE_API_KEY:
    raise ValueError("GOOGLE_API_KEY is not set in the environment.")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set in the environment.")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set in the environment.")
What's happening:
  • os reads environment variables
  • Composio is the main Composio SDK client
  • GoogleProvider declares that you are using Google ADK as the agent runtime
  • Agent is the Google ADK LLM agent class
  • McpToolset lets the ADK agent call MCP tools over HTTP
7

Create Composio client and Tool Router session

python
composio_client = Composio(api_key=COMPOSIO_API_KEY)

composio_session = composio_client.create(
    user_id=COMPOSIO_USER_ID,
    toolkits=["klaviyo"],
)

COMPOSIO_MCP_URL = composio_session.mcp.url,
print(f"Composio MCP URL: {COMPOSIO_MCP_URL}")
What's happening:
  • Authenticates to Composio with your API key
  • Declares Google ADK as the provider
  • Spins up a short-lived MCP endpoint for your user and selected toolkit
  • Stores the MCP HTTP URL for the ADK MCP integration
8

Set up the McpToolset and create the Agent

python
composio_toolset = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url=COMPOSIO_MCP_URL,
        headers={"x-api-key": COMPOSIO_API_KEY}
    )
)

root_agent = Agent(
    model="gemini-2.5-flash",
    name="composio_agent",
    description="An agent that uses Composio tools to perform actions.",
    instruction=(
        "You are a helpful assistant connected to Composio. "
        "You have the following tools available: "
        "COMPOSIO_SEARCH_TOOLS, COMPOSIO_MULTI_EXECUTE_TOOL, "
        "COMPOSIO_MANAGE_CONNECTIONS, COMPOSIO_REMOTE_BASH_TOOL, COMPOSIO_REMOTE_WORKBENCH. "
        "Use these tools to help users with Klaviyo operations."
    ),
    tools=[composio_toolset],
)

print("\nAgent setup complete. You can now run this agent directly ;)")
What's happening:
  • Connects the ADK agent to the Composio MCP endpoint through McpToolset
  • Uses Gemini as the model powering the agent
  • Lists exact tool names in instruction to reduce misnamed tool calls
9

Run the agent

bash
# Run in CLI mode
adk run my_agent

# Or run in web UI mode
adk web

Execute the agent from the project root. The web command opens a web portal where you can chat with the agent.

What's happening:

  • adk run runs the agent in CLI mode
  • adk web . opens a web UI for interactive testing

Complete Code

Here's the complete code to get you started with Klaviyo and Google ADK:

python
import os
import warnings

from composio import Composio
from composio_google import GoogleProvider
from dotenv import load_dotenv
from google.adk.agents.llm_agent import Agent
from google.adk.tools.mcp_tool.mcp_session_manager import StreamableHTTPConnectionParams
from google.adk.tools.mcp_tool.mcp_toolset import McpToolset

load_dotenv()
warnings.filterwarnings("ignore", message=".*BaseAuthenticatedTool.*")

GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
COMPOSIO_API_KEY = os.getenv("COMPOSIO_API_KEY")
COMPOSIO_USER_ID = os.getenv("COMPOSIO_USER_ID")

if not GOOGLE_API_KEY:
    raise ValueError("GOOGLE_API_KEY is not set in the environment.")
if not COMPOSIO_API_KEY:
    raise ValueError("COMPOSIO_API_KEY is not set in the environment.")
if not COMPOSIO_USER_ID:
    raise ValueError("COMPOSIO_USER_ID is not set in the environment.")

composio_client = Composio(api_key=COMPOSIO_API_KEY, provider=GoogleProvider())

composio_session = composio_client.create(
    user_id=COMPOSIO_USER_ID,
    toolkits=["klaviyo"],
)

COMPOSIO_MCP_URL = composio_session.mcp.url


composio_toolset = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url=COMPOSIO_MCP_URL,
        headers={"x-api-key": COMPOSIO_API_KEY}
    )
)

root_agent = Agent(
    model="gemini-2.5-flash",
    name="composio_agent",
    description="An agent that uses Composio tools to perform actions.",
    instruction=(
        "You are a helpful assistant connected to Composio. "
        "You have the following tools available: "
        "COMPOSIO_SEARCH_TOOLS, COMPOSIO_MULTI_EXECUTE_TOOL, "
        "COMPOSIO_MANAGE_CONNECTIONS, COMPOSIO_REMOTE_BASH_TOOL, COMPOSIO_REMOTE_WORKBENCH. "
        "Use these tools to help users with Klaviyo operations."
    ),  
    tools=[composio_toolset],
)

print("\nAgent setup complete. You can now run this agent directly ;)")

Conclusion

You've successfully integrated Klaviyo with the Google ADK through Composio's MCP Tool Router. Your agent can now interact with Klaviyo using natural language commands.

Key takeaways:

  • The Tool Router approach dynamically routes requests to the appropriate Klaviyo tools
  • Environment variables keep your credentials secure and separate from code
  • Clear agent instructions reduce tool calling errors
  • The ADK web UI provides an interactive interface for testing and development

You can extend this setup by adding more toolkits to the toolkits array in your session configuration.

TOOLS

Supported Tools

Every Klaviyo action and event your agent gets out of the box.

Add Profile to List

Add profiles to a Klaviyo list by profile IDs or email addresses.

Assign campaign message template

Creates a non-reusable version of the template and assigns it to the message.

Bulk create client events

Use the client-side endpoint with a public API key to track profile activity.

Bulk create events

Bulk create events for multiple profiles in a single request.

Cancel Campaign Send

Cancel or revert a campaign send job.

Create back in stock subscription

Use the server-side endpoint to subscribe to restock alerts, following the Back in Stock API guide.

Create campaign

Creates a campaign given a set of parameters, then returns it.

Create campaign clone

Clones an existing campaign, returning a new campaign based on the original with a new ID and name.

Create Campaign Recipient Estimation Job

Start an asynchronous task to estimate the number of recipients for a campaign.

Create campaign send job

Trigger a campaign to send asynchronously*Rate limits*:Burst: `10/s`Steady: `150/m` **Scopes:** `campaigns:write`

Create catalog category

Create a new catalog category.

Create catalog category relationships items

Create a new item relationship for the given category ID.

Create catalog item

Create a new catalog item.

Create catalog item relationships categories

Create a new catalog category relationship for the given item ID.

Create catalog variant

Create a new variant for a related catalog item.

Create client back in stock subscription

Use the endpoint for client-side back in stock notifications with a public API key.

Create Client Event V2

Create a client-side event in Klaviyo to track user interactions.

Create client subscription

Endpoint manages email/SMS opt-ins using consent and requires public API key for client use.

Create coupon

Creates a new coupon.

Create coupon code

Synchronously creates a coupon code for the given coupon.

Create event

Create or update a profile event with minimum identifiers and metric name.

Create list

Create a new list.

Create or update client profile

Update user profiles without tracking using a public client-side API; use a private server-side API for identifier changes.

Create or update client push token

This endpoint for mobile SDKs (iOS & Android) creates/updates push tokens using a public API key.

Create or Update Profile

Create or update a profile in Klaviyo with the given attributes.

Create or update push token

Create or update a push token for mobile push notifications.

Create profile

Create a new profile.

Create segment

Create a segment.

Create tag

Summary: Instructions on creating a tag within an account's designated tag group with a maximum of 500 tags, with optional tag group specification.

Create tag group

Create tag groups up to 50 per account, defaulting to non-exclusive unless specified.

Create Tag Relationships

Associate a tag with other resources (flows, lists, segments, or campaigns) in Klaviyo.

Create template

Summary: Custom HTML templates can be created unless an account reaches 1,000 template limit.

Create template clone

Clone a template by its ID, but cloning fails if account has 1,000+ templates.

Create template render

Render an email template with specific context and sparse fieldsets, then get HTML/plain text.

Create webhook

Create a new Webhook to receive real-time notifications when specific events occur in Klaviyo (e.

Delete campaign

Delete a campaign with the given campaign ID.

Delete catalog category

Delete a catalog category using the given category ID.

Delete catalog category relationships items

Delete item relationships for the given category ID.

Delete catalog item

Delete a catalog item with the given item ID.

Delete catalog item relationships categories

Delete catalog category relationships for the given item ID.

Delete catalog variant

Delete a catalog item variant with the given variant ID.

Delete coupon

Delete the coupon with the given coupon ID.

Delete coupon code

Deletes a coupon code specified by the given identifier synchronously.

Delete flow

Delete a flow with the given flow ID.

Delete list

Delete a list with the given list ID.

Delete segment

Delete a segment with the given segment ID.

Delete tag

Delete the tag with the given tag ID.

Delete tag group

Delete a specified tag group and its contents; associated resource links will be removed.

Delete Tag Relationships

Remove a tag's association with other resources like flows, campaigns, lists, or segments.

Delete template

Permanently delete a template from your Klaviyo account using its unique template ID.

Delete webhook

Permanently delete a webhook subscription from your Klaviyo account.

Get account

Retrieve a single account object by its account ID.

Get accounts

Use a private API key to fetch an associated account's details like contact info, timezone, and currency, as well as validate the key.

Get Bulk Create Coupon Codes Job

Tool to get a coupon code bulk create job with the given job ID.

Get Bulk Delete Catalog Items Job

Get a catalog item bulk delete job with the given job ID.

Get bulk profile import job

Get a bulk profile import job with the given job ID.

Get bulk profile import job errors

Get import errors for the bulk profile import job with the given ID.

Get bulk profile import job lists

Get list for the bulk profile import job with the given ID.

Get bulk profile import job profiles

Get profiles for the bulk profile import job with the given ID.

Get bulk profile import job relationships lists

Get list relationship for the bulk profile import job with the given ID.

Get bulk profile import job relationships profiles

Get profile relationships for the bulk profile import job with the given ID.

Get bulk profile import jobs

Get all bulk profile import jobs.

Get bulk update catalog items job

Get a catalog item bulk update job with the given job ID.

Get Bulk Update Categories Job

Retrieve a catalog category bulk update job by its ID from Klaviyo.

Get Bulk Update Variants Job

Tool to retrieve a catalog variant bulk update job by its ID.

Get Campaign

Retrieve a specific campaign by its ID from Klaviyo.

Get campaign campaign messages

Return all messages that belong to the given campaign.

Get campaign message

Returns a specific message based on a required id.

Get campaign message campaign

Return the related campaign*Rate limits*:Burst: `10/s`Steady: `150/m` **Scopes:** `campaigns:read`

Get campaign message relationships campaign

Returns the ID of the related campaign*Rate limits*:Burst: `10/s`Steady: `150/m` **Scopes:** `campaigns:read`

Get campaign message relationships template

Returns the ID of the related template*Rate limits*:Burst: `10/s`Steady: `150/m` **Scopes:** `campaigns:read` `templates:read`

Get campaign message template

Return the related template*Rate limits*:Burst: `10/s`Steady: `150/m` **Scopes:** `campaigns:read` `templates:read`

Get campaign recipient estimation

Get estimated recipients for a given campaign ID using `Create Campaign Recipient Estimation Job`.

Get campaign recipient estimation job

Retrieve the status of a recipient estimation job triggered with the `Create Campaign Recipient Estimation Job` endpoint.

Get campaign relationships campaign messages

Returns the IDs of all messages associated with the given campaign.

Get campaign relationships tags

Returns the IDs of all tags associated with the given campaign.

Get Campaigns

Retrieve campaigns from your Klaviyo account.

Get campaign send job

Get a campaign send job*Rate limits*:Burst: `10/s`Steady: `150/m` **Scopes:** `campaigns:read`

Get campaign tags

Return all tags that belong to the given campaign.

Get catalog categories

Retrieve up to 100 account catalog categories, sortable by creation date.

Get catalog category

Get a catalog category with the given category ID.

Get catalog category items

Retrieve up to 100 sorted items per request from a category using the category ID.

Get catalog category relationships items

Get all items in the given category ID.

Get catalog item

Get a specific catalog item with the given item ID.

Get catalog item categories

Retrieve the catalog categories for an item by ID, sorted by 'created' date, with a 100-category maximum per request.

Get catalog item relationships categories

Get all catalog categories that a particular item is in.

Get catalog items

Retrieve up to 100 sorted catalog items per account, with `$custom` integration and `$default` type.

Get catalog item variants

Retrieve up to 100 variants per request for a specific item ID, sortable by creation date.

Get catalog variant

Get a catalog item variant with the given variant ID.

Get catalog variants

Retrieve up to 100 account variants per request, sortable by creation date.

Get coupon

Get a specific coupon with the given coupon ID.

Get coupon code

Returns a Coupon Code specified by the given identifier.

Get coupon code bulk create job

Get a coupon code bulk create job with the given job ID.

Get coupon code bulk create jobs

Get all coupon code bulk create jobs.

Get coupon code relationships coupon

Gets a list of coupon code relationships associated with the given coupon id*Rate limits*:Burst: `75/s`Steady: `700/m` **Scopes:** `coupon-codes:read`

Get coupon codes

Obtains coupon codes using necessary coupon or profile filters.

Get coupon codes for coupon

Gets a list of coupon codes associated with the given coupon id*Rate limits*:Burst: `75/s`Steady: `700/m` **Scopes:** `coupon-codes:read`

Get coupon for coupon code

Get the coupon associated with a given coupon code ID.

Get Coupon ID for Coupon Code

Tool to get the coupon relationship associated with a given coupon code ID.

Get Coupon Relationships Coupon Codes

Retrieves the coupon code relationships (resource identifiers) for a given coupon.

Get coupons

Get all coupons in an account.

Get create categories job

Get a catalog category bulk create job with the given job ID.

Get create categories jobs

Get all catalog category bulk create jobs.

Get create items job

Get a catalog item bulk create job with the given job ID.

Get create items jobs

Get all catalog item bulk create jobs.

Get create variants job

Get a catalog variant bulk create job with the given job ID.

Get create variants jobs

Get all catalog variant bulk create jobs.

Get delete categories job

Get a catalog category bulk delete job with the given job ID.

Get delete categories jobs

Get all catalog category bulk delete jobs.

Get delete items jobs

Get all catalog item bulk delete jobs.

Get delete variants job

Get a catalog variant bulk delete job with the given job ID.

Get delete variants jobs

Get all catalog variant bulk delete jobs.

Get event

Get an event with the given event ID.

Get event metric

Get the metric for an event with the given event ID.

Get event profile

Get the profile associated with an event with the given event ID.

Get Event Relationships

Get metrics or profile relationships for a specific event.

Get events

Get all events in an account Requests can be sorted by the following fields: `datetime`, `timestamp` Returns a maximum of 200 events per page.

Get flow

Get a flow with the given flow ID.

Get flow action

Get a flow action from a flow with the given flow action ID.

Get flow action for message

Get the flow action for a flow message with the given message ID.

Get flow action messages

Retrieve up to 50 flow messages per request by action ID, sortable by various fields, with ascending/descending options, and paginated using `page[size]` and `page[number]`.

Get Parent Flow for Flow Action

Get the parent flow associated with a given flow action ID.

Get flow action relationships messages

Retrieves up to 50 flow message relationships per request for a specified flow action ID, with cursor pagination.

Get flow flow actions

Get all flow actions associated with the given flow ID.

Get flow for flow action

Get the flow associated with the given action ID.

Get flow message

Get the flow message of a flow with the given message ID.

Get flow message relationships action

Get the flow action relationship for a specific flow message.

Get flow message relationships template

Returns the ID of the related template*Rate limits*:Burst: `3/s`Steady: `60/m` **Scopes:** `templates:read`

Get flow message template

Return the related template*Rate limits*:Burst: `3/s`Steady: `60/m` **Scopes:** `templates:read`

Get flow relationships flow actions

Retrieve all flow action relationships for a specific flow ID, sortable by `id`, `status`, `created`, `updated`.

Get flow relationships tags

Return the tag IDs of all tags associated with the given flow.

Get flows

Get all flows in an account.

Get flow tags

Return all tags associated with the given flow ID.

Get form

Get the form with the given ID.

Get form for form version

Get the form associated with the given form version.

Get form id for form version

Get the ID of the form associated with the given form version.

Get forms

Get all forms in an account.

Get form version

Retrieve detailed information about a specific form version by its ID.

Get image

Get the image with the given image ID.

Get images

Get all images in an account.

Get list

API allows 75 req/sec and 700 req/min, but with 'profile_count' param, it's 1 req/sec and 15 req/min.

Get list profiles

Retrieve profiles in a list by ID, filterable by email/phone/push token/join date, sortable by join date.

Get List Relationships

Get profile membership relationships for a Klaviyo list.

Get list relationships tags

Returns the tag IDs of all tags associated with the given list.

Get Lists

Retrieve marketing lists from your Klaviyo account.

Get list tags

Return all tags associated with the given list ID.

Get metric

Get a metric with the given metric ID.

Get metrics

Get all metrics in an account.

Get profile

Get the profile with the given profile ID.

Get profile lists

Get list memberships for a profile with the given profile ID.

Get Profile Relationships

Tool to get list membership or segment membership relationships for a profile with the given profile ID.

Get Profiles

Retrieve profiles from your Klaviyo account.

Get profile segments

Get segment memberships for a profile with the given profile ID.

Get segment

Fetch a segment by ID with default rates of 75/s and 700/m, or with `additional-fields` at 1/s and 15/m.

Get segment profiles

Retrieve profiles in a segment by ID, filtering by email, phone, token, or join date, and sorting by join date.

Get Segment Relationships

Get all profile membership or tag relationships for a segment.

Get segments

Fetch segments from an account with filters like `name`, `created`, and `updated`.

Get segment tags

Return all tags associated with the given segment ID.

Get tag

Retrieve the tag with the given tag ID.

Get tag group

Retrieve the tag group with the given tag group ID.

Get tag group relationships tags

Returns the tag IDs of all tags inside the given tag group.

Get tag groups

Retrieve up to 25 tag groups per account, sortable/filterable by specific attributes.

Get tag group tags

Return the tags for a given tag group ID.

Get Tag Relationships

Tool to retrieve relationship IDs for a tag.

Get tags

Retrieve up to 50 account tags at once, filterable/sortable by name or id, with cursor pagination.

Get tag tag group

Returns the tag group resource for a given tag ID.

Get template

Get a template with the given template ID.

Get templates

Retrieve account templates with sorting options (`id`, `name`, `created`, `updated`).

Get update categories jobs

Get all catalog category bulk update jobs.

Get update items job

Get a catalog item bulk update job with the given job ID.

Get update items jobs

Get all catalog item bulk update jobs.

Get update variants jobs

Get all catalog variant bulk update jobs.

Get Variant IDs for Catalog Item

Tool to get all variant IDs related to a given catalog item ID.

Get version ids for form

Get the IDs of the form versions for the given form.

Get versions for form

Get the form versions for the given form.

Get webhook

Get the webhook with the given ID.

Get webhooks

Get all webhooks in an account.

Get webhook topic

Retrieve details of a specific webhook topic by its ID.

Get webhook topics

Get all webhook topics in a Klaviyo account.

Merge profiles

Merge one or more source profiles into a destination profile.

Query campaign values

Returns the requested campaign analytics values data*Rate limits*:Burst: `1/s`Steady: `2/m`Daily: `225/d` **Scopes:** `campaigns:read`

Query flow series

Returns time-series analytics data for flows, enabling performance tracking over time intervals.

Query flow values

Returns the requested flow analytics values data*Rate limits*:Burst: `1/s`Steady: `2/m`Daily: `225/d` **Scopes:** `flows:read`

Query metric aggregates

The Klaviyo endpoint fetches metric events, handling JSON requests for custom data queries, sorting, and filtering; offers grouping and time-based filters; requires adherence to rate limits (3 requests per second, 60 per minute) under 'metrics:read'.

Remove Profile from List

Remove profiles from a Klaviyo list by profile IDs or email addresses.

Request profile deletion

To delete a profile, use only one identifier: email, phone number, or ID.

Spawn bulk profile import job

Initiate a job to create/update a batch of profiles, up to 10,000 with a max size of 5MB per request.

Spawn coupon code bulk create job

Create a coupon-code-bulk-create-job to bulk create a list of coupon codes.

Spawn create categories job

Create bulk job for up to 100 catalog categories with a 5MB size limit and a max of 500 concurrent jobs.

Spawn create items job

Create batches of up to 100 catalog items with a 5MB size limit using the bulk job, which allows 500 concurrent jobs.

Spawn create variants job

Initiate a job to bulk create up to 100 catalog variants, with a 5MB payload size limit.

Spawn delete categories job

Delete multiple catalog categories in bulk, with a limit of 100 per request and a 5MB payload size.

Spawn delete items job

Delete batches of catalog items with a bulk job, max 100 items/request, 5MB size limit, and up to 500 concurrent jobs.

Spawn delete variants job

Delete multiple catalog variants with a bulk job, max 100 per request, 5MB size limit.

Spawn update categories job

Create a job to bulk update up to 100 categories, with a 5MB size limit and a maximum of 500 concurrent jobs.

Spawn update items job

You can bulk update up to 100 catalog items with a 5MB payload limit.

Spawn update variants job

Create a job to bulk update up to 100 catalog variants with a 5MB payload limit.

Subscribe profiles

The API supports double opt-in for marketing, with 'historical_import' bypassing consent.

Suppress profiles

Suppress profiles by email, segment, or list ID to stop email marketing, regardless of consent.

Unregister client push token

This endpoint unsubscribes a push token, for use with Klaviyo's mobile SDKs and a public API key.

Unsubscribe profiles

Opt-out profiles from email or SMS marketing.

Unsubscribe Profiles Bulk

Tool to unsubscribe one or more profiles from a Klaviyo list.

Unsuppress profiles

Remove 'USER_SUPPRESSED' blocks on profiles manually via email, segment, or list ID.

Unsuppress Profiles (Bulk)

Tool to unsuppress one or more profiles from email marketing by email address.

Update Campaign

Update a campaign with the specified attributes.

Update campaign message

Update a campaign message*Rate limits*:Burst: `10/s`Steady: `150/m` **Scopes:** `campaigns:write`

Update catalog category

Update a catalog category with the given category ID.

Update Catalog Category Relationships

Tool to update item relationships for a catalog category.

Update catalog category relationships items

Update item relationships for the given category ID.

Update catalog item

Update a catalog item with the given item ID.

Update catalog item relationships categories

Update catalog category relationships for the given item ID.

Update catalog variant

Update a catalog item variant with the given variant ID.

Update coupon

Update an existing coupon's properties.

Update coupon code

Updates a coupon code specified by the given identifier synchronously.

Update flow status

Update the status of a flow with the given flow ID, and all actions in that flow.

Update image

Update the image with the given image ID.

Update list

Update the name of a list with the given list ID.

Update profile

Update profiles with the provided ID.

Update segment

Update a segment with the given segment ID.

Update tag

Update the tag with the given tag ID.

Update tag group

Update the tag group with the given tag group ID.

Update template

Update an existing email template by ID.

Update webhook

Update the webhook with the given ID.

Upload image from file

Upload an image from a file.

Upload image from url

Import an image from a url or data uri.

FAQ

Frequently asked questions

With a standalone Klaviyo MCP server, the agents and LLMs can only access a fixed set of Klaviyo tools tied to that server. However, with the Composio Tool Router, agents can dynamically load tools from Klaviyo and many other apps based on the task at hand, all through a single MCP endpoint.

Yes, you can. Google ADK fully supports MCP integration. You get structured tool calling, message history handling, and model orchestration while Tool Router takes care of discovering and serving the right Klaviyo tools.

Yes, absolutely. You can configure which Klaviyo scopes and actions are allowed when connecting your account to Composio. You can also bring your own OAuth credentials or API configuration so you keep full control over what the agent can do.

All sensitive data such as tokens, keys, and configuration is fully encrypted at rest and in transit. Composio is SOC 2 Type 2 compliant and follows strict security practices so your Klaviyo data and credentials are handled as safely as possible.

Start with Klaviyo.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Klaviyo tool your agent needs.Free to start.

Start building