diff --git a/docs.json b/docs.json index 5d0a293..0608ae5 100644 --- a/docs.json +++ b/docs.json @@ -23,30 +23,42 @@ "getting-started/booking-page", "getting-started/embedding", "getting-started/locations", + "getting-started/security-and-privacy", + "getting-started/troubleshooting", "getting-started/faq" ] }, { - "group": "Activities and scheduling", + "group": "Activities", "pages": [ "activities/activities", "activities/online-bookings", "activities/managing-bookings", "activities/group-bookings", - "activities/seasonal-scheduling", + "activities/seasonal-scheduling" + ] + }, + { + "group": "Cancellations and refunds", + "pages": [ "activities/cancellation-policies", "activities/cancellations-and-refunds", "activities/waitlists" ] }, { - "group": "Customers and marketing", + "group": "Customers", "pages": [ "customers/overview", "customers/customer-accounts", "customers/family-accounts", "customers/waivers", - "customers/file-uploads", + "customers/file-uploads" + ] + }, + { + "group": "Marketing and communications", + "pages": [ "customers/notifications", "customers/marketing", "customers/newsletter-forms" diff --git a/getting-started/faq.mdx b/getting-started/faq.mdx index 98720fd..1ea4094 100644 --- a/getting-started/faq.mdx +++ b/getting-started/faq.mdx @@ -132,26 +132,6 @@ keywords: ['faq', 'frequently asked questions', 'help', 'troubleshooting', 'comm -## Troubleshooting +## Something not working? - - - Ask the customer to check their spam 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. - - - - Check that the reader is powered on and connected to the internet. If it shows as offline, restart the device. If the registration code is invalid, restart the reader to generate a new code. See [Card reader troubleshooting](/point-of-sale/card-readers#troubleshooting). - - - - 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). - - - - 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. - - - - 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. - - +For step-by-step solutions to common issues with bookings, payments, integrations, and more, see the [troubleshooting guide](/getting-started/troubleshooting). diff --git a/getting-started/security-and-privacy.mdx b/getting-started/security-and-privacy.mdx new file mode 100644 index 0000000..d4642a1 --- /dev/null +++ b/getting-started/security-and-privacy.mdx @@ -0,0 +1,82 @@ +--- +title: Security and privacy +description: How Sailia protects your business data and customer information. +keywords: ['security', 'privacy', 'data protection', 'GDPR', 'customer data', 'payments security'] +--- + +Sailia is designed to keep your business data and customer information secure. This page explains how data is handled, what security measures are in place, and how to manage customer privacy. + +## Payment security + +All payment processing is handled by [Stripe](/payments/stripe), a PCI DSS Level 1 certified payment processor. This means: + +- **Card details are never stored on Sailia's servers** — Stripe handles all sensitive payment data +- **Online payments use 3D Secure** authentication when required by the customer's bank +- **POS card payments** are processed through [Stripe Terminal](/point-of-sale/card-readers) with end-to-end encryption +- **MOTO payments** (phone/mail orders) skip 3D Secure but are processed securely through Stripe and require the [Operator Booking permission](/staff/permissions) + +## Customer data + +Sailia stores the following customer information: + +| Data type | Purpose | Who can access | +| --- | --- | --- | +| **Name and email** | Booking confirmations, [workflow emails](/integrations/workflows), and account management | Staff with appropriate [permissions](/staff/permissions) | +| **Booking history** | Visible to the customer and your team from the [customer dashboard](/customers/overview) | Staff with View Other Users permission | +| **Membership and pass status** | Tracks active subscriptions and remaining sessions | Staff and the customer | +| **Waiver responses** | Stored against individual bookings, including [file uploads](/customers/file-uploads) and digital signatures | Staff with booking access | +| **Internal notes** | Staff-only notes on [customer profiles](/customers/overview#notes) | Staff with View Other Users permission | +| **Profile images** | Optional photos uploaded by customers | Visible on the customer profile | + +## Staff permissions + +Sailia uses a [permission system](/staff/permissions) to control what each team member can access. There are eight permission groups covering different areas of the platform: + +- **What's On** — schedule and booking access +- **Financial Dashboard** — revenue and payout data +- **POS** — point of sale operations +- **Communications** — marketing and email access +- **Manage Staff** — staff profiles and timesheets +- **Manage POS** — POS configuration and grid layout +- **Operator Booking** — creating bookings on behalf of customers +- **View Other Users** — access to customer profiles + + + Follow the principle of least privilege — give staff only the permissions they need for their role. See the [permissions reference](/staff/permissions) for recommended permission sets by role. + + +## Data shared with integrations + +When you connect external services, Sailia shares specific data: + +| Integration | Data shared | +| --- | --- | +| **[Stripe](/payments/stripe)** | Payment amounts, customer email for receipts, refund details | +| **[Xero](/integrations/accounting-sync)** | Payout invoices with line items, VAT rates, and account codes — no customer personal data | +| **[Adventuro](/integrations/adventuro)** | Activity details, real-time availability, waiver questions, and booking confirmations | +| **[Google Tag Manager / PostHog](/integrations/booking-tracking)** | Anonymized booking events (session IDs, conversion values) — no personal customer data | + +## Email communications + +Sailia sends [automated emails](/customers/notifications) for transactional purposes (booking confirmations, refunds, waitlist notifications) and marketing purposes (workflow campaigns, newsletters). Customers can unsubscribe from marketing emails at any time, but transactional emails continue to be delivered. + +## File storage + +- [Profile images](/customers/file-uploads#profile-images) — PNG, JPG, JPEG, or SVG up to 50 MB +- [Waiver attachments](/customers/file-uploads#waiver-attachments) — various formats up to 10 MB per file +- All uploads require an authenticated customer session + +## Deleting customer data + +To remove a customer's data, contact the Sailia support team at [support@sailia.com](mailto:support@sailia.com). The team can assist with data deletion requests in compliance with applicable data protection regulations. + +## Related guides + + + + Control what each staff member can access. + + + Manage customer profiles and data. + + diff --git a/getting-started/troubleshooting.mdx b/getting-started/troubleshooting.mdx new file mode 100644 index 0000000..d225f16 --- /dev/null +++ b/getting-started/troubleshooting.mdx @@ -0,0 +1,135 @@ +--- +title: Troubleshooting +description: Solutions to common issues with bookings, payments, staff, and integrations. +keywords: ['troubleshooting', 'issues', 'problems', 'errors', 'help', 'support'] +--- + +This page covers the most common issues you may encounter while using Sailia, with step-by-step solutions for each. + +## Bookings + + + + Ask the customer to check their spam or junk folder. You can resend the confirmation from the [booking details](/activities/managing-bookings) page 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 in the [schedule view](/activities/managing-bookings#schedule-filters). + + + + 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#booking-sources). + + + + Check that the activity is published and has available capacity. Verify the session date has not passed and that your [Stripe account](/payments/stripe) is connected. If the customer sees a payment error, ask them to try a different card or browser. + + + + The booking wizard shows the first few course dates with an option to expand the full schedule. This is by design to keep the page manageable for courses with many sessions. The customer can click to see all dates. + + + +## Payments + + + + Make sure you are using a Stripe account that supports the country you are operating in. If the connection fails, try disconnecting and reconnecting from **Settings**. Contact [support](mailto:support@sailia.com) if the issue persists. + + + + Stripe payouts typically arrive within 2-7 business days depending on your country and bank. Check the payout schedule and status in your [Stripe Dashboard](https://dashboard.stripe.com). If a payout shows as paid in Stripe but has not arrived, contact your bank. + + + + This can happen if the payment succeeded but the booking flow was interrupted (for example, by closing the browser). Check your [bookings dashboard](/activities/managing-bookings) — the booking may have been created. If not, check the charge in your Stripe Dashboard and process a refund if needed. + + + + Card refunds via Stripe take 5-10 business days to appear on the customer's statement. [Store credit](/activities/cancellations-and-refunds#issue-a-refund-as-store-credit) refunds are available immediately as an alternative. + + + + Sailia automatically retries failed instalment payments. If retries are exhausted, the plan status changes to abandoned. You can set up [workflow triggers](/integrations/workflows) for instalment events to notify customers about failed payments. + + + +## Point of sale + + + + Check that the reader is powered on and connected to the internet. If it shows as offline, restart the device. If the registration code is invalid, restart the reader to generate a new code. See the [card reader guide](/point-of-sale/card-readers#troubleshooting) for detailed steps. + + + + Another payment may be in progress. Wait for it to complete or cancel the in-progress payment from the POS. If the reader is stuck, restart it. + + + + Check your [POS grid layout](/point-of-sale/overview#pos-grid-layout) configuration. Products must be added as tiles to appear in the POS. Also verify the products are assigned to the correct [location](/getting-started/locations). + + + +## Customers and waivers + + + + File uploads require the customer to be signed in. Verify they have an account and are logged in. Also check that the file type and size are within the [supported limits](/customers/file-uploads#file-size-limits) (10 MB for waiver attachments). + + + + Confirm the waiver is linked to the correct activity. Open the waiver 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. + + + + Sailia prevents the same membership from being purchased twice for the same family member. Check whether the member already holds that [membership plan](/pricing/memberships-and-passes). If they need to upgrade or switch plans, cancel the existing membership first. + + + +## 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 are added automatically when the basket meets all eligibility conditions. Check that the discount is still active, the usage limits have not been reached, and the products in the basket match the discount's product eligibility settings. + + + + Verify the pass has remaining sessions, has not expired, and the activity is included in the pass's redemption rules. Passes are single-user only — they can only be used by the specific family member assigned at purchase. + + + +## 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. Only payouts created after enabling sync are sent to Xero. + + + + VAT rates are determined by [accounting categories](/payments/taxes). Check that the correct category is assigned to the product. Update the category's Xero tax type if it is wrong, then resend the payout to Xero. + + + + Check that the workflow is active and the trigger conditions are met. Verify the customer has a valid email address. Monitor email volume through [meter tracking](/api-reference/meter-tracking#built-in-meters) to confirm emails are being queued. + + + + Check that the [Adventuro integration](/integrations/adventuro) is connected with a valid API key. Verify that activities are shared with Adventuro and real-time availability is syncing. Adventuro bookings appear in the dashboard with an Adventuro source tag. + + + + Ensure your GTM container is correctly installed on the page containing the booking iframe or direct booking page link. For embedded iframes, cross-origin tracking requires additional GTM configuration. See [booking tracking](/integrations/booking-tracking) for setup details. + + + +## Still need help? + +If you cannot find a solution here, contact the Sailia support team at [support@sailia.com](mailto:support@sailia.com). diff --git a/index.mdx b/index.mdx index 3104321..7376f3c 100644 --- a/index.mdx +++ b/index.mdx @@ -27,12 +27,9 @@ Find guides and references for every part of Sailia — from taking bookings and Set up locations when you operate from more than one site. - - Answers to common questions about setting up and using Sailia. - -## Activities and scheduling +## Activities @@ -50,6 +47,11 @@ Find guides and references for every part of Sailia — from taking bookings and Manage seasonal availability, holiday closures, and pricing. + + +## Cancellations and refunds + + Set up and communicate your cancellation terms. @@ -61,7 +63,7 @@ Find guides and references for every part of Sailia — from taking bookings and -## Customers and marketing +## Customers @@ -79,6 +81,11 @@ Find guides and references for every part of Sailia — from taking bookings and Accept profile images and waiver attachments from logged-in users. + + +## Marketing and communications + + Understand the emails Sailia sends and how to customize them. @@ -178,13 +185,19 @@ Find guides and references for every part of Sailia — from taking bookings and -## API and developer tools +## Help and support - - Explore the Sailia API endpoints. + + Solutions to common issues with bookings, payments, and integrations. + + + How Sailia protects your business data and customer information. - - Record and query metered usage events across your account. + + Answers to common questions about setting up and using Sailia. + + + Explore the Sailia API endpoints for developers.