Klaviyo
Sync customers, orders, and products directly into Klaviyo
Klaviyo Integration for Medusa
A Medusa plugin that integrates Klaviyo's email marketing and customer engagement platform with your Medusa store.
Table of Contents
Features
- Automatically sync customers to Klaviyo when created or updated
- Send order data to Klaviyo on order placement
- Klaviyo-compatible product feed for catalog syncing
Prerequisites
- Medusa server (v2.4.0 or higher)
- Klaviyo account with API credentials
Installation
1yarn add @variablevic/klaviyo-medusa
Then add the plugin to your Copy to clipboardmedusa-config.js file:
123456789const plugins = [// ...{resolve: "@variablevic/klaviyo-medusa",options: {apiKey: process.env.KLAVIYO_API_KEY,},},];
Configuration
Configuration Options
Option Type Description Default Copy to clipboardapiKey Copy to clipboardstring Your Klaviyo API key Copy to clipboardundefined
Environment Variables
1KLAVIYO_API_KEY=your_klaviyo_api_key
Usage
Once installed and configured, the plugin will automatically:
- Sync customer data to Klaviyo when customers are created or updated
- Send order data to Klaviyo when orders are placed
The plugin uses Medusa event subscribers to listen for relevant events and trigger synchronization workflows.
Client-Side Integration
To properly manage marketing consent for Klaviyo in your storefront, you should set consent settings in the customer's metadata. This ensures compliance with privacy regulations by only subscribing customers who have explicitly given consent.
When collecting customer information (during registration, newsletter signup, or checkout), update the customer metadata with Klaviyo consent flags:
1234567891011121314151617181920// Example implementation in your storefrontconst updateCustomerConsent = async (customerId: string,consentSettings: {email_marketing: boolean;sms_marketing?: boolean;transactional_sms?: boolean;}) => {// Call your store API endpoint that updates customer metadataawait fetch("/store/customers/me", {method: "POST",headers: {"Content-Type": "application/json",},credentials: "include",body: JSON.stringify({metadata: {klaviyo: {consent: consentSettings,
The plugin checks for these consent settings when syncing customer data to Klaviyo:
- Copy to clipboard
metadata.klaviyo.consent.email_marketing: Set to Copy to clipboardtrueto opt the customer into email marketing - Copy to clipboard
metadata.klaviyo.consent.sms_marketing: Set to Copy to clipboardtrueto opt the customer into SMS marketing - Any other consent fields specific to your implementation
Product Feed
The plugin provides a Klaviyo-compatible product feed API that allows you to sync your entire product catalog with Klaviyo. This enables product recommendations, abandoned cart emails with product details, and more.
To use the product feed in Klaviyo:
- Access your product feed at: Copy to clipboard
https://your-medusa-url.com/feeds/products/{currencyCode}- Replace Copy to clipboard
{currencyCode}with your store's currency code (e.g., Copy to clipboardusd, Copy to clipboardeur)
- Replace Copy to clipboard
- In your Klaviyo account:
- Go to "Content" → "Products"
- Click "Manage Custome Catalog Sources"
- Click "Add new source"
- Enter your product feed URL
- Configure sync settings according to your needs
The product feed includes essential product data:
- Product ID
- Title
- Description
- Handle/Slug
- Thumbnail and Images
- Pricing information
- Currency
- Product URL
- Categories
Extending the Plugin
You can extend the plugin by:
- Creating custom workflows in your Medusa server that utilize the Klaviyo service
- Adding additional event subscribers to sync more data types
- Enhancing the data structure sent to Klaviyo
Example of using the Klaviyo service in your own code:
123456789101112131415// Access the Klaviyo serviceconst klaviyoService = container.resolve("klaviyoService");// Create an eventawait klaviyoService.createEvent({metric: {name: "Custom Event",},profile: {email: "customer@example.com",},properties: {// Your custom properties},});
Local Development
123456789# Clone the repositorygit clone https://github.com/your-username/klaviyo-medusa.git# Install dependenciescd klaviyo-medusayarn# Start development serveryarn dev
License
MIT


