---
title: "Linkbreakers + Mailchimp: sync QR code contacts to a Mailchimp audience"
description: "Connect Mailchimp with an API key and every person who scans your QR codes and gives their email is added to your Mailchimp audience, with their name, phone, form answers in merge fields and tags. People who did not consent are added as transactional contacts, never subscribed on their behalf; those who did are subscribed, or confirmed by email first. Setup, what is synced, and the Assistant and MCP tools."
canonical: "https://linkbreakers.com/help/article/linkbreakers-mailchimp-integration-sync-qr-code-contacts-to-an-audience"
last-updated: 2026-11-09
---

# Linkbreakers + Mailchimp: sync QR code contacts to a Mailchimp audience

> Connect Mailchimp with an API key and every person who scans your QR codes and gives their email is added to your Mailchimp audience, with their name, phone, form answers in merge fields and tags. People who did not consent are added as transactional contacts, never subscribed on their behalf; those who did are subscribed, or confirmed by email first. Setup, what is synced, and the Assistant and MCP tools.

:::try-ai-prompt {"prompt":"Connect Mailchimp with my API key, add synced contacts to my main audience tagged qr-{link}, and subscribe only people who ticked my Consent field, with Mailchimp's double opt-in","description":"Connect Mailchimp with the Assistant.","target":"assistant"}:::

## Short answer

Linkbreakers syncs the people who scan your QR codes to Mailchimp directly. In the dashboard, open **Integrations**, pick **Mailchimp**, paste a Mailchimp API key, select **Connect**, then choose the audience contacts go to. From then on, every person who goes through one of your links or QR codes and whose email Linkbreakers knows, for example after a form, is added to that audience or updated there, with their name, phone, form answers and tags.

Linkbreakers never subscribes anyone to your marketing on their behalf. People who did not give their consent are added as transactional contacts, which Mailchimp keeps for their data and sends no campaign. People who did are subscribed, or sent Mailchimp's confirmation email first if you turn on double opt-in. No Zapier, Make or webhook is needed, and the integration is available on every plan.

## Quick summary

- Connect once per workspace with an API key from **Profile > Extras > API keys**
- An audience is required: Mailchimp keeps every contact in one
- Members are added or updated, matched on email
- First name, last name and phone go to `FNAME`, `LNAME` and `PHONE` when the audience has them
- Form answers go to the audience's merge fields, by tag
- Tags added to each member, with `{link}` for the link's name
- Without consent: transactional. With consent: subscribed, or pending with double opt-in
- Visitors known only by phone are not synced: Mailchimp keeps email contacts only
- Also set up from the Assistant, the MCP server or the REST API

## How it works

A member is synced when a visitor goes through a step of a link's workflow and Linkbreakers knows their email. That is usually right after a [form](/help/article/how-to-create-a-form), but it can also come from the chat bot or any step that saves visitor data. Linkbreakers sends the member to Mailchimp from its servers, once per step, at the moments the connection covers (all of them by default).

Mailchimp identifies members by email within the audience, so a returning visitor updates the same member. Linkbreakers only sets the status of a member who is new to the audience, and reads the status of one already there instead of overwriting it.

## Connect Mailchimp

1. In Mailchimp, open **Profile > Extras > API keys** and select **Create A Key**. The key ends with your data center, such as `-us21`.
2. In Linkbreakers, open **Integrations** in the dashboard and pick **Mailchimp**.
3. Paste the key in **Mailchimp API key** and select **Connect**. Linkbreakers checks it against Mailchimp before storing it.
4. Under **Add contacts to an audience**, choose the audience. Until you do, nothing can be synced, and the page shows that as the last error.
5. Set the options and the delivery setting below, then save.

The key is encrypted when it is stored and never shown again; the page shows the account name and data center.

## What gets synced

| Linkbreakers | Mailchimp |
|---|---|
| Email | Member email (the match) |
| First name, last name | `FNAME`, `LNAME`, when the audience has them |
| Phone | `PHONE`, when the audience has it |
| Form answers and other visitor data | Merge fields whose tag matches the answer's key (`COMPANY` takes `company`), or the one you map them to |
| Tags you set | Added to the member's tags |

Create merge fields in Mailchimp under **Audience > Settings > Audience fields and `*|MERGE|*` tags**, with tags that match your form fields. Address merge fields are not filled. A US-format phone field only takes US numbers. A field the audience requires but the visitor did not answer does not block the member. **Test connection** lists the merge field tags Linkbreakers can write to.

## Options

**Tags.** Tags added to each member, separated by commas, up to 10, each up to 100 characters. `{link}` becomes the name of the link the person came through. Tags are only added, never removed.

