> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.loveloyalty.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Send emails with Mailchimp

The Mailchimp integration syncs a customer's loyalty profile into one Mailchimp audience and sends a loyalty event whenever something happens in the program. Those events can start a Customer Journey, and both the profile fields and the event details can be inserted into the emails that journey sends.

# Connect Mailchimp

1. In Love Loyalty, open **Integrations** and select **Mailchimp**.
2. Click **Connect to Mailchimp** and approve access in Mailchimp.
3. Back on the integration page, choose the **Mailchimp audience** every contact, merge field, and event should be written to.
4. Save. Saving creates the Love Loyalty merge fields on that audience.

Nothing syncs until an audience is selected. The page stays on "Mailchimp is connected, but nothing syncs until you select an audience below" until you save one.

|| Loyalty customers who are not in that audience yet are added as **transactional** contacts. They are not subscribed, and Mailchimp will not send them a welcome email or a marketing campaign. An existing subscriber stays subscribed. Love Loyalty never changes email consent.

||| Mailchimp has no way for an app to revoke its own access. Disconnecting in Love Loyalty stops the sync, and you also need to remove Love Loyalty from the connected apps in your Mailchimp account.

Changing the audience later does not copy contacts or their values into the new one. Syncing continues on the new audience only, and the merge fields on the old audience stay there until you remove them in Mailchimp.

# What the integration syncs

Two kinds of data are written to the selected audience.

**Profile properties** are Mailchimp merge fields on the contact, such as the current point balance and VIP tier. They update when the customer's loyalty data changes, and they can be used in segments, journey conditions, and any email.

**Events** are one-off loyalty actions, such as points earned or a reward redeemed. Each event carries its own properties, such as how many points were earned. An event can start a Customer Journey, and its properties can be inserted into the emails of that journey.

A contact has to exist before Mailchimp will accept an event for them, so each event also updates that contact's profile. If the contact is not in the audience yet, it is created as a transactional contact first.

Some profile fields are off until you turn them on under **Enable additional profile properties** on the integration page. Saving after you enable one creates its merge field. Merge field names are fixed. They cannot be renamed in Love Loyalty, because a rename would create a new field and leave the old data behind.

|| A value that no longer applies, such as a cancelled membership or a customer who is already on the top VIP tier, is stored as `-`. Mailchimp cannot clear a merge field, so `-` is the empty value.

|| Archiving a contact does not stop the sync. Mailchimp still accepts updates for an archived contact, and the contact stays archived. Unarchive it in Mailchimp to see the latest loyalty data.

# Set up a Customer Journey

Mailchimp only offers an Event API starting point once the account has an API key. Love Loyalty never uses that key. Create one under **Account & billing → Extras → API keys**, then leave it there.

Mailchimp also only lists an event after it has received that event at least once. On the Mailchimp integration page, click **Send test events**. That registers every loyalty event on the selected audience by sending one of each to `help@loveloyalty.app`. You can archive that contact afterwards.

## Use a loyalty event as the trigger

