diff --git a/activities/activities.mdx b/activities/activities.mdx
index 3898c79..784bd5e 100644
--- a/activities/activities.mdx
+++ b/activities/activities.mdx
@@ -16,7 +16,11 @@ Sailia supports three types of activities:
| **Hires** | Equipment or resource rentals for a defined duration, such as kayak hire or wetsuit rental |
| **Events** | One-off or recurring events with attendee management, such as a beach clean-up or open day |
-All three types share the same booking and payment flow. The main differences are in how scheduling and capacity work.
+All three types share the same booking and payment flow. The main differences are in how scheduling and capacity work:
+
+- **Courses** have a fixed schedule with specific start times. You define when each session runs and how many sessions make up the course. Customers book individual sessions or the full course.
+- **Hires** are time-slot based. You define the available hours and duration options, and customers choose their preferred slot.
+- **Events** are typically one-off or annual occasions. You set the date, time, and attendee capacity.
## Create an activity
@@ -61,15 +65,9 @@ Each activity session has a maximum capacity. As customers book, the available s
## Add-ons
-Add-ons are optional extras that customers can purchase alongside an activity booking. Examples include equipment hire, photography packages, or meal upgrades.
-
-When creating an add-on:
-
-1. Give it a name, description, and price.
-2. Link it to one or more activities.
-3. Choose whether it is per-person or per-booking.
+Add-ons are optional extras that customers can purchase alongside an activity booking. Examples include equipment hire, photography packages, or meal upgrades. Each add-on can be charged per person or per booking.
-Add-ons appear during the checkout flow and are included in the order total. They are also eligible for [discount codes](/pricing/discount-codes) if configured.
+See [add-ons](/activities/add-ons) for a full guide on creating, managing, and pricing add-ons.
## Accounting categories
@@ -78,10 +76,16 @@ If you use the [Xero accounting sync](/integrations/accounting-sync), assign an
## Related guides
+
+ Offer optional extras alongside activity bookings.
+
Learn how customers book activities through your booking page.
Manage demand when activities are fully booked.
+
+ Manage seasonal availability and holiday schedules.
+
diff --git a/activities/add-ons.mdx b/activities/add-ons.mdx
new file mode 100644
index 0000000..3b20fb9
--- /dev/null
+++ b/activities/add-ons.mdx
@@ -0,0 +1,93 @@
+---
+title: Add-ons
+description: Offer optional extras like equipment hire, photography packages, or meal upgrades alongside activity bookings.
+keywords: ['add-ons', 'extras', 'upsell', 'per-person', 'per-booking', 'activity add-ons']
+---
+
+Add-ons are optional extras that customers can purchase alongside an activity booking. Use them to upsell equipment hire, photography packages, meal upgrades, or any other complementary product.
+
+## How add-ons work
+
+1. You create an add-on and link it to one or more activities.
+2. During checkout, customers see the available add-ons for their selected activity.
+3. They choose which add-ons to include and the quantity.
+4. The add-on cost is included in the order total and processed in the same transaction.
+
+## Create an add-on
+
+
+
+ Navigate to your activities dashboard and select **Add-ons**.
+
+
+ Click **Create Add-on** and enter the add-on name, description, and price.
+
+
+ Select whether the add-on is charged **per person** or **per booking**:
+
+ | Pricing model | How it works |
+ | --- | --- |
+ | **Per person** | The price is multiplied by the number of participants. For example, a wetsuit hire at $10 per person costs $40 for a group of 4 |
+ | **Per booking** | A flat fee charged once regardless of how many participants are in the booking. For example, a group photo package at $25 |
+
+
+ Select which activities this add-on applies to. The add-on only appears during checkout for the linked activities.
+
+
+ Click **Save** to make the add-on available.
+
+
+
+## Add-ons at checkout
+
+When a customer books an activity with linked add-ons, they see the available extras during the checkout flow. Customers can:
+
+- Select which add-ons they want
+- Adjust the quantity for per-person add-ons
+- See the running total update in real time
+
+Add-ons are displayed after the customer selects their activity session and before they proceed to payment.
+
+## Add-ons for group bookings
+
+For [group bookings](/activities/group-bookings), add-on pricing depends on the pricing model:
+
+- **Per-person add-ons** are multiplied by the number of participants in the group
+- **Per-booking add-ons** are charged once for the entire group
+
+## Discounts on add-ons
+
+Add-ons are eligible for [discount codes](/pricing/discount-codes) if you include them in the discount's product eligibility settings. This lets you create promotions that cover the full booking experience, including extras.
+
+## Accounting categories
+
+If you use the [Xero accounting sync](/integrations/accounting-sync), you can assign an accounting category to each add-on. This determines how add-on revenue is categorized on Xero invoices, including the correct VAT rate and account code.
+
+## Managing add-ons
+
+From the add-ons dashboard, you can:
+
+- **Edit** an add-on's name, description, price, or linked activities at any time
+- **Deactivate** an add-on to stop it from appearing at checkout without deleting it
+- **View** which activities an add-on is linked to
+
+
+ Changes to an add-on's price only affect future bookings. Existing bookings retain the price that was charged at the time of purchase.
+
+
+## Related guides
+
+
+
+ Create activities and configure their settings.
+
+
+ How add-ons work with group bookings.
+
+
+ Create discounts that apply to add-ons.
+
+
+ How add-ons appear during checkout.
+
+
diff --git a/activities/group-bookings.mdx b/activities/group-bookings.mdx
index 8b23e15..1e47780 100644
--- a/activities/group-bookings.mdx
+++ b/activities/group-bookings.mdx
@@ -36,7 +36,7 @@ You can check waiver completion status for each participant from the [booking de
## Add-ons for groups
-[Add-ons](/activities/activities#add-ons) configured as **per-person** are multiplied by the number of participants. Add-ons configured as **per-booking** are charged once regardless of group size.
+[Add-ons](/activities/add-ons) configured as **per-person** are multiplied by the number of participants. Add-ons configured as **per-booking** are charged once regardless of group size.
## Managing group bookings
diff --git a/api-reference/ota-core.mdx b/api-reference/ota-core.mdx
index ba0eb06..b4f21a5 100644
--- a/api-reference/ota-core.mdx
+++ b/api-reference/ota-core.mdx
@@ -152,22 +152,6 @@ Retrieve the waiver questions associated with an activity. Use this to display r
GET /api/v2/ota/adventuro/questions/{ActivityID}
```
-### Responses
-
-| Status | Description |
-| --- | --- |
-| **200** | List of available timeslots |
-| **400** | Invalid `ActivityID` |
-| **422** | Missing `Date` parameter |
-
-## Get waiver questions
-
-Retrieve the waiver questions associated with an activity. Use this to display required forms to customers before they complete a booking.
-
-```
-GET /api/v2/ota/core/questions/{ActivityID}
-```
-
### Path parameters
| Parameter | Type | Description |
diff --git a/customers/importing-customers.mdx b/customers/importing-customers.mdx
new file mode 100644
index 0000000..ba47e0e
--- /dev/null
+++ b/customers/importing-customers.mdx
@@ -0,0 +1,55 @@
+---
+title: Importing customers
+description: Import customer and contact data into Sailia using CSV files.
+keywords: ['import', 'CSV', 'customer import', 'contacts', 'migration', 'bulk import']
+---
+
+You can import customer and contact data into Sailia using CSV files. This is useful when migrating from another system, adding a batch of contacts to your [marketing audience](/customers/marketing), or bulk-importing membership records.
+
+## Import contacts
+
+
+
+ Create a CSV file with your customer data. Include columns for name and email address at a minimum.
+
+
+ Navigate to the section where you want to import data (for example, the audience section for marketing contacts or the membership section for bulk member imports).
+
+
+ Select your CSV file and upload it. Sailia maps the columns to the relevant fields.
+
+
+ Review the import preview to verify the data looks correct before confirming.
+
+
+
+## What you can import
+
+| Data type | Where to import | Notes |
+| --- | --- | --- |
+| **Marketing contacts** | Audience section | Adds contacts to your newsletter and campaign audience |
+| **Membership records** | Memberships section | Bulk-import members with plan ID, billing dates, member numbers, add-ons, and notes |
+
+## Important notes
+
+
+ Importing contacts through a CSV upload does not resubscribe contacts who have previously unsubscribed from your marketing communications. Their unsubscribe preference is preserved.
+
+
+- **Duplicate handling** — if a contact with the same email address already exists, the import updates their record rather than creating a duplicate
+- **Email validation** — rows with invalid email addresses are skipped during import
+- **Encoding** — save your CSV file with UTF-8 encoding to avoid issues with special characters
+
+## Related guides
+
+
+
+ Manage your audience and grow your subscriber list.
+
+
+ Set up membership plans and manage members.
+
+
+ View and manage customer profiles.
+
+
diff --git a/customers/waivers.mdx b/customers/waivers.mdx
index 0e7ae26..d4499df 100644
--- a/customers/waivers.mdx
+++ b/customers/waivers.mdx
@@ -31,14 +31,20 @@ Waivers let you collect acknowledgements, consent forms, and supporting document
| Content type | Description |
| --- | --- |
-| **Text** | Static text shown to the customer, such as terms and conditions or safety instructions |
-| **Checkbox** | A tick box the customer must check to confirm agreement |
+| **Text** | A short text field for collecting brief responses, such as a name or allergy information |
+| **Long text** | A multi-line text field for longer responses, such as medical details or special requirements |
+| **Multiple choice** | A single-select question where the customer picks one option from a list |
+| **Multi-select** | A question where the customer can pick multiple options from a list |
+| **Checkbox** | A tick box the customer must check to confirm agreement, such as terms and conditions acceptance |
+| **Date** | A date picker field for collecting dates, such as a date of birth |
| **Signature** | A digital signature field |
| **File upload** | A field where customers can attach documents — see [file uploads](/customers/file-uploads) for supported formats and size limits |
+You can also add **static text blocks** to display terms and conditions, safety instructions, or other information that does not require a response.
+
## Required fields
-When you add a question to your waiver — including text, long text, multiple choice, multi-select, checkbox, date, and file upload fields — you can toggle it as **required**. Required questions must be completed before the customer can submit the waiver. Use this to ensure you always collect critical information like medical declarations or proof of qualifications.
+When you add a question to your waiver, you can toggle it as **required**. Required questions must be completed before the customer can submit the waiver. Use this to ensure you always collect critical information like medical declarations or proof of qualifications.
## Send a waiver to customers
diff --git a/docs.json b/docs.json
index 21528a4..9d1a0bb 100644
--- a/docs.json
+++ b/docs.json
@@ -20,6 +20,7 @@
"getting-started/overview",
"getting-started/setup-checklist",
"getting-started/account-settings",
+ "getting-started/branding",
"getting-started/booking-page",
"getting-started/embedding",
"getting-started/locations"
@@ -29,6 +30,7 @@
"group": "Activities and scheduling",
"pages": [
"activities/activities",
+ "activities/add-ons",
"activities/online-bookings",
"activities/managing-bookings",
"activities/group-bookings",
@@ -44,6 +46,7 @@
"customers/overview",
"customers/customer-accounts",
"customers/family-accounts",
+ "customers/importing-customers",
"customers/waivers",
"customers/file-uploads",
"customers/notifications",
@@ -83,6 +86,7 @@
"group": "Staff and operations",
"pages": [
"staff/management",
+ "staff/qualifications",
"staff/permissions",
"staff/auto-timesheets",
"staff/availability",
@@ -104,6 +108,7 @@
"pages": [
"help/common-tasks",
"help/customer-guide",
+ "help/data-privacy",
"help/faq",
"help/troubleshooting",
"help/contact"
diff --git a/getting-started/branding.mdx b/getting-started/branding.mdx
new file mode 100644
index 0000000..b93f443
--- /dev/null
+++ b/getting-started/branding.mdx
@@ -0,0 +1,80 @@
+---
+title: Branding and appearance
+description: Customize how your booking page looks with your business logo, colors, and branding.
+keywords: ['branding', 'logo', 'appearance', 'customization', 'booking page design', 'brand colors']
+---
+
+Your booking page is the first thing customers see when they visit your online storefront. Sailia lets you customize the appearance so it matches your brand identity.
+
+## Business logo
+
+Your logo appears at the top of your booking page and in customer-facing emails.
+
+
+
+ Navigate to **Settings** in your Sailia dashboard.
+
+
+ In the branding section, upload your business logo. Use a high-resolution image with a transparent background for the best results.
+
+
+ Click **Save** to apply your logo across the booking page and email communications.
+
+
+
+
+ Use a logo image that is at least 200px wide. PNG or SVG formats with transparent backgrounds work best.
+
+
+## Booking page layout
+
+Your booking page is automatically generated based on your activities, products, and settings. Customers see:
+
+- **Your business logo and name** at the top of the page
+- **Activity listings** with images, descriptions, and availability
+- **A calendar view** showing available sessions
+- **Real-time availability** that updates as bookings come in
+- **A responsive layout** that works on desktop, tablet, and mobile devices
+
+## Activity images and descriptions
+
+Each activity on your booking page displays the images and description you configure in the [activities section](/activities/activities). To make a good impression:
+
+- Use clear, high-quality images that show the activity in action
+- Write concise descriptions that explain what the customer can expect
+- Highlight what is included (equipment, instruction, duration)
+- Mention any prerequisites or requirements
+
+## Checkout customization
+
+Control which items are available for purchase on your booking page from your [account settings](/getting-started/account-settings#booking-page-settings):
+
+- Activities and sessions
+- [Shop products](/point-of-sale/shop-products)
+- [Memberships](/pricing/memberships)
+- [Gift cards](/pricing/gift-cards)
+- [Donations](/payments/donations)
+
+## Sharing your booking page
+
+Promote your booking page through multiple channels:
+
+| Channel | How to share |
+| --- | --- |
+| **Direct link** | Share your booking page URL on social media, in emails, or on printed materials |
+| **Website embed** | Embed your booking page on your website using an [iframe](/getting-started/embedding) |
+| **Newsletter forms** | Add a [newsletter signup form](/customers/newsletter-forms) to your website to grow your audience |
+
+## Related guides
+
+
+
+ How your public booking page works.
+
+
+ Add your booking page to your website.
+
+
+ Configure your business profile and settings.
+
+
diff --git a/help/data-privacy.mdx b/help/data-privacy.mdx
new file mode 100644
index 0000000..6d2a692
--- /dev/null
+++ b/help/data-privacy.mdx
@@ -0,0 +1,68 @@
+---
+title: Data and privacy
+description: Understand how Sailia handles customer data, privacy, and compliance with data protection regulations.
+keywords: ['data privacy', 'GDPR', 'data protection', 'customer data', 'privacy', 'security']
+---
+
+Sailia processes personal data on behalf of your business. This page explains what data is collected, how it is stored, and how to handle common data-related requests from your customers.
+
+## What data Sailia stores
+
+Sailia stores the following types of customer data:
+
+| Data type | Examples |
+| --- | --- |
+| **Personal details** | Name, email address, phone number |
+| **Booking records** | Activity bookings, purchase history, payment amounts |
+| **Account data** | Login credentials, profile images, family member relationships |
+| **Waiver responses** | Signed waivers, uploaded documents, consent records |
+| **Marketing preferences** | Newsletter subscription status, unsubscribe records |
+| **Payment data** | Processed securely through [Stripe](/payments/stripe) — Sailia does not store card numbers |
+
+## Your responsibilities
+
+As the business operator, you are the data controller for customer data processed through Sailia. This means you are responsible for:
+
+- Having a lawful basis for collecting and processing personal data
+- Publishing a privacy policy that explains what data you collect and why
+- Responding to data subject requests (access, correction, deletion)
+- Ensuring your use of [marketing communications](/customers/marketing) complies with applicable regulations
+
+
+ Sailia acts as a data processor on your behalf. Your privacy policy should reference how customer data is used for bookings, payments, and communications.
+
+
+## Handling data requests
+
+### Access requests
+
+If a customer asks to see their data, you can view their full profile from the [customer dashboard](/customers/overview). The profile includes their personal details, booking history, membership status, waiver responses, and notes.
+
+### Correction requests
+
+Update a customer's details directly from their profile in the [customer dashboard](/customers/overview). You can edit their name, email, phone number, and other profile fields.
+
+### Deletion requests
+
+If a customer requests that their data be deleted, contact Sailia support at **support@sailia.com** to process the request.
+
+## Payment data security
+
+All payment data is processed through [Stripe](/payments/stripe), which is PCI DSS Level 1 compliant. Sailia does not store credit card numbers, CVV codes, or other sensitive payment credentials. Payment references and transaction IDs are stored for reconciliation and refund processing.
+
+## Marketing consent
+
+When customers subscribe to your [newsletter](/customers/newsletter-forms) or opt in to marketing during the booking flow, their consent preference is recorded. Customers can unsubscribe at any time, and their preference is preserved even if they are re-imported via [CSV](/customers/importing-customers).
+
+See [marketing and audience](/customers/marketing) for details on managing consent and unsubscribes.
+
+## Related guides
+
+
+
+ View and manage customer profiles and data.
+
+
+ Reach out for help with data requests.
+
+
diff --git a/index.mdx b/index.mdx
index 64162ff..f63425d 100644
--- a/index.mdx
+++ b/index.mdx
@@ -24,6 +24,9 @@ Find guides and references for every part of Sailia — from taking bookings and
Add your booking page to your website using iframes or links.
+
+ Customize your booking page with your logo and branding.
+
Set up locations when you operate from more than one site.
@@ -35,6 +38,9 @@ Find guides and references for every part of Sailia — from taking bookings and
Create and manage courses, hires, and events that customers can book.
+
+ Offer optional extras like equipment hire alongside bookings.
+
Accept and manage customer bookings through your booking page.
@@ -75,35 +81,6 @@ Find guides and references for every part of Sailia — from taking bookings and
-## Customers
-
-
-
- View and manage customer accounts, profiles, and booking history.
-
-
- How customer self-service accounts work on your booking page.
-
-
- Group family members under a single account for shared bookings.
-
-
- Collect signed waivers and documents from customers.
-
-
- Accept profile images and waiver attachments from logged-in users.
-
-
- Understand the emails Sailia sends and how to customize them.
-
-
- Grow your subscriber list and reach customers with campaigns.
-
-
- Embed signup forms on your website to grow your subscriber list.
-
-
-
## Point of sale
@@ -147,6 +124,9 @@ Find guides and references for every part of Sailia — from taking bookings and
Add staff, assign them to activities, and manage pay rates.
+
+ Track certifications and set up expiry reminders.
+
Understand what each staff permission controls.
@@ -181,6 +161,38 @@ Find guides and references for every part of Sailia — from taking bookings and
+## Customers
+
+
+
+ View and manage customer accounts, profiles, and booking history.
+
+
+ How customer self-service accounts work on your booking page.
+
+
+ Group family members under a single account for shared bookings.
+
+
+ Import customer and contact data using CSV files.
+
+
+ Collect signed waivers and documents from customers.
+
+
+ Accept profile images and waiver attachments from logged-in users.
+
+
+ Understand the emails Sailia sends and how to customize them.
+
+
+ Grow your subscriber list and reach customers with campaigns.
+
+
+ Embed signup forms on your website to grow your subscriber list.
+
+
+
## Help and support
@@ -190,6 +202,9 @@ Find guides and references for every part of Sailia — from taking bookings and
A guide for your customers on how to book and manage their account.
+
+ How Sailia handles customer data and privacy.
+
Answers to common questions about setting up and using Sailia.
diff --git a/pricing/gift-cards.mdx b/pricing/gift-cards.mdx
index 2b98e8b..d78fc67 100644
--- a/pricing/gift-cards.mdx
+++ b/pricing/gift-cards.mdx
@@ -65,6 +65,10 @@ To remove a single activity, click the remove icon next to it. To remove all lin
A gift card with no linked activities can be used on any purchase. Removing all activities makes the gift card universal again.
+## Gift card expiry
+
+Gift cards in Sailia do not expire. Once issued, the balance remains available until it is fully redeemed. This applies to both purchased gift cards and gift cards issued as [store credit from refunds](#gift-cards-from-refunds).
+
## Gift cards from refunds
When you [issue a refund as store credit](/payments/stripe#refund-methods), Sailia automatically creates a gift card for the refund amount and emails the code to the customer. These gift cards work the same way as purchased ones — the customer can redeem them at checkout on any future order.
diff --git a/staff/management.mdx b/staff/management.mdx
index 2627f26..9d7f9f0 100644
--- a/staff/management.mdx
+++ b/staff/management.mdx
@@ -58,22 +58,28 @@ Control what each staff member can access in Sailia by assigning them to permiss
| **POS** | Process sales through the [point of sale](/point-of-sale/overview) |
| **Communications** | Send emails and manage [notification workflows](/integrations/workflows) |
| **Manage Staff** | View and edit other staff profiles, pay rates, and timesheets |
+| **Manage POS** | Configure POS terminals, grid layouts, and tile settings |
+| **Operator Booking** | Create bookings on behalf of customers, including [MOTO payments](/payments/stripe#phone-and-mail-order-payments) |
+| **View Other Users** | View other staff members' profiles and customer accounts |
+
+See the [permissions reference](/staff/permissions) for a detailed breakdown of what each permission controls.
Start with minimal permissions and add access as needed. You can update permissions at any time from the staff member's profile.
-## Qualification expiry notifications
-
-You can set up automated [workflow](/integrations/workflows) communications to notify staff or admins when a qualification is about to expire. This helps you stay on top of renewals without manually checking expiry dates.
+## Qualifications
-The **Qualification expiry** trigger fires based on a staff member's qualification expiry date. You can configure the timing to send a reminder days or weeks before the expiry, or a follow-up after the qualification has lapsed.
+You can record qualifications, certifications, and their expiry dates on each staff profile. This helps you track compliance and set up automated reminders before qualifications lapse.
-See the [qualification triggers reference](/integrations/workflow-triggers#qualification-triggers) for the full list of available merge fields.
+See [staff qualifications](/staff/qualifications) for details on adding qualifications and configuring expiry notifications.
## Related guides
+
+ Track certifications and expiry dates.
+
A complete guide to what each permission level controls.
@@ -83,7 +89,4 @@ See the [qualification triggers reference](/integrations/workflow-triggers#quali
Manage time-off requests and schedule coverage.
-
- Create activities and assign staff to them.
-
diff --git a/staff/qualifications.mdx b/staff/qualifications.mdx
new file mode 100644
index 0000000..8698508
--- /dev/null
+++ b/staff/qualifications.mdx
@@ -0,0 +1,79 @@
+---
+title: Staff qualifications
+description: Track staff certifications, qualifications, and expiry dates to stay compliant and ensure coverage.
+keywords: ['qualifications', 'certifications', 'staff qualifications', 'expiry', 'compliance', 'certificates']
+---
+
+Sailia lets you record qualifications and certifications against staff profiles. You can track expiry dates and set up automated reminders so that qualifications are renewed before they lapse.
+
+## How qualifications work
+
+Each staff member's profile can hold one or more qualifications. A qualification record includes:
+
+| Field | Description |
+| --- | --- |
+| **Qualification name** | The name of the qualification or certification (for example, first aid, lifeguard, or instructor certification) |
+| **Certificate number** | An optional reference number for the certificate |
+| **Expiry date** | The date the qualification expires. Used to trigger automated reminders |
+
+## Add a qualification
+
+
+
+ Navigate to the staff dashboard and select the staff member.
+
+
+ Select the **Qualifications** section on their profile.
+
+
+ Click **Add Qualification** and enter the qualification name, certificate number (optional), and expiry date.
+
+
+ Click **Save** to record the qualification.
+
+
+
+## Expiry reminders
+
+Set up automated [workflow](/integrations/workflows) communications to notify staff or admins when a qualification is about to expire. The **Qualification expiry** trigger fires based on the qualification's expiry date.
+
+You can configure the timing to send a reminder:
+
+- Days or weeks **before** the expiry date, giving staff time to renew
+- After the qualification has **lapsed**, as a follow-up prompt
+
+### Qualification merge fields
+
+The qualification expiry trigger provides these merge fields for personalizing your messages:
+
+| Merge field | Description |
+| --- | --- |
+| Staff name | The name of the staff member |
+| Staff email | The staff member's email address |
+| Staff phone | The staff member's phone number |
+| Qualification name | The name of the qualification |
+| Qualification expiry date | The expiry date |
+| Qualification certificate number | The certificate number, if recorded |
+| Open in Sailia link | A direct link to the staff dashboard |
+
+
+ Send qualification expiry notifications to both the staff member and an admin so that renewals are tracked from both sides.
+
+
+## Export qualifications
+
+You can export staff qualifications as a CSV file for compliance reporting or external record-keeping. The export includes qualification names, certificate numbers, expiry dates, and the associated staff member details.
+
+## Related guides
+
+
+
+ Add and manage staff profiles.
+
+
+ Set up expiry reminder workflows.
+
+
+ Full reference for the qualification expiry trigger.
+
+