diff --git a/activities/add-ons.mdx b/activities/add-ons.mdx
new file mode 100644
index 0000000..ff5ad46
--- /dev/null
+++ b/activities/add-ons.mdx
@@ -0,0 +1,84 @@
+---
+title: Add-ons
+description: Offer optional extras that customers can purchase alongside activity bookings.
+keywords: ['add-ons', 'extras', 'upsell', 'optional', 'equipment', 'upgrades']
+---
+
+Add-ons are optional extras that customers can purchase alongside an activity booking. Use them for equipment hire, photography packages, meal upgrades, or any supplementary product tied to an activity.
+
+## 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.
+
+## Create an add-on
+
+
+
+ Navigate to your activities section and open the add-ons area, or go to a specific activity's settings.
+
+
+ Enter a name, description, and price for the add-on.
+
+
+ Select whether the add-on is charged **per person** or **per booking**:
+
+ | Model | How it works |
+ | --- | --- |
+ | **Per person** | The price is multiplied by the number of participants. A £5 per-person add-on for a group of 4 costs £20. |
+ | **Per booking** | A flat charge regardless of group size. A £10 per-booking add-on costs £10 whether one person or ten attend. |
+
+
+ Assign the add-on to the activities where it should appear. An add-on can be linked to multiple activities.
+
+
+
+## Add-ons in the checkout flow
+
+When a customer selects an activity that has add-ons, the add-on options appear during the booking process. Customers can:
+
+- Select which add-ons they want
+- Choose quantities where applicable
+- See the updated total before completing payment
+
+
+ Keep add-on names short and descriptive. Customers see them inline during checkout, so clarity helps them make quick decisions.
+
+
+## Add-ons for group bookings
+
+For [group bookings](/activities/group-bookings), the pricing model matters:
+
+- **Per-person add-ons** are multiplied by the number of participants in the group
+- **Per-booking add-ons** are charged once regardless of group size
+
+This lets you offer things like a group photo (per booking) alongside individual equipment hire (per person).
+
+## Discounts on add-ons
+
+[Discount codes](/pricing/discount-codes) can be configured to apply to add-ons. When creating a discount, enable **Add-ons** under product eligibility. The discount applies to the add-on line items in the basket.
+
+
+ Auto-apply discounts do not support add-ons. Only manually entered discount codes can apply to add-on products.
+
+
+## Accounting
+
+If you use [Xero accounting sync](/integrations/accounting-sync), 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.
+
+## Membership add-ons
+
+Add-ons can also be attached to [membership plans](/pricing/memberships-and-passes#membership-add-ons). Membership add-ons work differently from activity add-ons — they are billed as part of the membership subscription rather than as a one-time checkout item.
+
+## Related guides
+
+
+
+ Create activities and configure add-ons.
+
+
+ How add-ons work with group bookings.
+
+
diff --git a/customers/importing-customers.mdx b/customers/importing-customers.mdx
new file mode 100644
index 0000000..14a3c15
--- /dev/null
+++ b/customers/importing-customers.mdx
@@ -0,0 +1,82 @@
+---
+title: Importing customers
+description: Migrate existing customers and members from another system into Sailia.
+keywords: ['import', 'migration', 'CSV', 'customer data', 'bulk import', 'switch']
+---
+
+If you are switching to Sailia from another booking system, you can import your existing customer data and membership records. This saves you from manually re-entering customer details and ensures members keep their subscriptions during the transition.
+
+## What you can import
+
+| Data type | What is created |
+| --- | --- |
+| **Customers** | Customer profiles with names, email addresses, and contact details |
+| **Family members** | [Family accounts](/customers/family-accounts) with linked members under a primary account holder |
+| **Memberships** | Active [membership](/pricing/memberships-and-passes) instances assigned to the correct plan and billing cycle |
+| **Membership add-ons** | [Add-on subscriptions](/pricing/memberships-and-passes#membership-add-ons) attached to imported memberships |
+
+## Before you import
+
+
+
+ Create all [membership plans](/pricing/memberships-and-passes) and link the relevant [add-ons](/pricing/memberships-and-passes#membership-add-ons) before running the import. Imported memberships must reference an existing plan in Sailia.
+
+
+ Structure your data with the required fields for each record. Each row typically includes:
+
+ - Customer name and email
+ - Family member details (if applicable)
+ - Plan ID for the target membership
+ - Billing cycle start and end dates
+ - Optional member number from your old system
+ - Optional add-on selections with quantities
+ - Optional notes
+
+
+ Check your data for duplicate email addresses or family members. Sailia uses email addresses to match existing records, so duplicates may cause conflicts.
+
+
+
+
+ Always test your import with a small batch first to verify the data maps correctly before importing your full customer list.
+
+
+## Membership migration details
+
+When importing membership records, each row can include:
+
+| Field | Description |
+| --- | --- |
+| **Plan ID** | The Sailia membership plan to assign the member to |
+| **Billing cycle dates** | The current billing period start and end dates |
+| **Member number** | An optional custom member number to preserve from your old system |
+| **Add-ons** | A list of add-on selections, each with a membership add-on ID and quantity |
+| **Note** | An optional note attached to the membership instance |
+
+
+ Add-ons included during migration must already be linked to the target membership plan. Create your plans and link the relevant add-ons before running the import.
+
+
+## After importing
+
+Once the import is complete:
+
+- Verify that customer profiles appear correctly in the [customer dashboard](/customers/overview)
+- Check that membership plans and billing cycles are assigned correctly
+- Confirm add-on subscriptions are attached to the right memberships
+- Ask a few customers to log in and verify their account details
+
+
+ Use [automated workflows](/integrations/workflows) with the **New client account** trigger to send a welcome email to imported customers, introducing them to the new booking system and explaining how to access their account.
+
+
+## Related guides
+
+
+
+ View and manage imported customer profiles.
+
+
+ Set up the membership plans your imports will reference.
+
+
diff --git a/docs.json b/docs.json
index 5d0a293..beda48d 100644
--- a/docs.json
+++ b/docs.json
@@ -17,39 +17,52 @@
"group": "Getting started",
"pages": [
"index",
+ "getting-started/quickstart",
"getting-started/overview",
"getting-started/setup-checklist",
"getting-started/account-settings",
"getting-started/booking-page",
"getting-started/embedding",
- "getting-started/locations",
- "getting-started/faq"
+ "getting-started/locations"
]
},
{
- "group": "Activities and scheduling",
+ "group": "Activities and bookings",
"pages": [
"activities/activities",
+ "activities/add-ons",
"activities/online-bookings",
"activities/managing-bookings",
"activities/group-bookings",
"activities/seasonal-scheduling",
- "activities/cancellation-policies",
- "activities/cancellations-and-refunds",
"activities/waitlists"
]
},
{
- "group": "Customers and marketing",
+ "group": "Cancellations",
+ "pages": [
+ "activities/cancellation-policies",
+ "activities/cancellations-and-refunds"
+ ]
+ },
+ {
+ "group": "Customers",
"pages": [
"customers/overview",
"customers/customer-accounts",
"customers/family-accounts",
+ "customers/importing-customers",
"customers/waivers",
- "customers/file-uploads",
+ "customers/file-uploads"
+ ]
+ },
+ {
+ "group": "Marketing and communications",
+ "pages": [
"customers/notifications",
"customers/marketing",
- "customers/newsletter-forms"
+ "customers/newsletter-forms",
+ "integrations/workflows"
]
},
{
@@ -73,6 +86,7 @@
"group": "Payments and finance",
"pages": [
"payments/stripe",
+ "payments/billing",
"payments/instalments",
"payments/taxes",
"payments/donations",
@@ -92,11 +106,17 @@
{
"group": "Integrations",
"pages": [
- "integrations/workflows",
"integrations/booking-tracking",
"integrations/accounting-sync",
"integrations/adventuro"
]
+ },
+ {
+ "group": "Help and support",
+ "pages": [
+ "getting-started/faq",
+ "troubleshooting"
+ ]
}
]
},
diff --git a/getting-started/quickstart.mdx b/getting-started/quickstart.mdx
new file mode 100644
index 0000000..ff6c7ee
--- /dev/null
+++ b/getting-started/quickstart.mdx
@@ -0,0 +1,58 @@
+---
+title: Quickstart
+description: Get your Sailia account up and running in under 15 minutes.
+keywords: ['quickstart', 'getting started', 'first steps', 'onboarding', 'new account']
+---
+
+This guide walks you through the essential steps to accept your first booking. You can complete the full setup in under 15 minutes.
+
+## Prerequisites
+
+You need an active Sailia account. If you do not have one yet, contact the Sailia team to get set up.
+
+
+
+ Go to **Settings** > **Payments** and click **Connect to Stripe**. This is the only required step before you can accept payments. You are redirected to Stripe to authorize the connection — if you do not have a Stripe account, you can create one during this process.
+
+ [Full Stripe setup guide](/payments/stripe)
+
+
+
+ Go to your activities dashboard and click **Create Activity**. Choose a type (course, hire, or event), set a name, schedule, price, and capacity. Publish the activity to make it visible on your booking page.
+
+ [Learn about activity types](/activities/activities)
+
+
+
+ Your booking page is live as soon as you publish an activity. Find your URL in **Settings** > **Booking page** — it follows the format `https://bookings.sailia.com/your-business`. Share it on your website, social media, or email it directly to customers.
+
+ [Customize your booking page](/getting-started/booking-page)
+
+
+
+You are now ready to accept bookings. Customers can browse your activities, select sessions, and pay online through Stripe.
+
+## What to set up next
+
+Once you are taking bookings, consider these optional features to get more out of Sailia:
+
+
+
+ Create staff profiles and assign them to activities so they appear on the schedule.
+
+
+ Collect signed waivers and consent forms from customers before activities.
+
+
+ Offer promotions with fixed, percentage, or tiered discounts.
+
+
+ Send automated booking confirmations, reminders, and follow-ups.
+
+
+ Sync payouts to your accounting software automatically.
+
+
+ Walk through every configuration option step by step.
+
+
diff --git a/index.mdx b/index.mdx
index 3104321..65cd387 100644
--- a/index.mdx
+++ b/index.mdx
@@ -6,33 +6,19 @@ keywords: ['sailia', 'documentation', 'help center', 'booking software', 'activi
Find guides and references for every part of Sailia — from taking bookings and managing staff to syncing your accounts and building on the API.
-## Getting started
-
-
+
+
+ Accept your first booking in under 15 minutes.
+
Learn what Sailia does and how the key pieces fit together.
-
- A step-by-step checklist to get your account ready to take bookings.
-
-
- Configure your business profile, payments, and integrations.
-
-
- How your public booking page works and what customers see.
-
-
- Add your booking page to your website using iframes or links.
-
-
- Set up locations when you operate from more than one site.
-
-
- Answers to common questions about setting up and using Sailia.
+
+ Step-by-step checklist to get your account ready.
-## Activities and scheduling
+## Activities and bookings
@@ -47,21 +33,26 @@ Find guides and references for every part of Sailia — from taking bookings and
Handle bookings with multiple participants and group organizers.
-
- Manage seasonal availability, holiday closures, and pricing.
-
+
+
+## Cancellations and scheduling
+
+
Set up and communicate your cancellation terms.
Cancel bookings, process refunds, and issue store credit.
+
+ Manage seasonal availability, holiday closures, and pricing.
+
Let customers register interest for fully booked sessions.
-## Customers and marketing
+## Customers
@@ -76,9 +67,11 @@ Find guides and references for every part of Sailia — from taking bookings and
Collect signed waivers and documents from customers.
-
- Accept profile images and waiver attachments from logged-in users.
-
+
+
+## Marketing and communications
+
+
Understand the emails Sailia sends and how to customize them.
@@ -88,6 +81,9 @@ Find guides and references for every part of Sailia — from taking bookings and
Embed signup forms on your website to grow your subscriber list.
+
+ Set up automated emails and SMS triggered by booking events.
+
## Pricing and promotions
@@ -102,6 +98,9 @@ Find guides and references for every part of Sailia — from taking bookings and
Sell and redeem stored-value gift cards.
+
+ Offer optional extras alongside activity bookings.
+
## Point of sale
@@ -127,6 +126,9 @@ Find guides and references for every part of Sailia — from taking bookings and
Process payments, manage refunds, and handle payouts with Stripe.
+
+ Manage your Sailia subscription and billing.
+
Let customers split payments into scheduled instalments.
@@ -164,9 +166,6 @@ Find guides and references for every part of Sailia — from taking bookings and
## Integrations
-
- Set up automated emails and SMS triggered by booking events.
-
Track booking events with Google Tag Manager or PostHog.
@@ -178,6 +177,17 @@ Find guides and references for every part of Sailia — from taking bookings and
+## Help and support
+
+
+
+ Answers to common questions about setting up and using Sailia.
+
+
+ Solutions to common issues with bookings, payments, and integrations.
+
+
+
## API and developer tools
diff --git a/payments/billing.mdx b/payments/billing.mdx
new file mode 100644
index 0000000..bd72c4d
--- /dev/null
+++ b/payments/billing.mdx
@@ -0,0 +1,62 @@
+---
+title: Billing and subscriptions
+description: Understand how Sailia billing works and how to manage your subscription.
+keywords: ['billing', 'subscription', 'pricing', 'account', 'plan', 'invoice']
+---
+
+This page covers how Sailia billing works, how to manage your subscription, and how to understand the charges on your account.
+
+## How billing works
+
+Sailia charges are based on your subscription plan and usage. Your subscription is managed through your account settings and billed automatically.
+
+## Manage your subscription
+
+To view or update your subscription:
+
+
+
+ Navigate to **Settings** in your Sailia dashboard.
+
+
+ Your current plan and billing details are displayed in the billing section. You can see your next billing date and the amount due.
+
+
+ Click **Update payment method** to change the card used for your Sailia subscription. This is separate from the Stripe account you use to accept customer payments.
+
+
+
+
+ Your Sailia subscription payment method is separate from your connected Stripe account. Updating one does not affect the other.
+
+
+## Usage tracking
+
+Sailia tracks key usage metrics that may affect your billing. You can monitor these through the [meter usage tracking](/api-reference/meter-tracking) API:
+
+| Meter | What it tracks |
+| --- | --- |
+| `workflow-email-sent` | Automated emails sent through [workflows](/integrations/workflows) |
+| `waitlist-notified` | [Waitlist](/activities/waitlists) notification emails |
+| `order-completed` | Completed bookings and purchases |
+
+## Payment processing fees
+
+Stripe charges a processing fee on each customer transaction. These fees are deducted from your payouts before they reach your bank account — they are not billed separately by Sailia.
+
+If you use [Xero accounting sync](/integrations/accounting-sync), Stripe fees are mapped to a dedicated Xero account code for accurate bookkeeping.
+
+## Invoices and receipts
+
+Billing invoices for your Sailia subscription are sent to the account owner's email address. You can access past invoices from your account settings.
+
+## Related guides
+
+
+
+ How customer payments and payouts work.
+
+
+ Monitor revenue, payouts, and transaction history.
+
+
diff --git a/troubleshooting.mdx b/troubleshooting.mdx
new file mode 100644
index 0000000..009fe45
--- /dev/null
+++ b/troubleshooting.mdx
@@ -0,0 +1,128 @@
+---
+title: Troubleshooting
+description: Solutions to common issues with bookings, payments, card readers, integrations, and more.
+keywords: ['troubleshooting', 'help', 'problems', 'issues', 'errors', 'fix', 'support']
+---
+
+This page covers the most common issues you may encounter when using Sailia. If your issue is not listed here, contact support at **support@sailia.com**.
+
+## Bookings
+
+
+
+ Ask the customer to check their spam or junk folder. You can resend the confirmation from the [booking details](/activities/managing-bookings) at any time. If the issue persists, verify the customer's email address is correct on their profile.
+
+
+
+ Cancellations free up capacity immediately. If spots still show as sold out, check whether other bookings were made between the cancellation and your check. Also verify you are looking at the correct session date and time.
+
+
+
+ This can happen if the payment succeeds but the confirmation step encounters an issue. Check the booking in your dashboard — it may already be marked as paid. If not, verify the charge in your [Stripe dashboard](https://dashboard.stripe.com) and manually confirm the booking if needed.
+
+
+
+ Check that the activity is published and has available capacity. Verify that [Stripe is connected](/payments/stripe#connect-stripe) and your account is fully verified. If the customer sees a payment error, ask them to try a different card or browser.
+
+
+
+ Notifications are sent to the next person on the list in sign-up order. If the spot was filled by a direct booking (not through the waitlist), the waitlist may not have been triggered. Review the booking source in the [bookings dashboard](/activities/managing-bookings).
+
+
+
+## Payments
+
+
+
+ Ensure you are logged in as an admin and that your Stripe account is fully verified. If the connection fails during authorization, try again or check Stripe's [status page](https://status.stripe.com) for outages.
+
+
+
+ Payouts follow the schedule configured in your Stripe dashboard (typically 2-7 business days for new accounts). Check your Stripe payout schedule and verify that your bank account details are correct.
+
+
+
+ Stripe automatically retries failed payments on its default schedule. If retries are exhausted, the [instalment plan](/payments/instalments) is marked as abandoned. Check the customer's payment method in Stripe and contact them to update their card details.
+
+
+
+ Card refunds typically take 5-10 business days to appear, depending on the customer's bank. If the refund was issued as [store credit](/activities/cancellations-and-refunds#issue-a-refund-as-store-credit), it is available immediately as a gift card — no bank processing is involved.
+
+
+
+## Point of sale
+
+
+
+ Check that the reader is powered on and connected to the internet. Stripe Terminal readers require a network connection to process payments. Try restarting the device. If the issue persists, re-register the reader in your [location settings](/point-of-sale/card-readers#register-a-card-reader).
+
+
+
+ Registration codes expire after a short period. Restart the card reader to generate a new code, then re-enter it in your [location settings](/point-of-sale/card-readers).
+
+
+
+ Cash payments require an open [till shift](/point-of-sale/overview#till-shifts). Open a shift on your POS terminal by entering the opening cash amount before processing cash sales.
+
+
+
+## Customers and waivers
+
+
+
+ File uploads require an authenticated session. Verify that the customer is signed in to their account. Also check that the file type and size are within the [supported limits](/customers/file-uploads#file-size-limits).
+
+
+
+ Confirm the waiver is linked to the correct activity. Open the waiver settings and check that the activity assignment is in place. Waivers only appear for activities they are explicitly linked to.
+
+
+
+ All required fields (checkboxes, signatures, file uploads) must be filled in. Ask the customer to check for any missed fields and resubmit.
+
+
+
+## Discount codes
+
+
+
+ Check the code's [usage limits](/pricing/discount-codes#usage-limits), product eligibility, and date restrictions. Verify the customer's basket meets all conditions (minimum items, activity combination, etc.). Usage is counted per item, not per basket.
+
+
+
+ Auto-apply discounts only work on **activities** and **memberships**. Verify the discount is enabled, not deactivated, and that the customer's basket contains eligible items. Check for any date or usage restrictions that may be preventing application.
+
+
+
+ Sailia prevents duplicate memberships for the same person on the same plan. Check whether the family member already has an active membership on that plan. If they do, the purchase is blocked intentionally.
+
+
+
+## Integrations
+
+
+
+ Confirm that [Sync to Xero](/integrations/accounting-sync) is toggled on, the payout was created after you enabled syncing, the payout status is paid, and your Xero connection is active. See [Xero troubleshooting](/integrations/accounting-sync#troubleshooting).
+
+
+
+ Sailia automatically refreshes your Xero OAuth tokens. If the connection expires (for example, after extended downtime), reconnect by selecting **Connect to Xero** again in your accounting settings.
+
+
+
+ Verify the workflow is enabled and the trigger matches the event you expect. Check the send history in the [workflows dashboard](/integrations/workflows) to see whether messages were queued. Monitor email volume through the `workflow-email-sent` [meter](/api-reference/meter-tracking#built-in-meters).
+
+
+
+ Ensure your [analytics provider](/integrations/booking-tracking) (Google Tag Manager or PostHog) is properly configured. If your booking page is embedded in an iframe, cross-origin tracking requires additional configuration. Consider linking directly to your booking page for more reliable tracking.
+
+
+
+## Still need help?
+
+If your issue is not covered here, contact the Sailia support team at **support@sailia.com**. Include the following details to help us resolve your issue faster:
+
+- Your business name and account email
+- A description of the issue and when it started
+- Any error messages you see
+- Screenshots if available