# Intro to Help Docs

<h2 align="center">What can we help you find?</h2>

<p align="center">Learn and master the <strong>Sesami booking platform</strong>. Browse the topics below or use the Sesami Help AI assistant to ask anything you need help with.</p>

<p align="center"><button type="button" class="button primary" data-action="search" data-query=" " data-icon="magnifying-glass">Ask Sesami AI</button> <a href="/pages/EcpwrS2Z42gtBunxmh2I" class="button secondary">Contact Support</a></p>

<table data-view="cards"><thead><tr><th></th><th></th><th></th></tr></thead><tbody><tr><td><h4><i class="fa-leaf">:leaf:</i></h4></td><td><a href="/pages/ff2b1964202a1205a7af26f6e38644f79f8f9a74"><strong>Get started</strong></a></td><td>Get help with the basics</td></tr><tr><td><h4><i class="fa-calendar-star">:calendar-star:</i></h4></td><td><a href="/pages/mL6KgrKPnHtNn8RMmWQw"><strong>Booking</strong></a></td><td>Join our community</td></tr><tr><td><h4><i class="fa-envelope">:envelope:</i></h4></td><td><a href="/pages/AyZVJUqS7Cv3YsprZWKu"><strong>Notifications</strong></a></td><td>Send confirmation emails</td></tr><tr><td><h4><i class="fa-computer-mouse">:computer-mouse:</i></h4></td><td><a href="/pages/0d81c063d7361dcfe7c602e9bec27ea5e084139d"><strong>Admin Portal</strong></a></td><td>Manage the platform</td></tr><tr><td><h4><i class="fa-plug">:plug:</i></h4></td><td><a href="/pages/gqD83vaJWyc41xHbA6QO"><strong>Apps &#x26; Integrations</strong></a></td><td>Extend your stack</td></tr><tr><td><h4><i class="fa-paper-plane-top">:paper-plane-top:</i></h4></td><td><a href="/pages/Lymyd8OyYBiwPyzdOex9"><strong>Automations</strong></a></td><td>Build &#x26; manage workflows</td></tr><tr><td><h4><i class="fa-credit-card">:credit-card:</i></h4></td><td><a href="/pages/nGjOiW0xEVQKQ9a5qTFy"><strong>Payments</strong></a></td><td>Set up payments/checkout</td></tr><tr><td><h4><i class="fa-chart-pie-simple">:chart-pie-simple:</i></h4></td><td><a href="/pages/d0cDFmT7RuxrB17ZjET8"><strong>Analytics &#x26; Reports</strong></a></td><td>Track your success</td></tr><tr><td><h4><i class="fa-money-bill-wave">:money-bill-wave:</i></h4></td><td><a href="/pages/3mzJCfBemuXC2agyzEXY"><strong>Account Management</strong></a></td><td>Get help with your billing</td></tr></tbody></table>

