Storefront Settings

Qliva supports three storefront platforms: Stripe (native, built-in), Shopify, and Squarespace. The storefront setting controls how patients browse and purchase products — supplements, programs, retail items — from the patient portal.

Navigate to Admin Portal → Storefront to configure your clinic's storefront mode.

Note:

Storefront settings apply to your clinic's product store. Appointment booking payments (including online card payments collected at booking) are handled separately via Stripe and are not affected by this setting.

Choosing a storefront mode

Select one of five modes:

ModeLabelHow it works
stripe_nativeStripe (Native)Products are managed directly in Qliva. Stripe handles checkout. No external store required.
shopify_fullShopify — FullYour entire Shopify store is embedded inside the patient portal. Shopify handles the checkout experience end-to-end.
shopify_partialShopify — PartialProducts are synced from Shopify into Qliva's product catalogue. Checkout is handled by Stripe.
squarespace_fullSquarespace — FullYour Squarespace store is linked from the patient portal. Checkout stays on your Squarespace site.
squarespace_partialSquarespace — PartialProducts are synced from Squarespace into Qliva. Checkout is handled by Stripe, with an optional payment verification step.

Stripe (Native)

Best for: Clinics with a small product range who want to manage everything inside Qliva.

No external store credentials are needed. Products are created and managed under Admin Portal → Products. Patients check out directly through Qliva's Stripe-powered cart.

Importing existing Stripe products

If you already have products set up in your Stripe account, click Import from Stripe to pull your Stripe product catalogue into Qliva. Products that have already been imported are skipped automatically.

Tip:

Use Stripe Native if you are starting fresh or if your product range is simple (10–30 items). For larger catalogues or clinics with an existing online store, Shopify or Squarespace integration avoids double-managing inventory.


Shopify

Qliva supports two Shopify modes depending on whether you want Shopify or Stripe to handle checkout.

Shopify — Full

The entire Shopify storefront is embedded in the patient portal as an iframe. Patients browse and check out entirely within your Shopify store. Qliva does not process the payment — it stays with Shopify.

Use this when: You want your full Shopify store experience available to patients inside the portal, including Shopify's cart, discounts, and checkout flow.

Shopify — Partial

Products are synced from Shopify into Qliva's product catalogue. Patients browse in the Qliva portal UI and check out via Stripe. Order webhooks from Shopify notify Qliva of fulfilment events.

Use this when: You want Shopify as your product source of truth (managing inventory, variants, images) but prefer Stripe's checkout for consistency with your appointment billing.

Shopify credentials

FieldWhere to find it
Store domainYour Shopify store URL, e.g. my-clinic.myshopify.com
Storefront API token (public)Shopify Admin → Settings → Apps and sales channels → Develop apps → your app → API credentials → Storefront API access token
Admin API token (private)Same location — Admin API access token. Required for product sync, webhooks, and migration.
Webhook API secretShopify Admin → Settings → Apps → your app → API credentials → API secret key

After entering credentials, click Test Connection to verify Qliva can reach your Shopify store.

Syncing products (Partial mode)

In Shopify Partial mode, click Sync Products to pull your current Shopify catalogue into Qliva. Run a sync after adding or updating products in Shopify. Product sync runs in the background and typically completes in a few seconds for catalogues under 500 items.

Webhooks (Partial mode)

Click Register Webhooks to configure Shopify to send order and inventory events to Qliva. Webhooks are also registered automatically when you save settings with a valid Admin API token. The webhook status indicator shows how many are active and whether any failed to register.

Warning:

Keep your Webhook API Secret secure — it is used to verify that incoming webhooks are genuinely from Shopify. Do not share it or commit it to version control.

Migrating to Stripe

If you want to move away from Shopify and manage products natively in Qliva, click Migrate to Stripe. This imports your Shopify product catalogue into Qliva and switches your storefront mode to Stripe Native. Existing orders in Shopify are not affected.


Squarespace

Qliva supports two Squarespace modes — full embed or partial sync with Stripe checkout.

Warning:

The Squarespace Commerce API requires a Commerce Basic or Commerce Advanced Squarespace plan. The Personal and Business plans do not include Commerce API access. Verify your Squarespace subscription before attempting to connect.

Squarespace — Full

Your Squarespace store URL is surfaced in the patient portal. Patients are directed to your Squarespace storefront to browse and purchase. Checkout stays on Squarespace.

Use this when: You have an existing Squarespace store and want to give portal patients easy access to it without syncing products into Qliva.

Squarespace — Partial

Products are synced from Squarespace into Qliva's product catalogue. Patients browse and add to cart inside the portal. Checkout uses Stripe.

When a patient checks out for an appointment that requires a Squarespace product purchase (as configured on the appointment type), Qliva can verify that the order was placed on Squarespace before confirming the booking. This is the payment verification flow.

Use this when: Your clinic uses Squarespace for product management and fulfilment but you want appointment bookings confirmed only after a purchase is verified.

Squarespace credentials

FieldWhere to find it
Store URLYour Squarespace site URL, e.g. https://yourstore.squarespace.com
API keySquarespace Admin → Settings → Developer Tools → API Keys. The key requires Commerce read access.

After entering credentials, click Test Connection to verify Qliva can authenticate with your Squarespace store.

Syncing products

