# Sesami Flows and Klaviyo

Integrate Sesami with Klaviyo to power advanced email and SMS marketing for your booking business.

## What is Klaviyo?

Klaviyo is a marketing automation platform used primarily for email marketing and SMS marketing. As strategic partners with Sesami, Klaviyo provides powerful customer communication tools for appointment-based businesses.

## Why integrate Sesami with Klaviyo?

You can streamline all your customer-facing interactions by feeding Sesami event data into Klaviyo and triggering all communications (Email or SMS) via Klaviyo. For many businesses already using Klaviyo to send order confirmations, SMS marketing messages, and other communications, sending booking confirmations and appointment reminders also through Klaviyo creates a unified customer experience.

### Common use cases

**Email and SMS flows:**

* Appointment confirmation flow
* Appointment rescheduling flow
* Appointment cancellation flow
* Appointment reminder flow (24 hours prior, or custom timing)
* Appointment completion flow

**Combined integrations:**

* Request customer reviews with review platforms (Okendo, Yotpo, Trustpilot, etc.)
* Invite to or track loyalty programs post-appointment (LoyaltyLion, Swell, etc.)
* Personalize appointment emails (Limespot, Nosto, etc.)

## How it works

Sesami uses **Sesami Flows** to send booking events to Klaviyo in real-time. When an appointment is created, rescheduled, canceled, or completed, Sesami pushes that event data to Klaviyo as a custom metric. You then create Flows in Klaviyo that trigger email or SMS messages based on these metrics.

### The flow of data

1. Customer books an appointment in Sesami
2. Sesami Flow triggers and sends event data to Klaviyo via webhook
3. Klaviyo receives the event as a custom metric (e.g., "Sesami Appointment Created")
4. Klaviyo Flow triggers based on that metric
5. Customer receives email or SMS with appointment details

## Setup instructions

### Step 1: Create a Flow in Sesami

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Settings > Flows**
3. Click **Create a Flow**

### Step 2: Choose a Klaviyo preset

Select from the available Klaviyo Flow presets:

* **Klaviyo event, appointment created**
* **Klaviyo event, appointment rescheduled**
* **Klaviyo event, appointment canceled**
* **Klaviyo event, appointment completed**
* **Klaviyo event, appointment reminder 24 hours prior**

{% hint style="info" %}
You can create as many reminder Flows as needed by duplicating the reminder preset and changing the trigger timing.
{% endhint %}

### Step 3: Review Flow settings

Review the general Flow settings to understand the trigger conditions and webhook configuration.

### Step 4: Get your Klaviyo Private API Key

{% hint style="warning" %}
**Important**: As of June 12, 2024, Sesami Flows use Klaviyo's Private API Key (not the public key). Make sure you create a Private key.
{% endhint %}

1. Log in to your **Klaviyo account**
2. Navigate to **Settings > API Keys**
3. Click **Create Private API Key**
4. Name it "Sesami Integration" and choose **Full Access Key**
5. Copy the generated Private API Key

### Step 5: Add your API key to the Flow

1. In your Sesami Flow settings, find the placeholder `KLAVIYO_PRIVATE_API_KEY`
2. Replace it with your actual Klaviyo Private API Key
3. **Save** the Flow

That's it! Repeat these steps for each Klaviyo event you want to send to Klaviyo.

## Available event properties

When Sesami sends appointment data to Klaviyo, the following properties are included and can be used in your Klaviyo email or SMS templates:

| Property                               | Example Value                     | Description                         |
| -------------------------------------- | --------------------------------- | ----------------------------------- |
| `{{ event.appointment_id }}`           | 62e144124a6d0b9ed42ffb55          | Unique appointment ID               |
| `{{ event.datetime }}`                 | July 29, 2022 at 04:30 PM         | Appointment date and time           |
| `{{ event.order_id }}`                 | 4447608111157                     | Shopify order ID                    |
| `{{ event.quantity }}`                 | 1                                 | Number of bookings                  |
| `{{ event.service_name }}`             | Tattoo Removal                    | Name of the service                 |
| `{{ event.service_description }}`      | Please arrive 15 minutes early    | Service instructions                |
| `{{ event.service_duration }}`         | 30                                | Duration in minutes                 |
| `{{ event.service_price }}`            | 149                               | Service price                       |
| `{{ event.service_location }}`         | 100 Beverly Hills, LA             | Service location                    |
| `{{ event.service_image_url }}`        | <https://cdn.shopify.com/>...     | Service image URL                   |
| `{{ event.team_member }}`              | David                             | Assigned team member name           |
| `{{ event.team_member_description }}`  | David has ten years of experience | Team member bio                     |
| `{{ event.team_member_email }}`        | <david@email.com>                 | Team member email                   |
| `{{ event.team_member_phone }}`        | 0000000000                        | Team member phone                   |
| `{{ event.variant_title }}`            | 30 minutes                        | Product variant title               |
| `{{ event.customer_management_link }}` | <https://r.sesami.co/1234>        | Link for customer to manage booking |
| `{{ event.line_item_properties }}`     | Question/Answer pairs             | Custom form responses               |

