> For the complete documentation index, see [llms.txt](https://docs.adpage.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adpage.io/data-and-insights/marketing-integrations/mailcampaigns.md).

# MailCampaigns

Connect MailCampaigns to see email revenue, mailing performance and per-webshop results in Data Studio.

Connect your MailCampaigns account to bring email marketing into your AdPage reports. AdPage only reads: nothing is written back and no mailings are ever sent.

### Before you start

You need two values from your MailCampaigns account, under the API settings: an **API key** and an **API token**. Both are required — with only one of them the connection will not work.

You also need a container selected in AdPage. The connection is stored per container, so a customer with several containers connects each one separately.

### Connect MailCampaigns

{% stepper %}
{% step %}

#### Open the integrations page

Go to **Integrations** and select the container at the top of the page. Then open the **MailCampaigns** tile.
{% endstep %}

{% step %}

#### Paste both values

Fill in the **API key** and the **API token**. Both are stored encrypted and are never shown again — only their last four characters stay visible, so you can recognise which key is stored.
{% endstep %}

{% step %}

#### Test and connect

Select **Testen & koppelen**. AdPage reads your recipient groups to prove the key works before anything is saved. A key that does not work is never stored, so the tile cannot say "connected" while every widget stays empty.

Use **Alleen testen** if you want to check the credentials without saving them yet.
{% endstep %}
{% endstepper %}

After connecting, the tile shows how many recipient groups the key reaches. An account with no groups is valid — the tile then confirms the key works by reading subscriber statistics instead.

### What you get

Once connected, three widgets become available in the **E-mail & Lifecycle** section of Data Studio:

* **Email KPIs** — revenue, orders, send volume, open rate, click rate, click-to-open and bounce rate over the selected period.
* **Mailings** — one row per mailing, with its rates, orders and revenue.
* **Email revenue per webshop** — how the revenue from a mailing splits across your webshops. This split exists only in MailCampaigns; no other source reports it.

Email also appears in the **Channel KPIs** widget, on a separate row below the totals line. It is not counted in the totals: email buys no media, so adding its revenue to the paid channels would change what every total in that table means.

Finally, weekly send volume and clicks feed the Marketing Mix Model as a baseline control. Email carries no media spend, so it is not a channel in the model — but how much email went out is a real driver of the baseline, and the model is better for knowing it.

### Reading the numbers

{% hint style="warning" %}
**Automations show cumulative totals.** MailCampaigns filters bulk mailings by send date, but an automation always comes back with its total since it started. Automations therefore appear in the mailings table — marked as such — but are left out of the period totals. Adding them would produce a figure that looks entirely normal and is wrong.
{% endhint %}

**Open rates are unreliable.** Apple Mail Privacy Protection pre-loads images, which inflates opens unpredictably. The open rate is shown because it is what MailCampaigns reports, but do not steer on it. Clicks and revenue are the trustworthy signals.

**Rates are weighted, not averaged.** The open and click rates in the KPI widget are weighted by send volume. A test mailing to 200 people therefore does not count as heavily as a send to your whole list.

**Revenue is attributed by MailCampaigns.** It uses its own attribution window, while AdPage measures on last-click. The two figures will differ, and that is expected — the same is true of every advertising platform in your reports.

**The webshop split covers the biggest mailings.** To keep the widget fast, AdPage fetches the split for the highest-revenue mailings of the period rather than all of them. The widget states what that covers, for example "based on 20 of 34 mailings, together 96% of email revenue".

### Troubleshooting

**The key is rejected.** The message names what MailCampaigns answered. Check both values under the API settings in your MailCampaigns account, and make sure you copied the whole value without trailing spaces. A key from another MailCampaigns product will not work here.

**Zero recipient groups.** If the tile reports zero groups but confirms it read subscriber statistics, the key works and the account simply has no groups. If both come back empty, the tile lists the field names it received — send that line to support.

**The tile says the connection expired.** MailCampaigns is refusing the stored key. This usually means the key was replaced or revoked in MailCampaigns. Use **Sleutel vervangen** to paste the new pair; the rest of the connection stays as it is.

**Numbers do not match MailCampaigns.** First check the period, then whether automations explain the difference — they are excluded from period totals by design. If revenue is the mismatch, remember that MailCampaigns and AdPage attribute differently.

Still stuck? Contact <support@adpage.io> and include the container, the period and what the widget showed.


---

# 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.adpage.io/data-and-insights/marketing-integrations/mailcampaigns.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.
