# How to troubleshoot Microsoft Ads sync issues

Checklist for Microsoft Ads sync issues. Goal Name mismatches, msclkid missing, OAuth token errors, Auto-tagging configuration, and how to verify pushes.

Source: https://sourceloop.ai/help/troubleshoot-microsoft-ads-sync/
Updated: 2026-05-28

---

Microsoft Ads sync issues fall into a handful of buckets. Work through this checklist in order.

## Before you start

Have these tabs open:

- **SourceLoop's Microsoft Ads card** at **Setup -> Ad Platforms -> Microsoft Ads**
- **Microsoft Ads** at Tools -> Conversion Goals (for verifying Goal Names)
- **Microsoft Ads** at Settings -> Account preferences (for Auto-tagging)
- The most recent **Sync log** entry on the Microsoft Ads card

## Step 1: Check the connection status

1. Open **Setup -> Ad Platforms -> Microsoft Ads** in SourceLoop.
2. Look at the card:
   - **Active** with recent Last sync → healthy
   - **Active** with stale Last sync (>24 hours) → Insights sync stuck
   - **Token expired** → reconnect needed
   - **Disconnected** → run Connect flow

## Step 2: For 'Token expired' / 'Disconnected'

1. Click **Reconnect** on the Microsoft Ads card.
2. Sign in to Microsoft with a user that has Standard+ access on the Microsoft Ads account.
3. Authorise the scopes.
4. Pick the same Microsoft Ads account in the picker.

## Step 3: For 'conversions not appearing in Microsoft Ads'

This is the most common issue. Walk through:

1. **Open the Sync log** on the Microsoft Ads card (three-dot menu).
2. Find the conversion you expected. Each push is logged with the Goal Name, msclkid, value, and status:
   - **sent** → SourceLoop pushed successfully. Microsoft has a 4-12 hour reporting delay.
   - **pending_identity** → no msclkid in the visitor's session. Microsoft can't match. See Step 5.
   - **error** → Microsoft rejected the push. Click the row for the exact error.

Common errors:

- **`Conversion Goal not found`** → Goal Name mismatch. Copy the exact name from Microsoft Ads.
- **`Authorization failed`** → token expired. Click Reconnect.
- **`Click ID not found / invalid`** → the msclkid in your push doesn't match a real click in Microsoft's records. Usually means the click was outside the 90-day window or the msclkid was modified.
- **`Conversion outside lookback window`** → the conversion is more than 30 days after the click.

## Step 4: For Goal Name mismatch

Microsoft matches offline conversions by name, exact match required. To debug:

1. Open Microsoft Ads -> Tools -> Conversion Goals.
2. Copy the Goal Name from the Microsoft table (avoid retyping, use copy-paste).
3. In SourceLoop, open the Microsoft Ads drawer -> Conversion sync.
4. Edit the mapping with the wrong Goal Name and paste the correct name.
5. Save.

The next 2-minute flush retries any conversions that failed for this reason.

## Step 5: For 'most conversions show pending_identity'

This means msclkid isn't reaching SourceLoop. Three sub-causes:

1. **Auto-tagging disabled in Microsoft Ads.** Go to Microsoft Ads -> Settings -> Account preferences. Confirm Auto-tagging is on. If you just enabled it, you'll need to wait 1-2 weeks for new msclkid-tagged sessions to accumulate before conversion push rate improves.
2. **SourceLoop tracking pixel not on Microsoft Ads landing pages.** Make sure the SourceLoop snippet is installed on every page that receives Microsoft Ads traffic. The tracker captures msclkid the first time the visitor lands.
3. **Visitors converting without ever clicking a Microsoft ad.** Most of your traffic might not be from Microsoft (it's coming from SEO, direct, email, etc.). Those conversions can't be pushed to Microsoft because there's no Microsoft click to attribute them to. This is by design.

## Step 6: For Insights data not updating

1. **Check the last sync timestamp** on the Microsoft Ads card. Daily at 05:00 UTC.
2. **Force a manual resync.** Click **Resync now**.
3. **Check Microsoft's own reporting.** Recent campaign data lags in Microsoft Ads itself for the first 1-3 days.

## How to disconnect or reset

- **Hard reset** (disconnect entirely): see [Disconnect Microsoft Ads from SourceLoop](/help/disconnect-microsoft-ads-from-sourceloop/).

## When to email support

Email **hello@sourceloop.ai** with:

- The Microsoft Ads card's current status
- Two or three error messages from the Sync log (verbatim)
- Your **Microsoft Ads Account ID** (visible on the Microsoft Ads card)
- The **Conversion Goal Name(s)** you configured

We respond within one business day.

## Frequently Asked Questions

### My Microsoft Ads card shows 'Token expired'. What now?

Click Reconnect on the Microsoft Ads card. Microsoft access tokens are 1-hour-lived; SourceLoop refreshes them via the stored refresh token automatically. A Token expired state usually means the refresh token itself was revoked or expired. Reconnect runs a fresh OAuth flow.

### Conversions are firing in SourceLoop but not in Microsoft Ads. What should I check?

Four common causes. (1) Goal Name mismatch, Microsoft matches by name, exact match required. Even a trailing space or capitalisation difference breaks it. (2) msclkid missing, the visitor's session has no msclkid, so Microsoft can't match. (3) Auto-tagging isn't enabled in Microsoft Ads, no msclkid is being added to landing URLs. (4) Conversion outside lookback window, Microsoft rejects events more than 30 days after the click.

### Microsoft says 'Conversion Goal not found' in the sync log. Why?

The Goal Name in your SourceLoop config doesn't match any Conversion Goal in the connected account. Open Microsoft Ads -> Tools -> Conversion Goals, copy the exact name (case-sensitive, including punctuation), and update the SourceLoop config.

### Most of my conversions show 'pending_identity'. What's wrong?

The `pending_identity` status means the visitor had no msclkid, so Microsoft can't match the conversion. Check three things. (1) Auto-tagging enabled in Microsoft Ads (Settings -> Account preferences -> Auto-tagging). (2) The SourceLoop tracking pixel is installed on every landing page, especially Microsoft Ads landing pages. (3) Visitors actually click in from Microsoft Ads, not all of your traffic is from Microsoft. SEO/Direct/email visitors won't have msclkid by design.

### I see 'Developer Token not authorised' in the sync log. What does that mean?

This is rare. It means SourceLoop's Developer Token isn't authorised for your specific Microsoft Ads account, which usually happens if your account is in a region or tier where Microsoft restricts API access. Email hello@sourceloop.ai with your Account ID and we'll investigate.

### How do I send a test offline conversion?

Microsoft Ads doesn't have a Test Events tab like Meta or TikTok. Instead, fire a real conversion on your site, in an incognito window with `?msclkid=test_msclkid_123` appended to the URL. SourceLoop will push the conversion with that fake msclkid. Microsoft will reject it (since the msclkid doesn't match a real click), but you can see the push attempt in SourceLoop's Sync log, confirming the integration is wired correctly.

### Insights data is stale. When does it refresh?

Insights sync runs daily at 05:00 UTC and re-fetches the last 14 days. Force an immediate refresh by clicking Resync now. Recent campaign performance (last 1-3 days) often lags in Microsoft itself.