{% hint style="info" %}
**💜** [**Sesami Reviews**](https://apps.shopify.com/sesami/reviews?ratings%5B%5D=5)
{% endhint %}


# Quickstart

This guide gets you from "installed" to "first booking" with the fewest steps.

## What you'll set up

* **Services** - Shopify products representing bookable services
* **Resources** - Team members, rooms, equipment, or other assets needed to deliver services
* **Availability** - Working hours and scheduling rules for resources
* **Storefront integration** - Booking buttons and calendar on your online store

{% hint style="info" %}
**Time estimate**: 15-30 minutes for a basic setup with one service and one team member.
{% endhint %}

### Before you start <a href="#before-you-start" id="before-you-start"></a>

Make sure you have:

* **Admin access** in your Shopify store
* **A list of services** you want to offer:
  * Service name (e.g., "60-Minute Massage", "Dog Grooming")
  * Duration (e.g., 30 minutes, 1 hour, 2 hours)
  * Price
* **Resource information**:
  * Team member names and their working hours
  * Room or equipment requirements (if applicable)

<figure><img src="/files/HqWnYdlBKZ6RGk7R4NcK" alt=""><figcaption></figcaption></figure>

{% stepper %}
{% step %}

### **Add service to Sesami**

**You can create a service directly in Sesami or add an existing product from Shopify.**

#### **- in Sesami**&#x20;

1. Enter a clear **title** (e.g., "Haircut", "Massage", "Consultation")

   Keep the title simple - this appears in booking confirmations and calendars
2. Add the **description**
3. Add **variant "duration", unit,** and **price**\
   Create variants like "30 Minutes", "1 Hour", "90 Minutes"
4. Click to **create the service**

<figure><img src="/files/5nC0moShymSJbznGcFP5" alt=""><figcaption></figcaption></figure>

#### **-in Shopify**

1. In your Shopify Admin, go to **Products > Add product**
2. Enter a clear product title that describes the service, such as *Haircut*, *Massage*, or *Consultation*
3. Click **Add variant** and create the "**Duration" variant** and its options, such as *30 Minutes*, *1 Hour*, or *90 Minutes*
4. Set a price for each duration option
5. Click **Save** to create the product

<figure><img src="/files/aL4FcR17UM1WnevHxP8S" alt=""><figcaption></figcaption></figure>

Repeat for each service type you want to offer.

{% hint style="success" %}
**Best practice**: Use variants for different durations of the same service. For example, one product "Massage" with variants "30 Minutes", "1 Hour", and "90 Minutes" instead of three separate products.
{% endhint %}
{% endstep %}

{% step %}

### **Create resources and set availability**

Resources are what your service needs to happen - team members, rooms, equipment, etc. You'll create them and set their availability.

{% hint style="info" %}
**Note**: In the current Shopify Admin interface, resources are labeled as "Team Members". This will be updated to "Resources" in an upcoming release.
{% endhint %}

1. Add the **Resource** name and the **Resource type**
   * For staff: Add each team member by name (e.g., "Sarah", "Alex", "Jamie")
   * For rooms/equipment: Add them as team members for now (e.g., "Room 1", "Camera Kit A")
2. Set its **Working hours** and add the availability rules (e.g., Monday-Friday, 9:00 AM - 5:00 PM)
3. **Click to create the resource**&#x20;

**Example setup:**

* Team member "Sarah" → Available Monday-Friday, 9 AM - 5 PM
* Room "Treatment Room 1" → Available Monday-Saturday, 8 AM - 8 PM

{% hint style="info" %}
**Good to know:** Don't worry if you haven't configured all your resources yet. You can set availability for a single resource now, then create additional resources or update existing resource availability later in [**Admin Portal: Resources**](/admin/resources).
{% endhint %}

<figure><img src="/files/aUAKysWL2JPkiOLHp4On" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### **Add a booking to your storefront**

Make the booking calendar accessible to customers on your online store

<figure><img src="/files/utZTpMcGTE6fRrl5snbv" alt=""><figcaption></figcaption></figure>

**Theme App Embed (Recommended - Modern Themes) - Most Shopify 2.0 themes support app embeds**

{% hint style="info" %}
**Optional:** If you're using an older Shopify theme, a headless storefront (such as Hydrogen), or a custom website, you can skip this step and refer to our [Dev Docs](https://sesami.dev/docs/sesami-experience/shopify-integration/intro/) for integration instructions.
{% endhint %}

#### **Step 1: Enable app embed**

1. From the Sesami dashboard, click **Customize Theme** in the **Embed booking experience** section.
2. It  will open the Theme Editor with the **App embeds** panel (usually in the left sidebar or theme settings)
3. Locate the **Sesami Booking App** and turn the toggle on to enable the app to be embedded in your theme.
4. **Save**

<div><figure><img src="/files/7FbnM8ZHMp85Pzkv34sk" alt=""><figcaption></figcaption></figure> <figure><img src="/files/xuRWNd3rUKkAJLjFqxQj" alt=""><figcaption></figcaption></figure></div>

#### **Step 2: Add to Product**

1. Next, add the Sesami booking block to your product template by opening a product template
2. In the **Product information** section, click **Add block** and select the **Sesami booking button**
3. Place the block above the Buy buttons
4. **Save** your theme changes.

The booking widget will now appear on your storefront product pages, allowing customers to select available booking times.

<div><figure><img src="/files/TF9dqdLHRqEmPvxWXgq8" alt=""><figcaption></figcaption></figure> <figure><img src="/files/Et1sXCfpEGM6kjNt6Shv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
**Manual Integration (Older Themes)**

For older themes without app embed support:

1. In your theme editor, add a button or link to product pages
2. Link to the product page with the Sesami calendar active
3. Or contact support for theme-specific integration help

See: [Shopify Online Store Setup](/apps-integrations/shopify/online-store)
{% endhint %}

{% hint style="success" %}
**Pro tip**: Add a "Book Now" navigation link in your main menu pointing to a collection of all bookable services.
{% endhint %}
{% endstep %}

{% step %}
**Test end-to-end**

Before going live, test a complete booking flow:

1. **Open your store** in an incognito/private browser window (to see the customer view)
2. **Navigate to a service product page**
3. **Check that the booking calendar appears** with available time slots
4. **Select a date and time**
5. **Add to cart** and proceed through checkout
6. **Complete the purchase** (use Shopify's test mode or make a real booking)
7. **Verify the booking appears** in Sesami Admin under Bookings
8. **Check on mobile** - Test the same flow on a mobile device

**What to verify:**

* Available time slots match your resource availability
* The correct timezone is displayed
* Booking appears assigned to the correct resource
* Times don't overlap if you book multiple appointments

{% hint style="warning" %}
**If no time slots appear**, see the troubleshooting section below.
{% endhint %}
{% endstep %}
{% endstepper %}

***

## Troubleshooting

<details>

<summary>Calendar doesn't appear on the product page</summary>

Check:

1. **Sesami app embed is enabled** in Theme Settings
2. **Product has a sesami-service tag** in Shopify
3. **Sesami is enabled** in Sesami Settings
4. You're viewing the **published theme** (not a draft/unpublished version)
5. **Service is configured** in Sesami with the product linked

</details>

<details>

<summary>Service is not working or shows errors</summary>

Check:

1. **The product is added as a service** in Sesami
2. **Resources are assigned** to the service
3. **Required resources are enabled** (not disabled)
4. **Duration variant format** is correct (e.g., "30 Minutes", "1 Hour" - no extra spaces, in English)

</details>

<details>

<summary>No available time slots showing</summary>

The most common issue! Check:

1. **Resources are assigned** to the service (Step 2)
2. **Availability is set** for assigned resources (Step 2)
3. **The booking window** allows future bookings (check advanced settings)
4. **No block-offs** are covering all available dates
5. **Buy buttons are hidden or removed on the product page**

See: [No Availability](/get-started/onboarding/troubleshooting/no-availability)

</details>

<details>

<summary>Timezone looks wrong</summary>

1. Go to **Sesami > Settings > Timezone**
2. Verify your store's timezone matches your physical location
3. Check resource availability is set in the correct timezone
4. Clear browser cache and test in incognito mode

See: [Timezone Mismatch](/get-started/onboarding/troubleshooting/timezone-mismatch)

</details>

<details>

<summary>Checkout behavior is unexpected</summary>

If checkout is skipped when you expected it (or vice versa):

1. Check if **Instant Booking** is enabled (skips checkout)
2. Verify **deposit settings** (may change checkout flow)
3. Review product **pricing** (free products may skip checkout)

See: [Instant Booking](/booking/booking-features/instant-booking) | [Deposits](/payments/deposits)

</details>

<details>

<summary>Booking shows "Assigned to: No one"</summary>

This happens when time slots become unavailable during checkout:

1. Enable **Reservation Period** in Sesami Settings
2. Enable **Cart Validation** to check availability before checkout

See: [Troubleshooting Assigned to No One](/get-started/onboarding/troubleshooting/troubleshooting-assigned-to-no-one-caused-by-invalid-order)

</details>

<details>

<summary>Customers see "Session expired" or "Invalid link" errors</summary>

Common causes:

1. **Links expired** - Customer tried to reschedule/cancel after the deadline
2. **Browser cookies blocked** - Check browser settings, especially Safari
3. **Cache issues** - Clear browser cache and try again

See: [Session Expired](/get-started/onboarding/troubleshooting/session-expired) | [Safari Cookies](/get-started/onboarding/troubleshooting/safari-cookies) | [Invalid Link Error](/get-started/onboarding/troubleshooting/as-a-customer-why-am-i-seeing-an-invalid-link-error-page)

</details>

***

## Next Steps

Once you have basic bookings working, consider:

* [**Email notifications**](/notifications/notification-emails) - Set up confirmation and reminder emails
* [**Google Calendar sync**](/apps-integrations/google-calendar) - Two-way sync with team member calendars
* [**Customer rescheduling**](/booking/booking-features/cancellations-rescheduling) - Allow customers to reschedule or cancel
* [**Group appointments**](/booking/booking-features/group-appointments) - Enable multiple bookings per time slot
* [**Deposits**](/payments/deposits) - Collect partial payment at booking time
* [**Point of Sale**](/apps-integrations/shopify/pos) - Take bookings in-person

***

## Need Help?

* [**Free Onboarding Call**](/get-started/onboarding/onboarding-call) - Book a session with our Customer Success team
* [**White-Glove Setup Service**](/get-started/onboarding/white-glove-setup) - Get professional help with theme integration and setup
* [**Professional Services**](/get-started/onboarding/professional-services) - Custom development for unique requirements
* [**Support**](mailto:help@sesami.co) - Email <help@sesami.co> for assistance

## Related

* [Resources Guide](/admin/resources) - Detailed resource configuration
* [Availability Setup](/booking/availability/resource-availability) - Advanced availability options
* [Sesami Admin Portal](/admin/sesami-admin-portal) - Overview of admin interface
* [Services Configuration](/admin/services) - Advanced service settings

**Create service products in Shopify**

Create a Shopify product for each bookable service:

1. In Shopify Admin, go to **Products > Add product**
2. Enter a clear **product title** without duration (e.g., "Haircut", "Massage", "Consultation")
   * Keep the title simple - this appears in booking confirmations and calendars
3. Add **variants for different durations**:
   * Click **Add variant**
   * Create variants like "30 Minutes", "1 Hour", "90 Minutes"
   * Set the price for each duration variant
4. Add a description, images, and other product details as needed
5. **Save** the product

Repeat for each service type you want to offer.

{% hint style="success" %}
**Best practice**: Use variants for different durations of the same service. For example, one product "Massage" with variants "30 Minutes", "1 Hour", and "90 Minutes" instead of three separate products.
{% endhint %}

{% stepper %}
{% step %}
**Create resources and set availability**

Resources are what your service needs to happen - team members, rooms, equipment, etc. You'll create them and set their availability.

{% hint style="info" %}
**Note**: In the current Shopify Admin interface, resources are labeled as "Team Members". This will be updated to "Resources" in an upcoming release.
{% endhint %}

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Team Members** (Resources)
3. Click **Add Team Member** and create your resources:
   * For staff: Add each team member by name (e.g., "Sarah", "Alex", "Jamie")
   * For rooms/equipment: Add them as team members for now (e.g., "Room 1", "Camera Kit A")
4. For each resource, set their **availability**:
   * Click on the resource name
   * Go to the **Availability** tab
   * Add availability rules (e.g., Monday-Friday, 9:00 AM - 5:00 PM)
   * **Save** the schedule

**Example setup:**

* Team member "Sarah" → Available Monday-Friday, 9 AM - 5 PM
* Room "Treatment Room 1" → Available Monday-Saturday, 8 AM - 8 PM

See: [Resources Guide](/admin/resources) | [Availability Setup](/booking/availability/resource-availability)
{% endstep %}

{% step %}
**Link services to resources**

Tell Sesami which resources are needed for each service:

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Services**
3. Select a service product
4. Go to the **Resources** section
5. Choose which resource types are required:
   * Select **Team member** if the service requires a staff member
   * Select **Room** if the service requires a physical space
   * Select **Equipment** if specific tools are needed
6. Optionally, assign specific resources:
   * Check **Specific resources only** to limit the service to certain team members or rooms
   * Leave unchecked to allow any available resource of that type
7. **Save**

**Example configurations:**

* **Haircut**: Requires "Stylist" (any stylist can do it)
* **Facial Treatment**: Requires "Esthetician" + "Treatment Room" (both needed)
* **Private Training**: Requires specific resource "Personal Trainer - Sarah" only

{% hint style="warning" %}
**Common mistake**: If you don't link any resources, no availability slots will appear! Every service must have at least one resource type assigned.
{% endhint %}
{% endstep %}

{% step %}
**Add booking to your storefront**

Make the booking calendar accessible to customers on your online store:

**Option 1: Theme App Embed (Recommended - Modern Themes)**

Most Shopify 2.0 themes support app embeds:

1. In Shopify Admin, go to **Online Store > Themes**
2. Click **Customize** on your active theme
3. Click on **App embeds** (usually in the left sidebar or theme settings)
4. Enable the **Sesami** app embed
5. **Save**

The booking calendar will now automatically appear on your service product pages.

{% hint style="warning" %}
**Important Note:** The Buy Button cannot be hidden or removed from the product template. \
The Buy Button is required to display booking availability on the calendar. \
If you prefer not to display the Buy Button to customers, you can enable the “Auto-add to cart / Skip cart” option. This removes the button from the booking flow.
{% endhint %}

**Option 2: Manual Integration (Older Themes)**

For older themes without app embed support:

1. In your theme editor, add a button or link to product pages
2. Link to the product page with the Sesami calendar active
3. Or contact support for theme-specific integration help

See: [Shopify Online Store Setup](/apps-integrations/shopify/online-store)

{% hint style="success" %}
**Pro tip**: Add a "Book Now" navigation link in your main menu pointing to a collection of all bookable services.
{% endhint %}
{% endstep %}

{% step %}
**Test end-to-end**

Before going live, test a complete booking flow:

1. **Open your store** in an incognito/private browser window (to see the customer view)
2. **Navigate to a service product page**
3. **Check that the booking calendar appears** with available time slots
4. **Select a date and time**
5. **Add to cart** and proceed through checkout
6. **Complete the purchase** (use Shopify's test mode or make a real booking)
7. **Verify the booking appears** in Sesami Admin under Bookings
8. **Check on mobile** - Test the same flow on a mobile device

**What to verify:**

* Available time slots match your resource availability
* Correct timezone is displayed
* Booking appears assigned to the correct resource
* Times don't overlap if you book multiple appointments

{% hint style="warning" %}
**If no time slots appear**, see the troubleshooting section below.
{% endhint %}
{% endstep %}
{% endstepper %}

***

## Troubleshooting

<details>

<summary>Calendar doesn't appear on the product page</summary>

Check:

1. **Sesami app embed is enabled** in Theme Settings
2. **Product has a sesami-service tag** in Shopify
3. **Sesami is enabled** in Sesami Settings
4. You're viewing the **published theme** (not a draft/unpublished version)
5. **Service is configured** in Sesami with the product linked

</details>

<details>

<summary>Service is not working or shows errors</summary>

Check:

1. **The product is added as a service** in Sesami
2. **Resources are assigned** to the service
3. **Required resources are enabled** (not disabled)
4. **Duration variant format** is correct (e.g., "30 Minutes", "1 Hour" - no extra spaces, in English)

</details>

<details>

<summary>No available time slots showing</summary>

The most common issue! Check:

1. **Resources are assigned** to the service (Step 2)
2. **Availability is set** for assigned resources (Step 2)
3. **The booking window** allows future bookings (check advanced settings)
4. **No block-offs** are covering all available dates
5. **Buy buttons are hidden or removed on the product page**

See: [No Availability](/get-started/onboarding/troubleshooting/no-availability)

</details>

<details>

<summary>Timezone looks wrong</summary>

1. Go to **Sesami > Settings > Timezone**
2. Verify your store's timezone matches your physical location
3. Check resource availability is set in the correct timezone
4. Clear browser cache and test in incognito mode

See: [Timezone Mismatch](/get-started/onboarding/troubleshooting/timezone-mismatch)

</details>

<details>

<summary>Checkout behavior is unexpected</summary>

If checkout is skipped when you expected it (or vice versa):

1. Check if **Instant Booking** is enabled (skips checkout)
2. Verify **deposit settings** (may change checkout flow)
3. Review product **pricing** (free products may skip checkout)

See: [Instant Booking](/booking/booking-features/instant-booking) | [Deposits](/payments/deposits)

</details>

<details>

<summary>Booking shows "Assigned to: No one"</summary>

This happens when time slots become unavailable during checkout:

1. Enable **Reservation Period** in Sesami Settings
2. Enable **Cart Validation** to check availability before checkout

See: [Troubleshooting Assigned to No One](/get-started/onboarding/troubleshooting/troubleshooting-assigned-to-no-one-caused-by-invalid-order)

</details>

<details>

<summary>Customers see "Session expired" or "Invalid link" errors</summary>

Common causes:

1. **Links expired** - Customer tried to reschedule/cancel after the deadline
2. **Browser cookies blocked** - Check browser settings, especially Safari
3. **Cache issues** - Clear browser cache and try again

See: [Session Expired](/get-started/onboarding/troubleshooting/session-expired) | [Safari Cookies](/get-started/onboarding/troubleshooting/safari-cookies) | [Invalid Link Error](/get-started/onboarding/troubleshooting/as-a-customer-why-am-i-seeing-an-invalid-link-error-page)

</details>

***

## Next Steps

Once you have basic bookings working, consider:

* [**Email notifications**](/notifications/notification-emails) - Set up confirmation and reminder emails
* [**Google Calendar sync**](/apps-integrations/google-calendar) - Two-way sync with team member calendars
* [**Customer rescheduling**](/booking/booking-features/cancellations-rescheduling) - Allow customers to reschedule or cancel
* [**Group appointments**](/booking/booking-features/group-appointments) - Enable multiple bookings per time slot
* [**Deposits**](/payments/deposits) - Collect partial payment at booking time
* [**Point of Sale**](/apps-integrations/shopify/pos) - Take bookings in-person

***

## Need Help?

* [**Free Onboarding Call**](/get-started/onboarding/onboarding-call) - Book a session with our Customer Success team
* [**White-Glove Setup Service**](/get-started/onboarding/white-glove-setup) - Get professional help with theme integration and setup
* [**Professional Services**](/get-started/onboarding/professional-services) - Custom development for unique requirements
* [**Support**](mailto:help@sesami.co) - Email <help@sesami.co> for assistance

## Related

* [Resources Guide](/admin/resources) - Detailed resource configuration
* [Availability Setup](/booking/availability/resource-availability) - Advanced availability options
* [Sesami Admin Portal](/admin/sesami-admin-portal) - Overview of admin interface
* [Services Configuration](/admin/services) - Advanced service settings


# Activate the New Sesami app and Admin Portal

{% hint style="warning" %}
**Important:** This article applies only to stores that had **Sesami installed before May 8, 2026.** If you installed Sesami on or after this date, you can skip these instructions.
{% endhint %}

<figure><img src="/files/5w0GNlZe0crcfse7exzD" alt=""><figcaption></figcaption></figure>

The new Sesami experience includes access to the [Admin Portal](/admin/sesami-admin-portal), where you can manage advanced features and settings to help manage your business.

The Sesami Admin Portal provides access to advanced Sesami features, including:

* [Service](/admin/services) settings
* Create more [Resources](/admin/resources) and [edit Availability](/booking/availability/resource-availability)
* Create [Locations](/admin/locations)
* Configure [Notifications](/notifications/notification-emails)
* [Apps & Integrations](/apps-integrations/shopify)
* & more!

### Step 1: Your store has already been migrated!

### Step 2: Check Your Email

1. The "Sesami Invitation" email was automatically sent to your [store's registered email address](https://admin.shopify.com/settings/general/store-contact-details).
2. Open the email and click **Activate your account**.

<figure><img src="/files/l14jdNVnMTZ0CEEObIyQ" alt=""><figcaption></figcaption></figure>

### You're All Set!

Once activation is complete, you'll have access to the Admin Portal experience and all advanced Sesami features.

You can return to the Admin Portal at any time directly from the Sesami app.

<figure><img src="/files/yn0QCbI87HMOAnYGYMzI" alt=""><figcaption></figcaption></figure>

## Troubleshooting

<details>

<summary>I didn't receive the invitation email</summary>

Check:

1. [Shopify Store Email address](https://admin.shopify.com/settings/general/store-contact-details)
2. Spam/Junk folder
3. Promotions tab
4. Contact Sesami team

</details>

<details>

<summary>How do I find my Shopify Store Email?</summary>

[Shopify Admin → Settings → Store Details → Contact Information](https://admin.shopify.com/settings/general/store-contact-details)

</details>

<details>

<summary>I don't see Step 1 (Enable Sesami App Embed)</summary>

Whether this step appears depends on your Shopify theme and whether the Sesami App Embed has already been enabled.

If the App Embed is already enabled, simply continue with the next step.

Merchants on all plans can use the App Embed and remove the legacy ScriptTag integration.

<figure><img src="/files/4NnDflTJyaumgApXeGBb" alt=""><figcaption></figcaption></figure>

</details>


# Onboarding


# Onboarding Call

Get personalized help setting up Sesami with a free onboarding session from our Customer Success team.

## What is the onboarding call?

When you upgrade your Sesami account, you'll receive an automatic invitation to book a **free onboarding session** with one of our Customer Success team members via Google Meet.

Our goal is to help you get up and running as fast as possible, so you can start taking bookings and focus on other aspects of your business. We'll also reserve time to answer any questions you have about your workflow and how it fits within the Sesami app.

## What to expect on the call

During your onboarding session, we'll cover:

1. **Personalized walk-through of Sesami's most loved features** - Get familiar with the core functionality tailored to your business
2. **Chart the best Sesami + Shopify workflow for your business** - We'll help you design a booking flow that works for your specific needs
3. **Get familiarized with time-saving features** including:
   * Customer cancellation and rescheduling
   * Group appointments
   * Point of Sale integration
   * Google Calendar sync
4. **Learn how to take bookings through your Shopify POS device** - Perfect for retail locations and in-person bookings
5. **Get answers to all your questions about the Sesami app** - Bring your specific questions and challenges

## Meeting details

* **Platform**: Google Meet (online web meeting)
* **Duration**: Typically 30-60 minutes
* **Cost**: Free with your Sesami subscription
* **Timing**: You can schedule the call at your convenience after upgrading

## How to book your onboarding call

1. Check your email for the automatic invitation sent after upgrading
2. Click the booking link in the email
3. Choose a time that works for your schedule
4. You'll receive a Google Meet link before the session

{% hint style="success" %}
**Pro tip**: Before your onboarding call, take a few minutes to explore the Sesami admin interface and note down any specific questions about your business workflow. This will help us tailor the session to your needs.
{% endhint %}

## Didn't receive an invitation?

If you've upgraded your account but haven't received an onboarding invitation, please contact our support team:

* **Email**: <help@sesami.co>

We'll make sure you get scheduled for a session.

## Alternative resources

If you prefer to set up Sesami on your own, check out these resources:

* [Quickstart Guide](/get-started/quickstart) - Step-by-step setup instructions
* [White-Glove Setup Service](/get-started/onboarding/white-glove-setup) - Professional setup assistance
* [Professional Services](/get-started/onboarding/professional-services) - Custom development services

## Related

* [Quickstart Guide](/get-started/quickstart) - Self-service setup
* [White-Glove Setup Service](/get-started/onboarding/white-glove-setup) - Professional setup assistance
* [Professional Services](/get-started/onboarding/professional-services) - Custom development services
* [Sesami Admin Portal](/admin/sesami-admin-portal) - Admin interface overview


# White-Glove Setup Service

Don't have time to set it up yourself? Have a complex theme? We can help!

Our white-glove setup service provides hands-on assistance to get Sesami configured and integrated with your Shopify store. Perfect for busy merchants who want expert help getting started quickly.

## What We Offer

### Theme Integration & Configuration

Professional setup and integration with your Shopify theme:

* **Theme integration** - Expert integration with your Shopify theme (standard or custom)
* **Theme compatibility** - Resolve conflicts and styling issues
* **Responsive optimization** - Ensure perfect display across all devices
* **Standard configuration** - Set up services, resources, and availability based on your requirements
* **Testing** - Thorough testing to ensure everything works correctly
* **Training** - Brief walkthrough of how to manage bookings after setup

### What's Included

* Complete Sesami setup in your Shopify store
* Theme integration (app embed or custom integration)
* Configuration of your initial services and resources
* Availability schedule setup for resources
* Storefront integration and styling
* End-to-end testing
* Documentation of configuration
* Brief training session

{% hint style="info" %}
**Ideal for**: Merchants with standard booking needs who want professional setup assistance without the complexity of custom development.
{% endhint %}

## How It Works

### 1. Contact us for a quote

Reach out to our team with details about your setup needs:

**Email**: <help@sesami.co>

Include information about:

* Your Shopify store URL and theme name
* Number of services and resources
* Any specific requirements or customizations needed
* Desired timeline

### 2. Scope Review & Quote

Our team will:

* Review your store and theme
* Assess the setup requirements
* Provide a detailed quote based on complexity
* Answer any questions about the service

### 3. Setup & Implementation

Once approved:

1. **Collaborator Access** - We'll send you a [Shopify Collaborator Access request](https://help.shopify.com/en/manual/your-account/staff-accounts/collaborator-accounts)
2. **Information Gathering** - We'll collect details about your services, team, and requirements
3. **Configuration** - Our team sets up Sesami according to your specifications
4. **Testing** - We test the complete booking flow
5. **Handoff** - We walk you through the configuration and show you how to manage bookings

{% hint style="warning" %}
**Important**: Please do not make changes to your store while we're working on the setup to avoid conflicts.
{% endhint %}

### 4. Documentation & Support

After setup:

* Full documentation of your configuration
* Log of all changes made to your store
* Brief training on managing bookings
* Access to standard support for ongoing questions

{% hint style="success" %}
**Get Started**: Contact <help@sesami.co> with your store details to receive a quote.
{% endhint %}

## Pricing

Pricing is based on your specific requirements and theme complexity. Contact us for a detailed quote.

**Factors affecting pricing:**

* Theme type (standard Shopify theme vs. heavily customized)
* Number of services and resources to configure
* Complexity of availability schedules
* Special requirements or customizations

## Theme Compatibility

### Standard Themes

Most Shopify themes (especially Shopify 2.0 themes) work seamlessly with Sesami's app embed. Setup is typically straightforward.

### Custom or Legacy Themes

Some themes may require additional work:

* **Heavily customized themes** may need custom integration
* **Older themes** (pre-2.0) may require manual code integration
* **Conflicting apps** may need resolution

{% hint style="warning" %}
**Note**: While we work with most themes successfully, some heavily customized themes may prove impossible to integrate without significant theme modifications. In such cases, we'll inform you upfront and discuss options.
{% endhint %}

## Get a Quote

Ready to get professional setup assistance? Contact our team:

**Email**: <help@sesami.co>

**Include in your inquiry:**

* Your Shopify store URL
* Theme name (or mention if it's custom)
* Brief description of what you want to offer (number of services, resources)
* Any specific requirements
* Desired timeline

Our team typically responds within 1-2 business days with a quote.

***

## Alternative Options

### Free Onboarding Call

All upgraded accounts include a **free onboarding session** where we guide you through setup. This is perfect if:

* You want to learn how to configure Sesami yourself
* Your theme is standard and compatible
* You have time to do the setup with guidance

See: [Onboarding Call](/get-started/onboarding/onboarding-call)

### Self-Service Setup

Our documentation provides complete step-by-step guides:

* [Quickstart Guide](/get-started/quickstart) - Full setup walkthrough with troubleshooting

### Professional Services

Need custom development beyond standard setup?

* [Professional Services](/get-started/onboarding/professional-services) - Custom booking experiences using Sesami SDK

## Related

* [Onboarding Call](/get-started/onboarding/onboarding-call) - Free guided setup session
* [Professional Services](/get-started/onboarding/professional-services) - Custom development services
* [Quickstart Guide](/get-started/quickstart) - DIY setup instructions
* [Shopify Collaborator Access](https://help.shopify.com/en/manual/your-account/staff-accounts/collaborator-accounts) - How to grant access


# Professional Services

Need a custom booking experience beyond standard Sesami features? Our professional services team builds bespoke booking solutions tailored to your unique business requirements.

## Custom Development Services

### Custom Booking Experience Development

Build fully customized booking experiences using the **Sesami SDK**. This is ideal for:

* **Unique booking flows** - Create booking experiences that match your exact business requirements
* **Custom UI/UX** - Design booking interfaces that align perfectly with your brand
* **Advanced features** - Implement specialized functionality beyond standard Sesami features
* **Headless commerce** - Integrate Sesami into custom frontends or mobile apps
* **Multi-step booking wizards** - Build complex booking flows with custom logic
* **White-label solutions** - Remove all Sesami branding for a fully branded experience

**Examples of custom builds:**

* Multi-location booking with advanced filtering and routing
* Custom availability rules and dynamic pricing logic
* Integration with third-party systems (CRMs, ERPs, custom databases)
* Specialized booking flows for specific industries (healthcare, education, events)
* Mobile-first or native app-based booking experiences
* Custom marketplace or multi-vendor booking platforms

### Technical Consulting & Custom Integrations

Advanced technical solutions for enterprise needs:

* **API integrations** - Connect Sesami with external systems and workflows
* **Workflow automation** - Complex automation beyond standard Sesami Flows
* **Data migration** - Migrate from other booking platforms with custom data mapping
* **Multi-store setups** - Configure Sesami across multiple Shopify stores with centralized management
* **Custom reporting & analytics** - Build custom dashboards, reports, and business intelligence tools
* **Performance optimization** - Scale Sesami for high-traffic implementations

{% hint style="info" %}
**Ideal for**: Businesses with unique requirements, complex workflows, or those needing enterprise-grade custom solutions.
{% endhint %}

## Why Choose Professional Services?

### Expert Development Team

Our developers are Sesami experts with deep knowledge of:

* **Shopify platform** and theme architecture
* **Sesami SDK and API** capabilities and best practices
* **E-commerce best practices** and conversion optimization
* **Performance optimization** for high-traffic implementations
* **Modern web technologies** (React, TypeScript, GraphQL, etc.)

### Proven Track Record

We've successfully delivered:

* Custom booking experiences for Fortune 500 companies
* Complex multi-location booking systems with advanced routing
* Specialized industry solutions (healthcare, education, events, hospitality)
* High-traffic implementations handling thousands of daily bookings
* White-label booking platforms for agencies and partners

### Quality Guarantee

* **Code quality** - Clean, maintainable, well-documented code following best practices
* **Testing** - Comprehensive testing before delivery (unit, integration, end-to-end)
* **Performance** - Optimized for speed, reliability, and scale
* **Compatibility** - Works seamlessly with Shopify and Sesami updates
* **Security** - Following industry best practices for data security and privacy

## How It Works

### 1. Discovery & Consultation

Contact our team to discuss your project:

**Email**: <help@sesami.co>

Initial consultation includes:

* Understanding your business requirements and goals
* Reviewing current setup and pain points
* Discussing technical constraints and opportunities
* Identifying the best approach and technology stack

### 2. Proposal & Planning

Our team will:

* Assess technical feasibility and architecture
* Design a solution that meets your requirements
* Provide a detailed proposal with:
  * Project scope and deliverables
  * Timeline and milestones
  * Pricing (fixed-price or time & materials)
  * Technical approach and architecture
* Answer questions and refine the proposal

### 3. Development & Implementation

Once approved:

1. **Kickoff** - Align on requirements, timeline, and communication plan
2. **Partner Access** - We'll send you a [Shopify Collaborator Access request](https://help.shopify.com/en/manual/your-account/staff-accounts/collaborator-accounts)
3. **Development** - Our team builds your custom solution with regular check-ins
4. **Testing** - Thorough testing across devices, browsers, and scenarios
5. **Documentation** - Complete technical documentation and user guides
6. **Training** - Knowledge transfer and training for your team
7. **Launch Support** - We support the go-live and monitor for issues

### 4. Support & Maintenance

After launch:

* Full technical documentation
* Source code and deployment guides (if applicable)
* Optional ongoing support and maintenance packages
* Service level agreements (SLA) for enterprise clients
* Priority support channel

{% hint style="success" %}
**Get Started**: Contact <help@sesami.co> with your project details to receive a custom proposal.
{% endhint %}

## Pricing

Pricing varies based on project scope, complexity, and timeline. We offer:

* **Fixed-price projects** - For well-defined scope and requirements
* **Time & materials** - For exploratory or evolving projects
* **Retainer agreements** - For ongoing development and support

**Typical project ranges:**

* Custom booking experiences: $10k - $100k+ depending on complexity
* API integrations: $5k - $25k depending on systems and data complexity
* Technical consulting: Hourly or project-based rates available

Contact us for a detailed quote tailored to your specific needs.

## Get a Quote

Ready to build a custom solution? Contact our professional services team:

**Email**: <help@sesami.co>

**Include in your inquiry:**

* Brief description of your project and goals
* Current pain points or limitations
* Your Shopify store URL
* Technical requirements or constraints
* Desired timeline and budget range
* Any relevant documentation or mockups

Our team typically responds within 1-2 business days with next steps.

***

## Alternative Options

### White-Glove Setup Service

Need help with standard Sesami setup and theme integration (not custom development)?

* [White-Glove Setup Service](/get-started/onboarding/white-glove-setup) - Professional setup assistance

### Free Onboarding Call

Want to understand Sesami capabilities before committing to custom development?

* [Onboarding Call](/get-started/onboarding/onboarding-call) - Free consultation with our Customer Success team

### Self-Service Setup

Exploring Sesami's standard features first?

* [Quickstart Guide](/get-started/quickstart) - Complete setup guide

## Related

* [White-Glove Setup Service](/get-started/onboarding/white-glove-setup) - Standard setup assistance
* [Onboarding Call](/get-started/onboarding/onboarding-call) - Free setup guidance
* [Sesami SDK Documentation](https://docs.sesami.co/sdk) - Developer resources
* [API Documentation](https://docs.sesami.co/api) - API reference
* [Quickstart Guide](/get-started/quickstart) - DIY setup instructions


# Troubleshooting

Common issues and how to fix them.

## Installation & Setup

* [No Availability](/get-started/onboarding/troubleshooting/no-availability) — time slots aren't appearing for customers
* [Timezone Mismatch](/get-started/onboarding/troubleshooting/timezone-mismatch) — booking times don't match your local time

## Errors

* [Session Expired](/get-started/onboarding/troubleshooting/session-expired) — "Session expired, please refresh" error
* [Safari Cookies](/get-started/onboarding/troubleshooting/safari-cookies) — Safari blocking cookies or showing errors
* [Invalid Link Error Page](/get-started/onboarding/troubleshooting/as-a-customer-why-am-i-seeing-an-invalid-link-error-page) — customer sees an invalid link page
* [Assigned to No One - Invalid Order](/get-started/onboarding/troubleshooting/troubleshooting-assigned-to-no-one-caused-by-invalid-order) — booking not assigned to a resource
* [Assigned to No One - Invalid Quantity](/get-started/onboarding/troubleshooting/troubleshooting-assigned-to-no-one-caused-by-invalid-quantity) — booking not assigned due to quantity issues

## Still Stuck?

Contact us at <help@sesami.co> with your store URL, the affected service, and a screenshot.


# No Availability

If your calendar shows no available time slots, check the following common causes.

## 1. No Availability Set for Resource

The most common issue. Every resource needs an availability schedule.

**Fix:**

1. Go to **Sesami > Resources > \[resource] > Availability**
2. Set available hours for each day
3. Click **Save**

{% hint style="warning" %}
Don't forget to click **Save** after setting availability — unsaved changes won't apply.
{% endhint %}

## 2. Duration Variant Is Incorrect

Sesami reads the product's "Duration" variant to determine time slot length. If it's missing or formatted incorrectly, no slots will appear.

**Requirements:**

* The option name must be exactly **Duration** (case-sensitive, no trailing spaces)
* Values must use a recognized format: `30`, `45 m`, `90 minutes`, `3h`, or `1 hour`
* Time frames must be between 00:00 and 24:00 on one day

**Fix:**

1. Go to **Shopify > Products > \[your service product]**
2. Check the **Variants** section
3. Ensure option name is `Duration` (no extra spaces)
4. Ensure option values are in a valid format
5. **Save** the product

## 3. Sesami Not Activated in Theme (Online Store 2.0)

If you're using a Shopify Online Store 2.0 theme, you need to embed the Sesami app in your theme.

**Fix:**

1. Go to **Shopify > Online Store > Themes > Customize**
2. Enable the **Sesami app embed**
3. Add the **Sesami block** to your product page template
4. **Save**

## 4. Sesami Tag Was Removed

For Online Store 2.0 themes, Sesami automatically adds a tag to products. If it's been removed, the calendar won't appear.

**Fix:** Re-save the service assignment in Sesami, or re-add the Sesami tag to the product.

## 5. Conflicting Booking App

Having another booking app installed can cause conflicts.

**Fix:** Uninstall other booking apps from your Shopify store before using Sesami.

## 6. Inventory Tracking Is Enabled

If "Track quantity" is enabled on the product, customers may see "Sold out" instead of the calendar.

**Fix:**

1. Go to **Shopify > Products > \[your service product]**
2. Uncheck **Track quantity**
3. **Save**

## 7. Buy Button Must Remain in the Product Template

The Buy Button cannot be hidden or removed from the product template. Sesami requires Shopify's Buy Button functionality to display availability.

If you prefer not to show the Add to Cart or Checkout buttons to customers, enable **Auto-add to cart** and **Skip cart** in the Sesami app block settings. This automatically **hides** the Buy Buttons from the service page.

**Read more:** [Instant Booking](/booking/booking-features/instant-booking)

## Still No Availability?

If none of the above resolves the issue:

* Check your [timezone settings](/booking/availability/timezone) — mismatched timezones can hide slots
* Check [buffer times](/booking/availability/buffer-times) — large buffers may eliminate available slots
* Contact support: <help@sesami.co>


# Timezone Mismatch

If your available time slots appear at the wrong times — or availability seems to disappear — the most likely cause is a timezone mismatch between Sesami and your Shopify store.

## Common Symptoms

* Time slots show at unexpected hours (e.g., you set 9am–5pm but customers see 2am–10am)
* Availability appears empty because slots fall outside business hours in the customer's timezone
* Booked appointment times don't match what the customer selected

## How Timezones Work in Sesami

There are multiple timezone settings that must align:

| Setting                          | Where                                         | What it controls                                       |
| -------------------------------- | --------------------------------------------- | ------------------------------------------------------ |
| **Shopify store timezone**       | Shopify > Settings > General                  | Base timezone for your store                           |
| **Sesami store timezone**        | Sesami > Settings > Store Settings > Timezone | Timezone used for availability and bookings            |
| **Customer timezone conversion** | Sesami > Settings > Storefront Settings       | Whether to show times in the customer's local timezone |

## Fixing Timezone Mismatch

### Step 1: Check your Shopify timezone

1. Go to **Shopify > Settings > General**
2. Note your store timezone

### Step 2: Match Sesami timezone

1. Go to **Sesami > Settings > Store Settings > Timezone**
2. Set it to match your Shopify store timezone
3. **Save**

{% hint style="warning" %}
If your Sesami timezone doesn't match your Shopify timezone, appointment times will be offset by the difference.
{% endhint %}

### Step 3: Review customer timezone conversion

If you serve customers in different timezones:

* **Enable timezone conversion** — the calendar automatically converts your availability to the customer's local timezone
* On the Shopify order, you'll see the customer's timezone and their selected time
* In Sesami, appointments are always stored in your store's timezone

If you serve customers in one location only:

* **Disable timezone conversion** to avoid confusion
* Optionally **hide the timezone label** in Sesami > Settings > Storefront Settings

## Destination Time (Timezone Fixation)

Some businesses need times fixed to the destination timezone rather than the store or customer timezone. Examples:

* **Tours** — a 10am tour in Paris should always show as 10am, regardless of the customer's location
* **Airport lounges** — times should match the airport's local time
* **On-site experiences** — the service happens in a fixed location

Use the **service timezone fixation** option to lock times to a specific timezone.

## Related

* [Timezone Settings](/booking/availability/timezone) — full timezone configuration guide


# Session Expired

“Session expired” or “invalid link” can happen when booking links are opened after they expire or when cookies are blocked.

## Common causes

* Link opened much later (expired session)
* Browser blocks third-party cookies
* Aggressive privacy extensions
* Cached storefront pages serving outdated session data

## What to try

{% stepper %}
{% step %}

#### Open in incognito/private window

Try opening the booking link in a browser private or incognito window.
{% endstep %}

{% step %}

#### Disable ad blockers/privacy extensions temporarily

Some extensions can block cookies or scripts required for the booking session.
{% endstep %}

{% step %}

#### Clear browser cache and cookies

Clearing cache and cookies can remove outdated session data that causes the link to be treated as expired.
{% endstep %}

{% step %}

#### If on mobile, try another browser

Try opening the link in Chrome or Safari (or a different mobile browser) to rule out browser-specific cookie or privacy settings.
{% endstep %}
{% endstepper %}

## If the issue is frequent

* Review your theme caching setup
* Ensure the booking entry point is using the current embed/block

Related:

* Safari cookie issues: **/troubleshooting/safari-cookies**


# Safari Cookies

Safari’s privacy features can block some cookies and cause booking flows to behave unexpectedly.

## Symptoms

* Buttons not responding
* Session expired messages
* Customer details not persisting between steps

## Recommended actions

{% stepper %}
{% step %}

#### Test modes

Test the booking flow in Safari **Private** mode and normal mode.
{% endstep %}

{% step %}

#### Troubleshooting setting

Ask the customer to temporarily disable “Prevent Cross-Site Tracking” (for troubleshooting only).
{% endstep %}

{% step %}

#### Storefront check

Confirm the storefront is Online Store 2.0 with Sesami embed enabled.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
If the issue only happens on Safari and not on Chrome, it’s often cookie/tracking related.
{% endhint %}


# Invalid Link Error Page

This page explains why customers may see an "Invalid Link" error when trying to reschedule or cancel their appointment.

## The Error

If you've clicked on the reschedule or cancel link in your appointment confirmation email and see an "Invalid Link" error page, here's what's happening.

## Why this happens

The most likely reason is that **the link to reschedule/cancel the appointment has already expired**.

### Link Expiration

Every appointment confirmation email includes a deadline for rescheduling or canceling. This is displayed in the email, for example:

> "Valid until 48 hours before the appointment starts: Sunday, Feb 21st 15:00 EST"

Once this deadline passes, the reschedule/cancel link becomes invalid and can no longer be used.

## What to do

**Please contact the store owner if you want to reschedule or cancel your appointment.**

The store owner can manually reschedule or cancel your booking even after the self-service link has expired.

## For store owners

If your customers are seeing this error, it means:

1. The customer tried to reschedule/cancel after the deadline you set
2. The reschedule/cancel policy expired (e.g., 48 hours before appointment)

### How to help your customer

1. Navigate to **Sesami > Bookings**
2. Find the customer's appointment
3. Manually reschedule or cancel the booking on their behalf
4. The customer will receive a confirmation email with the updated details

### Adjust your reschedule/cancel policy

To change how long customers have to reschedule or cancel:

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Settings > Cancellations, Rescheduling and Refunds**
3. Adjust the "Allow rescheduling/cancellation until X hours before appointment" setting
4. **Save** your changes

{% hint style="info" %}
**Pro tip**: A 24-48 hour window is common to prevent last-minute cancellations while still giving customers flexibility.
{% endhint %}

## Related

* [Cancellations, Rescheduling, and Refunds](/booking/booking-features/cancellations-rescheduling) - Policy configuration
* [Quickstart Guide](/get-started/quickstart#troubleshooting) - Setup and troubleshooting


# Assigned to No One - Invalid Order

When bookings appear as "Assigned to: No one" in Sesami, it means the selected time slot became unavailable before the order was completed. This guide explains why this happens and how to fix it.

## Why this happens

There might be cases where Sesami receives an invalid order from Shopify. This means the selected date and time is no longer available by the time Sesami received the order information.

### Common causes

1. **Another customer booked the same slot** - While the first customer was going through checkout, another customer completed a booking for the same time slot
2. **Team member became unavailable** - After the customer selected the slot, the team member's availability changed due to:
   * Availability schedule changes
   * An event added to their synced Google Calendar
   * Manual blocking of time slots
   * Team member being disabled or removed

## What to do

When you see a booking assigned to "No one", you have two options:

### Option 1: Reschedule the appointment

1. Navigate to **Sesami > Bookings**
2. Find the booking assigned to "No one"
3. Pick an available slot on behalf of the customer
4. Reschedule the appointment
5. The customer will receive an email with the new appointment details

### Option 2: Cancel and refund

1. Navigate to **Sesami > Bookings**
2. Find the booking assigned to "No one"
3. Cancel the booking and process a refund in Shopify
4. Ask the customer to book a new appointment
5. The customer will receive a cancellation email

## How to prevent this from happening

Enable these two important settings to prevent invalid bookings:

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Settings**
3. Enable both:
   * **"Reservation period"** - Reserves the time slot for a customer while they complete checkout
   * **"Validate appointments in cart"** - Checks if the slot is still available before allowing checkout

{% hint style="success" %}
**Recommended**: Enable both settings to significantly reduce "Assigned to: No one" bookings caused by timing conflicts.
{% endhint %}

## Understanding these settings

### Reservation Period

When enabled, this temporarily reserves the selected time slot for the customer while they go through the checkout process. The slot won't be available to other customers during this time.

### Validate Appointments in Cart

When enabled, Sesami checks whether the selected slot is still available when the customer proceeds to checkout. If it's no longer available, the customer is prompted to select a new time before continuing.

## Related

* [Reservation Period](/booking/availability/reservation-period) - Configure reservation timing
* [Cart Verification Script](/apps-integrations/shopify/online-store/cart-verification-script) - Cart validation setup
* [Quickstart Guide](/get-started/quickstart#troubleshooting) - Setup and troubleshooting


# Assigned to No One - Invalid Quantity

When customers add multiple quantities of a booking service to their cart, it can result in bookings being "Assigned to: No one". This guide explains the issue and provides two solutions.

## The problem

One particular issue with booking in Sesami occurs when bookings are assigned to "No one" in the app. This commonly happens when:

* Customers add a quantity greater than 1 to their cart
* The booking product allows quantity selection on the product page
* There aren't enough team members or slots available to fulfill multiple bookings at the same time

## Two prevention methods

There are two main preventative measures we recommend:

1. **Hiding the quantity selector** on the product page
2. Using Sesami's **group appointment feature**

You can use either method, or both for maximum protection.

***

## Method 1: Hide quantity on theme

The most common solution is to **hide the quantity selector** either through theme options or by editing the liquid theme files directly.

### Why this works

Hiding the quantity on your Sesami booking product ensures that a single "add to cart" action by your client equates to exactly one booking slot in the Sesami app.

### How to hide quantity

Depending on your theme and level of expertise, you have a few options:

#### Option A: Theme settings (if available)

Some Shopify themes offer a setting to hide quantity selectors for specific products. Check your theme's customization options.

#### Option B: Edit theme code

You may need to edit your theme's liquid files to hide the quantity selector.

**Shopify community resources:**

* [Prestige Theme - Hide/Delete Quantity button](https://community.shopify.com/c/Shopify-Design/Prestige-Theme-Hide-Delete-Quantity-button/m-p/677629#M168999)
* [Removing quantity box for select products](https://community.shopify.com/c/Shopify-Design/Removing-quantity-box-for-select-products/td-p/230560)
* [Remove Quantity from a product](https://community.shopify.com/c/Shopify-Design/Remove-Quantity-from-a-product/m-p/470826#M122381)

{% hint style="warning" %}
**Note**: Depending on your theme, you might want to consult your web developer or theme developer for help, as code changes may be required.
{% endhint %}

#### Need help?

If you're unable to successfully hide the quantity variable in your Shopify product booking page, [contact our support team](mailto:help@sesami.co).

***

## Method 2: Use group appointments

The second method is to utilize Sesami's group appointment booking feature.

### How it works

By using the group appointment feature, the number of reservations per time slot will be limited to the maximum number of bookings you set. This enables an app check to ensure that:

* There is actually a slot available for the client to book
* There is a team member available to assign the booking to

### How to enable group appointments

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Services**
3. Click on a service
4. Navigate to **Group Appointments**
5. Configure the maximum bookings per slot
6. **Save** your changes

For more information, see our [Group Appointments](/booking/booking-features/group-appointments) guide.

***

## Extra preventive measures

In addition to the methods above, enable these settings for additional protection:

1. Navigate to: **Sesami > Settings**
2. Enable both:
   * **"Reservation period"** - Reserves slots during checkout
   * **"Validate appointments in cart"** - Checks availability before checkout

{% hint style="success" %}
**Best practice**: Combine quantity hiding with reservation period and cart validation for the most reliable booking experience.
{% endhint %}

## Related

* [Group Appointments](/booking/booking-features/group-appointments) - Group booking configuration
* [Reservation Period](/booking/availability/reservation-period) - Reserve slots during checkout
* [Cart Verification Script](/apps-integrations/shopify/online-store/cart-verification-script) - Cart validation
* [Remove Quantity Dropdown](/apps-integrations/shopify/online-store/i-want-to-remove-the-quantity-drop-down-menu) - Theme customization guide


# About Sesami

Sesami is the booking platform for Commerce. Sesami has a booking app on Shopify that helps you sell services (appointments, classes, rentals, tastings, etc.) directly from your storefront and manage availability across **resources** like team members, rooms, and equipment.

## What Sesami helps you do

* **Offer bookable services** tied to Shopify products (so everything stays connected to your store)
* **Control availability** by resources and rules (buffers, booking windows, block-offs)
* **Reduce back-and-forth** with automated confirmations, reminders, and calendar events
* **Support different booking experiences**, including in-store and POS-assisted flows

## How it fits into Shopify

Sesami works alongside Shopify (customers, products, orders). Depending on your setup, bookings can be:

* **Booked without requiring Shopify checkout**, or
* **Booked with Shopify checkout / order creation** (useful when you want payment captured online or tracked as an order)

## Key concepts (quick definitions)

* **Service**: what the customer books (often a Shopify product)
* **Resource**: anything required to fulfill the service (a team member, room, machine, etc.)
* **Resource type**: the category of a resource (e.g., “Team member”, “Room”, “Equipment”)

## Next steps

* Set up your account: /setup/quickstart
* Resources setup: /resources/resources-team-members-rooms-equipment
* Setup and troubleshooting: [Quickstart Guide](/get-started/quickstart)
* Google Calendar sync: /integrations/google-calendar-integration


# Who Uses Sesami

Sesami works for any business that takes bookings, appointments, or reservations through Shopify. Here are the most common categories.

## Services

Businesses where customers book time with a professional:

* **Beauty & hair salons** — cuts, coloring, styling, treatments
* **Spas** — massage, facials, body treatments
* **Tattoo & piercing studios**
* **Fitness** — yoga, cycling, martial arts, personal training, gyms
* **Wellness** — acupuncture, chiropractic, massage therapy
* **Health consultations** — telehealth, nutrition, therapy sessions
* **Dentistry & dental clinics**
* **Pet care** — grooming, vet visits, training
* **Cleaning services** — home, office, specialty cleaning

## Experiences

Businesses where customers book activities or events:

* **Wineries & distilleries** — tastings, tours, events
* **Cooking academies & workshops**
* **Tours & adventure bookings** — guided tours, outdoor activities
* **Museums & galleries** — timed entry, guided tours
* **Entertainment venues** — escape rooms, events
* **Short-term rentals** — equipment, spaces, studios

## Retail

Businesses where customers book shopping or consultation appointments:

* **Shopping appointments** — personal shopping, private viewings
* **Jewelry consultations** — custom design, fittings
* **Fashion styling** — personal styling sessions
* **Auto showrooms** — test drives, consultations
* **Pop-up shops** — timed entry, exclusive access

## Business Consultations

Professional services that run on appointments:

* **Business consulting** — strategy, coaching
* **Legal consultations**
* **Financial advising**
* **Real estate viewings**

{% hint style="info" %}
Don't see your industry? Sesami is flexible enough to handle most appointment-based businesses. [Book a demo](https://sesami.co) to see how it fits your use case.
{% endhint %}

## Demo Store

Want to see Sesami in action? Visit the demo store: [demo.sesami.co](https://demo.sesami.co/)


# Pricing

Sesami offers plans for businesses of all sizes, from solo operators to enterprise teams.

## Plans

Sesami has four plans, each designed for different stages of growth:

* **Small** — for businesses getting started with online booking. Includes core features like Instant Booking, Google Calendar sync, multi-language support, API/SDK access, and Shopify POS integration.
* **Pro** — adds group appointments, customer rescheduling and cancellation, Klaviyo integration, appointments reporting, and the option to remove Sesami branding.
* **Premium** — adds multi-location support, solution architecture, and custom booking experience consulting. Recommended for Shopify Plus merchants.
* **Enterprise** — unlimited resources, locations, and custom Flows. Includes white-labeled experiences, dedicated CX manager, custom integrations, SLA uptime guarantee, and 24/7 premium support.

{% hint style="success" %}
For current pricing and feature comparison, visit [sesami.co/pricing](https://sesami.co/pricing/).
{% endhint %}

## Free Trial

Install Sesami and start a **30-day free trial** on the Premium plan — no credit card required. At the end of the trial, choose the plan that fits your needs. Upgrade or downgrade anytime.

## Development Stores

Sesami is **free on Shopify development stores**, so agencies and developers can build and test before going live.

## Need More?

* **Additional resources, Flows, or group appointment seats** — contact <help@sesami.co>
* **Startup program** — if you meet the criteria, [apply here](https://sesami.co/pricing/)
* **Enterprise** — contact us for custom pricing

## Related

* [Sesami and Shopify](/apps-integrations/shopify/sesami-and-shopify) — Shopify plan requirements
* [Billing](/account-management/billing) — subscription and billing details


# Migrate to Sesami

If you're switching to Sesami from another booking system, we can help you migrate your data.

## What can be migrated?

The following data can be migrated from one Sesami account to another (or from another booking system):

* **Team members** - Staff profiles and information
* **Availabilities** - Team member schedules and working hours
* **Services** - Booking services, durations, pricing, and settings
* **Bookings** - Historical and upcoming appointment data

{% hint style="info" %}
**Note**: Migration applies when moving between Sesami accounts or when transitioning from certain other booking platforms. The exact scope depends on your previous system.
{% endhint %}

### Customer migration

Customer data is managed through Shopify, not Sesami. If you need to migrate customer information:

* **Use Shopify's customer import process** - Shopify provides built-in tools for importing customer data via CSV
* See [Shopify's customer import documentation](https://help.shopify.com/en/manual/customers/import-export-customers) for detailed instructions
* Customer data in Shopify is automatically available to Sesami for booking purposes

Since Sesami uses your existing Shopify customer database, no separate customer migration is needed within Sesami itself.

## How to request a migration

If you need to migrate data to your Sesami account:

1. Contact **Sesami Support**: <help@sesami.co>
2. Provide details about:
   * Your current booking system (if applicable)
   * What data you need to migrate
   * Your Shopify store URL
   * Any specific requirements or timelines

Our support team will review your request and guide you through the migration process.

{% hint style="warning" %}
**Important**: For complex migrations involving data from other booking platforms, please reach out to support early in your planning process to understand what's possible and to coordinate timing.
{% endhint %}

## Alternative: Manual setup

For simple setups, you may find it faster to manually configure your team members and availabilities in Sesami rather than migrating data. This is especially true if you have:

* Only a few team members (1-5)
* Simple recurring availability patterns
* Want to take the opportunity to restructure your booking setup

See our [Quickstart Guide](/get-started/quickstart) for step-by-step setup instructions.

## Need more help?

Contact our support channels:

* **Sesami Support**: <help@sesami.co>
* **Shopify Support**: <help@shopify.com>

## Related

* [Quickstart Guide](/get-started/quickstart) - Set up Sesami from scratch
* [Onboarding Call](/get-started/onboarding/onboarding-call) - Book a free setup session
* [White-Glove Setup Service](/get-started/onboarding/white-glove-setup) - Professional setup assistance
* [Professional Services](/get-started/onboarding/professional-services) - Custom development services


# Sesami Admin Portal

The Sesami Admin Portal is a modern, mobile-first admin interface designed to simplify how you and your team manage bookings, resources, and services.

{% hint style="success" %}
**Available on all Sesami plans** - The Admin Portal is included with every Sesami subscription.
{% endhint %}

{% embed url="<https://sesami.co/wp-content/uploads/2025/01/2024-unwrapped-sesami-admin-portal.mp4>" %}

## What is the Admin Portal?

The Sesami Admin Portal is a **Progressive Web App (PWA)** that provides:

* **Direct access** - Team members can log in directly without going through Shopify Admin
* **Mobile-first design** - Works great on phones, tablets, and desktop
* **Enhanced features** - Improved booking management, timeline view, and more
* **Multi-level permissions** - Control what each team member can access
* **Modern interface** - Clean, fast, and easy to use

## Key features

### Direct Team Access

Team members can log into the Sesami Admin Portal directly—no need to navigate through your Shopify account:

* Faster access to bookings and schedules
* Simplified workflow for front desk staff
* Works on any device with a web browser

### Multi-Level Permissions

Store Managers can create users and grant different levels of permissions:

* **Owner / Admin** - Full access to all features and settings
* **Location Manager** - Manages bookings, resources, and services for their location(s)
* **Team Member / Resource Operator** - Views their own schedule, checks in customers, and manages their own bookings
* **Front Desk/POS Staff** - View and create bookings, limited admin access
* **Read-only** - View bookings and schedules only

This ensures everyone has just what they need to do their job effectively.

See: [Users](/admin/users)

### Improved Booking Management

Enhanced tools for managing appointments:

* **Upcoming Appointments List** - Quickly view and manage upcoming bookings
* **Timeline View** - See the full history of each appointment:
  * When it was created
  * Rescheduling history
  * Cancellations
  * Check-ins and no-shows
* **Faster actions** - Create, reschedule, and cancel bookings with fewer clicks

### Resources

Go beyond team members with the **Resources** concept:

* **Team Members** - Staff who deliver services
* **Rooms** - Physical spaces needed for services
* **Equipment** - Tools, machines, or items required
* **Calendar Rules** - Block-offs for holidays, maintenance, etc.

With resources, you can create multiple calendars and ensure services are only bookable when all required resources are available.

See: [Resources](/admin/resources)

### Multi-Location Support

Manage multiple locations from a single admin interface:

* **Location-based access** - Staff see only their location's bookings
* **Automatic timezone conversion** - Each location displays in its local timezone
* **Location-specific resources** - Assign team members and resources to specific locations
* **POS integration** - Automatic location detection when using Shopify POS

See: [Locations](/admin/locations) | [POS & Multi-Location](/apps-integrations/shopify/pos/pos-and-multi-location)

### Sesami Forms App

Build custom intake forms to collect information before appointments:

* **Custom questions** - Create forms tailored to your services
* **Conditional logic** - Show/hide questions based on previous answers
* **Pre-appointment data** - Collect information before customers arrive
* **Better preparation** - Your team has what they need ahead of time

See: [Sesami Forms App](/apps-integrations/sesami-forms-app)

### Flexible Slots

More control over when customers can book:

* **Custom intervals** - Set time slot intervals (15, 30, 45, or 60 minutes)
* **Service-specific** - Different intervals for different services
* **Better control** - Match booking times to your actual operations

See: [Flexible Slots](/booking/availability/flexible-slots)

### Sesami API

For developers and custom integrations:

* **GraphQL API** - Flexible queries for Sesami data
* **REST API** - Programmatic access to Sesami features
* **Custom integrations** - Connect Sesami to your own apps and systems
* **Automation** - Build custom workflows and tools

See: [API and Building Apps](/apps-integrations/api-and-building-apps)

## Getting started with the Admin Portal

{% hint style="warning" %}
**Activation required**: The Admin Portal must be enabled on your account before you can use it. Contact us at [**help@sesami.co**](mailto:help@sesami.co) to get started.
{% endhint %}

{% stepper %}
{% step %}

#### Request activation

Contact Sesami support at <help@sesami.co> to have the Admin Portal enabled for your store.
{% endstep %}

{% step %}

#### Receive invitation

Once your store is ready:

1. Go to **Sesami > Settings** in Shopify Admin
2. Click **Send invitation**
3. The store owner will receive an email from Sesami with a link to join the Admin Portal
   {% endstep %}

{% step %}

#### Log in and explore

Click the link in the email to:

* Set up your Admin Portal account
* Log in for the first time
* Explore the new interface
  {% endstep %}

{% step %}

#### Invite your team

As a store owner or manager:

* Create user accounts for your team members
* Assign appropriate permission levels
* Send invitations to team members

See: [Users](/admin/users)
{% endstep %}
{% endstepper %}

## Admin Portal vs. Shopify Admin

You can use both interfaces interchangeably:

| Feature               | Shopify Admin       | Admin Portal                          |
| --------------------- | ------------------- | ------------------------------------- |
| **Access**            | Via Shopify account | Direct login                          |
| **Mobile experience** | Basic               | Optimized                             |
| **Team permissions**  | Shopify staff roles | Sesami-specific roles                 |
| **Resources**         | Team members only   | Team members, rooms, equipment, rules |
| **Multi-location**    | Basic               | Enhanced with automatic timezone      |
| **Timeline view**     | No                  | Yes                                   |
| **Speed**             | Standard            | Faster, modern interface              |

Both interfaces work with the same data, so changes in one appear in the other.

## Who should use the Admin Portal?

The Admin Portal is especially valuable for:

* **Multi-location businesses** - Easier location management and timezone handling
* **Teams with specialized roles** - Fine-grained permissions for different staff levels
* **Mobile-first operations** - Front desk staff using tablets or phones
* **Resource-constrained services** - Businesses needing to manage rooms, equipment, etc.
* **Growing teams** - Businesses scaling up with more staff and complexity

## Best practices

* **Start with owners/managers** - Get comfortable with the new interface first
* **Train your team** - Take time to walk through the new features with staff
* **Set permissions carefully** - Give team members only the access they need
* **Use mobile** - Install the PWA on phones/tablets for your team
* **Leverage resources** - Take advantage of the full resource model (rooms, equipment, etc.)

## Troubleshooting

<details>

<summary>How do I get access to the Admin Portal?</summary>

Contact Sesami support at <help@sesami.co> to have it enabled for your store. Once enabled, you'll receive an invitation email.

</details>

<details>

<summary>Can I still use Shopify Admin for Sesami?</summary>

**We recommend using the Admin Portal once you've started with it.** The Admin Portal has the latest features and uses our newest API, giving you access to:

* Resources (rooms, equipment, calendar rules)
* Enhanced multi-location support
* Improved booking timeline and management tools

The Admin Portal provides the most complete and up-to-date Sesami experience.

</details>

<details>

<summary>Team members can't log in</summary>

Check:

* Admin Portal is **enabled** for your store
* Team member has been **invited** via the Admin Portal
* They're using the correct **email address**
* They've **accepted the invitation** via email

</details>

<details>

<summary>Changes in Admin Portal not appearing in Shopify</summary>

Both interfaces use the same data in real-time. If you're not seeing changes:

* **Refresh** the page
* Check that you're viewing the **same location** (if using multi-location)
* Verify the change was **saved** successfully

</details>

## Related

* [Locations](/admin/locations) - Manage multiple locations
* [Resources](/admin/resources) - Team members, rooms, equipment
* [Users](/admin/users) - User roles and permissions
* [Services](/admin/services) - Configure bookable services
* [Sesami Forms App](/apps-integrations/sesami-forms-app) - Custom intake forms


# Locations

Sesami's multi-location feature allows businesses with multiple physical locations to manage bookings across all their stores, studios, branches, or mobile units from a single admin interface.

## What are Locations?

Locations represent your physical business locations where services are offered. Each location can have:

* **Its own resources** (team members, rooms, equipment)
* **Its own timezone** (automatically applied for that location's bookings)
* **Location-specific services** (assign services to one or multiple locations)
* **Separate availability** (different hours for different locations)

{% hint style="info" %}
**Available on Premium plan**: The Premium plan includes 2 locations. Need more locations? Contact <help@sesami.co>
{% endhint %}

## Common use cases

* **Multi-store retail**: Manage bookings across multiple store locations
* **Regional offices**: Different offices in different cities or timezones
* **Studios or salons**: Multiple branches with separate staff and schedules
* **Mobile services**: Different service areas or territories

## How Locations work

### For Admins

* **Location selector in admin**: Switch between locations in the top menu to view bookings and manage schedules
* **Automatic timezone conversion**: Each location's calendar automatically displays in that location's timezone
* **Location-based access control**: Grant staff access to specific locations only
* **POS integration**: Sesami locations can be mapped to Shopify locations for seamless POS operation

### For Customers

When booking a service available at multiple locations, customers:

1. **Choose the location first** - Select which location they want to book at
2. **See location-specific availability** - Only resources assigned to that location appear
3. **Book with confidence** - Availability automatically accounts for the location's timezone

## Setting up Locations

{% stepper %}
{% step %}

#### Create your locations

1. Navigate to **Locations** in the sidebar
2. Click **Add Location**
3. Enter the location name and details (address, timezone, etc.)
4. The first location you create becomes the **Default Location**
5. For additional locations, you can choose which one should be the default

{% hint style="success" %}
**Tip**: Use clear, customer-friendly names like "Downtown Studio" or "West End Salon" rather than internal codes.
{% endhint %}
{% endstep %}

{% step %}

#### Assign locations to services

1. Go to **Services** and select a service
2. Under **Locations & Resources**, click **Add Location**
3. Choose the location(s) where this service is offered
4. Assign resources (team members, rooms, equipment) for that location
5. Save your changes

Each service can be:

* Available at **one location** only
* Available at **multiple locations** (customers choose during booking)
  {% endstep %}

{% step %}

#### Configure location-specific details

For each location, you can set:

* **Timezone** - Bookings and availability automatically use this timezone
* **Resources** - Assign team members, rooms, or equipment to this location
* **Availability** - Different working hours for different locations
* **Access permissions** - Control which staff can access this location
  {% endstep %}
  {% endstepper %}

## Managing bookings by location

### Calendar view

Use the **location selector** in the top menu to:

* View appointments for a specific location
* See location-specific availability
* Create bookings at the selected location

The calendar automatically displays times in the selected location's timezone.

### Upcoming appointments

The upcoming appointments list can be filtered by location, making it easy to see what's happening at each location.

### Rescheduling across locations

You can move appointments from one location to another:

1. Select the appointment (from calendar or upcoming list)
2. Click **Reschedule**
3. In the top menu, select the **new location**
4. Choose the appropriate resource, date, and time
5. Confirm the changes

{% hint style="warning" %}
**Important**: Be aware of timezone conversions when rescheduling across locations with different timezones!
{% endhint %}

## Location-based access control

Control which staff members can access each location:

* **Store Managers** can grant location-specific permissions
* **Staff** see only bookings and resources for their assigned locations
* **Owners** have access to all locations

This is especially useful for:

* Regional managers overseeing specific locations
* Team members who work at one location only
* Maintaining separate operations for different branches

See: [Users](/admin/users)

## Timezones and locations

Each location has its own timezone, which is automatically applied to:

* **Availability display** - Working hours show in the location's local time
* **Booking times** - Customer bookings show in the location's timezone
* **Admin calendar** - When viewing a location, times display in that location's timezone
* **Notifications** - Appointment reminders use the location's timezone

{% hint style="info" %}
**Example**: If your NYC location is set to EST and your LA location is set to PST, the admin calendar will automatically convert times based on which location you're viewing.
{% endhint %}

See: [Timezone Configuration](/booking/availability/timezone)

## Using Locations with Shopify POS

If you use Shopify POS, Sesami locations can be mapped to your Shopify locations. This enables automatic location detection, so staff don't need to manually switch locations when using POS.

For detailed setup instructions and how POS works with multi-location, see: [POS & Multi-Location](/apps-integrations/shopify/pos/pos-and-multi-location)

## Best practices

* **Use descriptive names** - "Downtown Studio" is clearer than "Location 1"
* **Set correct timezones** - Double-check timezone settings for each location
* **Assign resources clearly** - Make sure team members are assigned to the right location(s)
* **Test the customer flow** - Book a test appointment to see how location selection works
* **Train your team** - Ensure staff understand how locations work in both admin and POS

## Troubleshooting

<details>

<summary>Location selector not appearing for customers</summary>

Check:

* Service is assigned to **multiple locations** (location selector only appears if the service is offered at 2+ locations)
* Each location has **resources assigned** to the service
* Resources have **availability set** for that location

</details>

<details>

<summary>Times showing incorrectly in admin</summary>

* Verify the **location's timezone** is set correctly in location settings
* Check which **location is selected** in the location selector (top menu)
* Remember: times automatically convert to the selected location's timezone

</details>

<details>

<summary>Staff can't see bookings at a location</summary>

Check:

* Staff user has **permission** to access that location
* Location is **enabled** (not disabled)
* Staff is logged into the correct account

</details>

## Related

* [Resources](/admin/resources) - Assign resources to locations
* [Services](/admin/services) - Assign services to locations
* [Users](/admin/users) - Location-based access control
* [POS & Multi-Location](/apps-integrations/shopify/pos/pos-and-multi-location) - Using POS with multiple locations
* [Timezone Configuration](/booking/availability/timezone) - Understanding timezones


# Services

Services are the bookable offerings that customers can schedule appointments for. In Sesami, services are linked to Shopify products and configured with durations, resources, locations, and other settings.

## What are Services?

A **Service** in Sesami represents a bookable offering such as:

* A 60-minute massage
* A 30-minute haircut
* A 2-hour photography session
* A 90-minute group class

Each service is connected to a **Shopify product** and configured with:

* **Duration** (product variants like "30 Minutes", "1 Hour", "90 Minutes")
* **Resources** (team members, rooms, equipment needed)
* **Locations** (where the service is offered)
* **Availability** (when the service can be booked)
* **Special features** (group appointments, instant booking, etc.)

## Creating a Service

{% stepper %}
{% step %}

#### Create the Shopify product

* Click **Add a Service** to create a new service directly in Sesami.
* Click **Select existing product** to use an existing Shopify product as a service.<br>
  * Enter a clear **product title** (e.g., "Haircut", "Massage", "Consultation")
  * Add **variants for different durations**

{% hint style="success" %}
**Best practice**: Use variants for different durations of the same service rather than creating separate products.
{% endhint %}

See: [Quickstart - Create Service Products](/get-started/quickstart#add-service-to-sesami)
{% endstep %}

{% step %}

#### Add the service in Sesami

{% hint style="success" %}
If you created the service directly in Sesami, you can skip this step.&#x20;
{% endhint %}

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Services**
3. The Shopify product should appear in the list
   {% endstep %}

{% step %}

#### Configure service

Service settings are managed in the **Sesami Admin Portal**.

1. From the Sesami side menu, click **Admin Portal**.
2. Click **Open Admin Portal**.
   {% endstep %}

{% step %}

#### Assign locations (if using multi-location)

If you have multiple locations:

1. Under **Locations & Resources**, click **Add Location**
2. Select the location(s) where this service is offered
3. Assign resources for each location
4. Save your changes

See: [Locations](/admin/locations)
{% endstep %}

{% step %}

#### Assign resources

Resources are what your service needs to be bookable:

1. Under **Resources**, select required resource types:
   * **Team member** - Staff who deliver the service
   * **Room** - Physical space needed
   * **Equipment** - Tools or machines required
2. Optionally, assign **specific resources** (or leave it open to any available resource of that type)
3. Save your changes

See: [Resources](/admin/resources)

{% hint style="warning" %}
**Important**: Every service must have at least one resource type assigned, or no availability will appear!
{% endhint %}
{% endstep %}
{% endstepper %}

## Key Service Features

Once your service is created, you can enable additional features:

### Instant Booking

Skip the Shopify checkout for faster bookings:

* **Just Book** - No Shopify order created (perfect for free consultations)
* **Book + Create Order** - Create Shopify order with manual payment capture

Booking happens in just 3 steps: pick a time, enter details, confirm.

See: [Instant Booking](/booking/booking-features/instant-booking)

### Group Appointments

Allow multiple customers to book the same time slot:

* Perfect for classes, workshops, tours, seminars
* Set maximum number of participants per slot
* Available on Pro and Premium plans

See: [Group Appointments](/booking/booking-features/group-appointments)

### Cancellations & Rescheduling

Let customers manage their own bookings:

* Allow customers to cancel appointments
* Allow customers to reschedule appointments
* Set how many hours before an appointment changes are allowed
* Option to automatically refund on cancellations
* Available on Pro and Premium plans

See: [Cancellations, Rescheduling, and Refunds](/booking/booking-features/cancellations-rescheduling)

### Same Day Bookings

Control whether customers can book on the same day:

* **Disable same day bookings** entirely
* **Round-up starting interval** - Set minimum advance notice (15 or 30 minutes)

See: [Same Day Bookings and Round Up Starting Interval](/booking/availability/same-day-bookings)

### Buffer Times

Add time between appointments for preparation:

* **Before each appointment** - Prep time
* **After each appointment** - Cleanup time
* **Before first appointment of the day** - Opening setup

Buffer times appear only in the admin calendar, not for customers.

See: [Buffer Times Between Bookings](/booking/availability/buffer-times)

### Flexible Slots

Control when customers can book:

* Set slot intervals (15, 30, 45, or 60 minutes)
* Service-specific configuration
* Match booking times to your actual operations

See: [Flexible Slots](/booking/availability/flexible-slots)

### Storefront Calendar Start Date

Set a specific start date for the booking calendar:

* Calendar opens to your chosen date instead of today
* Perfect for seasonal services, future events, or pre-sales

See: [Storefront Calendar Start Date](/booking/availability/calendar-start-date)

### Online Meeting Links

Add virtual meeting links for online appointments:

* Add Zoom, Google Meet, Skype, or Teams links
* Include in confirmation emails automatically
* Can be set per team member or per service

See: [Adding Online Meeting and Conferencing Links](/booking/booking-features/online-meeting-links)

## Managing Services

### View all services

In **Sesami > Services**, you can:

* See all services linked to Shopify products
* View service status (enabled/disabled)
* Access configuration for each service
* See which locations each service is offered at

### Edit a service

1. Go to **Sesami > Services**
2. Find the service and click **Manage**
3. Make your changes
4. **Save**

Changes take effect immediately.

### Remove a service

To remove a service from Sesami:

1. Go to **Sesami > Services**
2. Find the service and click **Manage**
3. Scroll to **Remove Service**
4. Type **Remove** to confirm
5. Click **Remove** again

{% hint style="warning" %}
**Important**: This removes the service from Sesami's booking system but does NOT delete the product from your Shopify store.
{% endhint %}

## Service Configuration Checklist

Before launching a service, verify:

* [ ] **Shopify product created** with duration variants
* [ ] **Service added** in Sesami
* [ ] **Locations assigned** (if using multi-location)
* [ ] **Resources assigned** (team members, rooms, equipment)
* [ ] **Resource availability set** for assigned resources
* [ ] **Special features configured** (instant booking, group appointments, etc.)
* [ ] **Test booking completed** from customer view
* [ ] **Confirmation email tested** and verified

## Best Practices

* **Use clear names** - "60-Minute Massage" is better than "Massage Package A"
* **Use variants for durations** - Don't create separate products for each duration
* **Assign resources carefully** - Ensure required resources are actually needed
* **Set realistic buffer times** - Don't make buffers so long that availability disappears
* **Test customer experience** - Book a test appointment to see what customers see
* **Configure locations first** - If using multi-location, set up locations before services

## Troubleshooting

<details>

<summary>Service not appearing in Sesami</summary>

Check:

* Product is **created in Shopify** with proper variants
* Product variants use correct format: "30 Minutes", "1 Hour", "90 Minutes"
* You've **refreshed** the Sesami services page

</details>

<details>

<summary>No time slots appearing for service</summary>

The most common issue! Check:

1. **Resources are assigned** to the service
2. **Availability is set** for assigned resources
3. **Timezone is correct** in Sesami Settings
4. **Booking window** allows future bookings
5. **No block-offs** covering all available dates

See: [Quickstart Troubleshooting](/get-started/quickstart#troubleshooting)

</details>

<details>

<summary>Customer can't complete booking</summary>

Check:

* Service is **enabled**
* Resources have **availability** for the selected time
* Selected location (if multi-location) has **resources assigned**
* No **conflicting bookings** at that time

</details>

## Related

* [Quickstart Guide](/get-started/quickstart) - Complete setup walkthrough
* [Resources](/admin/resources) - Assign team members, rooms, equipment
* [Locations](/admin/locations) - Multi-location setup
* [Instant Booking](/booking/booking-features/instant-booking) - Skip checkout
* [Group Appointments](/booking/booking-features/group-appointments) - Multi-participant bookings
* [Set Up Resource Availability](/booking/availability/resource-availability) - Configure working hours


# Resources

After you create a service in Sesami, you need to create resources for it. Resources represent what gets booked — the availability behind your service.

Depending on your business, a resource might be:

* A **team member** — a stylist, instructor, therapist, or guide
* A **service time** — a time block for a service that doesn't require a specific person
* An **event time** — a scheduled event like a class, workshop, or tasting
* A **room** — treatment room, studio, tasting room
* A piece of **equipment** — camera kit, machine, chair, bay

{% hint style="info" %}
Think of it this way: a **service** is what you sell, and a **resource** is what you schedule. A "Haircut" is the service; "Alex the Stylist" is the resource.
{% endhint %}

## Resource Types

Resource types are categories that group your resources. Define the types that match your business model.

**Common resource types:**

| Resource type | Example resources           |
| ------------- | --------------------------- |
| Team member   | Alex, Jordan, Sam           |
| Room          | Treatment Room 1, Studio A  |
| Equipment     | Camera Kit A, Laser Machine |
| Event         | Saturday Yoga, Wine Tasting |

### Create Resource Types

1. Go to **Sesami Admin Portal > Resources**
2. Open **Resource types**
3. Create the types you need (e.g., Team member, Room)

## Create Resources

Once your types are set up, add individual resources under each type.

1. Go to **Sesami Admin Portal > Resources**
2. Select a resource type (e.g., Team member)
3. Click **Add resource**
4. Add a name and any optional information (bio, image, etc.)
5. **Save**

Name resources clearly (e.g., "Alex", "Room 1", "Camera Kit A") — customers may see these names when selecting a resource on the storefront.

## Resource Availability

Each resource has its own availability schedule and timezone.

1. Go to **Sesami Admin Portal > Resources > \[select resource]**
2. Set the resource's **timezone** — useful for international teams
3. Define availability by clicking on individual dates and setting time intervals
4. Set the **Availability Range** for how far in advance bookings can be made
5. **Save**

## Assigning Resources to Services

After creating resources, assign them to services so Sesami knows what to schedule:

1. Go to **Sesami Admin Portal > Services**
2. Select a service
3. Choose the **resource type** to assign
4. Assign the necessary resources

### Assignment Options

| Option                       | What it does                                                                                                                       |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **Selectable in Experience** | Lets the customer choose a specific resource (e.g., pick their preferred stylist) or book with "Any available" (assigned randomly) |
| **Blocks during booking**    | Marks the resource as unavailable for other bookings during the appointment time                                                   |

<figure><img src="/files/9DxQKfBvaf5ay4sxQzRv" alt=""><figcaption></figcaption></figure>

## Multi-Resource Bookings

For services that need multiple resources simultaneously, assign multiple resource types to the service. Sesami will only show slots where every required resource is available.

**Example:** A couple massage service assigned to:

* Resource type: Therapist (need 2 available)
* Resource type: Room (need 1 available)

Only time slots where 2 therapists **AND** the room are free will appear on the calendar.

{% hint style="warning" %}
Sesami checks that **all** assigned resources are available. If even one required resource is busy, that slot won't be shown.
{% endhint %}

<figure><img src="/files/taBtAOZckkAHUZBKm743" alt=""><figcaption></figcaption></figure>

## Block Out Dates (Holidays, Events)

Use a dedicated resource to block dates across multiple services:

1. Create a new resource (e.g., "Holiday Blocker")
2. In its availability settings, make specific dates **unavailable** (e.g., December 25, January 1)
3. Assign the "Holiday Blocker" resource to every service you want blocked on those dates

Since Sesami requires all assigned resources to be available, services linked to the blocker won't show slots on blocked dates.

## Related

* [Services](/admin/services) — create and configure bookable services
* [Resource Availability](/booking/availability/resource-availability) — detailed availability setup
* [Locations](/admin/locations) — multi-location setup


# Users

{% hint style="info" %}
Note: “Users” are **not** the same as “Resources.” Resources are bookable/required entities (team members, rooms, equipment). Users are people who can log into admin tools.
{% endhint %}

## Admin Portal: Users (access, roles, and permissions)

This guide explains how people in your organization access Sesami admin tools and what to consider when granting permissions.

### Common user roles

* **Owner / Admin** - Full access to all features and settings
* **Location Manager** - Manages bookings, resources, and services for their location(s)
* **Team Member / Resource Operator** - Views their own schedule, checks in customers, and manages their own bookings
* **Front Desk / POS Staff** - View and create bookings, limited admin access
* **Read-only** - View bookings and schedules only

### Onboarding a new user (checklist)

{% stepper %}
{% step %}

#### Create or confirm the Shopify staff account

Ensure the person has a Shopify staff account (create one if needed).
{% endstep %}

{% step %}

#### Assign the correct role/permissions

Grant the appropriate role or permissions that match their responsibilities (Owner/Admin, Manager, Front desk/POS, Read-only).
{% endstep %}

{% step %}

#### Confirm they can access the Sesami admin pages

Verify the user can sign in and access the Sesami admin pages they need.
{% endstep %}
{% endstepper %}

<figure><img src="/files/P5bO3fiOJsIgzfkcGNVN" alt=""><figcaption></figcaption></figure>

#### User limits by plan

The number of users you can create depends on your subscription plan:

| Plan    | User limit     | Access level         |
| ------- | -------------- | -------------------- |
| Small   | 1 user         | Shop: read and write |
| Pro     | Up to 5 users  | Shop: read and write |
| Premium | Up to 10 users | Full user access     |


# Shopify


# Sesami and Shopify

Sesami integrates directly with your Shopify store to add booking and appointment functionality alongside your existing products.

## How Sesami Works with Shopify

Sesami uses Shopify's product system to power bookings:

* **Products become services** — you create a Shopify product with a "Duration" variant, then link it to Sesami as a bookable service
* **Orders track bookings** — when a customer books, a Shopify order is created, keeping all your revenue and reporting in one place
* **Checkout handles payment** — bookings go through Shopify's native checkout (or use Instant Booking to skip it)

## Shopify Requirements

{% hint style="warning" %}
Sesami requires one of the standard Shopify plans: **Basic**, **Shopify**, **Advanced**, or **Shopify Plus**.

The **Shopify Starter plan is not compatible** — it doesn't include an online store.
{% endhint %}

## What's Supported

| Shopify Feature         | Sesami Support                      |
| ----------------------- | ----------------------------------- |
| Online Store 2.0 themes | App embed — no code needed          |
| Legacy themes           | Supported (may need manual install) |
| Shopify POS             | Book and view appointments in-store |
| Shopify Plus            | Recommended with Premium plan       |
| Shopify Flow            | Automate tagging, workflows         |
| Shopify Markets         | Multi-language storefront support   |

## Installing Sesami

1. Go to the [Sesami page on the Shopify App Store](https://apps.shopify.com/sesami) or enter your store URL at sesami.co
2. Click **Add app** and approve permissions
3. Choose a plan — your **30-day free trial** starts immediately
4. Follow the [Quickstart Guide](https://github.com/sesamiapp/gitbook/blob/master/apps-integrations/quickstart.md) to configure your first service

## Omnichannel: Online + In-Store

Sesami bridges online and in-store experiences:

* Customers book online through your Shopify storefront
* Staff can book and manage appointments via Shopify POS
* All bookings sync to a unified calendar

This lets you convert online visitors into in-store appointments and manage everything from one platform.

## Related

* [Quickstart Guide](/get-started/quickstart) — set up your first bookable service
* [Shopify POS](/apps-integrations/shopify/pos) — using Sesami with Point of Sale
* [Pricing](/get-started/about-sesami/pricing) — plans and pricing


# Online Store


# Manual Install

If the booking button isn't appearing on your product page and Sesami is set up correctly, you may need a manual installation — especially with third-party or custom themes.

## When Manual Installation Is Needed

* Your theme is a third-party theme not available in the Shopify Theme Store
* Your theme is heavily customized
* Your theme is a legacy (pre-2.0) Shopify theme
* The Sesami app embed isn't compatible with your theme's structure

{% hint style="info" %}
**Before manual installation**, make sure you've completed the standard setup first. Most Shopify 2.0 themes work with the app embed without any code changes.
{% endhint %}

## Step 1: Generate Your Snippet

Start with the **Sesami Experience Configurator** to generate your booking snippet:

1. Go to [sesami.dev/docs/sesami-experience/configurator](https://sesami.dev/docs/sesami-experience/configurator/)
2. Configure your Shop ID, Service ID, experience version, and styling
3. Copy the generated `<sesami-experience>` snippet

## Step 2: Add to Your Theme

Place the snippet in your product page template where you want the booking button to appear.

### With Sesami Instant Booking

If the service uses Sesami Instant Booking, the snippet is self-contained — paste it and you're done. The full booking flow happens within the widget.

### With Shopify Checkout

If the service uses Shopify checkout (add to cart), you'll need to integrate the snippet with your theme's cart and checkout functionality. This includes connecting the add-to-cart action and ensuring booking data flows through to the order.

For detailed integration instructions, refer to the [Sesami Developer Docs](https://sesami.dev). The dev docs cover:

* Add-to-cart button integration
* Showing date and time on the cart page
* Disabling the add-to-cart button before a time is selected
* Customizing the Sesami button style
* Hiding the duration field from the product page
* Multi-language storefront integration

## Recommended Themes

We recommend using a Shopify theme from the official [Shopify Theme Store](https://themes.shopify.com/themes). These themes follow Shopify's standardized structure and are fully compatible with Sesami's app embed.

## Need Help?

* **Contact your theme developer** for theme-specific support
* **Hire a Shopify Expert**: [experts.shopify.com](https://experts.shopify.com/)
* **Sesami Professional Services**: [Professional Services](/get-started/onboarding/professional-services)
* **Sesami support**: <help@sesami.co>

## Related

* [Embed on Custom Pages](/apps-integrations/shopify/online-store/embed-on-custom-pages) — add booking buttons to homepage or other pages
* [Cart Verification Script](/apps-integrations/shopify/online-store/cart-verification-script) — validate bookings at checkout


# Embed on Custom Pages

By default, Sesami works on the product page. You can also embed the Sesami booking experience on other pages — like the homepage, contact page, a landing page, store locator, or any custom page.

## Using the Sesami Experience Configurator

The fastest way to create an embeddable booking widget is the **Sesami Experience Configurator**:

1. Go to the configurator: [sesami.dev/docs/sesami-experience/configurator](https://sesami.dev/docs/sesami-experience/configurator/)
2. Configure your settings:
   * Shop ID and Service ID
   * Location and variant
   * Experience version (Classic or V2)
   * Button styling (colors, size, text)
   * Calendar behavior and availability display
3. The configurator generates a `<sesami-experience>` HTML snippet
4. Copy the snippet and paste it wherever you want the booking button to appear

### With Sesami Instant Booking

If the service uses Sesami Instant Booking, simply pasting the generated snippet is all you need — the entire booking flow happens within the Sesami widget, no Shopify checkout required.

### With Shopify Checkout

If the service uses Shopify checkout (add to cart), you'll need to integrate the snippet with your theme's cart and checkout flow. This includes:

* Connecting the add-to-cart action to your Shopify theme
* Ensuring the checkout flow works correctly with the booking data

For this setup, review the full integration guide in the [Sesami Developer Docs](https://sesami.dev) or work with a developer.

## Common Placements

* **Homepage** — a "Book Now" button in the hero section
* **Contact page** — let visitors book directly
* **Landing pages** — dedicated booking pages for campaigns
* **Store locators** — embed booking alongside location listings
* **Footer** — a persistent booking link across all pages

## Need Help?

* **Developer docs**: [sesami.dev](https://sesami.dev)
* **Sesami support**: <help@sesami.co>
* **Professional Services**: [Professional Services](/get-started/onboarding/professional-services)

## Related

* [Manual Install](/apps-integrations/shopify/online-store/manual-install) — custom theme integration
* [Instant Booking](/booking/booking-features/instant-booking) — booking without Shopify checkout


# Cart Verification Script

Appointments in the cart can become unavailable if someone else books the same slot first.

The **Cart Verification Script** checks availability and prevents double bookings by validating that the selected slot is still available.

{% hint style="info" %}
What customers see

A small storefront notification appears (bottom-left) when Sesami validates the booking.
{% endhint %}

## Enable / manage it

{% tabs %}
{% tab title="Online Store 2.0 themes" %}
This setting may be available as a storefront setting / theme integration option depending on your theme setup.
{% endtab %}

{% tab title="Vintage themes" %}
Go to:

**Sesami → Settings → Validate appointments in cart**

Then enable the checkbox.
{% endtab %}
{% endtabs %}

## Styling

You can customize the style (colors, fonts, etc.).\
See: “How to customize the styles of the Cart Verification Script”.


# Customize Cart Verification Script Styles

If the default Cart Verification Script message doesn't match your store's look, you can customize it with CSS.

## CSS Selectors

Use these selectors to style the verification message:

* `sesami-warning-list` — the container for all warning messages
* `sesami-warning-item` — each individual warning message

## Examples

### White background with max width

```css
sesami-warning-list {
    background: #FFF;
    max-width: 400px;
}
```

### Dark theme (black background, white text)

```css
sesami-warning-list {
    background: #000;
    color: #FFF;
    max-width: 400px;
}

sesami-warning-item {
    color: #FFF;
}
```

## Where to add the CSS

Add your custom CSS to your Shopify theme:

1. Go to **Shopify Admin > Online Store > Themes > Customize**
2. Open **Theme Settings** (gear icon)
3. Find the **Custom CSS** section (or add a custom CSS block)
4. Paste your styles and save

## Need help?

If you're not comfortable editing CSS, contact us at <help@sesami.co> with your desired style (described or as a design file) and our team will do it for you at no additional cost (paid plans only).

## Related

* [Cart Verification Script](/apps-integrations/shopify/online-store/cart-verification-script) — how the script works and how to enable it


# Remove the Quantity Dropdown Menu

If your service only allows one booking per time slot, removing the quantity selector from the product page helps prevent customer errors — like selecting a quantity of 2 for a single appointment.

## Why Remove It

When a customer selects more than one quantity for a booking product, the extra quantities may show as unavailable in your calendar (since there's only one slot per time). Removing the selector ensures each add-to-cart action equals one booking.

## Option 1: Hide via Theme Settings

Many Shopify themes have a built-in option to hide the quantity selector:

1. Go to **Shopify > Online Store > Themes > Customize**
2. Navigate to your product page template
3. Look for a **Quantity** toggle or visibility setting in the product section options
4. Disable it
5. **Save**

This is the simplest approach and doesn't require any code changes.

## Option 2: Edit Theme Files

If your theme doesn't have a built-in toggle, you can hide the quantity selector by editing the theme code:

1. Go to **Shopify > Online Store > Themes > Actions > Edit Code**
2. Find the product template file (often `sections/main-product.liquid` or similar)
3. Locate the quantity input/selector HTML
4. Hide it with CSS (`display: none`) or remove the HTML block
5. **Save**

{% hint style="warning" %}
Editing theme files requires some coding knowledge. If you're not comfortable, ask your theme developer or hire a [Shopify Expert](https://experts.shopify.com/).
{% endhint %}

## Related

* [Catalog and Products](/apps-integrations/shopify/catalog-and-products) — product setup for Sesami
* [Manual Install](/apps-integrations/shopify/online-store/manual-install) — custom theme integration


# POS

## Sesami on Shopify POS

{% embed url="<https://sesami.co/wp-content/uploads/2025/01/2024-unwrapped-sesami-pos.mp4>" %}

Sesami integrates directly with Shopify POS, allowing your staff to create and manage appointments, check-ins, and payments from a single interface.

When a customer is pre-selected in Shopify POS, the checkout experience becomes faster and more personalized for both staff and customers.

This integration was designed to look and feel like a native Shopify POS component, creating a seamless in-store booking experience.

#### “Book Now”

Use the **Book Now** tile to create new appointments directly from Shopify POS.

1. Select the service
2. Select the resource or staff member
3. Choose the day and time
4. Add the appointment to the cart

From the cart, you can:

* Proceed to payment, or
* Mark the order as unpaid.

#### “Bookings”

Use the **Bookings** tile to view and manage existing appointments.

From the Bookings tile, you can:

* view upcoming appointments,
* add bookings to the cart and collect payments,
* mark customers as checked in,
* Or mark appointments as no-show.

## FAQ

#### Can I book appointments directly from Shopify POS?

Yes. Sesami allows merchants to create and manage appointments directly inside Shopify POS.

#### Are bookings synced with the Sesami calendar?

Yes. Appointments created through Shopify POS automatically appear in the Sesami calendar.

#### Can I create bookings in the POS without a Shopify order?

No. This option is only available for bookings made through the Desktop and in the Online Store.

#### Can I use Sesami for in-store appointments and online bookings?

Yes. Sesami supports both online bookings and in-store appointment bookings through Shopify POS.

#### Does Sesami work with Shopify POS on mobile devices?

Yes. Shopify POS can run on supported iPads and POS hardware compatible with Shopify POS.


# POS & Multi-Location

Integrated with the POS system, Multi-Location ensures smooth and efficient operations.

Use Sesami with Shopify POS to manage and book appointments in-store. Sesami uses Shopify's latest POS extension framework for a seamless, fast integration.

## POS Tiles

Sesami adds two tiles to your Shopify POS:

### Bookings Tile

View and manage all bookings for the current location:

* See today's schedule and upcoming appointments
* View past bookings
* Check booking details, status, and customer info

### Book with Sesami Tile

Create new bookings directly from POS:

* Staff can book appointments for walk-in or phone customers
* Select service, resource, date, and time
* Booking is created instantly

<div><figure><img src="/files/wFCqdSYLDRJcvjw3CEln" alt=""><figcaption></figcaption></figure> <figure><img src="/files/ahilxBc3NJtIqRt9C0HH" alt=""><figcaption></figcaption></figure></div>

## Setting Up POS with Sesami

1. Download the **Shopify POS app** from the Apple App Store
2. Log in with your Shopify store credentials
3. The Sesami POS tiles will appear automatically
4. Start viewing and creating bookings from the POS device

## Multi-Location with POS

If your business has multiple locations, Sesami maps to your Shopify locations for automatic location detection — staff don't need to manually switch locations when using POS.

Each location operates independently:

* **Own resources and availability** — each location has its own schedule
* **Location-specific bookings** — POS staff see only their location's bookings
* **Customer location selection** — customers choose a location when booking on the storefront

### Location Mapping

To connect your Shopify locations with Sesami locations, share your **Shopify location IDs** with us and we'll set up the mapping for you.

{% hint style="info" %}
Contact <help@sesami.co> with your Shopify location IDs to get POS multi-location set up.
{% endhint %}

For location setup, see [Locations](/admin/locations).

## Related

* [Locations](/admin/locations) — configure multiple business locations
* [Sesami Admin Portal](/admin/sesami-admin-portal) — manage bookings across locations


# Collaborator Access

When you need help from the Sesami support team with your store setup, we may request [**Collaborator Access**](https://help.shopify.com/en/manual/your-account/staff-accounts/collaborator-accounts) to your Shopify account. This is a secure, Shopify-native way to grant temporary access without sharing your login credentials.

## What is Collaborator Access?

Collaborator Access is a Shopify feature that allows an app partner or agency to access your Shopify admin with specific permissions you control. It's the recommended way for Sesami's team to assist with:

* Theme installation and configuration
* Troubleshooting booking issues
* Custom setup and integrations
* White-glove setup services

## How It Works

{% stepper %}
{% step %}

#### Sesami sends a collaborator request

When you contact us for support that requires admin access, our team will send a collaborator request to your store using your Shopify store URL.
{% endstep %}

{% step %}

#### You receive and review the request

You'll see the request in your Shopify admin. Go to:

**Shopify Admin > Settings >** [**Users**](https://admin.shopify.com/settings/organization-account)

Click the **Requests** tab to see pending collaborator requests.
{% endstep %}

{% step %}

#### Review and adjust permissions

Before accepting:

1. Click the collaborator request from Sesami
2. Review the requested permissions in the [**Roles**](https://help.shopify.com/en/manual/your-account/users/roles/manage-roles) section
3. Adjust permissions if needed — you control exactly what the collaborator can access
   {% endstep %}

{% step %}

#### Accept the request

Click **Accept request** to grant access. You can revoke access at any time from the same page.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Collaborator access does not count toward your Shopify staff limit and can be removed at any time.
{% endhint %}

## Revoking Access

When the support work is complete, you can remove collaborator access:

1. Go to **Shopify Admin > Settings > Users**
2. Find the collaborator account
3. Click **Remove** to revoke access

## Learn More

For full details on collaborator accounts, see [Shopify Help: Collaborator Accounts](https://help.shopify.com/en/manual/your-account/users/security/collaborator-accounts).


# Catalog and Products

Sesami uses Shopify products to represent bookable services. Understanding how products and inventory work with Sesami helps avoid common issues.

## Setting Up a Booking Product

To create a product that works with Sesami:

1. Go to **Shopify > Products > Add Product**
2. Add a name, description, and image as usual
3. Under **Variants**, add an option called **Duration**
   * The option name must be exactly `Duration` (case-sensitive, no trailing spaces)
   * Add values in a valid format: `30`, `45 m`, `90 minutes`, `3h`, or `1 hour`
4. Under **Inventory**, uncheck **Track quantity**
5. Under **Shipping**, uncheck **This is a physical product**
6. **Save**

{% hint style="warning" %}
**Track quantity must be off.** If inventory tracking is enabled, customers will eventually see "Sold out" instead of the booking calendar.
{% endhint %}

{% hint style="info" %}
**Shipping must be off** for service-only products. Otherwise customers will be asked for shipping information at checkout.
{% endhint %}

## Duration Variant Format

Sesami reads the "Duration" variant to determine time slot length. Accepted formats:

| Format                | Example                       |
| --------------------- | ----------------------------- |
| Minutes (number only) | `30`                          |
| Minutes with unit     | `45 m`, `90 minutes`          |
| Hours                 | `3h`, `1 hour`                |
| Combined with text    | `45 minutes: express service` |

Time frames must fit within a single day (00:00 to 24:00).

## Inventory and "Sold Out"

If your booking product shows "Sold out" instead of the calendar:

1. Go to **Shopify > Products > \[your product]**
2. For each variant, uncheck **Track quantity**
3. **Save**

Sesami manages availability through its own scheduling system — it doesn't use Shopify inventory counts.

## Products with Physical Items

If you sell products that include both a booking and a physical item (e.g., a gift box with a consultation), keep in mind:

* The Duration variant tells Sesami this is a bookable product
* You can still set a price and use Shopify checkout
* For physical fulfillment, manage shipping settings as needed on the product

## Related

* [Orders](/apps-integrations/shopify/orders) — how Sesami bookings appear as Shopify orders
* [No Availability](/get-started/onboarding/troubleshooting/no-availability) — troubleshooting missing time slots


# Orders

When a customer books through Shopify Checkout, Sesami creates a Shopify order. Here's how booking orders work and how to manage them.

{% hint style="info" %}
**Sesami Instant Booking** has an option to create or not create a Shopify order. If order creation is disabled, bookings are recorded in Sesami only.
{% endhint %}

## What a Booking Order Looks Like

A Sesami booking order in Shopify includes:

* The **service product** with the Duration variant (e.g., "60 Minutes")
* **Line item properties** with booking details: date, time, resource, and location
* Standard Shopify order data: customer info, payment, order number

## Order Fulfillment

Since bookings are services — not physical products — there's nothing to ship. You can handle fulfillment in whichever way works for your team:

* **Leave orders unfulfilled** — this is the simplest approach and doesn't affect the booking in any way
* **Fulfill after the appointment** — useful if you want a clean order list showing only upcoming appointments as "unfulfilled"
* **Auto-fulfill at booking** — if you prefer all orders marked as complete right away

{% hint style="info" %}
Fulfillment status has **no effect** on the booking itself. Whether an order is fulfilled or not, the appointment remains active in Sesami.
{% endhint %}

### Auto-Fulfilling Service Orders

If you want to automate fulfillment for service orders, you can:

* Use **Shopify Flow** to auto-fulfill orders tagged with a specific tag
* Use a third-party fulfillment app for digital/service products

## Refunds

Refunds for booking orders follow the standard Shopify refund process:

1. Go to **Shopify Admin > Orders > \[select the order]**
2. Click **Refund**
3. Process the refund as needed

{% hint style="warning" %}
Refunding an order in Shopify does **not** automatically cancel the booking in Sesami. Cancel the appointment in Sesami separately if needed.
{% endhint %}

## Related

* [Customers](/apps-integrations/shopify/customers) — how customer data flows between Sesami and Shopify
* [Catalog and Products](/apps-integrations/shopify/catalog-and-products) — setting up products as bookable services
* [Cancellations & Rescheduling](/booking/booking-features/cancellations-rescheduling) — managing appointment changes
* [Sesami Instant Booking](/booking/booking-features/instant-booking) — booking without going through Shopify Checkout


# Customers

How customer data flows depends on which booking method is used.

## Shopify Checkout

When a customer books through Shopify checkout, a Shopify order and customer record are created automatically. This gives you full access to Shopify's customer management tools.

## Sesami Instant Booking

With [Sesami Instant Booking](/booking/booking-features/instant-booking), customers skip Shopify checkout entirely — so no Shopify customer record is created automatically.

To capture and manage customer data with Sesami Instant Booking, use the [Klaviyo integration](/apps-integrations/klaviyo) to track booking events and build customer profiles.

## Auto-Tag Customers with Shopify Flow

For customers who go through Shopify checkout, you can automatically tag them using Shopify Flow. This is useful for:

* **Segmentation** — identify customers who've booked vs. those who haven't
* **Marketing** — create targeted campaigns in Klaviyo or other tools
* **Reporting** — filter and track booking customers in Shopify

### How to Set It Up

1. Go to **Shopify > Apps > Shopify Flow**
2. Create a new workflow
3. Set the **trigger** to "Order created"
4. Add a **condition** to check if the order contains a Sesami booking product (e.g., check for a specific product tag or the "Duration" line item property)
5. Add an **action** to tag the customer (e.g., "booked-appointment")
6. **Save and activate** the workflow

{% hint style="info" %}
Once customers are tagged, you can use these tags in Klaviyo, Shopify Email, or other marketing tools to create targeted segments.
{% endhint %}

## Customer Data in Sesami

Sesami stores minimal customer data needed to function:

* Customer name
* Email address
* Order ID

For more information on how Sesami handles data, see our [Privacy Policy](https://sesami.co/privacy-policy).

## Related

* [Klaviyo](/apps-integrations/klaviyo) — send targeted emails based on booking data
* [Sesami Instant Booking](/booking/booking-features/instant-booking) — booking without Shopify checkout
* [Orders](/apps-integrations/shopify/orders) — how bookings appear in Shopify orders


# Using Shopify Product Fields to Collect Additional Information During the Booking Process

When you need to collect extra information from customers during the booking process, such as participant names, dietary restrictions, preferences, notes, or any other details required before an appointment takes place, you can leverage **Shopify Product Fields (Line Item Properties)** directly on your service pages.

The information collected during checkout is stored within the Shopify order and can also be displayed throughout the Sesami ecosystem, including:

* Sesami booking details
* Google Calendar event descriptions
* Notifications for customers and staff (when using Sesami Flows)

#### Common examples include:

* Participant or guest names
* Dietary restrictions
* Consultation preferences
* Special requests
* Internal reference numbers
* Additional notes

<div><figure><img src="/files/GotwDMGeyzKbyGgEh7x7" alt=""><figcaption></figcaption></figure> <figure><img src="/files/N5hDo3pBpEPVx4snghcP" alt=""><figcaption></figcaption></figure></div>

{% embed url="<https://demo.sesami.co/products/consultation>" %}

Implementing Shopify Product Fields requires editing your Shopify theme. If you have a developer, they can configure this directly within your Shopify store.

You may also find Shopify's documentation helpful:

* <https://shopify.dev/docs/themes/architecture/templates/product#line-item-properties>

{% hint style="info" %}
**Note:** Implementation details may vary depending on your Shopify theme
{% endhint %}

If you don't have a developer available, the Sesami team may also be able to assist. Please contact our team to discuss your requirements.

### Related <a href="#related" id="related"></a>

* [Sesami Forms App](/apps-integrations/sesami-forms-app) — requires [Sesami Instant Booking](https://help.sesami.co/booking/booking-features/instant-booking)


# Edit Shopify Confirmation Email to Include Product Options

By default, Shopify's order confirmation email doesn't show line item properties like the booking date and time. You can customize it to include this information.

## What This Changes

After this edit, your Shopify order confirmation email will display booking details (date, time, duration, and any custom fields) alongside the product information.

## Steps

1. Go to **Shopify > Settings > Notifications**
2. Click **Order Confirmation**
3. In the email template, search for:

```
list__item-title
```

4. Place the following snippet directly below that line:

```liquid
{% assign property_size = line.properties | size %}
{% if property_size > 0 %}
<p>
  {% for p in line.properties %}
    {% if p.first contains "_options" %}
      {% continue %}
    {% endif %}
    {% unless p.last == blank %}
      <small>{{ p.first }}:</small>
      {% if p.last contains '/uploads/' %}
        <a target="_blank" href="{{ p.last }}"><small>Link</small></a>
      {% else %}
        <small>{{ p.last }}</small>
      {% endif %}
      <br>
    {% endunless %}
  {% endfor %}
</p>
{% endif %}
```

5. Click **Save**

## Result

After the edit, the order confirmation email will show booking properties like:

* **Date**: March 15, 2026
* **Time**: 10:00 AM
* **Duration**: 60 minutes
* Any custom fields collected during booking

{% hint style="info" %}
This only affects the **Shopify** order confirmation email. Sesami's own confirmation emails already include booking details by default.
{% endhint %}

## Related

* [Notification Emails](/notifications/notification-emails) — Sesami's built-in email notifications
* [Customizing Notification Emails](/notifications/customizing-notification-emails) — customize Sesami emails


# Klaviyo

Klaviyo is a marketing automation platform for email and SMS. Sesami and Klaviyo are strategic partners, and you can send Sesami booking events into Klaviyo to power confirmations, reminders, and follow-ups.

## What You Can Do

* **Appointment confirmations** — email or SMS the moment a booking is made
* **Appointment reminders** — 24 hours before, 1 hour before, or custom timing
* **Rescheduling & cancellation notices** — keep customers informed of changes
* **Post-appointment flows** — review requests, rebook offers, loyalty rewards
* **Customer segmentation** — tag customers who booked, target by service, etc.

## How It Works

Sesami sends booking events to Klaviyo via **Sesami Flows**. Each event (appointment created, rescheduled, canceled, completed, reminder) carries rich data — service, time, resource, customer management link, and more — that you can use in Klaviyo email and SMS templates.

## Setup

The full setup guide — including Flow presets, Klaviyo API key setup, and the complete list of available event properties — is here:

{% hint style="success" %}
[**Sesami Flows and Klaviyo**](/automations/sesami-flows-and-klaviyo) — step-by-step integration guide
{% endhint %}

## Related

* [Sesami Flows](/automations/sesami-flows) — the automation engine behind the integration
* [Notification Emails](/notifications/notification-emails) — Sesami's built-in email notifications
* [Customers](/apps-integrations/shopify/customers) — how customer data flows between Sesami, Shopify, and Klaviyo


# Google Calendar

Sesami syncs bookings to Google Calendar so your team can see appointments alongside their personal schedule.

## How It Works

* Sesami creates a separate calendar inside Google Calendar for each resource
* Bookings appear as **view-only** events — cancellations and rescheduling must be done through Sesami
* **Two-way sync**: Sesami events show in Google Calendar, and Google Calendar events marked as "Busy" block availability in Sesami
* Only present and future events are synced — past bookings are not synchronized

## Enabling Google Calendar Sync

{% stepper %}
{% step %}
Add a Gmail address to the resource

Before enabling Google Calendar sync, make sure the resource has a valid Gmail address in the Email field.

Go to Sesami → Resources → \[Select a resource] → Basics, enter the Gmail address, and click Save.

{% hint style="info" %}
**Note:** Google Calendar Sync only supports Gmail accounts. Other email providers (such as Outlook, Yahoo, or custom domains) cannot be connected.
{% endhint %}
{% endstep %}

{% step %}
Connect the Google Calendar

Go to Advanced → Google Calendar Sync, then click Send Calendar Invite

Complete the Google authorization process using the same Gmail account.&#x20;

Make sure to grant all requested permissions.
{% endstep %}

{% step %}
Done

Bookings for that resource will now appear in Google Calendar.
{% endstep %}
{% endstepper %}

<div><figure><img src="/files/0tjO2FNp4uZzyyuwxhM6" alt=""><figcaption></figcaption></figure> <figure><img src="/files/dCwhG1WG2moE8bxCD0xg" alt=""><figcaption></figcaption></figure> <figure><img src="/files/bFtB1dirf0gHgdviz07u" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Each resource must be connected to a **unique** Gmail address. You cannot sync the same email to multiple resources.
{% endhint %}

## Blocking Availability from Google Calendar

To block time in Sesami using your Google Calendar:

1. Create the event on your **Primary Calendar** (under "My calendars")
2. Set the event status to **Busy**

{% hint style="info" %}

* Events under "Other Calendars" will **not** block Sesami's availability
* Events marked as "Free" will **not** block Sesami availability
  {% endhint %}

## Sharing Calendars Across Resources

If you need a manager or admin to see all bookings in one place:

1. **Aggregate calendars**: Have each resource connect their Google Calendar to Sesami, then use [Google Calendar sharing](https://support.google.com/calendar/answer/37082) to share each calendar with a central account
2. **Automate with Zapier**: Use Zapier to [copy events between Google Calendars](https://zapier.com/apps/google-calendar/integrations/google-calendar) so bookings appear on other team members' primary calendars

{% hint style="info" %}
Calendar sharing and Zapier integrations are managed outside of Sesami. We can help guide setup — contact <help@sesami.co>.
{% endhint %}

## Troubleshooting

* **Bookings not appearing?** Verify that all permissions were granted during Google sign-in. Try disconnecting and reconnecting.
* **Not syncing to Apple devices?** See [Google Calendar with macOS, iOS](/apps-integrations/google-calendar/google-calendar-with-macos-os-x-ios-iphone-ipad)

## Related

* [Google Calendar with macOS, iOS (iPhone/iPad)](/apps-integrations/google-calendar/google-calendar-with-macos-os-x-ios-iphone-ipad) — Fix sync to Apple devices
* [Resource Availability](/booking/availability/resource-availability) — Managing resource schedules
* [Notification Emails](/notifications/notification-emails) — Calendar event (.ics) attachments in emails


# Google Calendar with macOS, iOS (iPhone/iPad)

If you've synced Sesami with Google Calendar but can't see the Sesami calendar on your Apple devices, follow the steps below.

## The Problem

By default, shared and app-created calendars in Google Calendar may not sync to Apple devices (Mac, iPhone, iPad). You need to explicitly enable them.

## Fix: Enable Sesami Calendar for Apple Devices

1. Make sure you're logged into the Google account connected to Sesami
2. Go to [google.com/calendar/syncselect](https://www.google.com/calendar/syncselect)
3. Under **Shared Calendars**, find the Sesami calendar (by default named "Sesami")
4. Check the box to enable it
5. Click **Save**

Your Sesami bookings should now appear in the Calendar app on your Mac, iPhone, and iPad.

{% hint style="info" %}
It may take a few minutes for the calendar to sync after enabling. Pull down to refresh on iOS, or reopen Calendar on macOS.
{% endhint %}

## Still Not Showing?

* Verify you're signed into the **same Google account** that's linked to your Sesami resource
* On iOS: Go to **Settings > Calendar > Accounts > \[your Google account]** and ensure Calendars is toggled on
* On macOS: Go to **System Settings > Internet Accounts > \[your Google account]** and ensure Calendars is checked
* Try removing and re-adding the Google account on the device

## Related

* [Google Calendar Sync](/apps-integrations/google-calendar) — set up Google Calendar sync with Sesami


# Sesami Forms App

Create custom intake forms to collect information from your customers during the booking process.

{% embed url="<https://sesami.co/wp-content/uploads/2025/01/2024-unwrapped-sesami-forms-app.mp4>" %}

## What You Can Do

* Add custom questions and fields to the booking page
* Mark fields as required or optional
* Collect information like health history, preferences, allergies, or special requests
* Use the collected data to prepare for appointments

{% hint style="info" %}
The Sesami Forms App is available through the **Sesami Admin Portal** and works with **Sesami Instant Booking** only.
{% endhint %}

## Setting Up Forms

1. Go to **Sesami Admin Portal > Apps**
2. Install the **Sesami Forms App**
3. Under the **Forms** section, create your form:
   * Add a form name
   * Enable it
   * Add the inputs and questions you need
4. Link the form to a service

## Use Cases

* **Salons** — ask about hair type, allergies, or style preferences
* **Wellness** — collect health intake information before a session
* **Consultations** — gather background info so you can prepare
* **Events** — ask about dietary restrictions or accessibility needs
* **Waivers** — add a terms acceptance checkbox (see [Waiver & Terms](/booking/booking-features/waiver-terms))

## Related

* [Sesami Instant Booking](/booking/booking-features/instant-booking) — required for Forms
* [Waiver & Terms](/booking/booking-features/waiver-terms) — collect terms acceptance during booking


# API and Building Apps

Sesami provides public API access and an app platform, giving developers the tools to extend Sesami and build custom integrations.

## API Access

Sesami's API lets you integrate Sesami into your own systems and workflows:

* **Automate tasks** — sync booking data with external systems
* **Build custom integrations** — connect Sesami with your CRM, ERP, or internal tools
* **Sync data** — pull appointment, service, and resource data into your own platforms
* **Create custom booking flows** — build tailored experiences using the Sesami SDK

All Sesami plans include **API and SDK access**.

{% hint style="success" %}
API documentation: [sesami.dev](https://sesami.dev)
{% endhint %}

## Sesami Apps

Sesami Apps let you build embedded experiences that run directly inside the Sesami Admin Portal and within the booking flow.

### What Sesami Apps Can Do

* **Admin Portal integration** — add a settings/configuration page where merchants manage your app
* **Booking flow extensions** — deploy functionality at specific points in the customer booking experience (e.g., collecting data during booking, displaying info in appointment details)
* **Enhance workflows** — extend Sesami's capabilities with custom features

### Example: Sesami Forms App

The [Sesami Forms App](/apps-integrations/sesami-forms-app) is a great example — it embeds an intake form directly in the booking flow, collecting customer information during the booking process.

### Public and Private Apps

* **Private apps** — built for a specific shop or internal use
* **Public apps** — shareable via the Sesami App Store

{% hint style="success" %}
Learn how to build Sesami Apps: [sesami.dev/docs/sesami-apps/intro](https://sesami.dev/docs/sesami-apps/intro/)
{% endhint %}

## Getting Started

1. Review the API and app documentation at [sesami.dev](https://sesami.dev)
2. Test in a Shopify development store (Sesami is free on dev stores)
3. Build and deploy your integration or app

## Support

* **Developer docs**: [sesami.dev](https://sesami.dev)
* **Support**: <help@sesami.co>
* **Enterprise integrations**: [Professional Services](/get-started/onboarding/professional-services)

## Related

* [Sesami Forms App](/apps-integrations/sesami-forms-app) — example of a Sesami App
* [Sesami Flows](/automations/sesami-flows) — automation without code


# Booking Experiences

The customer-facing booking flow and calendar interfaces that customers use to book appointments.

## What are Booking Experiences?

Booking experiences are the visual interfaces and interactions customers see when booking services on your online store. Sesami provides modern, fast-loading calendar experiences inspired by the Stendig calendar.

{% embed url="<https://sesami.co/wp-content/uploads/2025/01/2024-unwrapped-sesami-experience.mp4>" %}

## Features

* **Lightning fast** - Built with Lit web components for optimal performance
* **Standalone component** - Supports native or headless frameworks like Hydrogen
* **Highly customizable** - Use the [Experience Configurator](https://sesami.dev/docs/storefront-integration/configurator/) to customize to your liking
* **Not another Calendly clone** - Unique design by Sesami designers

## Calendar Experiences

Sesami offers two built-in calendar experiences:

### [Month/Day View](/booking/booking-experiences/month-day-view)

A modern monthly view that makes it easier for customers to find availability:

* Monthly view with clear "available days"
* For **Group Bookings**, shows how many spots are left per time slot
* Option to hide the **Any available** choice (if you want customers to pick a specific resource)

### [Multi-day View](/booking/booking-experiences/multi-day-view)

The classic calendar experience:

* Multi-day horizontal scrolling view
* Default calendar after Sesami installation
* Automatically available on service pages in most Shopify themes

## Switching Calendars

**Online Store 2.0 themes**: If your store uses an **Online Store 2.0** theme, you can switch calendar experiences from your theme editor, allowing you to experiment freely.

**Vintage themes**: If your store uses a **Vintage** theme, installation and switching calendars may require manual work (because the theme doesn't support the same app block switching flow).

## Additional Experience Features

### [Localizing the Experience](/booking/booking-experiences/localizing-experience)

Customize the booking experience for different languages and regions.

### [Resource Selection](/booking/booking-experiences/resource-selection)

Allow customers to choose their preferred resource (team member, room, etc.) during booking.

### [Browser Compatibility](/booking/booking-experiences/browser-compatibility)

Information about which browsers are supported.

## Bespoke Calendars (SDK)

If you need a fully custom booking experience, you can build a bespoke calendar using the **Sesami SDK**.

If you're unsure which calendar to use for your use case, start with the Month/Day view and only go bespoke if you have a strong reason (custom UX, unique rules, advanced flow, etc.).

See: [Sesami SDK Documentation](https://sesami.dev/docs/sesami-sdk/quick-start/)

## Related

* [Booking Features](/booking/booking-features) - Service-level features
* [Availability](/booking/availability) - Availability rules
* [Services](/admin/services) - Configure services


# Month/Day View

The modern monthly calendar view that makes it easier for customers to find availability.

## What is Month/Day View?

The Month/Day View (also called "New Sesami Booking Experience" or "V2 Calendar") is a modern, innovative calendar interface with a monthly layout that clearly shows available days and time slots.

[**View Demo →**](https://demo.sesami.co/products/cycling)

## Key Features

### Clear Monthly Overview

* **Monthly view** - Customers see an entire month at a glance
* **Available days highlighted** - Easy to spot which days have availability
* **Modern design** - Clean, intuitive interface

### Customizable Appearance

* **Brand colors** - Change the calendar's primary colors to match your brand
* **Configurable options** - Control what customers see and how they interact

### Group Booking Support

For [Group Appointments](/booking/booking-features/group-appointments), the calendar shows:

* **Available spots per slot** - "3 spots left", "1 spot left", etc.
* **Real-time availability** - Updates as bookings are made

### Resource Selection Options

* **Show "Any Available" option** - Let customers book with any available resource
* **Hide "Any Available" option** - Force customers to choose a specific resource (team member, room, etc.)

This is useful when you want customers to always choose their preferred provider.

See: [Resource Selection](/booking/booking-experiences/resource-selection)

## How to Enable

### For Online Store 2.0 Themes

If your store uses a [Shopify Online Store 2.0](https://help.shopify.com/en/manual/online-store/themes/managing-themes/upgrading-themes) theme:

1. Open **Sesami Settings**.
2. Go to **Calendar Experience**.

   Select:

   * **V2** in the **Sesami Shopify app**, or
   * **Sesami V2** in the **Sesami Admin Portal**.
3. Click **Save**.

<div><figure><img src="/files/KU9mHcQasHqxp3v6pwOj" alt=""><figcaption></figcaption></figure> <figure><img src="/files/USuTn8wgpKteNQcq0v6O" alt=""><figcaption></figcaption></figure></div>

Merchants can easily switch between calendars and experiment freely with 2.0 themes.

### For Vintage Themes

If your store uses a [Shopify Vintage Theme](https://help.shopify.com/en/manual/online-store/themes/managing-themes/versions):

* The Month/Day View must be added manually by the Sesami team
* Merchants won't have the ability to switch calendars freely (unlike 2.0 themes)
* Contact <help@sesami.co> for assistance

## Customization Options

### Experience Configurator

Use the [Experience Configurator](https://sesami.dev/docs/storefront-integration/configurator/) to customize:

* Primary brand colors
* Layout options
* Display settings
* Resource selection behavior

### Theme Integration

The calendar automatically adapts to your theme's style:

* Responsive design works on desktop, tablet, and mobile
* Fast loading with Lit web components
* Minimal impact on page performance

## When to Use Month/Day View

The Month/Day View is ideal for:

* **Services booked days in advance** - Customers can easily see availability across weeks
* **Group appointments** - Clear display of remaining spots
* **Resource selection** - When customers choose their preferred provider
* **Modern brand aesthetic** - Clean, contemporary design

## Comparison with Multi-day View

| Feature                | Month/Day View        | Multi-day View              |
| ---------------------- | --------------------- | --------------------------- |
| **Layout**             | Monthly grid          | Multi-day horizontal scroll |
| **Best for**           | Advance planning      | Near-term bookings          |
| **Group bookings**     | Shows remaining spots | Standard display            |
| **Resource selection** | Configurable display  | Standard display            |
| **Default**            | Optional              | Yes (after install)         |

See: [Multi-day View](/booking/booking-experiences/multi-day-view)

## Best Practices

* **Use brand colors** - Customize to match your store's identity
* **Test on mobile** - Ensure the experience works well on all devices
* **Configure resource options** - Decide whether to show "Any Available" based on your business model
* **Monitor customer feedback** - See if customers prefer the monthly view

## Troubleshooting

<details>

<summary>Can't find the calendar selector in theme editor</summary>

Check:

* You're using a **Shopify 2.0 theme** (Vintage themes require manual setup)
* Sesami app block is **added to the product page**
* You're in **Customize mode** for your live theme (not an unpublished draft)

</details>

<details>

<summary>Calendar not showing available spots for group bookings</summary>

Check:

* Service has **Group Appointments** enabled
* Service has a **capacity** set (max participants per slot)
* Available spots exist for the time slot

See: [Group Appointments](/booking/booking-features/group-appointments)

</details>

<details>

<summary>Want to force customers to choose a specific resource</summary>

* In the theme editor, find the Sesami app block settings
* Look for **"Hide Any Available"** option
* Enable it to hide the "Any Available" choice

See: [Resource Selection](/booking/booking-experiences/resource-selection)

</details>

## Related

* [Multi-day View](/booking/booking-experiences/multi-day-view) - Classic calendar experience
* [Resource Selection](/booking/booking-experiences/resource-selection) - Configure resource selection
* [Group Appointments](/booking/booking-features/group-appointments) - Multi-participant bookings
* [Localizing the Experience](/booking/booking-experiences/localizing-experience) - Language and region customization
* [Experience Configurator](https://sesami.dev/docs/storefront-integration/configurator/) - Advanced customization


# Multi-day View

The classic Sesami calendar experience with a multi-day horizontal scrolling layout.

## What is Multi-day View?

The Multi-day View (also called "Sesami Classic Calendar" or "Weekly View") is Sesami's default calendar interface. It displays multiple days in a horizontal scrolling format, making it easy for customers to browse near-term availability.

[**View Demo →**](https://demo.sesami.co/products/massage-therapy-booking)

## Key Features

### Horizontal Multi-Day Layout

* **Multiple days visible** - See several days at once
* **Horizontal scrolling** - Swipe or scroll to see more days
* **Compact design** - Efficient use of space

### Default Calendar

* **Automatically installed** - Available immediately after [setting up Sesami](/get-started/quickstart)
* **Works out of the box** - Compatible with all Shopify Standard Themes
* **No configuration needed** - Ready to use right away

### Fast and Lightweight

* **Quick loading** - Minimal impact on page performance
* **Responsive** - Works on desktop, tablet, and mobile
* **Reliable** - Proven design used by thousands of merchants

## How It Works

The Multi-day View displays:

1. **Available dates** - Days with open time slots
2. **Time slots** - Available appointment times for each day
3. **Duration** - Service duration (from product variants)
4. **Resource selection** - If enabled, option to choose team member/resource

Customers simply:

1. Scroll to find a convenient day
2. Select an available time slot
3. Choose resource (if applicable)
4. Continue to checkout or booking confirmation

## Automatic Integration

### After Sesami Setup

Once you [set up the Sesami App](/get-started/quickstart), the Multi-day View calendar is automatically integrated into your online store:

* Appears on service product pages
* No manual theme editing required (for standard themes)
* Works with Shopify 2.0 and Vintage themes

### Theme Compatibility

**Shopify Standard Themes**: The Multi-day View works out of the box in all Shopify Standard Themes.

**Custom or Modified Themes**: Some themes might need adjustments or custom code. If you need help, contact <help@sesami.co>.

## When to Use Multi-day View

The Multi-day View is ideal for:

* **Near-term bookings** - When customers typically book within days or weeks
* **Quick browsing** - Customers want to quickly scan available times
* **Familiar interface** - Classic booking calendar that customers recognize
* **Simple setup** - No configuration or customization needed

## Switching to Month/Day View

If you prefer the modern monthly layout:

**For Online Store 2.0 Themes:**

1. Go to **Online Store > Themes > Customize**
2. Navigate to the product page with Sesami
3. Click on the Sesami app block
4. Select **Month/Day View** instead of Multi-day View
5. Save

See: [Month/Day View](/booking/booking-experiences/month-day-view)

**For Vintage Themes:** Contact <help@sesami.co> for assistance switching calendars.

## Comparison with Month/Day View

| Feature                    | Multi-day View              | Month/Day View                   |
| -------------------------- | --------------------------- | -------------------------------- |
| **Layout**                 | Multi-day horizontal scroll | Monthly grid                     |
| **Best for**               | Near-term bookings          | Advance planning                 |
| **Setup**                  | Automatic                   | Optional                         |
| **Default**                | Yes (after install)         | Optional upgrade                 |
| **Group bookings display** | Standard                    | Shows remaining spots            |
| **Customization**          | Basic                       | Advanced (brand colors, options) |

## Best Practices

* **Test on mobile** - Ensure horizontal scrolling works smoothly on touch devices
* **Keep it simple** - The Multi-day View works best without heavy customization
* **Monitor conversion** - If booking conversion seems low, consider testing the Month/Day View

## Troubleshooting

<details>

<summary>Calendar not appearing on product page</summary>

Check:

* Product has **duration variants** (e.g., "30 Minutes", "1 Hour")
* Service is **configured in Sesami** with resources assigned
* **Sesami app embed** is enabled in Theme Settings
* You're viewing the **published theme** (not a draft)

See: [Quickstart Troubleshooting](/get-started/quickstart#troubleshooting)

</details>

<details>

<summary>No time slots showing</summary>

Most common issue! Check:

* **Resources are assigned** to the service
* **Availability is set** for assigned resources
* **Timezone is correct** in Sesami Settings
* **No block-offs** covering all dates

See: [Availability](/booking/availability)

</details>

<details>

<summary>Need to customize the calendar appearance</summary>

For basic styling, you can use custom CSS in your theme.

For more advanced customization:

* Use the [Month/Day View](/booking/booking-experiences/month-day-view) which has more customization options
* Build a custom calendar with the [Sesami SDK](https://sesami.dev/docs/)

</details>

## Related

* [Month/Day View](/booking/booking-experiences/month-day-view) - Modern monthly calendar
* [Quickstart Guide](/get-started/quickstart) - Initial setup
* [Resource Selection](/booking/booking-experiences/resource-selection) - Configure resource selection
* [Availability](/booking/availability) - Configure when services can be booked
* [Sesami SDK](https://sesami.dev/docs/) - Build custom booking experiences


# Localizing the Experience

Sesami supports multiple languages so your booking calendar and notifications match your customers' language.

## Supported Languages

| Language             | Code  |
| -------------------- | ----- |
| English              | en    |
| French               | fr    |
| Danish               | da    |
| German               | de    |
| Finnish              | fi    |
| Italian              | it    |
| Spanish              | es    |
| Swedish              | sv    |
| Norwegian            | no    |
| Polish               | pl    |
| Brazilian Portuguese | pt-BR |
| Japanese             | ja    |
| Chinese (Simplified) | zh-CN |

## Setting the Language

1. Go to **Sesami > Settings > Storefront Settings > Language**
2. Select your language
3. Click **Save**

This translates:

* The storefront booking calendar
* Default notification emails

## Multi-Language with Shopify Translate & Adapt

If your store supports multiple languages, Sesami automatically translates based on the language the customer selects.

**How it works:**

1. Install the [Shopify Translate & Adapt](https://apps.shopify.com/translate-and-adapt) app
2. Add your desired languages in Shopify
3. Sesami detects the customer's selected language and adjusts the calendar and notifications

{% hint style="info" %}
Some translations may need manual adjustment. Contact <help@sesami.co> and the team can help with custom translations.
{% endhint %}

## Multi-Language Notifications with Flows

For more control over translated notifications, use [Sesami Flows](/automations/sesami-flows) with language conditions:

1. Create a Flow with a **condition** based on the customer's language
2. Set up separate email actions for each language
3. The customer receives the notification in the language they selected on the storefront

## Related

* [Date and Time Format](/booking/availability/date-and-time-format) — customize how dates and times display
* [Sesami Flows](/automations/sesami-flows) — advanced notification automation
* [Timezone](/booking/availability/timezone) — timezone settings for multi-region stores


# Resource Selection

Let customers pick a specific resource — a team member, room, or piece of equipment — as part of their booking flow, or have Sesami assign one automatically.

{% hint style="info" %}
"Resources" is the new term in the Sesami Admin Portal. In the Shopify app, this is still labeled "Team". A team member is one type of resource — rooms and equipment are others.
{% endhint %}

## When to Use Resource Selection

Resource selection works well when the choice of resource matters to the customer:

* **Personal services** — hair, massage, coaching, tattoo, training
* **Provider loyalty** — customers rebooking with the same person
* **Room or equipment preference** — specific treatment rooms, studios, or gear
* **Expertise matching** — customers choosing a specialist for their needs

## Configure Resource Selection

Resource selection is configured per service. There are two places to do this, depending on which interface you're using.

### In the Sesami Admin Portal

The Admin Portal lets you manage resources per service **per location**, with fine-grained control over how each resource group behaves in the booking experience.

1. Go to **Services** and open a service
2. Click **Manage resources** for the location you want to configure
3. In the **Resources** dialog, you'll see one or more resource groups (e.g., "One of these resources")
4. For each group, toggle:
   * **Selectable in Experience** — when on, customers can pick from this group during booking. When off, Sesami auto-assigns from the group.
   * **Blocks during booking** — reserves the resource for the duration of the booking so it can't be double-booked
5. Use **Add a resource** to add more resources or resource groups
6. Click **Confirm**, then **Save**

{% hint style="info" %}
**Selectable in Experience** is the Admin Portal equivalent of "Let customers choose". Turn it off to have Sesami auto-assign a resource from the group instead.
{% endhint %}

### In the Sesami Shopify App

1. Go to **Sesami > Services**
2. Choose a service
3. Under **Other options**, pick one of:
   * **Book with "Any Available"** — Sesami assigns an available resource automatically
   * **Let customers choose** — customers pick their preferred resource during booking
4. **Save**

{% hint style="info" %}
**How "Any Available" assignment works**: if two or more resources are available at the same time, Sesami assigns one randomly. There isn't a way to prioritize specific resources for auto-assignment.
{% endhint %}

## Hide "Any Available" on the Booking Experience

You can hide the "Any available" option so customers must pick a specific resource.

1. Go to **Shopify Admin > Online Store > Themes > Customize**
2. Open the **Product** template
3. Select the **Sesami booking button** block
4. Turn on **Hide any available**
5. **Save**

## Recommendations

{% hint style="success" %}
Showing both **"Choose a resource"** and **"Any available"** typically converts better — customers who care about the choice can make it, and everyone else takes the fastest path.
{% endhint %}

* Make sure every resource has availability configured, otherwise they won't appear as options
* Keep resources assigned to the right services under **Sesami > Services**
* For multi-resource services (e.g., a stylist **and** a room), Sesami handles the combined assignment automatically

## Related

* [Resources](/admin/resources) — set up team members, rooms, and equipment
* [Resource Availability](/booking/availability/resource-availability) — configure each resource's schedule
* [Services](/admin/services) — assign resources to services
* [Assigned to No One - Invalid Order](/get-started/onboarding/troubleshooting/troubleshooting-assigned-to-no-one-caused-by-invalid-order) — resource assignment troubleshooting


# Remove Sesami Branding

Remove the Sesami logo from your booking calendar and notification emails for a fully branded experience.

{% hint style="info" %}
Available on **Pro** and **Premium** plans.
{% endhint %}

## What Gets Removed

When you remove Sesami branding:

* The **Sesami logo** is removed from the storefront booking calendar
* The **email sender name** changes from "Sesami App" to your **store name** on default Sesami notification emails

{% hint style="warning" %}
This applies to **Sesami default emails only**. Sesami Flows emails have separate sender settings.
{% endhint %}

## How to Remove Branding

1. Go to **Sesami > Settings > Storefront Settings**
2. Find the **Remove Sesami Branding** option
3. Enable it
4. **Save**

## Related

* [Pricing](/get-started/about-sesami/pricing) — plan comparison
* [Notification Emails](/notifications/notification-emails) — email settings
* [Sesami Flows](/automations/sesami-flows) — custom email automation


# Browser Compatibility

Sesami works best on modern browsers. Here's what you need to know about browser support.

## Supported Browsers

Sesami is optimized for modern web browsers:

### Fully Supported

* **Google Chrome** (latest version) - Recommended
* **Safari** (latest version) - Recommended for Mac and iOS
* **Microsoft Edge** (latest version, Chromium-based) - Recommended for Windows
* **Firefox** (latest version) - Fully supported

### Mobile Browsers

* **Safari iOS** (iOS 13+) - iPhone and iPad
* **Chrome Android** (latest version) - Android devices
* **Samsung Internet** (latest version) - Samsung devices

{% hint style="success" %}
**Recommended**: Use the latest version of Chrome, Safari, Edge, or Firefox for the best experience.
{% endhint %}

## Unsupported Browsers

### Internet Explorer

**Internet Explorer is not supported**, including IE 11.

**Why?**

* Internet Explorer lacks support for modern web standards
* Microsoft officially ended support for Internet Explorer on June 15, 2022
* Sesami uses modern web components that require current browser features

**Alternative**: Use Microsoft Edge instead. Edge is faster, more secure, and fully compatible with Sesami.

### Older Browser Versions

Browsers older than 2 years may have compatibility issues:

* **Outdated Chrome/Firefox/Edge** - Update to latest version
* **iOS Safari < 13** - Update iOS or device
* **Android Chrome < 80** - Update Chrome app

## Browser Requirements

### For Customers (Booking Calendar)

To book appointments on your storefront, customers need:

* **JavaScript enabled** - Required for calendar functionality
* **Cookies enabled** - For session management and booking flow
* **Modern browser** - Chrome, Safari, Edge, or Firefox (latest versions)

### For Admin (Sesami Admin Portal)

To manage bookings in Sesami Admin Portal, admins need:

* **PWA-compatible browser** - Chrome, Safari, Edge, or Firefox
* **JavaScript enabled** - Required for admin interface
* **Stable internet connection** - For real-time updates
* **Screen resolution** - Minimum 1280x720 recommended for desktop

See: [Sesami Admin Portal](/admin/sesami-admin-portal)

## Troubleshooting

If the calendar or booking form isn't working:

1. **Update your browser** to the latest version
2. **Enable JavaScript and cookies** in browser settings
3. **Disable ad blockers or extensions** — some can interfere with booking scripts
4. **Clear browser cache** and reload the page
5. **Try incognito/private mode** to rule out extension conflicts
6. **Try a different browser** — Chrome is recommended

If the issue persists, contact <help@sesami.co> with your browser name and version, device type, and a screenshot.

## Related

* [Month/Day View](/booking/booking-experiences/month-day-view) - Modern calendar experience
* [Multi-day View](/booking/booking-experiences/multi-day-view) - Classic calendar experience
* [Sesami Admin Portal](/admin/sesami-admin-portal) - PWA admin interface
* [Quickstart Guide](/get-started/quickstart) - Initial setup and testing


# Booking Features

Service-level features that enhance the booking experience and add special capabilities to your services.

## What are Booking Features?

Booking features are optional capabilities you can enable per service to provide better experiences for your customers and more control for your business.

## Available Features

### Fast Booking

* [**Instant Booking**](/booking/booking-features/instant-booking) - Skip the Shopify checkout for faster bookings
* [**Group Appointments**](/booking/booking-features/group-appointments) - Allow multiple customers to book the same time slot

### Multi-Session Bookings

* [**Multi-day Bookings**](/booking/booking-features/multi-day-bookings) - Services spanning multiple days
* [**Booking Packages**](/booking/booking-features/booking-packages) - Bundle multiple sessions together

### Customer Management

* [**Cancellations & Rescheduling**](/booking/booking-features/cancellations-rescheduling) - Let customers manage their own bookings
* [**Online Meeting Links**](/booking/booking-features/online-meeting-links) - Add virtual meeting links for online appointments
* [**Waiver & Terms**](/booking/booking-features/waiver-terms) - Collect customer agreements before booking

## How Features Work

Each feature is configured at the **service level**, meaning:

* You can enable different features for different services
* Settings are independent per service
* Some features may require specific Sesami plans (Pro or Premium)

## Related

* [Services](/admin/services) - Configure services
* [Booking Experiences](/booking/booking-experiences) - Customer-facing UI
* [Availability](/booking/availability) - Availability rules


# Instant Booking

Skip the Shopify checkout process and let customers book services in just 3 simple steps.

## What is Instant Booking?

Instant Booking allows customers to book appointments without going through the standard Shopify checkout flow. Instead of adding to cart and checking out, customers can complete their booking in just 3 quick steps:

1. **Select time** on the calendar
2. **Enter customer details**
3. **Confirm** - Done! Service is booked

[**Try it yourself →**](https://demo.sesami.co/products/haircut) - Book a service in just 3 steps on our demo store

## Booking Options

When you enable Instant Booking, you can choose how to handle orders and payments:

### Option 1: Just Book (No Shopify Order)

* **No order created** - Booking exists in Sesami only
* **Perfect for** - Free consultations, internal bookings, services that don't need payment tracking
* **Payment** - Not collected (or handled outside Shopify)

### Option 2: Book + Create Shopify Order

* **Shopify order created** - Order appears in your Shopify orders
* **Payment capture options**:
  * Enter card manually in Shopify
  * Mark invoice as paid manually
  * Mark as pending (pay later)
* **Perfect for** - Services that need order tracking but flexible payment timing

## How It Works

### Customer Experience

1. **Calendar** - Customer selects an available time slot and clicks confirm
2. **Customer details** - Customer enters their contact information
3. **Confirm** - Booking is complete immediately

No cart, no checkout pages, no payment flow (unless you choose Option 2 with manual payment).

### Admin Experience

Bookings created via Instant Booking appear in:

* **Sesami calendar** - Just like regular bookings
* **Sesami upcoming appointments list** - Manage, reschedule, cancel
* **Shopify orders** (if using Option 2) - Track orders and payments

## Enabling Instant Booking

{% stepper %}
{% step %}

#### Open service settings

1. Go to **Sesami > Services** in your Shopify Admin
2. Click **Manage** on the service you want to enable Instant Booking for
   {% endstep %}

{% step %}

#### Enable Instant Booking

1. Scroll to the **Instant Booking** section
2. Toggle **Enable Instant Booking** to ON
3. Choose your option:
   * **Just Book** (no Shopify order)
   * **Book + Create Order** (with manual payment options)
     {% endstep %}

{% step %}

#### Save and test

1. **Save** your changes
2. Visit the service product page on your storefront
3. Test the 3-step booking flow

The booking experience is now streamlined for this service.
{% endstep %}
{% endstepper %}

## When to Use Instant Booking

Instant Booking is ideal for:

* **Free consultations** - No payment needed
* **Internal bookings** - Staff or partner bookings
* **High-volume bookings** - Reduce friction for quick appointments
* **Walk-in customers** - Book on-site with minimal steps
* **Pay in person** - Collect payment at appointment time
* **Manual invoicing** - Send invoice after booking

## When NOT to Use Instant Booking

Instant Booking may not be suitable for:

* **Paid services requiring upfront payment** - Use standard checkout instead
* **Deposit collection** - Use standard checkout with [Deposits](/payments/deposits)
* **Complex pricing** - Multiple add-ons or options
* **Shopify payment gateway** - When you need automatic payment processing

## Best Practices

* **Clear pricing** - Even without checkout, show the price clearly on the product page
* **Confirmation emails** - Ensure customers receive booking confirmation via email
* **Payment instructions** - If using "pay later," include clear payment instructions in confirmation email
* **Test the flow** - Book a test appointment to see the 3-step experience
* **Staff training** - Ensure your team knows how to handle Instant Bookings in admin

## Comparison: Instant Booking vs. Standard Checkout

| Feature                    | Instant Booking      | Standard Checkout                               |
| -------------------------- | -------------------- | ----------------------------------------------- |
| **Steps to book**          | 3 steps              | 5+ steps (add to cart, cart, checkout, payment) |
| **Payment collection**     | Manual or none       | Automatic via Shopify                           |
| **Shopify order**          | Optional             | Yes                                             |
| **Deposits**               | No                   | Yes                                             |
| **Discounts/coupons**      | No                   | Yes                                             |
| **Checkout customization** | N/A                  | Full Shopify checkout                           |
| **Best for**               | Speed, free services | Paid services, deposits, complex pricing        |

## Managing Instant Bookings

### Viewing Bookings

* **Sesami Calendar** - All bookings appear here
* **Upcoming Appointments** - Filter and manage bookings
* **Shopify Orders** - If using "Book + Create Order" option

### Rescheduling or Canceling

Manage Instant Bookings the same way as regular bookings:

1. Find the booking in Sesami calendar or upcoming appointments
2. Click the booking to view details
3. Use **Reschedule** or **Cancel** buttons

### Payment Collection (for Option 2)

If using "Book + Create Order":

1. Find the order in **Shopify > Orders**
2. Click the order
3. Use **Collect payment** or **Mark as paid**

## Troubleshooting

<details>

<summary>Instant Booking option not appearing</summary>

Check:

* You're using **Sesami Admin Portal** or latest Shopify App version
* Service is properly configured with resources
* You have the correct permissions to edit services

</details>

<details>

<summary>Customers not receiving confirmation emails</summary>

Check:

* **Notification emails** are enabled in Sesami Settings
* Email templates are configured
* Check spam/junk folders
* Verify customer email address is correct

See: [Notification Emails](/notifications/notification-emails)

</details>

<details>

<summary>Order not appearing in Shopify</summary>

Check:

* You selected **"Book + Create Order"** option (not "Just Book")
* Order was successfully created (check Sesami booking details)
* You're looking in the correct Shopify location (if multi-location)

</details>

## Related

* [Group Appointments](/booking/booking-features/group-appointments) - Multi-participant bookings
* [Deposits](/payments/deposits) - Collect partial payment upfront
* [Cancellations & Rescheduling](/booking/booking-features/cancellations-rescheduling) - Customer self-service
* [Notification Emails](/notifications/notification-emails) - Email confirmations
* [Services](/admin/services) - Configure services


# Group Appointments

Allow multiple customers to book the same time slot for classes, workshops, tours, and group sessions.

{% hint style="info" %}
**Available on Pro and Premium plans**
{% endhint %}

## What are Group Appointments?

Group Appointments allow you to accept multiple bookings for a single time slot. Instead of one customer per appointment, you can set a maximum capacity and fill each slot with multiple participants.

Perfect for:

* **Workshops** - Cooking classes, art workshops, crafting sessions
* **Group classes** - Yoga, fitness, dance classes
* **Tours** - City tours, museum tours, wine tastings
* **Seminars** - Training sessions, webinars, group consultations
* **Delivery windows** - Multiple deliveries/pickups per time window
* **Any "one-to-many" service** - One instructor, multiple participants

[**View Demo →**](https://demo.sesami.co/products/crossfit-class-booking)

## How It Works

### For Customers

* Customers see the same booking calendar
* Available time slots appear as normal
* If using the [Month/Day View](/booking/booking-experiences/month-day-view) calendar, customers can see how many spots are left per slot (e.g., "3 spots left")
* When capacity is full, the time slot disappears from availability

### For Admins

* Set maximum participants per time slot
* View all participants for a group appointment
* Manage bookings individually or as a group
* Track capacity in real-time

## Capacity Limits by Plan

The maximum number of bookings per time slot depends on your Sesami plan:

| Plan        | Max Participants Per Time Slot |
| ----------- | ------------------------------ |
| **Pro**     | 20                             |
| **Premium** | 100                            |

{% hint style="success" %}
**Need more capacity?** Contact our team at <help@sesami.co> to discuss your needs.
{% endhint %}

## Enabling Group Appointments

{% stepper %}
{% step %}

#### Navigate to service settings

1. Go to **Sesami > Services**
2. Click **Manage** on the service you want to enable Group Appointments for
   {% endstep %}

{% step %}

#### Set capacity

1. Scroll to the **Group Appointments** section
2. Enter the maximum number of participants per time slot
   * Example: Enter "10" for a class that can hold 10 people
3. **Save** your changes

The service now accepts multiple bookings per time slot, up to your specified capacity.
{% endstep %}

{% step %}

#### Test the booking flow

1. Visit the service product page on your storefront
2. Select an available time
3. Book a test appointment
4. Try booking the same time again to see capacity in action
   {% endstep %}
   {% endstepper %}

## Viewing Group Appointments

### In Sesami Calendar

1. Go to **Sesami > Calendar**
2. Click on a group appointment
3. View all participants and their details

You'll see:

* Total number of participants booked
* Remaining capacity
* Details for each participant (name, email, order number)

### Participant Count

The appointment details show:

* **Current participants**: How many are booked
* **Total capacity**: Maximum allowed
* **Example**: "3 / 10 participants" means 3 booked, 7 spots remaining

## Managing Group Bookings

### Adding Participants Manually

Use [Manual Booking](https://help.sesami.co/hc/en-us/articles/360062101734-Manual-Booking-for-Customers) to add participants:

1. Select the **service**
2. Select the **team member/resource**
3. Select the **duration**
4. Enter **number of participants** (1 or more)
5. Choose the **day and time**
6. Add **customer details**
7. **Save**

### Rescheduling Participants

You can reschedule participants:

* **Individually** - Move one participant to a different time
* **As a group** - Move all participants together (if rescheduling the entire session)

### Canceling Participants

Cancel participants individually or cancel the entire group appointment.

## Displaying Availability to Customers

### Standard Calendars

On standard calendars (Multi-day View), customers see:

* Time slots with availability
* No indication of remaining spots
* Slot disappears when full

### Month/Day View Calendar

On the [Month/Day View](/booking/booking-experiences/month-day-view), customers see:

* Time slots with **remaining spots** displayed
* "3 spots left", "1 spot left", etc.
* Clear capacity information before booking

{% hint style="success" %}
**Recommended**: Use the Month/Day View calendar for group appointments to show remaining capacity to customers.
{% endhint %}

### Bespoke Calendars

With a [custom calendar](https://sesami.dev/docs/) using the Sesami SDK, you can display capacity in any format you want, including event-list style showing all available sessions and their capacity.

## Best Practices

* **Set realistic capacity** - Don't exceed your actual physical or instructor capacity
* **Use Month/Day View** - Show remaining spots to create urgency
* **Clear product descriptions** - Explain it's a group session in the product description
* **Minimum participants** - Consider canceling if minimum attendance isn't met (handle manually)
* **Communication** - Send group details or preparation instructions via email
* **Resource planning** - Ensure your resources (instructors, rooms) can handle the capacity

## Common Use Cases

### Fitness Classes

* **Capacity**: 15 participants
* **Duration**: 1 hour
* **Frequency**: Daily classes at set times
* **Calendar**: Month/Day View showing spots remaining

### Workshops

* **Capacity**: 8 participants
* **Duration**: 2-3 hours
* **Frequency**: Weekly or one-time events
* **Calendar**: Custom event-list showing upcoming workshops

### Tours

* **Capacity**: 12 participants
* **Duration**: 1.5 hours
* **Frequency**: Multiple times daily
* **Calendar**: Month/Day View with clear capacity display

### Delivery & Pickup Windows

* **Capacity**: 5 deliveries per window
* **Duration**: 30-minute or 1-hour time windows
* **Frequency**: Throughout the day (e.g., 9-10am, 10-11am, 11am-12pm)
* **Use case**: Customers book a delivery or pickup slot; once the window is full (5 bookings), it becomes unavailable
* **Calendar**: Month/Day View showing remaining slots or standard Multi-day View

**Example**: A meal delivery service offers delivery windows every hour from 5pm-9pm, with up to 5 deliveries per window. Customers book their preferred window, and once 5 customers have booked the 6-7pm window, it's no longer available.

## Troubleshooting

<details>

<summary>Group Appointments option not appearing</summary>

Check:

* You're on a **Pro or Premium plan**
* You're using **Sesami Admin Portal** or latest Shopify App version
* Service is properly configured

</details>

<details>

<summary>Capacity not updating correctly</summary>

Check:

* Bookings are confirmed (not just in cart)
* Reservation period hasn't expired
* No duplicate bookings for same customer
* Calendar/page has been refreshed

</details>

<details>

<summary>Want to show remaining spots to customers</summary>

* Switch to the **Month/Day View** calendar which displays remaining capacity
* Or build a custom calendar with the [Sesami SDK](https://sesami.dev/docs/)

See: [Month/Day View](/booking/booking-experiences/month-day-view)

</details>

<details>

<summary>Need capacity higher than plan limit</summary>

Contact <help@sesami.co> to discuss your requirements. We can work with you on custom capacity needs.

</details>

## Related

* [Month/Day View](/booking/booking-experiences/month-day-view) - Show remaining spots
* [Instant Booking](/booking/booking-features/instant-booking) - Fast booking flow
* [Services](/admin/services) - Configure services
* [Resources](/admin/resources) - Assign instructors and rooms
* [Sesami SDK](https://sesami.dev/docs/) - Build custom booking experiences


# Multi-day Bookings

Allow customers to book services that span multiple consecutive days — retreats, workshops, equipment rentals, room bookings, and more.

## How It Works

Multi-day bookings use product variants with extended durations set in **hours** (e.g., "24 hours" for 1 day, "48 hours" for 2 days, "168 hours" for a week). When a customer books, Sesami blocks the resource for all consecutive days in the range.

Resources must be available for the **entire duration** — if any day is unavailable, the slot won't appear.

## Setting Up

{% stepper %}
{% step %}

#### Create product with multi-day variants

1. In Shopify, go to **Products**
2. Create or edit your service product
3. Add duration variants in hours:
   * `24 hours` (1 day)
   * `48 hours` (2 days)
   * `72 hours` (3 days)
   * `168 hours` (1 week)
4. Set pricing for each duration
5. **Save**
   {% endstep %}

{% step %}

#### Configure service in Sesami

1. Go to **Sesami > Services**
2. Link the service to your product
3. Assign resources (rooms, equipment, etc.)
4. **Save**
   {% endstep %}

{% step %}

#### Set resource availability

1. Go to **Sesami > Resources**
2. Ensure availability covers full potential booking periods
3. **Save**
   {% endstep %}

{% step %}

#### Test the booking flow

1. Visit the product page on your storefront
2. Select a multi-day variant
3. Choose a start date
4. Verify the calendar blocks consecutive days
5. Complete a test booking
   {% endstep %}
   {% endstepper %}

## Pricing

Use product variants to set pricing per duration:

* **Per-day pricing with discounts** — incentivize longer bookings (e.g., 24h: $100, 72h: $250, 168h: $500)
* **Flat rate** — single price for a defined experience (e.g., "Weekend Retreat: $500")

For variable pricing by season, create separate products or use a Shopify pricing app.

## Managing Multi-Day Bookings

In the **Sesami Calendar**, multi-day bookings appear across multiple days. Click any day to view the full booking details.

* **Reschedule** — select a new start date; Sesami checks availability for the full duration
* **Cancel** — all days are released back to availability
* **Buffer times** — add turnaround time between bookings for cleaning, maintenance, or setup

See: [Cancellations & Rescheduling](/booking/booking-features/cancellations-rescheduling) and [Buffer Times](/booking/availability/buffer-times)

## Tips

* **Clear variant labels** — you can add descriptive text alongside the hours (e.g., "48 hours: Weekend Stay")
* **Check-in/check-out times** — include these in the service description or confirmation email
* **Minimum/maximum stays** — control by offering only specific duration variants
* **Deposits** — consider requiring a [deposit](/payments/deposits) for multi-day bookings

## Troubleshooting

<details>

<summary>Multi-day booking only blocks the first day</summary>

Check that the duration variant is set to enough hours to cover multiple days (e.g., "48 hours" for 2 days). Create a test booking to verify all days are blocked.

</details>

<details>

<summary>No availability for multi-day booking</summary>

Multi-day bookings require consecutive availability. Check resource availability for all days, look for existing bookings that conflict, and check buffer times that might extend into the range.

</details>

## Related

* [Resource Availability](/booking/availability/resource-availability) — configure availability
* [Buffer Times](/booking/availability/buffer-times) — turnaround time between bookings
* [Cancellations & Rescheduling](/booking/booking-features/cancellations-rescheduling) — managing multi-day cancellations
* [Deposits](/payments/deposits) — require deposits for multi-day bookings


# Booking Packages

Sell packages of multiple sessions or appointments that customers can book over time.

## Use Cases

* **Class packages** — 10-class yoga pass, 5-session training pack
* **Membership programs** — monthly massage membership, quarterly therapy sessions
* **Punch cards** — pre-paid session packages
* **Bulk discounts** — buy multiple sessions at a discounted rate

## How Packages Work

1. **Customer purchases** a package product (e.g., "10-Class Yoga Package")
2. **Customer receives** confirmation with booking instructions
3. **Customer books** individual sessions as needed
4. **Admin tracks** remaining sessions
5. **Package expires** or sessions are used up

## Setting Up Booking Packages

{% stepper %}
{% step %}

#### Create the package product in Shopify

1. Go to **Shopify > Products**
2. Create a new product (e.g., "10-Class Yoga Package")
3. Set the discounted package price
4. In the description, explain:
   * Number of sessions included
   * How to book individual sessions
   * Expiration date (if applicable)
   * Terms and conditions
5. **Save**
   {% endstep %}

{% step %}

#### Configure the service in Sesami

1. Go to **Sesami > Services**
2. Link the individual service (e.g., "Yoga Class") to the corresponding package product
3. Configure resources and availability
4. **Save**
   {% endstep %}

{% step %}

#### Test the flow

1. Purchase a test package on the storefront
2. Book an individual session using the package
3. Verify the booking confirmation
   {% endstep %}
   {% endstepper %}

## Tracking Package Usage

Choose a tracking method based on your volume:

| Method                  | Best for         | How it works                                                          |
| ----------------------- | ---------------- | --------------------------------------------------------------------- |
| **Spreadsheet**         | Small businesses | Track customer name, package, sessions remaining, expiration          |
| **Shopify order notes** | Simple tracking  | Tag orders with package status                                        |
| **Membership app**      | Higher volume    | Automate credit tracking via Shopify App Store                        |
| **Custom integration**  | Advanced needs   | Build with the [Sesami API](/apps-integrations/api-and-building-apps) |

## Pricing Strategies

Show savings clearly to encourage package purchases:

* **Percentage discount** — "Save 25% with a 10-class pack"
* **Per-session value** — "$15/class vs $20 drop-in"
* **Tiered pricing** — larger packages get bigger discounts

## Package Terms

In the product description, clearly state:

* Number of sessions included
* Validity period and expiration policy
* How to book sessions
* Transferability (can sessions be shared or gifted?)
* Refund policy for unused sessions

{% hint style="info" %}
Send expiration reminders via [Sesami Flows](/automations/sesami-flows) — for example, 30 days and 7 days before expiration.
{% endhint %}

## Related

* [Services](/admin/services) — service configuration
* [Group Appointments](/booking/booking-features/group-appointments) — sell class packages with group bookings
* [Cancellations & Rescheduling](/booking/booking-features/cancellations-rescheduling) — managing package session changes


# Booking Packages

Sell packages of multiple sessions or appointments that customers can book over time.

## Use Cases

Depending on your business model, you can choose between:

* **Prepaid balance**
* **Fixed-session packages**
* **Membership programs**
* **Bulk discounts**

## Packages options

{% stepper %}
{% step %}

#### Gift Product Package (Prepaid Balance)&#x20;

Create a “Gift Product Package” that works as a prepaid balance for your customers.

This setup functions similarly to a [Shopify gift card](https://help.shopify.com/en/manual/products/gift-card-products/overview): Customers purchase a prepaid amount upfront and can use that balance toward future bookings over time.

**This option is ideal for:**

* Gift experiences
* Wellness balances
* Flexible prepaid credits
* Customer loyalty programs

**How it works:**

1. Customer purchases a prepaid balance product
2. The balance is stored as a Shopify gift card
3. Customer books services through Sesami
4. At checkout, the customer enters the gift product code to deduct from the available balance
5. Any remaining balance can be used across multiple future purchases until the balance reaches zero
   {% endstep %}

{% step %}

#### Pre-Booked Session Packages

Customers book and purchase a set number of sessions upfront. \
Shopify’s automatic discount functionality can also apply discounts at checkout when needed.

**For example:**

* Massage sessions
* Fitness classes
* Consultations

{% hint style="info" %}
This is a custom implementation and typically requires assistance from a Shopify developer.

Developers can build this experience using our [Dev Docs](https://sesami.dev/docs/sesami-experience/quick-start/?utm_source=chatgpt.com#multiple-formsexperiences)
{% endhint %}
{% endstep %}

{% step %}

#### Membership App Workflow

Use a Membership app together with Sesami bookings

**This approach works well for:**

* Monthly memberships
* VIP programs
* Member-exclusive booking access

**Step 1: Membership Purchase**\
The customer purchases a membership product through Shopify.

**Step 2: Customized Shopify Notification Email**\
After purchase, a customized Shopify notification email is sent to the customer that includes a booking link for booking the appointments through Sesami.

**Step 3: Booking Through Sesami**\
Customers use the Sesami booking calendar to schedule their sessions or services.
{% endstep %}
{% endstepper %}

## FAQ

{% columns %}
{% column %}
**Sesami Handles**

* Booking calendar
* Appointment scheduling
* Availability management
* Booking experiences
* Booking Confirmation emails
  {% endcolumn %}

{% column %}
**Shopify Handles**

* Checkout
* Discounts and Payments
* Gift cards
* Membership products
* Notification emails
  {% endcolumn %}
  {% endcolumns %}

#### Can Sesami track remaining sessions automatically?

The remaining balance is typically tracked through:

* Shopify Gift Card balances for Gift Product Packages, or
* The selected Shopify Membership app is for membership-based workflows.

For Pre-Booked Session Packages, Sesami can track the booked sessions and appointment history.

#### Can customers use discounts on packages?

Yes. Shopify discounts can be applied during checkout.

#### Do memberships automatically create bookings?

No. Customers still book appointments separately using the Sesami calendar.

#### Can I combine memberships and bookings?

Yes. Shopify membership apps can work together with Sesami booking flows.


# Cancellations & Rescheduling

Allow customers to cancel or reschedule their appointments, and manage bookings from your admin.

## Customer Self-Service

Customers can manage their own bookings through links in the confirmation email:

* **Reschedule** — change appointment time (subject to availability and your policies)
* **Cancel** — cancel the appointment and receive a refund (subject to your policies)

### Enabling Self-Service

Customer cancellation and rescheduling is configured **per service**.

{% hint style="info" %}
Customer self-service cancellation and rescheduling is available on the **Pro** and **Premium** plans. See [Pricing](/get-started/about-sesami/pricing).
{% endhint %}

1. Go to **Sesami > Services** and open a service
2. Scroll to **Cancellation and Rescheduling**
3. Turn on the options you want:
   * **Allow customers to cancel their appointments**
   * **Allow customers to reschedule their appointments**
   * **Number of hours customers can manage their appointment before the start time** — the notice window (e.g., 24 hours)
   * **Automatically refund money on cancellation**
4. **Save**

Repeat for each service where you want to allow self-service.

{% hint style="info" %}
**Reschedule limit**: a customer can reschedule the same booking up to **6 times**. After that, only the cancel option is shown. If they need to reschedule again, an admin can reschedule on their behalf from the Sesami Calendar.
{% endhint %}

### How It Works for Customers

1. Customer receives booking confirmation email
2. Clicks **Reschedule** or **Cancel** link
3. For reschedule: selects a new available time
4. For cancel: confirms cancellation and sees refund eligibility
5. Receives confirmation email of the change

{% hint style="info" %}
You can enable rescheduling without enabling cancellation — customers can change their time but must contact you to cancel.
{% endhint %}

## Admin Management

Admins can manage any booking from the **Sesami Calendar** or **Upcoming Appointments**:

### Reschedule

1. Open the booking details
2. Click **Reschedule**
3. Select new date and time
4. Customer receives an updated confirmation email

### Reassign Resource

Change which resource is assigned to a booking (e.g., team member is sick):

1. Open the booking details
2. Click **Reassign** or **Change Resource**
3. Select a different available resource

{% hint style="info" %}
Customers are not automatically notified when a resource is reassigned. Contact them if the change is significant.
{% endhint %}

### Cancel

1. Open the booking details
2. Click **Cancel**
3. Choose **Full refund** or **No refund**
4. Confirm — refund is processed automatically (if enabled) or manually in Shopify

## Refund Handling

| Method        | How it works                                                                                                     |
| ------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Automatic** | Sesami creates the refund in Shopify when a booking is canceled. Shopify refunds to the original payment method. |
| **Manual**    | You go to **Shopify > Orders**, find the order, and process the refund yourself.                                 |

Choose automatic for efficiency or manual for more control. You can switch between them at any time.

## Group Appointment Cancellations

For [group bookings](/booking/booking-features/group-appointments), each participant is managed individually:

* Cancel or reschedule one participant without affecting others
* Canceled spots become available for new bookings
* To cancel an entire session, cancel each participant's booking

## Defining Your Policies

Set clear policies and communicate them on product pages, confirmation emails, and your terms of service:

* **Cancellation deadline** — how much notice is required (24h, 48h, etc.)
* **Refund rules** — full refund before deadline, no refund after
* **Rescheduling limits** — free rescheduling, or only within a deadline

{% hint style="success" %}
Offering rescheduling as an alternative to cancellation reduces lost bookings and keeps customers happy.
{% endhint %}

## Reducing No-Shows

* Require a [deposit](/payments/deposits) at booking
* Set a strict cancellation deadline
* Send reminders via [Sesami Flows](/automations/sesami-flows)
* Use a no-refund policy after the deadline

## Troubleshooting

<details>

<summary>Customer can't find reschedule/cancel links</summary>

* Verify self-service is enabled in Sesami Settings
* Check the confirmation email was delivered (check spam)
* Admin can reschedule/cancel on behalf of the customer

</details>

<details>

<summary>Refund not processing automatically</summary>

Check that the Shopify order exists and is paid. If automatic refund fails, process manually in **Shopify > Orders > \[order] > Refund**.

</details>

## Related

* [Group Appointments](/booking/booking-features/group-appointments) — managing group cancellations
* [Notification Emails](/notifications/notification-emails) — cancellation email templates
* [Deposits](/payments/deposits) — reduce no-shows with upfront payment


# Online Meeting Links

Add video conferencing links to virtual appointments. Customers receive the meeting link automatically in their confirmation email.

Sesami works with any video conferencing platform:

* **Zoom**
* **Google Meet**
* **Microsoft Teams**
* **Webex**
* **Any URL-based meeting tool**

## Two Approaches

### Resource-Based Links (Recommended)

Add the meeting link to the **resource description**. Each resource can have its own link.

**Use when:** Each team member has their own meeting room (e.g., personal Zoom rooms).

### Service-Based Links

Add the meeting link to the **service description**. All bookings for that service share the same link.

**Use when:** All appointments use the same meeting space (e.g., a group yoga class).

| Scenario                         | Best approach  |
| -------------------------------- | -------------- |
| Each therapist has own Zoom room | Resource-based |
| Group yoga class                 | Service-based  |
| Personal consultations           | Resource-based |
| Webinar or seminar               | Service-based  |

## Setup

### Adding a Link to a Resource

1. Go to **Sesami > Resources > \[select resource] > Edit**
2. In the **Description** field, add your meeting link:

   ```
   Join via Zoom: https://zoom.us/j/1234567890
   Meeting ID: 123 456 7890
   Passcode: wellness
   ```
3. **Save**

### Adding a Link to a Service

1. Go to **Sesami > Services > \[select service] > Manage**
2. In the **Description** or **Service Details** field, add your meeting link
3. **Save**

## Where Links Appear

Meeting links from descriptions are included in:

* **Booking confirmation email** — sent immediately after booking
* **Reminder emails** — sent before appointment (if configured via Flows)
* **Rescheduling confirmation** — if appointment is moved

## Important: Links Are Not Auto-Generated

Sesami does not create a unique meeting link per booking. The same link from the resource or service description is shared with every customer who books that resource or service. Use permanent/reusable meeting links (e.g., Zoom Personal Meeting Room) and manage access with waiting rooms or passcodes.

## Group Appointments

For [Group Appointments](/booking/booking-features/group-appointments), add the meeting link to the **service description** so all participants receive the same link. Make sure your video platform supports your expected group size.

## Tips

* **Use permanent links** (Zoom Personal Meeting Room or reusable Google Meet links) to avoid maintenance
* **Enable waiting rooms or passcodes** for security
* **Include download links** for the meeting platform so first-time users can get set up
* **Start meetings a few minutes early** so customers don't wait

## Troubleshooting

<details>

<summary>Meeting link not appearing in confirmation email</summary>

Verify the link is saved in the resource or service description. Create a test booking to confirm it comes through.

</details>

<details>

<summary>Customers can't join the meeting</summary>

Common causes: host hasn't started the meeting, customer needs the platform app installed, or the link has a typo. Include clear instructions and a contact method in the description.

</details>

## Related

* [Resources](/admin/resources) — set up resources with descriptions
* [Services](/admin/services) — configure service descriptions
* [Group Appointments](/booking/booking-features/group-appointments) — virtual group sessions
* [Notification Emails](/notifications/notification-emails) — email customization


# Waiver & Terms

Require customers to agree to your terms, sign a waiver, or acknowledge a policy before booking. There are two ways to add this to your booking flow.

## Option 1: Sesami Forms App (with Instant Booking)

If you have [Instant Booking](/booking/booking-features/instant-booking) enabled for the service, you can use the [Sesami Forms App](/apps-integrations/sesami-forms-app) to add a terms agreement step directly in the booking flow.

**How to set it up:**

1. Enable **Instant Booking** on the service (Sesami > Services > \[service] > Instant Booking)
2. Set up the **Sesami Forms App** with a checkbox or acknowledgment field
3. Customers complete the form — including accepting terms — before the booking is confirmed

This is the most integrated approach since it's part of the Sesami booking experience itself.

## Option 2: Shopify App or Theme Customization

If you use the standard Shopify checkout flow, you can add terms through Shopify.

### Using a Shopify App

Shopify apps can add a terms and conditions checkbox to the cart or checkout page. Search the Shopify App Store for "terms and conditions" or "checkout agreement" apps.

### Using Theme Customization

You can add a terms checkbox directly to your product page or cart through theme customization:

* Add a checkbox to the product page near the Add to Cart button
* Link the checkbox to a dedicated terms page (e.g., `/pages/booking-terms`)
* Use JavaScript to prevent checkout until the box is checked

{% hint style="info" %}
Theme customization requires some coding knowledge. If you need help, contact <help@sesami.co> or consider the [Professional Services](/get-started/onboarding/professional-services) option.
{% endhint %}

## Best Practices

* **Be clear and specific** — state your cancellation, refund, and no-show policies
* **Keep it readable** — avoid legal jargon where possible
* **Link to full terms** — use a checkbox as acknowledgment, with a link to the complete document
* **Update regularly** — review terms when you change policies or add new services

## Related

* [Instant Booking](/booking/booking-features/instant-booking) — skip Shopify checkout for a streamlined booking flow
* [Sesami Forms App](/apps-integrations/sesami-forms-app) — collect information and agreements during booking
* [Cancellations & Rescheduling](/booking/booking-features/cancellations-rescheduling) — set up cancellation and rescheduling policies


# Availability

Rules and constraints that control when services can be booked.

## What is Availability?

Availability determines when customers can book your services. This includes working hours, timezone handling, booking restrictions, and time slot configurations.

## Core Availability Settings

### [Resource Availability](/booking/availability/resource-availability)

Set working hours and schedules for resources (team members, rooms, equipment):

* Define recurring weekly schedules
* Set specific dates with custom hours
* Create block-offs for holidays or maintenance
* Configure per-resource availability

### [Flexible Slots](/booking/availability/flexible-slots)

Control when customers can book with custom time slot intervals:

* Set intervals (15, 30, 45, or 60 minutes)
* Service-specific configuration
* Match booking times to your actual operations

## Booking Restrictions

### [Buffer Times](/booking/availability/buffer-times)

Add time between appointments for preparation:

* Before each appointment (prep time)
* After each appointment (cleanup time)
* Before first appointment of the day (opening setup)

### [Same Day Bookings](/booking/availability/same-day-bookings)

Control whether customers can book on the same day:

* Disable same day bookings entirely
* Set minimum advance notice (Round-up starting interval)

### [Calendar Start Date](/booking/availability/calendar-start-date)

Set a specific start date for the booking calendar:

* Calendar opens to your chosen date instead of today
* Perfect for seasonal services, future events, or pre-sales

## Timezone & Display

### [Timezone](/booking/availability/timezone)

Configure timezone handling for customers and multi-location:

* Customer timezone conversion
* Multi-location timezone support
* Timezone fixation for destination-based services

### [Reservation Period](/booking/availability/reservation-period)

Temporarily hold time slots while customers checkout:

* Prevent double bookings
* Configurable hold duration (5-60 minutes)
* Automatically releases expired reservations

### [Date and Time Format](/booking/availability/date-and-time-format)

Customize how dates and times are displayed to customers.

## How Availability Works

Availability is calculated based on multiple factors:

1. **Resource availability** - Are the required resources working?
2. **Service constraints** - Buffer times, same-day restrictions
3. **Existing bookings** - Already booked time slots
4. **Timezone** - Customer or location timezone
5. **Reservation period** - Temporarily held slots

A time slot is only available if **all conditions** are met.

## Related

* [Resources](/admin/resources) - Set up resources
* [Services](/admin/services) - Configure services
* [Booking Experiences](/booking/booking-experiences) - Customer-facing UI
* [Locations](/admin/locations) - Multi-location setup


# Resource Availability

In Sesami, **availability belongs to resources** (not just “team members”). A resource can be:

* **Team member** (staff)
* **Room**
* **Chair / station**
* **Equipment / machinery**
* Any other capacity you need to schedule

> Note: In Sesami, **team members are a Resource type** (Resources can also be rooms, equipment, etc.).

## Set availability for a resource (team member, room, equipment, …)

{% stepper %}
{% step %}

#### Open Resources

Open **Sesami → Resources**.
{% endstep %}

{% step %}

#### Select the resource

Select the resource you want to edit\
(Example: a resource with type **Team member**).
{% endstep %}

{% step %}

#### Go to Availability

Go to the **Availability** section.
{% endstep %}

{% step %}

#### Edit availability

Click a date (or day) to open **Edit Availability**.
{% endstep %}

{% step %}

#### Add time intervals

Add time intervals (example: `8:00 am – 11:00 am`).
{% endstep %}

{% step %}

#### Apply to other days (optional)

Use **Apply to…** to copy the same schedule to other days (optional).
{% endstep %}

{% step %}

#### Save changes

Click **Save** (top-right) when you’re done.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Tips

* If you schedule *rooms* or *equipment* as resources, give them realistic availability windows so the calendar doesn’t offer impossible slots.
* If you use Google Calendar sync for team members, you can block time by creating “Busy” events (see the “Block off dates or times” guide).
  {% endhint %}

<figure><img src="/files/2FxVEbqkduCX4MiPTLzl" alt=""><figcaption></figcaption></figure>

## Availability Range

The Availability Range lets you control when a Resource can accept bookings by defining a booking window.

You can choose when bookings start and how far into the future customers can schedule appointments.

### Settings:

**From: Choose when bookings become available.**

* **Now** – Customers can book immediately.
* **Exact Date** – Bookings begin on a specific date.
* **Days into the Future** – Delay bookings by a set number of days.

**Example:** Setting **From → Days into the Future → 7** prevents customers from booking appointments within the next 7 days.<br>

**To:  Choose how far into the future customers can book.**

* **Indefinitely into the Future** – No booking limit.
* **Exact Date** – Stop accepting bookings after a specific date.
* **Days into the Future** – Allow bookings only within a rolling number of days.

**Example:** Setting **To → Days into the Future → 90** allows customers to book up to 90 days in advance.

{% hint style="info" %}
Notes: It controls the booking window, not the Resource's working hours.

To prevent [same-day](/booking/availability/same-day-bookings#disable-same-day-bookings) or last-minute bookings, use [Buffer time before the first appointment of the day ](/booking/availability/buffer-times#before-the-first-appointment-on-the-same-day)instead.
{% endhint %}

<figure><img src="/files/NHG3Ll4ymj0p5GGomgLe" alt=""><figcaption></figcaption></figure>


# Flexible Slots

Flexible Slots let you control the interval at which time slots are displayed on your booking calendar — independent of the service duration.

## What Flexible Slots Do

By default, Sesami generates time slots based on the service duration. With Flexible Slots, you choose how your availability is displayed — every 15, 30, 45, or 60 minutes — giving you and your customers more flexibility.

**Example:** A 60-minute service with 15-minute flexible slots would show:

* 9:00 AM, 9:15 AM, 9:30 AM, 9:45 AM, 10:00 AM...

Without Flexible Slots, it would only show:

* 9:00 AM, 10:00 AM, 11:00 AM...

## Setting Up Flexible Slots

1. Go to **Sesami > Services > \[select a service]**
2. Scroll to **Flexible Slots**
3. Choose your interval: **15**, **30**, **45**, or **60 minutes**
4. Click **Save**

The new interval applies to both the **Admin Portal** booking view and the **Online Store** calendar.

{% hint style="info" %}
To enable Flexible Slots on your account, contact the Sesami team at <help@sesami.co>.
{% endhint %}

## When to Use Flexible Slots

* **More booking options** — shorter intervals give customers more choices, reducing missed bookings
* **Optimized scheduling** — fill gaps in your calendar by offering staggered start times
* **Service overlap control** — use with buffer times to manage transitions between appointments

## Related

* [Buffer Times](/booking/availability/buffer-times) — add time between appointments
* [Same Day Bookings](/booking/availability/same-day-bookings) — control same-day booking availability
* [Resource Availability](/booking/availability/resource-availability) — set up availability schedules


# Buffer Times

Buffer Times help ensure you have enough time before or after an appointment.

They can be used to provide travel time, preparation time, cleanup time, or simply prevent last-minute bookings.

## Setting Up Buffer Times

1. Go to **Sesami Admin Portal > Services > \[select a service] > Manage**
2. Scroll to the **Buffer Time** section
3. Configure the options:

| Option                                      | What it does                      |
| ------------------------------------------- | --------------------------------- |
| **Before each appointment**                 | Blocks time before every booking  |
| **After each appointment**                  | Blocks time after every booking   |
| **Before the first appointment of the day** | Blocks time from the current time |

4. Enter the buffer duration in minutes
5. Click **Save**

{% hint style="info" %}
Buffer time appears in the Admin Calendar after a booking is created, but is **not visible** on the storefront calendar — it simply removes those time slots from availability.
{% endhint %}

## Common Setups

| Business type    | Before | After  | Why                     |
| ---------------- | ------ | ------ | ----------------------- |
| Hair salon       | —      | 15 min | Cleanup between clients |
| Consulting       | —      | 10 min | Notes and prep          |
| Cleaning service | 30 min | 30 min | Travel time             |
| Yoga class       | 15 min | 15 min | Room changeover         |

#### Before Each Appointment

Use this option when staff needs preparation time before every booking.

If you set **30 minutes** before each appointment:

* A 2:00 PM appointment will block availability starting at 1:30 PM.

You won't be able to book another appointment that overlaps with that preparation time.

#### After Each Appointment

Use this option when staff need time after an appointment.

If you set **15 minutes** after each appointment:

* A 2:00 PM appointment ending at 3:00 PM will keep the calendar unavailable until 3:15 PM.

This is useful for cleanup, notes, or preparing for the next customer.

#### Before the First Appointment on the Same Day

Use this option when you need advance notice before accepting same-day appointments.

If you set **120 minutes (2 hours)**:

* At 8:00 AM, customers can only book appointments starting at 10:00 AM or later.
* At 1:00 PM, customers can only book appointments starting at 3:00 PM or later.

This setting is always calculated from the current time and updates throughout the day.

Common uses include:

* Travel time
* Setup time
* Preparation time
* Preventing last-minute bookings<br>

It can also be used to require bookings a certain number of hours or days in advance.

If you want customers to book at least **24 hours in advance**, set the buffer to **1440 minutes (1 day)**. For **48 hours' notice**, set it to **2880 minutes (2 days)**, and so on.

{% hint style="success" %}
**Note:** Buffer times are always configured in minutes.
{% endhint %}

## Fixed Time Schedules

If you need a fixed schedule with built-in breaks (rather than dynamic buffers), set your availability manually as intervals.

**Example** — 30-minute service with a 15-minute break:

* 9:00 AM – 9:30 AM
* 9:45 AM – 10:15 AM
* 10:30 AM – 11:00 AM
* 11:15 AM – 11:45 AM

This approach gives you full control over exactly when slots are available.

## Related

* [Same Day Bookings](/booking/availability/same-day-bookings) — control how close to the current time customers can book
* [Resource Availability](/booking/availability/resource-availability) — set up availability schedules
* [Flexible Slots](/booking/availability/flexible-slots) — control booking interval display


# Same Day Bookings

## Disable Same Day Bookings

Enable this option if you **do not** want customers to book appointments for the current day.

1. Go to **Sesami > Services > \[select a service]**
2. Check **Disable same day booking**
3. Click **Save**

When enabled, today's date will show no available slots on the storefront calendar.

## Round Up Starting Interval

The **Round-up Starting Interval** setting rounds the **next** **available time slot** up to the next selected interval.

**Options:**

* Disable — customers can book any available slot, even one starting right now.
* 5 minutes,&#x20;
* 10 minutes
* 15 minutes
* 30 minutes
* 60 minutes

For example, if the current time is **11:02 AM**, the Round-up setting adjusts it as follows:

| Round-up Interval | First Available Slot |
| ----------------- | -------------------- |
| 5 minutes         | 11:05 AM             |
| 10 minutes        | 11:10 AM             |
| 15 minutes        | 11:15 AM             |
| 30 minutes        | 11:30 AM             |
| 60 minutes        | 12:00 PM             |

{% hint style="info" %}
If you need customers to book further in advance (e.g., 30 minutes), use [Buffer Times](/booking/availability/buffer-times) with a "Before the First Appointment on the Same Day" value instead.
{% endhint %}

## Related

* [Buffer Times](/booking/availability/buffer-times) — add preparation time between bookings
* [Calendar Start Date](/booking/availability/calendar-start-date) — control which date the calendar shows first
* [Flexible Slots](/booking/availability/flexible-slots) — control time slot intervals


# Calendar Start Date

If you want the storefront calendar to open on a specific date by default, set a **start date** at the service level.

## How to set it

{% stepper %}
{% step %}

#### Go to Sesami → Services

Open the Sesami app and navigate to Services.
{% endstep %}

{% step %}

#### Click the service you want to edit

Select the service whose storefront calendar start date you want to configure.
{% endstep %}

{% step %}

#### Scroll to Storefront calendar start date

Locate the "Storefront calendar start date" field in the service settings.
{% endstep %}

{% step %}

#### Enter the date you want the calendar to start from

Specify the start date you want customers to see by default.
{% endstep %}

{% step %}

#### Save

Save your changes.
{% endstep %}
{% endstepper %}

## What this does

When a customer opens that service page, the calendar will initially show starting from the date you configured.


# Timezone

Sesami supports **multi-time zones**, which is useful for stores serving customers across regions.

## Customer’s current timezone (conversion)

{% hint style="info" %}
When enabled, the storefront calendar adapts to the customer’s current timezone.
{% endhint %}

* Your store’s time slots are converted automatically for the customer.
* On the Shopify order, you can see the customer’s timezone and selected time.
* In Sesami, appointments remain in your store’s timezone (this is a display conversion).

## Set your store timezone

Go to: **Sesami → Settings → Store Settings → Timezone**

## Hide timezone label on the storefront

If you don’t want the timezone label shown on the calendar: **Sesami → Settings → Storefront Settings → Hide timezone**

## Timezone fixation (destination time)

Some businesses need service times fixed to the destination timezone (e.g., tours, airport lounges).

Use the service timezone fixation option (see the timezone fixation walkthrough/video in the product docs).


# Reservation Period

The reservation period helps prevent double bookings by temporarily **holding a time slot** while a customer is checking out.

## What it does

{% hint style="info" %}
When enabled:

* A selected slot becomes **Reserved** (pre-purchase)
* After payment, it becomes **Booked**
* If checkout isn’t completed in time, the reservation expires and the slot is released
  {% endhint %}

## How to configure it

Go to: **Sesami → Settings → Reservation period**

Choose one:

* Disabled
* 5 minutes
* 10 minutes
* 15 minutes
* 30 minutes
* 60 minutes

## When to use it

{% hint style="warning" %}
Enable this if customers can add bookings to cart and might spend time browsing before checkout.
{% endhint %}


# Date and Time Format

You can control how time and date show up on the storefront calendar (and in Sesami’s default emails).

{% stepper %}
{% step %}

### Where to change it

Go to: **Sesami → Settings → Storefront Settings → Time format & Date format**

Click **Save** when you’re done.
{% endstep %}
{% endstepper %}

## Time format

Choose one:

* **12-hour** (am/pm)
* **24-hour** (e.g., 08:00, 14:00, 23:00)

## Date format (tokens)

You can configure the date format using these tokens:

* `dd` = day (e.g., 02, 19, 30)
* `MM` = month number (e.g., 01, 12, 07)
* `NN` = month name (e.g., February, June, October)
* `yyyy` = year (e.g., 2024)
* `hh` = hour (e.g., 06:00)
* `mm` = minute (e.g., 00:10)

{% hint style="info" %}

* **Time format** shows on the storefront calendar and in Sesami default notification emails.
* **Date format** shows in Sesami default notification emails.
* If you use **Sesami Flows**, your formatting is handled differently (see dev docs for formatting rules).
  {% endhint %}


# Sesami Flows

Sesami Flows is the automation layer for customizing notifications, integrations, and operational workflows around your bookings.

With Flows, you can trigger events at any stage of the customer's booking journey — before, during, or after their appointment.

## Flow Types

| Type        | What it does                    | Use case                             |
| ----------- | ------------------------------- | ------------------------------------ |
| **Email**   | Send custom HTML or text emails | Confirmations, reminders, thank-yous |
| **Webhook** | Send data to external platforms | Klaviyo, Slack, Zapier integrations  |

## Triggers

| Trigger       | When it fires                                                                           |
| ------------- | --------------------------------------------------------------------------------------- |
| **Instant**   | Immediately when the event occurs (e.g., booking confirmation)                          |
| **Scheduled** | At a set time before or after the event (e.g., reminder 24h before, follow-up 1h after) |

## Flow Ideas

* **Reminders** — send one or more email reminders before the appointment
* **Thank-you / survey** — send a follow-up after the appointment asking for feedback
* **Klaviyo integration** — trigger Klaviyo events for confirmation, reminder, cancellation, etc.
* **Multi-language notifications** — use conditions to send emails in the customer's language
* **Slack notifications** — notify your team via webhook when a booking is created
* **Auto-collect cancellation fee** — charge a fee on no-show via webhook automation
* **Auto-collect on check-in** — trigger payment collection when a customer checks in for their appointment

## Plan Limits

Flows are available on all paid plans:

| Plan    | Max Flows |
| ------- | --------- |
| Small   | 1         |
| Pro     | 6         |
| Premium | 9         |

{% hint style="warning" %}
Flows emails do **not** support `.ics` attachments (calendar files). Default Sesami notifications do include `.ics` attachments.
{% endhint %}

## Related

* [Email and Webhook as Action Types](/automations/email-and-webhook-as-action-types) — detailed Flow configuration
* [Sesami Flows and Klaviyo](/automations/sesami-flows-and-klaviyo) — Klaviyo integration via Flows
* [Sesami Flows and Omnisend](/automations/sesami-flows-and-omnisend) — Omnisend integration via Flows
* [Notification Emails](/notifications/notification-emails) — default Sesami notifications


# Email and Webhook as Action Types

Sesami Flows supports two primary action types to automate your booking workflows: **Email** and **Webhook**.

## Email Actions

Email actions allow you to send custom-branded notifications based on booking events.

### When to use Email actions

* Send customized confirmation emails with specific branding
* Create service-specific or location-specific email templates
* Send different emails based on booking conditions (language, service type, etc.)
* Notify team members or customers with custom messaging

### How Email actions work

1. A booking event occurs (created, updated, or canceled)
2. Your Flow checks the conditions you've defined
3. If conditions match, the email is sent to the specified recipient

### Email action capabilities

* **Custom content**: Write your own subject lines and email body
* **Conditional branching**: Send different emails based on service, location, or language
* **Dynamic variables**: Include booking details like date, time, customer name, service name
* **Multiple recipients**: Send to customer, merchant, or team member

{% hint style="warning" %}
**Important limitation**: Email actions sent via Flows do **not** support `.ics` calendar file attachments. If you need calendar files, use Sesami's default notification emails instead.
{% endhint %}

### Example use cases

* Send a welcome email in French for French-speaking customers
* Send specialized pre-appointment instructions for specific services
* Notify a manager when high-value bookings are made
* Send follow-up emails after appointments are completed

## Webhook Actions

Webhook actions send booking data to external systems in real-time via HTTP POST requests.

### When to use Webhook actions

* Integrate with third-party marketing platforms (Klaviyo, Omnisend, etc.)
* Trigger custom business logic in your own systems
* Send booking data to analytics or CRM platforms
* Connect to Zapier or Make (formerly Integromat) for extended automation

### How Webhook actions work

1. A booking event occurs (created, updated, or canceled)
2. Your Flow checks the conditions you've defined
3. If conditions match, Sesami sends an HTTP POST request to your webhook URL
4. The receiving system processes the booking data

### Webhook payload

Webhooks send booking data in JSON format, including:

* Booking details (date, time, duration)
* Customer information (name, email, phone)
* Service and resource details
* Booking status (confirmed, canceled, rescheduled)
* Custom fields and metadata

### Example use cases

* Send booking data to Klaviyo for marketing automation
* Trigger SMS reminders via Twilio or similar services
* Update your internal CRM when bookings are created
* Send booking analytics to Google Analytics or Mixpanel
* Create tasks in project management tools when services are booked

## Comparing Email vs Webhook Actions

| Feature            | Email Action                | Webhook Action                |
| ------------------ | --------------------------- | ----------------------------- |
| **Primary use**    | Send notifications          | Send data to external systems |
| **Recipient**      | Email address               | HTTP endpoint URL             |
| **Content**        | HTML email                  | JSON data payload             |
| **Calendar files** | Not supported               | N/A                           |
| **Customization**  | Subject, body, branding     | Full booking data in JSON     |
| **Best for**       | Customer/team notifications | System integrations           |

## Setting up actions in Flows

To add an Email or Webhook action to your Flow:

1. Open **Sesami** in your Shopify Admin
2. Navigate to **Settings > Flows**
3. Create a new Flow or edit an existing one
4. Choose your trigger event (booking created, updated, canceled)
5. Add conditions if needed (optional)
6. Add an **Email** or **Webhook** action
7. Configure the action details
8. **Save** and test your Flow

{% hint style="info" %}
**Pro tip**: Always test your Flows with a test booking before enabling them for live customers. Check that emails arrive correctly or that webhook data is received properly.
{% endhint %}

## Troubleshooting

<details>

<summary>Webhook not receiving data</summary>

* Verify your webhook URL is correct and publicly accessible
* Check that your endpoint accepts POST requests
* Ensure your server returns a 200 OK status code
* Review your Flow conditions to ensure they're being met
* Check Sesami Flow logs for delivery status

</details>

<details>

<summary>Email not being sent</summary>

* Verify the email address is correctly configured
* Check your Flow conditions are being met
* Ensure the Flow is enabled and active
* Test with a simple booking to verify the trigger works
* Check spam folders if testing with your own email

</details>

## Related

* [Sesami Flows](/automations/sesami-flows) - Overview of the automation system
* [Sesami Flows and Klaviyo](/automations/sesami-flows-and-klaviyo) - Integration with Klaviyo
* [Sesami Flows and Omnisend](/automations/sesami-flows-and-omnisend) - Integration with Omnisend
* [Notification Emails](/notifications/notification-emails) - Default notification system


# 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) - Overview of Sesami's automation system
* [Email and Webhook Actions](/automations/email-and-webhook-as-action-types) - Understanding action types
* [Klaviyo Integration Overview](/apps-integrations/klaviyo) - General Klaviyo patterns
* [Notification Emails](/notifications/notification-emails) - Default Sesami notification system


# 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](/automations/sesami-flows) - Overview of Sesami's automation system
* [Email and Webhook Actions](/automations/email-and-webhook-as-action-types) - Understanding action types
* [Sesami Flows and Klaviyo](/automations/sesami-flows-and-klaviyo) - Alternative ESP integration
* [Notification Emails](/notifications/notification-emails) - Default Sesami notification system


# Notification Emails

When an appointment is booked or modified, Sesami can send notification emails to:

* The **merchant**
* The **customer**
* The assigned **resource** (commonly a team member)

{% hint style="info" %}
In Sesami, **team members are a Resource type** (resources can also be rooms, equipment, etc.).
{% endhint %}

## When Notifications Are Sent

Emails are automatically sent when an appointment is:

* **Created** — new booking confirmation
* **Rescheduled** — by the customer or by a store admin
* **Canceled** — by the customer or by a store admin
* **Reassigned** — when a different resource is assigned

## Who Gets Notified and How to Manage It

### For Merchants and Customers

Go to: **Sesami > Settings > Email Confirmations and Calendar Events**

Here you can toggle:

1. Send to merchant
2. Send to customer

When enabled, both will receive an email with appointment details and a calendar event.

### For Team Members / Resources

Go to: **Sesami > Team / Resources > \[Select a team member or resource] > Advanced > Notifications**

Enable **Email confirmations and calendar events to this team member**. The resource will then receive email updates any time an appointment involving them is created or modified.

## Calendar Event Attachment (.ics)

Sesami's default emails include a calendar event file (`.ics`) that recipients can import into:

* Google Calendar
* Outlook
* Apple Calendar
* Any other calendar app

{% hint style="warning" %}
**Sesami Flows does not support attachments**, so Flow-based emails won't include the `.ics` file. If you need `.ics` attachments, use Sesami's default emails.
{% endhint %}

## Resending a Booking Confirmation

Need to resend a confirmation email?

* Available on **Pro plans and up**
* Requires **Booking Management** to be activated (allows customers to reschedule via email)

Once enabled, you'll see the option to resend confirmation emails directly from the Sesami Calendar.

## Customizing Emails

For more control over email content, see [Customizing Notification Emails](/notifications/customizing-notification-emails).

For fully custom emails, reminders, and SMS — consider using [Sesami Flows](/automations/sesami-flows) with an ESP like [Klaviyo](/automations/sesami-flows-and-klaviyo).

## FAQ

<details>

<summary>Is there SMS or text confirmation/reminder for bookings?</summary>

Yes — use [Sesami Flows](/automations/sesami-flows) with an ESP (Email service provider) integration such as [Klaviyo](/automations/sesami-flows-and-klaviyo) to send SMS confirmations and reminders.

</details>

<details>

<summary>Can I customize the sender name and email?</summary>

On Pro plans and above, you can remove Sesami branding, which changes the sender name. For fully custom sender addresses, use Sesami Flows with your own ESP (Email service provider).

</details>

## Related

* [Customizing Notification Emails](/notifications/customizing-notification-emails) — per-service and per-resource email notes
* [Sesami Flows](/automations/sesami-flows) — advanced automation and custom emails
* [Sesami Flows and Klaviyo](/automations/sesami-flows-and-klaviyo) — email and SMS via Klaviyo


# Customizing Notification Emails

You can add a personal touch to the confirmation emails your customers, team members, and merchants receive — without needing to write custom templates.

## Two Places to Customize

{% stepper %}
{% step %}

#### Appointment Details (per service)

Go to: **Sesami > Services > \[Click on a service] > Appointment Details**

Anything you write here will appear in the confirmation email sent to the customer, team member, and merchant for that service.

Use this for:

* Special instructions
* Location info
* Policies and what to bring
* What to expect during the appointment
  {% endstep %}

{% step %}

#### Event Notes (per resource)

Go to: **Sesami > Team / Resources > \[Select a team member or resource] > Advanced > Notifications > Event Notes**

These notes are added to the confirmation email when that resource is booked.

Great for:

* Personal greetings from the team member
* Team-specific instructions
* Language preferences
  {% endstep %}
  {% endstepper %}

## Tips

{% hint style="info" %}

* Keep service and resource naming consistent so customers always know what they're booking
* Test emails on both desktop and mobile before going live
* Preview by making a test booking with your own email address
  {% endhint %}

## Need More Advanced Customization?

For fully custom email templates, reminders, thank-you notes, and SMS, use [Sesami Flows](/automations/sesami-flows) — often paired with [Klaviyo](/automations/sesami-flows-and-klaviyo) for email marketing.

With Flows you can:

* Design fully custom email templates
* Send appointment reminders at any timing
* Trigger follow-up and review-request emails
* Integrate with your existing marketing stack

{% hint style="warning" %}
Sesami Flows does not support attachments, so Flow-based emails won't include the default `.ics` calendar file. See [Notification Emails](/notifications/notification-emails) for details.
{% endhint %}

## Related

* [Notification Emails](/notifications/notification-emails) — default email behavior and who gets notified
* [Sesami Flows](/automations/sesami-flows) — advanced email and SMS automation
* [Sesami Flows and Klaviyo](/automations/sesami-flows-and-klaviyo) — send emails via Klaviyo


# Deposits

Collect a partial payment at booking time, with the remainder due at or after the appointment.

## How Deposits Work with Sesami

Sesami uses Shopify's payment system, so deposits are handled through Shopify's order and payment flow.

### Recommended: Downpay

[Downpay](https://apps.shopify.com/downpay) is a Shopify app that works well with Sesami and offers:

* **Deposit collection** — charge a partial amount at checkout
* **Card on file** — store the card for the remaining balance
* **Capture later** — collect the rest from the order page or POS

### Alternative: Variant-Based Deposits

You can use product variants to define payment options:

1. Create variants like "Deposit — $25" and "Full Payment — $100"
2. The customer selects their payment option when booking
3. Collect the remaining balance separately via Shopify invoice or in-person payment

See this approach in action on the [demo store](https://demo.sesami.co).

## Common Deposit Setups

* **Fixed amount** — $25 deposit on a $100 service
* **Percentage** — 20% deposit, balance due at appointment
* **Pay later** — no deposit; collect full payment at the appointment

{% hint style="info" %}
Clearly communicate your deposit and cancellation policy in the service's "Appointment Details" section so customers know what to expect.
{% endhint %}

## Related

* [Credit Card on File](/payments/credit-card-on-file) — store payment methods for future charges
* [Tips](/payments/tips) — add tipping to checkout


# Tips

Let customers add a tip or gratuity — great for service-based businesses like salons, spas, and wellness practitioners.

## Tipping with Shopify POS

For in-person bookings, tipping is available through Shopify POS:

* Configure tip options in your POS settings
* Customers can add a tip on the POS device during or after checkout

For POS tipping setup, see: [Shopify POS Tips](https://help.shopify.com/en/manual/sell-in-person/pos-classic/transactions/tips)

### Simplified with Sesami Instant Booking

When [Sesami Instant Booking](/booking/booking-features/instant-booking) is active, the checkout happens **after** the service is completed, making tipping straightforward:

1. Customer books using Sesami Instant Booking (no payment at booking time)
2. Service is completed
3. Customer adds the booking to cart and proceeds to checkout
4. Tip can be added on the full amount at checkout

This lets customers tip based on their actual experience.

{% hint style="info" %}
Even for bookings that went through Shopify checkout, you can detach the order using a Sesami Flow to achieve a similar post-service checkout and tipping experience.
{% endhint %}

## Tipping on Online Store

For online bookings, tipping is handled through Shopify's built-in tipping feature:

1. Go to **Shopify > Settings > Checkout**
2. Find the **Tipping** section
3. Enable tipping
4. Configure tip options (percentage or custom amount)
5. **Save**

For full details, see: [Shopify Tipping Setup](https://help.shopify.com/en/manual/checkout-settings/tips)

## Related

* [Deposits](/payments/deposits) — collect partial payment at booking
* [Credit Card on File](/payments/credit-card-on-file) — store payment methods for future charges
* [Sesami Instant Booking](/booking/booking-features/instant-booking) — booking without upfront checkout


# Credit Card on File

Looking to store or hold a client's credit card on file for future charges? Here's how to handle this with Sesami and Shopify.

## How Payments Work with Sesami

Sesami doesn't process payments directly — payments are handled through Shopify's checkout system. Shopify maintains PCI compliance, which means merchants cannot manually store credit card numbers in Shopify admin.

## Recommended: Downpay

[Downpay](https://apps.shopify.com/downpay) is a Shopify app that works well with Sesami and offers:

* **Card on file** via Shopify's API
* **Deposits and partial payments**
* Capture the remaining balance from the order page or POS

## Alternative Approaches

* **Send an invoice** to the customer for the remaining balance
* **Charge a deposit** at booking and collect the rest at the appointment (see [Deposits](/payments/deposits))

## Related

* [Deposits](/payments/deposits) — collect partial payment at booking
* [Tips](/payments/tips) — add tipping to checkout


# Analytics

Use the Sesami Analytics dashboard to review business insights and stay on top of your service commerce.

{% embed url="<https://sesami.co/wp-content/uploads/2025/01/2024-unwrapped-sesami-analytics.mp4>" %}

## Dashboard Overview

The analytics dashboard gives you a single view of your booking and sales performance:

* **Booking and sales data** — view and compare metrics side by side
* **Top services** — see which services are booked and sold the most
* **Time range selector** — use presets or custom ranges to view data for any period

## How to Access

Go to **Sesami Admin Portal > Analytics**

{% hint style="info" %}
Analytics is available on the **Pro** and **Premium** plans.
{% endhint %}

## Related

* [Bookings Report](/analytics/bookings-report) — export and review detailed booking data


# Bookings Report

Export your appointments and booking data as a report, delivered straight to your store admin email.

## Plan Availability

Reports export is available on **Pro** and **Premium** plans.

## How to Export

{% stepper %}
{% step %}

#### Open Upcoming Appointments

Go to **Sesami > Upcoming Appointments** in your store admin.
{% endstep %}

{% step %}

#### Click View All

Open the full appointments list.
{% endstep %}

{% step %}

#### Choose a Filter

Select one of: **Upcoming**, **All**, **Past**, or **Date Range**.
{% endstep %}

{% step %}

#### Click Export

The report will be emailed to your store email within a few minutes.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
**Rate limit:** A new report can be requested about every **10 minutes**.
{% endhint %}

## What's Included

The exported report includes:

* Appointment ID / Order ID
* Team member (resource)
* Product / Variant
* Duration / Date / Time
* Customer name and email
* Payment status
* Rescheduling link
* Check-in / no-show status
* Quantity (for group appointments)
* Location (Admin Portal only)
* Resource (Admin Portal only)

{% hint style="info" %}
In Sesami, **team members are a Resource type** (resources can also be rooms, equipment, etc.). The Admin Portal export includes full resource and location fields.
{% endhint %}

## Related

* [Analytics](/analytics/analytics) — booking metrics and insights
* [Group Appointments](/booking/booking-features/group-appointments) — understanding quantity in exports
* [Locations](/admin/locations) — multi-location reporting


# Billing


# Billing Schedule

Sesami is billed through Shopify, similar to other Shopify apps.

## How billing works

{% hint style="info" %}

* Shopify uses a **30-day subscription billing period**.
* Apps like Sesami can have a **separate 30-day billing cycle**, which affects when charges appear on your Shopify bill.
  {% endhint %}

If you need details about how Shopify bills third-party apps, refer to Shopify’s app billing documentation in the Shopify Help Center.


# Refund Policy

Sesami includes a trial period so you can evaluate the product before you’re charged.

## Trial

When you install Sesami for the first time and choose a plan, you typically receive a **30‑day free trial**.

## Refund / no-charge scenario

If you uninstall Sesami within the trial window (within 30 days), you won’t be charged for the subscription.

{% hint style="info" %}
If you have questions about your specific billing situation (for example, Shopify invoice timing), contact Sesami support with your Shopify store URL and the invoice date.
{% endhint %}


# Discounts for Nonprofits and Startups

Sesami doesn’t have standing public discounts specifically for non-profits or start-ups.

If your organization fits one of these categories, contact Sesami support and share:

* Your store URL
* Your situation (non-profit / early-stage)
* Your expected booking volume and use case

We’ll review and let you know what options are available.


# Pause or Freeze the Subscription

Going on vacation, running a seasonal business, or just need a break? Here's how to handle your Sesami subscription during downtime.

## How Sesami Billing Works

Sesami is a third-party Shopify app, so its billing is **separate from your Shopify subscription**. Pausing or temporarily closing your Shopify store does **not** pause Sesami billing — invoices will continue unless you uninstall the app.

## Steps to Pause

1. **Save your data** — export your booking information, service configurations, and resource settings so you can restore them later
2. **Contact Sesami support** — reach out to <help@sesami.co> **before** uninstalling. We review all requests individually and may be able to help
3. **Uninstall Sesami** — if needed, remove the app to stop billing

{% hint style="info" %}
We look at all requests individually. Contact us before uninstalling so we can find the best solution for your situation.
{% endhint %}

## Coming Back

When you're ready to resume:

1. Reinstall Sesami from the Shopify App Store
2. Contact <help@sesami.co> — the team will help you with the new setup
3. Re-add your services, resources, and availability (or restore from your saved data)
4. Test the booking flow on your storefront

## Related

* [Cancel Your Subscription](/account-management/billing/cancel-subscription) — full cancellation steps
* [Billing Schedule](/account-management/billing/billing-schedule) — billing cycle details
* [Refund Policy](/account-management/billing/refund-policy) — refund terms


# Cancel Your Subscription

Before canceling, reach out to us — we may be able to help with whatever you're experiencing.

{% hint style="success" %}
**Contact us first**: <help@sesami.co> — tell us what's going on and we'll do our best to help.
{% endhint %}

## Cancel Your Subscription

If you've decided to move on:

1. Go to **Shopify > Settings > Apps and sales channels**
2. Find **Sesami** and click **Delete**
3. In the confirmation message, click **Delete**

Once you delete the Sesami app, your plan is canceled.

{% hint style="warning" %}
You may still receive a charge after canceling due to your Shopify billing cycle. See [Shopify's app billing documentation](https://help.shopify.com/en/manual/your-account/manage-billing/your-invoice/apps) for details.
{% endhint %}

## What Happens After Canceling

* **Existing appointments are not canceled** — bookings already made will remain as they are
* **No notifications are sent** — Sesami won't send any notifications to your customers after uninstalling
* **Data is retained temporarily** — if you reinstall later, contact <help@sesami.co> for assistance

## Before You Cancel

* Export your booking data from Sesami
* Sync upcoming appointments to Google Calendar
* Notify your customers if they have future bookings

We'd love to hear any feedback about your experience — reach out to <help@sesami.co>.

## Related

* [Pause or Freeze the Subscription](/account-management/billing/pause-or-freeze-subscription) — alternatives to canceling
* [Refund Policy](/account-management/billing/refund-policy) — trial and refund information


# Enabling or Disabling Sesami

You can quickly show or hide the Sesami booking button on your online store without uninstalling the app.

## How to Enable or Disable

1. Go to **Sesami > Settings > Sesami Status**
2. Toggle Sesami **on** or **off**
3. **Save**

When disabled, the Sesami booking button disappears from your product pages. When re-enabled, it reappears.

{% hint style="warning" %}
**Disabling Sesami does not cancel your subscription.** You'll continue to be billed. To cancel billing, see [Cancel Your Subscription](/account-management/billing/cancel-subscription).
{% endhint %}

## When to Use This

* **Temporarily hide bookings** — during store maintenance, inventory updates, or seasonal changes
* **Test before going live** — disable Sesami while configuring, then enable when ready
* **Quick toggle** — turn off bookings without removing any configuration

All your services, resources, availability, and settings remain intact while Sesami is disabled.

## Related

* [Cancel Your Subscription](/account-management/billing/cancel-subscription) — fully remove Sesami and cancel billing
* [Pause or Freeze the Subscription](/account-management/billing/pause-or-freeze-subscription) — pause billing for seasonal businesses


# Contact Support

Reach out to us if you couldn't find the answer to your question already.

{% embed url="<https://share.hsforms.com/1S8-_YRdGQXy0RVx2Q-vubQ4on43>" fullWidth="true" %}


