> For the complete documentation index, see [llms.txt](https://docs.kula.digital/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kula.digital/your-data-sources/connectors.md).

# How connectors work

A **connector** brings your studio's data from a tool you already use into Kula Intelligence, so the AI can answer questions about it. You connect each source once; after that it keeps itself up to date.

Each source has its **own setup** (where to find a key, which sign-in to use) and its **own rules** for what we're allowed to read — those live on the per-source pages below. But they all **operate the same way**, and that shared part — gaps, outages, recovery — is on one page: [Keeping your connectors healthy](/your-data-sources/operating.md).

## What you can connect

| Source                                          | Brings in                                               |
| ----------------------------------------------- | ------------------------------------------------------- |
| [Stripe](/your-data-sources/stripe.md)          | Payments, subscriptions, invoices                       |
| [Wix](/your-data-sources/wix.md)                | Bookings, members, pricing plans, online store          |
| [Mindbody](/your-data-sources/mindbody.md)      | Bookings, memberships, classes, sales, clients          |
| [GymMaster](/your-data-sources/gymmaster.md)    | Members, classes, attendance, memberships               |
| [Xero](/your-data-sources/xero.md)              | Accounting — contacts, transactions, the general ledger |
| [Meta](/your-data-sources/meta.md)              | Facebook & Instagram marketing and ad spend             |
| [Google Analytics 4](/your-data-sources/ga4.md) | Website traffic and where bookings come from            |
| [CSV & ClassPass](/your-data-sources/csv.md)    | Anything you can export as a spreadsheet                |

You don't need all of them. One source gives you real answers. Add the rest whenever you like.

## The rhythm every connector shares

Connecting a source follows the same four beats:

1. **Test.** You enter your key (or sign in) and we do a cheap check that it works. If it fails here, it's the key, not a broken setup — the message tells you what to fix.
2. **Connect.** We save the connection. Nothing is read yet beyond the test.
3. **Import (backfill).** We pull in your history — we suggest the last 12 months to start. This runs in the background and can take 20–30 minutes for a large studio.
4. **Process.** For most booking and accounting sources, a second step turns the raw history into the tidy, connected data the AI reads (members, sales, attendances). You'll see a **Process** button when it's ready; clicking it is safe to repeat.

> **Why two steps (import, then process)?** We land your data exactly as the provider gave it to us first, untouched, then transform a clean copy. Re-running is always safe, and if a provider changes something we can re-process without re-importing. We keep that raw copy for 30 days (long enough to re-process), then purge it — the tidy data the AI reads stays.

## What happens after that

Your connectors keep themselves current on a schedule — you don't have to re-import. They also **only fill gaps**: re-running an import never overwrites richer data you already have with something thinner.

Once a week, glance at the **Connectors** page on your dashboard to make sure everything's flowing. If something needs attention, the [Keeping your connectors healthy](/your-data-sources/operating.md) page walks you through it.

## Knowing your data is complete — gap analysis

The worst thing an analytics tool can do is answer confidently from data that's quietly missing a month. So every connector runs **gap analysis** and shows you the result on a **Data coverage** card.

**What a "gap" means.** A gap is a stretch of time where data *should* exist but doesn't — a week of zero attendances at a studio that was open, a month with no sales. That's different from a genuinely quiet day (you were closed). Gaps almost always come from the source, not from Kula: the provider was down, a key expired for a while, or a manual export missed some rows.

**What the card shows.** A calendar-style grid with one small square per day, one row per kind of data (classes, attendance, sales, and so on):

* **Green** squares are days with data — darker the busier the day.
* **Coral, outlined** squares are days that should have data but have none.
* **Grey** squares are days you've told us are legitimately empty (see below).

It's charted by the **real event date** — the actual class and sale dates in your data, not when we imported them — so a missing day is a genuinely missing day. Each row shows a running count ("312 of 365 days") and a **No gaps** / **N days missing** badge, so you can see at a glance whether anything's off and exactly when.

**What you can do about it.** For each missing range the card gives you two buttons:

* **Re-pull** — fetch that one window again. It's safe to repeat and only fills the hole; the rest of your history is untouched.
* **Mark expected** — for a day that was legitimately quiet (a public holiday, before you opened). It stops counting as missing, and the AI knows not to read anything into it. You can mark a single date or a range, including ones that recur every year.

You don't have to babysit this — a nightly sweep closes most gaps on its own. [Keeping your connectors healthy](/your-data-sources/operating.md) covers the day-to-day detail.

## A note on what we read

Kula Intelligence **reads** from your tools. It never writes back to them, never charges a card, never sends an email or message on your behalf. Each connector page lists exactly what that source lets us read — and what it doesn't.
