How to troubleshoot Meta Ads sync issues
Checklist for Meta Ads sync problems, covering token expiry, missing CAPI events, match quality, permissions, and verifying in Events Manager.
On this page
- Before you start
- Step 1: Check the connection status
- Step 2: For ‘Token expired’ / ‘Disconnected’
- Step 3: For ‘conversions not appearing in Events Manager’
- Step 4: For ‘test events not showing in Events Manager’
- Step 5: For ‘poor Match Quality score’
- Step 6: For ‘spend data not updating’
- How to start again
- When to email support
Meta Ads sync issues fall into a handful of buckets. Work through this checklist in order.
Before you start
Have these tabs open:
- SourceLoop’s Meta Ads card at Setup -> Ad Platforms -> Meta Ads
- Meta Events Manager for the Pixel you’re reporting to
- Meta Business Settings in case you need to regenerate a System User token
- SourceLoop’s Activation -> Conversion sync page, for each Meta sync’s status and recent sends
Step 1: Check the connection status
- Open Setup -> Ad Platforms -> Meta Ads in SourceLoop.
- Look at the card:
- Active with recent Last sync → healthy; problem is downstream
- Active with stale Last sync (>24 hours) → Insights sync stuck
- Token expired → reconnect or update the token
- Disconnected → run the Connect flow
Step 2: For ‘Token expired’ / ‘Disconnected’
There are two connections to check:
- The ad account, which brings in spend. If its card shows Reconnect under Setup -> Ad Platforms or on the Conversion sync page, click it and sign in to Meta again.
- The pixel and System User token, which send conversions. To replace the token, generate a new System User access token in Meta Business Settings (see Send conversions to Meta), open a Meta sync under Activation -> Conversion sync, paste the token in the Send to step, and click Save pixel.
Step 3: For ‘conversions not appearing in Events Manager’
- Open Activation -> Conversion sync. Each Meta sync shows a status: Sending or Ready is working, Needs setup means the pixel or token is missing, Test mode means a test code is set, and Failing means Meta is rejecting sends.
- Open the sync and look at Recent sends. Each person is listed with what Meta matched on and whether it was:
- Sent: Meta has it. Events can take a few minutes to appear in Events Manager.
- Waiting for an email or click: SourceLoop has nothing Meta can match on yet.
- Too old to send: Meta only accepts events from the last 7 days.
- Failed: Meta rejected it, with the error on the row.
Common errors and fixes:
- Invalid access token → the token expired or was revoked. See Step 2.
- Pixel not found or unauthorized → wrong Pixel ID, or the System User isn’t assigned to that pixel in Business Settings.
- Invalid event name → a custom event name with spaces or unsupported characters. Use letters, numbers, and underscores.
Step 4: For ‘test events not showing in Events Manager’
- Check the test event code on the sync matches the one in Events Manager exactly.
- Make sure you’re looking at the Test events tab of the same pixel the sync sends to.
- Refresh the Test events tab after the conversion. It doesn’t always update on its own.
- Check the conversion arrived in SourceLoop’s Contacts.
Step 5: For ‘poor Match Quality score’
Match Quality is Meta’s measure of how often your events match a real Meta user. To raise it:
- Install the SourceLoop tracking code on every landing page, not just the page with the form. The ad click is captured where the visitor lands.
- Ask for email and phone in your forms. SourceLoop sends them hashed, and together they match most people.
- Check privacy plugins that clear cookies aggressively, which can drop the ad click before the visitor converts.
Step 6: For ‘spend data not updating’
Spend and impressions sync from Meta once a day. If Meta Ads Manager shows the same lag for the last 1 to 3 days, the data isn’t final on Meta’s side yet.
How to start again
To disconnect entirely, see Disconnect Meta Ads from SourceLoop.
When to email support
If you’ve worked through the checklist and CAPI events still aren’t appearing correctly, email [email protected] with:
- The Meta Ads card’s current status
- Two or three error messages from the sync’s Recent sends (verbatim)
- Your Ad Account ID (visible on the Meta card)
- Your Pixel ID
We respond within one business day.
Frequently asked questions
-
My Meta card shows 'Token expired'. What now?
Reconnect from the Meta card to refresh the user token, or paste a System User Access Token from Meta Business Settings (which doesn't expire). If you reconnect with a user token, you'll see this again in 60 days. Switching to a System User token is the durable fix.
-
Conversions are firing in SourceLoop but not showing in Meta Events Manager. What should I check?
Five common causes. (1) Test event code mismatch, if you set a test_event_code in SourceLoop, events go to Test events only, not the live Pixel feed. Remove the test code to send to production. (2) Pixel ID wrong, double-check the value matches the Pixel ID in Events Manager. (3) Token missing ads_management permission, regenerate the System User token with the right scope. (4) System User isn't assigned to the Pixel, in Business Settings, assign the user to the Pixel as Admin. (5) The events take 20-60 seconds to appear in Events Manager UI, that's normal.
-
Meta says 'Invalid OAuth access token' in the sync log. Why?
Three possible causes. (1) The token has expired (user tokens last 60 days; System User tokens with "Never" expiry don't). (2) Someone removed SourceLoop from your Business' Connected Apps. (3) The token was generated for a different Business / ad account than the one you connected. Reconnect with a valid token bound to the right Business.
-
My Match Quality score is poor. How do I improve it?
Match Quality is Meta's measure of how well CAPI events match to real Meta users. To improve it, install the SourceLoop tracking code on every landing page so the ad click is captured where visitors arrive, and ask for email and phone in your forms. SourceLoop sends them hashed, and together they match most people.
-
I'm getting 'Permission OAuthException' errors. What does that mean?
The token you provided doesn't have permission to write to the Pixel ID you specified. Either the System User isn't assigned to the Pixel (fix in Business Settings -> Users -> System Users -> [user] -> Assets), or the token was generated for a different Pixel.
-
How do I send a test event to verify the integration?
In Meta Events Manager, open the Test events tab and copy the test code. In SourceLoop, open a Meta sync under Activation -> Conversion sync and paste it into Test event code in the Send to step. Sends then appear under Test events within a few minutes. Remove the code afterwards, because a sync in test mode never reaches your ads.
-
Insights data (spend, impressions) is stale. When does it refresh?
Spend and impressions sync from Meta once a day and re-fetch recent days to catch Meta's late attribution. The last 1 to 3 days often lag in Meta itself, so SourceLoop can only show what Meta has.
-
Can I disconnect just the CAPI push but keep the Insights sync?
Yes. Pause or delete your Meta syncs under Activation -> Conversion sync. The ad account stays connected and keeps bringing in spend, but nothing is sent to Meta.