# Sesami Flows and Omnisend

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

## What is Omnisend?

Omnisend is a marketing automation platform that specializes in email and SMS marketing for e-commerce businesses. It provides a suite of tools and features designed to help e-commerce businesses engage with their customers, increase sales, and improve overall marketing efficiency.

## Why integrate Sesami with Omnisend?

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

### Common use cases

**Email and SMS workflows:**

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

## How it works

Sesami uses **Sesami Flows** to send booking events to Omnisend in real-time. When an appointment is created, rescheduled, canceled, or completed, Sesami pushes that event data to Omnisend via webhook to a custom event you've created. You then create workflows in Omnisend that trigger email or SMS messages based on these custom events.

### The flow of data

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

## Setup instructions

### Part 1: Set up Omnisend

#### Step 1: Install and connect Omnisend

1. Install the **Omnisend app** from the Shopify App Store
2. Follow the app's setup steps to connect your store
3. Complete the Omnisend onboarding process

#### Step 2: Create an API Key (KPI Key)

1. In Omnisend, click on your **profile tab**
2. Navigate to **Store Settings**
3. Click on **API Keys** tab
4. Click **Create Private API Key**
5. Name it "Sesami Integration" (or similar)
6. Configure permissions - select the following:
   * **Campaigns** - allows to download reports, lists of recipients
   * **Contacts** - allows to create, edit, download, delete subscribers
   * **Orders** - allows to create, edit, download, delete orders
   * **Products** - allows to create, edit, download, delete products
   * **Carts** - allows to create, edit, download, delete carts
   * **Events** - allows to get and trigger custom events (**Required**)
7. Copy the generated API key and store it securely

{% hint style="warning" %}
**Important**: You'll need a separate API key for each unique event type (appointment created, rescheduled, canceled, etc.).
{% endhint %}

