> For the complete documentation index, see [llms.txt](https://docs.coupler.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coupler.io/sources/category/email/campaign-monitor/common-issues.md).

# Common Issues

## Connection issues

<details>

<summary>My API key is not being accepted</summary>

Double-check that you're copying the full API key from Campaign Monitor — it's easy to accidentally trim the first or last character. In Campaign Monitor, go to **Account Settings > API Keys** and copy the key directly. Also confirm whether your key is an account-level key or a client-level key, as they have different scopes and may cause unexpected errors if used for the wrong entity.

</details>

<details>

<summary>I get an authentication error even though my API key looks correct</summary>

Campaign Monitor API keys can be deactivated if account ownership or billing status changes. Log in to Campaign Monitor and verify that the key is still listed and active under **Account Settings > API Keys**. If it's missing, generate a new one and update it in your Coupler.io data flow.

</details>

## Missing data

<details>

<summary>Some campaigns are not appearing in the export</summary>

Check the **start date** parameter in your data flow settings. If you've set a start date, only campaigns sent on or after that date will be returned. Adjust the date picker to an earlier date to capture older campaigns. Also confirm you're using the correct entity — **Draft campaigns** and **Scheduled campaigns** are separate from **Sent campaigns**.

</details>

<details>

<summary>People / subscriber records are incomplete or missing custom fields</summary>

Custom fields in Campaign Monitor are list-specific. If you're pulling **People** from multiple lists, each list may have a different set of custom fields, which can cause some columns to appear blank for certain subscribers. Consider filtering your data flow to a single list if you need clean, consistent columns.

</details>

<details>

<summary>Suppression list is empty even though I have suppressed contacts</summary>

Suppression lists are account-level. If you're using a client-level API key, it may not have access to the full suppression list. Try using an account-level API key instead.

</details>

## Permission errors

<details>

<summary>I can see some clients but not others in Clients or Client details</summary>

This is expected behavior when using a client-level API key — it only returns data for the client it belongs to. To pull data across all clients, use an account-level API key generated from the top-level agency account in Campaign Monitor.

</details>

## Data discrepancies

<details>

<summary>Campaign metrics in Coupler.io don't match what I see in Campaign Monitor</summary>

Campaign Monitor may update engagement metrics (opens, clicks) for a period after a campaign is sent as delayed opens are recorded. If your data flow ran shortly after the campaign was sent, re-running it a day or two later will capture more complete data. For long-term tracking, schedule regular refreshes rather than relying on a single snapshot.

</details>

## Rate limits

<details>

<summary>My data flow fails or returns partial data for large accounts</summary>

Campaign Monitor's API enforces rate limits that may affect large exports — particularly for **People** or **Sent campaigns** with thousands of records. If you're hitting limits, try narrowing the sync window using the **start date** parameter to pull data in smaller batches. Running the data flow during off-peak hours can also help reduce the chance of timeouts.

</details>


---

# 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.coupler.io/sources/category/email/campaign-monitor/common-issues.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.