1. In Mailchimp, open **Automations** and create a **Customer Journey** for the same audience you selected in Love Loyalty.
2. Choose a starting point, then **API & Integrations → Event API**. Mailchimp documents this starting point in [Track outside activity with events](https://mailchimp.com/developer/marketing/guides/track-outside-activity-events/).
3. Select the event. The name has to match exactly, including the `love_` prefix. `love_points_earned` starts the journey when points are earned. The friendly name on the integration page, such as "Loyalty points earned", is not the name Mailchimp stores.
4. Add a **Send email** step and design that email.

The journey runs for a contact when that event is sent for them. It does not run for the whole audience.

## Use profile properties

Profile properties are the contact's merge fields. They are available in every email, including campaign emails, and in audience segments and journey conditions. In a condition, pick the field by the name Mailchimp shows, such as **Love Points Balance**.

In the email body, insert the merge tag. Mailchimp's merge tag format is documented in [All the merge tags cheat sheet](https://mailchimp.com/help/all-the-merge-tags-cheat-sheet/). For the point balance:

```text
*|LLPOINTS|*
```

A sentence such as "You have `*|LLPOINTS|*` points" shows that contact's current balance, whether or not the journey was started by a points event.

## Use event properties

Event properties belong to the event that started the journey. They are available in the emails of that journey, and they describe what just happened rather than the contact's current profile. Points earned on this order and the current balance are different values.

Mailchimp inserts an event property with `*|EVENT:property_name|*`. The property name is lowercase, with words separated by underscores. For the points earned on a `love_points_earned` journey:

```text
*|EVENT:points_earned|*
```

"You just earned `*|EVENT:points_earned|*` points from `*|EVENT:rule_name|*`" fills in the amount and the earning rule for that event. The same email can also include `*|LLPOINTS|*` for the balance after the event.

`*|EVENT:points_earned|*` only resolves in a journey triggered by `love_points_earned`. In any other email, Mailchimp has no event to read it from.

# Profile properties

These merge fields are created on the audience when you save. Optional fields are created only after you enable them.

| Merge tag | Name in Mailchimp | What it stores |
| --- | --- | --- |
| `LLPOINTS` | Love Points Balance | Current point balance |
| `LLVIP` | Love VIP Tier | Current VIP tier name |
| `LLBDAY` | Love Birthday | Birthday saved in Love Loyalty, as `MM-DD` |
| `LLMEMBER` | Love Paid Membership | Current paid membership name, or `-` when there is none |
| `LLREFURL` | Love Referral URL | The customer's referral link, or `-` when they cannot refer yet |
| `LLCREDIT` | Shopify Store Credit | Current Shopify store credit balance |
| `LLOPTIN` | Love Opt-in Status | `Active` or `Inactive`, synced only when the program requires opt-in |
| `LLVIPPROG` | Love VIP Progress | Current VIP progress. Optional, off by default |
| `LLNEXTTR` | Love Points to Next Tier | Points or amount left until the next VIP tier, or `-` on the top tier. Optional, off by default |
| `LLLTPTS` | Love Lifetime Points | Lifetime points earned. Optional, off by default |
| `LLLTRDM` | Love Lifetime Redemptions | Lifetime number of redemptions. Optional, off by default |
| `LLLTDISC` | Love Lifetime Loyalty Discount Value | Lifetime value of loyalty discounts on orders. Optional, off by default |

# Events and their properties

Type the event name in the first column into the Event API starting point. In that journey's emails, reference a property as `*|EVENT:property_name|*`.

**`love_points_earned`** — sent when points are earned, and when points are deducted. A deduction sends a negative `points_earned`.

* `points_earned` — points earned or deducted
* `rule_name` — earning rule name

**`love_points_redeemed`** — sent when points are redeemed.

* `points_redeemed`
* `rule_name`
* `discount_code` — empty when the redemption did not create a code
* `discount_amount`

**`love_discount_code_generated`** — sent when a discount code is created.

* `discount_code`
* `discount_amount`
* `rule_name`
* `redeem_type`

**`love_reward_reached`** — sent when the customer reaches a reward's point cost.

* `reward_name`
* `reward_cost`
* `reward_type`

**`love_approaching_reward`** — sent when the customer is close to a reward's point cost.

* `reward_name`
* `reward_cost`
* `points_needed`
* `reward_type`

**`love_vip_tier_achieved`** — sent when the customer reaches a VIP tier.

* `tier_name`
* `tier_progress`
* `next_tier_name` — empty on the top tier
* `amount_until_next_tier`

**`love_approaching_vip_tier`** — sent when the customer is close to the next VIP tier.

* `current_tier_name`
* `tier_progress`
* `next_tier_name`
* `amount_to_next_tier`

**`love_birthday_reminder_7d`** and **`love_birthday_reminder_30d`** — sent 7 or 30 days before the customer's birthday.

* `birthday_date` — `MM-DD`

**`love_points_expiry_7d`** and **`love_points_expiry_30d`** — sent 7 or 30 days before points expire.

* `expiry_date` — `YYYY-MM-DD`

**`love_program_joined`** — sent when the customer joins the program. This event has no properties.

**`love_double_opt_in_request`** — sent when the customer needs to confirm opt-in.

* `confirmation_link`

**`love_membership_started`**, **`love_membership_upgraded`**, and **`love_membership_downgraded`**

* `membership_name`
* `membership_price`
* `expiration_date` — `YYYY-MM-DD`

**`love_membership_renewed`**

* `membership_name`
* `membership_price`
* `expiration_date` — included when the customer changes or restarts a plan. A recurring billing renewal does not include it.

**`love_membership_cancelled`**

* `membership_name`

**`love_membership_expiry_7d`** — sent 7 days before a membership renews or expires.

* `membership_name`
* `expiration_date`
* `is_renewal` — `true` when the membership will renew, `false` when it will expire

**`love_store_credit_received`** — sent when Love Loyalty awards Shopify store credit.

* `earned_credit_amount`
* `earn_rule_title`
* `expiry_date` — `YYYY-MM-DD`, or empty when the credit does not expire

**`love_referral_request`** — sent to each friend a customer refers. This event is not included in **Send test events**. It appears after the first real referral.

* `referrer_name`
* `referral_url`
* `referrer_email`
* `message`