> 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/gymmaster.md).

# GymMaster

GymMaster brings the core of your studio — **members, staff, clubs, classes, attendance, and memberships** — into Kula Intelligence.

## What we read — and what we don't

* **We read:** your members and the staff and clubs they belong to, your class schedule and class attendance, and membership detail — read-only.
* **We don't:** book, cancel, charge, or change anything in GymMaster.

## What you'll need

GymMaster splits access across **two API keys**, so you'll enter both:

* Your GymMaster **base URL** — the web address you log in at, e.g. `https://yourgym.gymmasteronline.com`.
* A **Staff (high-permission) API key** — used to read members, staff, and clubs.
* A **Member (general) API key** — used to read the class schedule, attendance, and per-member detail.
* Optionally, your studio's **timezone** (e.g. `Australia/Sydney`). GymMaster returns class times in local time; setting this keeps them stored correctly. If you leave it blank we use your studio's timezone.

Both keys live under **Settings → Integrations** in GymMaster, and are stored AES-256-encrypted in your own Kula database — you can revoke them in GymMaster at any time.

## How to connect

1. In GymMaster, open **Settings → Integrations** and copy both API keys — the Staff (high-permission) key and the Member (general) key. Note your base URL too.
2. In Kula, open **Connectors → GymMaster**, paste the base URL and both keys (and your timezone if you have it), and click **Test**. We do a quick read against your studio to confirm both keys work — if it fails, the message tells you which key to check.
3. Click **Connect**, then start the **import** to land your history.
4. When the import finishes, click **Process** to turn it into the tidy members, attendance, and memberships the AI reads.

## Good to know

* **Two keys, two jobs.** If the test fails, it names which key didn't work — the high-permission key reads members/staff/clubs, the general key reads classes and attendance. Re-check that one in **Settings → Integrations**.
* **GymMaster rate-limits hard.** Its API is slow to pull from, so a busy studio's first import takes a while and runs in the background, oldest first. It resumes where it left off if interrupted, so you can close the tab.
* **Attendees come through as names.** GymMaster returns class attendance by attendee name rather than a stable member ID, so we match those names back to your members. The occasional name that can't be matched is expected; it doesn't hold up the rest of your data.
* **Deactivating a member in GymMaster loses their history at the source.** GymMaster drops a deactivated member's past detail, so keep members active there until after the import if you can.
* Re-running the import only fills gaps; **Process** is safe to repeat.

## If it stops working

The usual cause is a rotated or revoked API key. Generate a fresh key under **Settings → Integrations**, re-enter it on the connector's page, and re-test. See [Keeping your connectors healthy](/your-data-sources/operating.md).


---

# 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://docs.kula.digital/your-data-sources/gymmaster.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.
