> For the complete documentation index, see [llms.txt](https://help.gleantap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.gleantap.com/custom-checkout.md).

# Custom Checkout

Gleantap's **custom checkout forms** let you sell memberships, class packs, and products directly from a Gleantap-hosted page — with the purchase captured on the contact's profile and, where applicable, synced back to your CRM.

This page covers what's supported, what happens between Gleantap and each payment/CRM integration during a checkout, and how to troubleshoot when something goes wrong.

For creating checkout forms in general, see Creating a Form.

***

## Supported integrations

| Integration    | Status      | What it powers                                                                            |
| -------------- | ----------- | ----------------------------------------------------------------------------------------- |
| **Mindbody**   | ✅ Live      | Products, class packs, and memberships sold + synced back to Mindbody as native sales     |
| **Stripe**     | ✅ Live      | Products/prices from your Stripe account, charged via Stripe, purchase logged in Gleantap |
| **MarianaTek** | Coming soon | —                                                                                         |
| **ABC**        | Coming soon | —                                                                                         |

Which integration is right for you depends on the CRM you already use for your business:

* **Fitness studios with Mindbody** → use the Mindbody integration so sales stay native to your CRM.
* **Businesses without a fitness CRM, or wanting to run purchases through their own Stripe** → use the Stripe integration.
* **MarianaTek or ABC customers** — hold tight; these integrations are being built. Contact <support@gleantap.com> to be notified when they're ready.

***

## What a custom checkout form is

A custom checkout form is a Gleantap-hosted form that combines:

* **Client info fields** — name, email, phone, and any integration-required fields
* **Product selection** — one or more products fetched from your connected system
* **Payment capture** — credit card fields, processed at checkout

When a customer completes the form, Gleantap:

1. Creates or updates their contact record in Gleantap
2. Processes the payment through the appropriate rail (Mindbody, Stripe)
3. Syncs the purchase back to your CRM (where applicable)
4. Records the completed purchase on the contact's profile

***

## Mindbody integration

For businesses using Mindbody, Gleantap syncs the entire sale into Mindbody so your CRM stays authoritative.

### What syncs

Gleantap calls Mindbody's public API to complete the sale, using one of two endpoints depending on what's being purchased:

| What's purchased                        | Mindbody endpoint                      |
| --------------------------------------- | -------------------------------------- |
| **Membership contract**                 | `/public/v6/sale/purchasecontract`     |
| **Product, class pack, or retail item** | `/public/v6/sale/checkoutshoppingcart` |

Both endpoints receive:

* **ClientID** — the Mindbody client the purchase is for
* **LocationID** — which of your Mindbody locations owns the sale
* **Payment info** — credit card details, tokenized
* **Items** — the products or contract being purchased

**The end result:** the purchase appears in Mindbody's Sales/Reports the same as if the client had bought it at the front desk. Their credit card, purchase history, and any resulting membership status reflect natively in Mindbody.

### Client matching

**If the person is already a Mindbody client** — matched by email or phone during checkout, their existing ClientID is used and the sale attaches to their profile.

**If they're new** — Gleantap creates a new client in Mindbody first (using the info they entered on the checkout form), then processes the sale against the new ClientID.

**Required fields** — Mindbody sites vary in what they require on a client record. Gleantap fetches `RequiredClientFields` from your Mindbody site during form rendering to ensure the checkout collects everything needed. If Mindbody rejects a sale for missing required data, the customer sees an error on the checkout page.

### Credit card handling (Mindbody)

* Cards are captured in a secure iframe (PCI compliant — the card number doesn't touch Gleantap's servers).
* Cards are tokenized by the payment processor.
* The charge is processed by **Mindbody's connected payment processor** (whichever gateway your Mindbody site uses).
* If Mindbody is configured to store cards for members, the card is saved on the client's Mindbody profile — same as any Mindbody-processed sale.

Gleantap doesn't hold or store the card number. Everything payment-related lives in Mindbody (or its payment processor).

***

## Stripe integration

For businesses that want to charge directly through their own Stripe account.

### How it works

1. **Products live in your Stripe Dashboard.** Create the products and prices you want to sell in Stripe directly.
2. **Gleantap syncs your Stripe products.** Once you've connected your Stripe account under Settings → Integrations, Gleantap pulls your product list and prices.
3. **Products appear in a dropdown** on the checkout form. Pick which products to offer on this form.
4. **Customer completes the form.** Name, email, phone, product selection, and credit card.
5. **Charge processes through your Stripe account.** The transaction hits your Stripe Dashboard as a normal payment.
6. **Purchase is logged on the contact profile in Gleantap.** The Activities tab shows a purchase event; the Purchase History tab records the sale.

### What syncs where

| Data                     | Destination                                                              |
| ------------------------ | ------------------------------------------------------------------------ |
| **Charge / transaction** | Your Stripe account (record of truth for financial data)                 |
| **Contact record**       | Created/updated in Gleantap                                              |
| **Purchase log**         | Logged on the contact's Activities and Purchase History in Gleantap      |
| **Card on file**         | Saved in Stripe if the customer is a repeat buyer or on a recurring plan |

### When to use Stripe checkout

* You don't have a fitness CRM like Mindbody or you're okay running purchases outside it.
* You already use Stripe for other business revenue and want a single place to track sales.
* You need one-off product sales (e.g., merchandise, event tickets) without CRM overhead.
* You want the flexibility of Stripe's product catalog (subscriptions, one-time, tiered pricing).

***

## MarianaTek and ABC — coming soon

Native custom checkout integrations for **MarianaTek** and **ABC** are being built. When they're ready, purchases made through Gleantap forms will sync back into MarianaTek or ABC the same way Mindbody works today.

If you use MarianaTek or ABC and want to be notified when checkout support ships, email <support@gleantap.com>.

Until then:

* **MarianaTek customers** — Gleantap's existing integration handles contact and visit sync; new sales still originate in MarianaTek directly.
* **ABC customers** — same pattern; use ABC for the sale, Gleantap for engagement.

***

## What appears in Gleantap after any checkout

Regardless of which integration processes the payment:

* The contact's **Purchase History** tab in Gleantap shows the sale.
* The contact's **Activities** timeline logs the checkout submission and successful purchase.
* If the form triggers a flow or campaign, that automation fires (see Trigger Flows or Campaigns).

For Mindbody-synced sales, subsequent syncs from Mindbody continue to update the Purchase History and Membership tabs. For Stripe, the initial purchase log persists but doesn't refresh from Stripe unless you edit the contact.

***

## Common scenarios

### "A customer completed my checkout form but I don't see the sale in Mindbody"

Walk through:

1. **Was the Gleantap → Mindbody API call successful?** Check the contact's Activities tab for error events and the form submission for the API response.
2. **Are you looking at the right Mindbody location?** Sales attach to a specific LocationID. Verify.
3. **Was a client record created?** If the customer was new to Mindbody, client creation happens first. If that failed (missing required field, etc.), the sale wasn't attempted.
4. **Contact support** with the contact's email and approximate checkout time. We can trace the API call in our logs.

### "My Stripe checkout worked but I don't see the product I created in Stripe"

Products sync from Stripe to Gleantap on a schedule. If you just created the product in Stripe, wait a few minutes and refresh the form's product picker. If it still doesn't appear:

* **Confirm the Stripe integration is connected.** Settings → Integrations.
* **Confirm the product is active in Stripe** (not archived) and has at least one price.
* **Reach out to support** if the product still doesn't sync.

### "The customer got an error at checkout — 'invalid product' or similar"

Products on the checkout form are fetched live from the connected system. If a product was deleted, deactivated, or made unavailable between form render and submit, the sale can fail. Refresh the product list on the form and try again.

### "Will the credit card be saved on the client's profile?"

* **Mindbody** — depends on your Mindbody configuration. If Mindbody saves cards on file (typical for membership recurring), yes.
* **Stripe** — the card is saved in Stripe if the transaction is on a recurring subscription or you explicitly configure card storage.

### "Can I use custom checkout for a business without Mindbody or Stripe?"

Not today. Custom checkout requires one of the supported payment integrations. For pure lead capture without payment, use a regular form — see Creating a Form.

### "Can I customize the checkout page's appearance?"

Yes — checkout forms follow the same customization model as other forms. See Customizing Design for CSS, tracking codes (GA, Meta Pixel), and JavaScript hooks.

### "Which integration should I pick if I have both Mindbody and Stripe?"

* **If the sale should live in Mindbody** (memberships, classes, retail tracked in Mindbody reporting) → Mindbody integration.
* **If the sale is outside Mindbody's tracking** (event tickets, merch, one-off offers) → Stripe integration.
* You can have both integrations connected simultaneously; each form picks one.

***

## Related pages

* Creating a Form — building the underlying form
* Customizing Design — styling, tracking codes, custom scripts
* [Push Data to Mindbody](/integration/push-data-to-mindbody.md) — the broader Mindbody integration
* Trigger Flows or Campaigns — automation on form submission
* [Managing Contacts](/audience/managing-contacts.md) — post-checkout contact management


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://help.gleantap.com/custom-checkout.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
