# Quickstart

## 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

Make sure you have:

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

***

{% stepper %}
{% step %}
**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 %}
{% 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. 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.md) | [Availability Setup](/booking/availability/resource-availability.md)
{% 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.md)

{% 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 (Step 5)
2. **Product has 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. **Product is added as a service** in Sesami
2. **Resources are assigned** to the service (Step 3)
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 3)
2. **Availability is set** for assigned resources (Step 2)
3. **Timezone is correct** in Sesami Settings
4. **Booking window** allows future bookings (check advanced settings)
5. **No block-offs** are covering all available dates

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

</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.md)

</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.md) | [Deposits](/payments/deposits.md)

</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.md)

</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.md) | [Safari Cookies](/get-started/onboarding/troubleshooting/safari-cookies.md) | [Invalid Link Error](/get-started/onboarding/troubleshooting/as-a-customer-why-am-i-seeing-an-invalid-link-error-page.md)

</details>

***

## Next Steps

Once you have basic bookings working, consider:

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

***

## Need Help?

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

## Related

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


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://help.sesami.co/get-started/quickstart.md?ask=<question>
```

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

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