# 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>