For more details, review [Omnisend API Documentation](https://api-docs.omnisend.com/).

#### Step 3: Create custom events in Omnisend

For each type of appointment event you want to track, create a custom event:

1. In Omnisend, navigate to **Store Settings > Custom Events**
2. Click **Create custom event**
3. Configure the event:
   * **Event name**: Choose a descriptive name (e.g., "Appointment Created", "Appointment Rescheduled")
   * **System name**: This will be auto-generated based on the event name
   * **Event custom fields**: Define the booking properties you want to use in your emails/SMS:
     * `CustomerName` - Customer's name
     * `ServiceName` - Name of the service booked
     * `DateTimeInCustomerTimezone` - Appointment date/time
     * `CustomerManagementLink` - Link for customer to manage booking
     * `AppointmentID` - Unique appointment identifier
     * `TeamMember` - Assigned staff member name
     * Add other fields as needed
4. Add customer **email** and **phone** fields (required for sending messages)
5. Save the custom event
6. **Copy the Event ID** - you'll need this for the Sesami Flow webhook URL

{% hint style="info" %}
Repeat this process for each event type you want to track (created, rescheduled, canceled, completed, reminder).
{% endhint %}

For detailed instructions, see [Omnisend's custom events documentation](https://support.omnisend.com/en/articles/6791819-custom-events).

### Part 2: Configure Sesami Flows

#### 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: Configure the Flow trigger

1. Choose your trigger event:
   * Appointment created
   * Appointment rescheduled
   * Appointment canceled
   * Appointment completed
   * Time-based reminder (e.g., 24 hours before appointment)
2. Configure any additional conditions if needed

#### Step 3: Add a Webhook action

1. Set **Action** type to **Webhook**
2. Configure the webhook:
   * **Target URL**: `https://api.omnisend.com/v3/events/[EVENT_ID]`
     * Replace `[EVENT_ID]` with the Event ID you copied from Omnisend
   * **When**: Set to "Immediately" (or configure timing for reminders)

#### Step 4: Configure webhook headers

In the webhook Headers section, add:

```json
{
  "Content-Type": "application/json",
  "X-API-KEY": "YOUR_OMNISEND_API_KEY"
}
```

Replace `YOUR_OMNISEND_API_KEY` with the actual API key you created in Omnisend.

#### Step 5: Configure webhook body

In the webhook Body section, map Sesami booking data to your Omnisend custom fields:

```json
{
  "fields": {
    "CustomerName": "{{CustomerName}}",
    "ServiceName": "{{ServiceName}}",
    "DateTimeInCustomerTimezone": "{{DateTimeInCustomerTimezone}}",
    "CustomerManagementLink": "{{CustomerManagementLink}}",
    "AppointmentID": "{{AppointmentID}}",
    "TeamMember": "{{TeamMember}}"
  },
  "email": "{{CustomerEmail}}",
  "phone": "{{CustomerPhone}}"
}
```

{% hint style="info" %}
The field names in `"fields"` must match exactly with the custom fields you defined in your Omnisend custom event.
{% endhint %}

#### Step 6: Save and enable the Flow

1. Give your Flow a descriptive name (e.g., "Omnisend - Appointment Created")
2. **Save** the Flow
3. Enable the Flow

Repeat steps 1-6 for each event type you want to send to Omnisend.

### Part 3: Create workflows in Omnisend

#### Step 1: Create a custom workflow

1. Log in to **Omnisend**
2. Navigate to **Automation > Workflows**
3. Click **New workflow**
4. Select **Create custom workflow**

#### Step 2: Configure the trigger

1. For the trigger, select your custom event (e.g., "Appointment Created")
2. The workflow will trigger whenever Sesami sends data to this event

#### Step 3: Add Email or SMS actions

1. Click **Add action** in the workflow
2. Choose **Email** or **SMS**
3. Design your message template

#### Step 4: Use custom fields in your template

When editing your email or SMS content, you can access the booking properties using the custom field syntax:

* `[[custom_event.CustomerName]]` - Customer's name
* `[[custom_event.ServiceName]]` - Service name
* `[[custom_event.DateTimeInCustomerTimezone]]` - Appointment date/time
* `[[custom_event.CustomerManagementLink]]` - Booking management link
* `[[custom_event.TeamMember]]` - Assigned team member

#### Step 5: Configure additional workflow settings

1. Set **Frequency** rules (e.g., "Do not re-trigger workflow for contacts who have already been in this automation")
2. Add **Exit conditions** if needed
3. Configure any time delays or conditional splits

#### Step 6: Activate the workflow

Once you've designed and tested your workflow, click **Enable** to make it live.

## Testing your integration

Before going live, test the integration:

1. Create a test booking in Sesami
2. Check that the event appears in Omnisend under **Store Settings > Custom Events** (view the event activity)
3. Verify that all appointment properties are populating correctly
4. Test your Omnisend workflow to ensure emails/SMS are sent properly
5. Review the content to ensure all custom fields display correctly

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

## FAQ

<details>

<summary>Do I need a separate API key for each event type?</summary>

Yes, Omnisend requires a unique API key for each custom event you create. This means if you're tracking appointment created, rescheduled, and canceled events, you'll need three separate API keys.

</details>

<details>

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

Yes! Omnisend supports both email and SMS. Make sure you:

* Include the `phone` field in your webhook body
* Have SMS enabled in your Omnisend account
* Have collected customer phone numbers with proper consent
* Configure SMS actions in your Omnisend workflows

For more details, see [Omnisend's SMS documentation](https://support.omnisend.com/en/articles/1061873-sms-in-campaigns).

</details>

<details>

<summary>What if I need multiple reminder workflows?</summary>

You can create multiple reminder Flows in Sesami, each with different timing:

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

Each can send to the same Omnisend custom event, or you can create separate custom events for different reminder timings.

</details>

<details>

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

* Verify your Omnisend API Key is correct and has "Events" permission enabled
* Ensure the Event ID in your webhook URL matches your custom event
* Check that the Flow is enabled in Sesami
* Verify you've made a test booking after setting up the Flow
* Review Sesami Flow logs to see if the webhook was sent successfully
* Check the custom event activity in Omnisend (Store Settings > Custom Events)
* Ensure all required fields (email or phone) are included in the webhook body

</details>

<details>

<summary>Can I use translations for different languages?</summary>

Yes! Omnisend supports translations for campaigns and automated emails. You can create localized versions of your workflows based on customer language preferences. See [Omnisend's translation documentation](https://support.omnisend.com/en/articles/1061898-translations-for-campaigns-and-automated-emails).

</details>

## Related

* [Sesami Flows](https://help.sesami.co/automations/sesami-flows) - Overview of Sesami's automation system
* [Email and Webhook Actions](https://help.sesami.co/automations/email-and-webhook-as-action-types) - Understanding action types
* [Sesami Flows and Klaviyo](https://help.sesami.co/automations/sesami-flows-and-klaviyo) - Alternative ESP integration
* [Notification Emails](https://help.sesami.co/notifications/notification-emails) - Default Sesami notification system
