> For the complete documentation index, see [llms.txt](https://btwb.gitbook.io/btwb/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://btwb.gitbook.io/btwb/admin/tools-and-integrations/mailchimp.md).

# How to Use Mailchimp with BTWB

Learn what BTWB sends to your Mailchimp audience, and how to use it to email the members of a plan, send automatic emails when something happens at your gym, and send birthday emails.

### Overview

The **Mailchimp** integration copies your BTWB clients into one Mailchimp audience and keeps them up to date. BTWB also tags each member with their membership plan, and tells Mailchimp when something happens at your gym, such as a membership starting or a missed class. In Mailchimp, you use those tags and activities to send the right email to the right people, by hand or automatically.

***

### Before You Start

* You need to be an **owner**, a **full admin**, or staff with the **Tools** permission in BTWB.
* You need a Mailchimp account with at least one audience.
* An automation that starts from a BTWB activity needs a paid Mailchimp plan.

***

### Connecting Mailchimp

1. Go to **Gym → Tools** and open **Mailchimp**.
2. Click **Link Mailchimp Account** and sign in to Mailchimp in the new tab.
3. Back in BTWB, the status reads **Connected (Pending)**. If it hasn't changed, click **Reload Status**.
4. Under **Select Audience and Activate**, choose your audience and click **Activate Integration**. The status changes to **Connected & Activated**.

When you activate, BTWB copies up to 1,000 clients into the audience, the most recently updated first. It copies clients who have accepted their BTWB invite and aren't archived. BTWB then tags every member with their current plans, and adds any member the first copy left out. Any other client is added the first time BTWB sends Mailchimp an update about them, such as a class check-in.

New contacts join your audience as subscribed. A contact who unsubscribed in Mailchimp stays unsubscribed.

***

### What BTWB Sends to Mailchimp

#### Contacts

Each client becomes a Mailchimp contact, matched by email address. BTWB fills these audience fields:

| Mailchimp field | Merge tag   | What BTWB puts in it                    |
| --------------- | ----------- | --------------------------------------- |
| First Name      | `FNAME`     | The client's first name                 |
| Last Name       | `LNAME`     | The client's last name                  |
| Birthday        | `BIRTHDAY`  | The client's birthday, as month and day |
| Birthdate       | `BIRTHDATE` | The client's full date of birth         |
| Gender          | `GENDER`    | The client's gender                     |

New Mailchimp audiences include First Name, Last Name, and Birthday. To receive Birthdate and Gender, add those two fields yourself, as step 4 below shows.

BTWB updates a contact each time it sends Mailchimp something about that client, including when you add a client or edit their details.

#### Plan Tags

Each member gets a tag named `plan:` followed by the name of their membership plan, such as `plan:Unlimited Monthly`. A member on two plans gets both tags.

* BTWB adds the tag when a membership starts.
* A member keeps the tag while their membership is paused or a payment is past due.
* BTWB removes the tag when the membership ends, whether it's canceled or reaches its planned end date.

> 💡 **Tip:** To treat paused members differently, use the `subscription_pause_started` and `subscription_pause_ended` activities below.

#### Activities

BTWB tells Mailchimp each time one of these happens. Mailchimp shows them in each contact's activity, and you can start an automation from any of them.

| Activity name                    | When BTWB sends it                                                                                    |
| -------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `client_added`                   | A client is added to your gym.                                                                        |
| `client_details_updated`         | A client's details change.                                                                            |
| `subscription_scheduled`         | A membership is created with a later start date.                                                      |
| `subscription_started`           | A membership starts.                                                                                  |
| `subscription_past_due`          | A membership payment is past due.                                                                     |
| `subscription_pause_started`     | A membership pause begins.                                                                            |
| `subscription_pause_ended`       | A membership pause ends.                                                                              |
| `subscription_canceled`          | A membership ends before its planned end date, because staff canceled it or its invoices went unpaid. |
| `subscription_expired`           | A membership reaches its planned end date.                                                            |
| `scheduling_class_reserved`      | A client reserves a class.                                                                            |
| `scheduling_class_checked_in`    | A client is checked in to a class.                                                                    |
| `scheduling_class_unchecked_in`  | A class check-in is undone.                                                                           |
| `scheduling_class_early_cancel`  | A client cancels a class reservation before the late-cancel cutoff.                                   |
| `scheduling_class_late_canceled` | A client cancels a class reservation after the late-cancel cutoff.                                    |
| `scheduling_class_no_show`       | A client is marked as a no-show.                                                                      |

On a contact's page, Mailchimp lists each activity under **Activity** in plain words, such as **Scheduling class reserved** for `scheduling_class_reserved`. Its details hold BTWB record IDs, not class or plan names.

Activities start from the day you connect. Past activity doesn't copy over.

***

### Step-by-Step: Using BTWB Data in Mailchimp

#### 1. **Email Everyone on a Plan**

* In Mailchimp, create a regular email.
* In the **To** section, choose your audience, then choose the plan tag, such as `plan:Unlimited Monthly`.
* Only contacts with that tag get the email.

#### 2. **Start an Automation from a Plan Tag**

Use this for a welcome series when someone joins a plan.

* In Mailchimp, go to **Automations** and build a new flow from scratch.
* For the starting point, choose **Tag added**, then pick the plan tag.
* Add your emails and turn the flow on.

#### 3. **Start an Automation from a BTWB Activity**

Use this for something like a check-in email after a missed class, or a reminder when a membership payment is past due.

* In Mailchimp, go to **Automations** and build a new flow from scratch.
* For the starting point, choose **API & Integrations**, then **Event API**.
* Pick the activity name from the list.
* Add your emails and turn the flow on.

> 💡 **Tip:** Mailchimp's list shows only the activities that have happened at your gym since you connected. If the one you want isn't there yet, copy its name from the table above and paste it in. It must match exactly.

#### 4. **Send Birthday Emails**

* BTWB fills Mailchimp's **Birthday** field, so Mailchimp's birthday starting point works with no extra setup.
* To also receive each client's full date of birth and gender, open your audience in Mailchimp and go to **Settings → Audience fields and \*|MERGE|\* tags**. Add two fields:
  * **Birthdate**, type **Text**, merge tag `BIRTHDATE`
  * **Gender**, type **Text**, merge tag `GENDER`
* Each client's values fill in the next time BTWB sends an update about them.
* **Predicted Gender** on a contact's page is Mailchimp's own guess. BTWB's value shows in the **Gender** field you add.

***

### Troubleshooting

**The status stays on Connected (Pending), with no audience to choose.**\
BTWB found no audience in your Mailchimp account. Create an audience in Mailchimp, then click **Reload Status**.

**I renamed a plan, and members still have the old tag.**\
BTWB updates a member's plan tags when one of their memberships starts or ends, so a rename alone doesn't change them. [Contact support](/btwb/general/how-do-i-get-in-touch-with-support.md) to update the tags for everyone on the plan. Any automation that starts when the new tag is added will run for those members.

**I archived a client. Are they removed from Mailchimp?**\
No. BTWB never removes or unsubscribes a Mailchimp contact. Archive or unsubscribe them in Mailchimp as well.

**A parent and child share one email address.**\
Mailchimp matches contacts by email, so they become one Mailchimp contact.

**What happens if I disconnect?**\
BTWB stops sending updates. Your contacts, tags, and activity stay in Mailchimp.

***

### Related Articles

* [Tools & Integrations](/btwb/admin/tools-and-integrations.md)
* [Zapier](/btwb/admin/tools-and-integrations/zapier.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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://btwb.gitbook.io/btwb/admin/tools-and-integrations/mailchimp.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