**Marketing consent.** Choose the answer where people agree to hear from you: the **Linkbreakers consent** (a Consent field on your form, or the marketing consent goal of the [chat bot](/help/article/how-to-add-an-ai-chat-bot-to-a-qr-code)), or any other answer, such as a checkbox of your own.

**Confirm by email first (Mailchimp's double opt-in).** With it, people who consented get Mailchimp's confirmation email and are subscribed when they click it.

Leave **Add to the audience only those who consented** off for Mailchimp. Mailchimp keeps every contact in an audience, and people without consent are already kept out of your campaigns as transactional contacts.

## Marketing consent in Mailchimp

| Member | Visitor said yes | Visitor did not say yes |
|---|---|---|
| New to the audience | Subscribed (pending with double opt-in) | Transactional: kept, sent no marketing and no confirmation |
| Already transactional | Subscribed (pending with double opt-in) | Stays transactional |
| Subscribed or pending | Stays as it is | Stays as it is |
| Unsubscribed, cleaned or archived | Stays as it is | Stays as it is |

So nobody who unsubscribed or bounced is ever subscribed again. When Mailchimp refuses to subscribe an address it holds in a compliance state (for example someone who unsubscribed and was later deleted), Linkbreakers keeps them as a transactional contact, or leaves them out, without counting it as a failure. Only the person can subscribe again, through a Mailchimp form.

## Which visitors and which links

The Mailchimp page has the same three settings as the other Linkbreakers integrations:

- **Where**: every link, or only some links, directories and tags
- **When**: the moments of a visit (Entry, Interaction, Routing, Exit), or specific steps
- **What is sent**: all visitor data, only some, or just the visit. Email is always sent

Only visits by people are synced: bots, link previews and AI agents never become members. Visits past your plan's tracked visits allowance are not synced.

## What is not synced

- Visitors without an email, including those known only by their phone. They are skipped, not counted as failures
- Answers with no matching merge field, and address fields
- Anything back from Mailchimp

## Set it up from the Assistant, MCP or the API

**Assistant**: in the dashboard, ask "Connect Mailchimp with my API key, use my main audience and tag contacts with qr-{link}".

**MCP server**: an agent connected to the [Linkbreakers MCP server](/help/article/mcp-server-setup) has `contact_integration_connect`, `contact_integration_lists` (the audiences), `contact_integration_fields`, `contact_integration_update`, `contact_integration_test`, `contact_integration_get`, `contact_integrations_list` and `contact_integration_disconnect`, with the tool `CONTACT_TOOL_MAILCHIMP`.

**REST API**, with a token that has the `integrations:write` scope:

```bash
curl -X POST https://api.linkbreakers.com/v1/integrations/contacts/CONTACT_TOOL_MAILCHIMP/connect \
  -H "Authorization: Bearer $LINKBREAKERS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "0123456789abcdef0123456789abcdef-us21"}'

curl -X PATCH https://api.linkbreakers.com/v1/integrations/contacts/CONTACT_TOOL_MAILCHIMP \
  -H "Authorization: Bearer $LINKBREAKERS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"contactListId": "your-audience-id", "options": {"tags": ["qr-{link}"], "consentAttributeKey": "$marketingConsent", "doubleOptIn": true}}'
```

## Limits and caveats

- **An audience is required**, and one per workspace
- **Email required.** Phone-only visitors are skipped
- **Merge fields must exist** in the audience, or the answer is left out
- **No retries.** A member Mailchimp refuses is reported as the last error on the page, not sent again

## Frequently asked questions

### Are people subscribed to my newsletter without consent?

No. Without a "yes" on the consent answer you chose, a new member is transactional: Mailchimp keeps them but sends them no marketing. With no consent answer chosen, nobody is subscribed.

### Can Mailchimp send a confirmation email first?

Yes. Tick **Confirm by email first** and people who consented are added as pending; Mailchimp sends the confirmation and subscribes them on the click.

### Will someone who unsubscribed be subscribed again?

No. Unsubscribed, cleaned and archived members keep their status.

### What if a visitor first scanned without consent and consents later?

On their next sync with consent, a transactional member is moved to subscribed, or pending with double opt-in.

### What happens when I disconnect Mailchimp?

Visitors stop being synced and the stored key is deleted. Members already in your audience stay there.

## Sources

- Linkbreakers Mailchimp integration page, API and MCP tools, checked in the product on 2026-11-09.
- Mailchimp Marketing API: https://mailchimp.com/developer/marketing/api/

## Last reviewed

2026-11-09 by Laurent Schaffner.