Click Sync Products to import your Squarespace product catalogue into Qliva. Products are matched by ID — re-syncing updates prices and descriptions but does not create duplicates.

Webhooks

Click Register Webhooks to configure Squarespace to send order events to Qliva. This enables automatic booking confirmation when Squarespace order webhooks arrive.

Post-purchase booking automation

When a patient purchases a package on your Squarespace store, Qliva can automatically:

  1. Create or match the patient record (matched by email address).
  2. Generate a one-time booking link (valid for 7 days) mapped to the correct appointment type for that product.
  3. Send the patient a branded email with a Book My Appointment button.

The patient clicks the link, lands directly on the pre-filled booking page, and books their session — no login required.

Setting up the order webhook

In your Squarespace admin, go to Settings → Advanced → External API Keys (or Commerce → Notifications → Webhooks depending on your plan), and add a webhook pointing to:

https://{your-subdomain}.qliva.com.au/api/squarespace/order-webhook?tenant={your-subdomain}

Replace {your-subdomain} with your clinic's Qliva subdomain (e.g. bondi-longevity). Copy the signing secret Squarespace provides and paste it into the Webhook secret field inside Qliva (or click Register Webhooks in the Storefront settings — Qliva registers the webhook via the API and stores the secret automatically).

Note:

The webhook URL must be accessible from the internet. Qliva verifies the Squarespace HMAC-SHA256 signature on every inbound request — invalid or unsigned requests are rejected.

Product → Appointment Type Mappings

Each Squarespace product can be mapped to a specific appointment type. When an order arrives for that product, Qliva uses the mapping to generate the booking link for the correct appointment.

To add a mapping, go to Admin Portal → Storefront and scroll to the Package → Appointment Type Mappings table. Click + Add Mapping and fill in:

FieldDescription
Squarespace Product IDFound in the Squarespace product page URL (e.g. 64a1b2c3d4e5f6a7b8c9d0e1).
Product NameA label for your reference — not shown to patients.
Appointment TypeThe appointment type patients should book after purchasing this product.

You can add as many mappings as you have products. Mappings can be deleted at any time — existing booking links are not affected.

Default appointment type (fallback)

If an order arrives for a product that has no specific mapping, Qliva falls back to the Default appointment type selected below the mappings table. This ensures every post-purchase email goes out even for unmapped products.

Tip:

Set the default to your most commonly purchased appointment type (e.g. "Initial Consultation"). You can then add specific mappings only for products that book a different appointment.

Generated links have this format:

https://{subdomain}.qliva.com.au/book/{subdomain}/{appointment-type-slug}?token={token}

The link:

  • Pre-fills the patient's first name, last name, and email (read-only fields in the booking form).
  • Is single-use — it is marked as used once the patient completes a booking.
  • Expires after 7 days if unused.
  • Cannot be shared or reused by another patient.

Patient record: booking token panel

Every patient record shows a Post-Purchase Booking Link panel (in the left sidebar). It displays the current status of the most recent token:

StatusMeaning
ActiveLink is valid and has not been used. Shows days remaining until expiry.
UsedPatient has completed a booking using this link.
ExpiredLink was not used within 7 days.
None issuedNo booking link has been generated for this patient.

Staff can:

  • Regenerate Link — Select an appointment type and generate a new token. Use this when a patient's link has expired or was never sent. A toast confirms the link was generated; use Resend Email to send it.
  • Resend Email — Sends the booking email again to the patient using the current active token. Only available when a valid (unused, not expired) token exists. If the token has expired, regenerate it first.
Warning:

Resending an email does not extend the link's expiry date. If the link is close to expiry, regenerate a fresh one before resending.

Payment verification flow (Partial mode)

When an appointment type is configured with a Squarespace product URL, the booking wizard shows a Pay via Squarespace step. After the patient completes payment on Squarespace:

  1. The patient clicks I've completed my payment in the Qliva booking wizard.
  2. Qliva calls the Squarespace Commerce API to look for a recent order matching the patient's email.
  3. If a matching order is found, the appointment is confirmed and a booking confirmation is sent.
  4. If no order is found, the patient sees an error and can try again once the payment has processed (Squarespace order processing can take 30–60 seconds to appear via the API).
Note:

Payment verification matches on the patient's email address and the order creation time. Ensure your patients use the same email address in Qliva and in Squarespace checkout. Orders placed more than 60 minutes before the verification check are excluded.


Vital.ly storefront

In addition to the primary storefront mode, you can enable a Vital.ly tab in the patient portal. This embeds your Vital.ly practitioner storefront so patients can purchase supplements and health products from the same portal.

SettingDescription
Enable Vital.ly storefrontShows a Vital.ly tab in the patient portal's Store section
Embed URLYour Vital.ly storefront URL, e.g. https://www.vital.ly/dashboard/p/your-store

Vital.ly can be enabled alongside any storefront mode — it appears as an additional tab, not a replacement.


Saving settings

After making changes, click Save settings. The following happen on save:

  • All credentials are stored securely against your clinic's tenant record.
  • If a Shopify mode is selected and an Admin API token is present, Shopify webhooks are registered automatically.
  • A Saved confirmation appears briefly after a successful save.

If a save fails, an error message is shown below the form with details. Common causes: invalid API keys, network timeouts, or missing required fields.

Last updated 2026-05-27