## Setting up Flows in Klaviyo

Once Sesami is sending events to Klaviyo, you need to create Flows in Klaviyo to send communications to customers.

### Step 1: Create a Flow in Klaviyo

1. Log in to **Klaviyo**
2. Navigate to **Flows**
3. Click **Create Flow**

### Step 2: Choose a Metric trigger

1. Select **Metric** as your trigger type
2. Search for "Sesami" in the metric dropdown
3. Choose the appropriate metric:
   * **Sesami Appointment Created**
   * **Sesami Appointment Rescheduled**
   * **Sesami Appointment Canceled**
   * **Sesami Appointment Completed**
   * **Sesami Appointment Reminder**

### Step 3: Add an Email or SMS action

1. Click **Add Action**
2. Choose **Email** or **SMS**
3. Design your message template

### Step 4: Use event properties in your template

When editing your email or SMS content, you can access all booking-related properties using the syntax shown in the table above. For example:

* `{{ event.datetime }}` - Shows the appointment date and time
* `{{ event.service_name }}` - Shows the service name
* `{{ event.team_member }}` - Shows the assigned team member
* `{{ event.customer_management_link }}` - Provides a link for customers to reschedule or cancel

### Step 5: Make your Flow live

Once you've designed your message and tested it, set your Flow to **Live** to start sending automated messages.

{% hint style="info" %}
**Mark your Klaviyo Flows as transactional.** Booking confirmations, reminders, reschedule/cancel notices, and similar appointment communications are transactional — not marketing. Marking them as transactional in Klaviyo ensures they're sent to all customers regardless of marketing consent, and keeps your marketing deliverability clean.

In Klaviyo, open the Flow's message action, go to **Additional options**, and toggle **Smart Sending** off and set the message type to **Transactional**.
{% endhint %}

## Testing your integration

Before going live, test the integration:

1. Create a test booking in Sesami
2. Check that the event appears in Klaviyo's **Activity Feed** or **Metrics**
3. Verify that all appointment properties are populating correctly
4. Test your Klaviyo Flow to ensure emails/SMS are sent properly
5. Review the content to ensure all dynamic properties display correctly

{% hint style="success" %}
**Pro tip**: Create a test customer email address and make test bookings to verify the complete customer experience before enabling Flows for live customers.
{% endhint %}

## FAQ

<details>

<summary>What if I need to set more than one reminder flow?</summary>

You can build as many reminder flows as you want by creating new Flows using the Klaviyo reminder preset and changing the trigger timing in the Flow configuration. For example, you could send reminders at:

* 7 days before appointment
* 24 hours before appointment
* 2 hours before appointment

</details>

<details>

<summary>Can I use Klaviyo for SMS as well as email?</summary>

Yes! Klaviyo supports both email and SMS. As long as you have SMS enabled in your Klaviyo account and have collected customer phone numbers with consent, you can use SMS actions in your Klaviyo Flows.

</details>

<details>

<summary>What happened to the public API key requirement?</summary>

As of June 12, 2024, Sesami updated all Flow presets to use Klaviyo's Private API Key instead of the public key, matching Klaviyo's updated API requirements. Always use a Private key when setting up new integrations.

</details>

<details>

<summary>Events aren't showing up in Klaviyo. What should I check?</summary>

* Verify your Klaviyo Private API Key is correct and has Full Access
* Ensure the Flow is enabled in Sesami
* Check that you've made a test booking after setting up the Flow
* Review Sesami Flow logs to see if the webhook was sent successfully
* Check Klaviyo's Activity Feed to see if events are being received

</details>

## Related

* [Sesami Flows](/automations/sesami-flows.md) - Overview of Sesami's automation system
* [Email and Webhook Actions](/automations/email-and-webhook-as-action-types.md) - Understanding action types
* [Klaviyo Integration Overview](/apps-integrations/klaviyo.md) - General Klaviyo patterns
* [Notification Emails](/notifications/notification-emails.md) - Default Sesami notification system


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.sesami.co/automations/sesami-flows-and-klaviyo.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
