Copying Meta numbers from Ads Manager into spreadsheets works for one client and breaks down at five. This guide walks you through syncing Meta Ads data automatically for every client, so spend, results, and conversions land in one ClientPlug dashboard without manual exports or copy-pasting. Before you start, make sure you have admin or advertiser access to each client's Meta ad account (through Business Manager, now often called Business Portfolio) and a ClientPlug account. Menu names in Meta and in any software change often, so treat the labels below as a guide and check them against what you see on screen.
Step 1: Audit How You Pull Meta Ads Data Today
Before connecting anything, map where Meta numbers currently live. Write down every location: Ads Manager exports, Google Sheets or Excel files, screenshots pasted into slides, and the reports clients actually receive. For each one, note who touches it and how often. This usually exposes duplicated work, such as a campaign manager exporting data on Monday and an account manager retyping it on Thursday.
Next, decide which metrics each client type needs. You will configure and review only what you will use, so be selective. A reasonable starting point:
- Lead generation: spend, impressions, CPM, CTR, CPC, leads, cost per lead.
- Ecommerce: spend, CTR, CPC, purchases, purchase conversion value, ROAS, cost per purchase.
- Awareness or traffic: spend, reach, impressions, CPM, link clicks, CPC.
The common mistake is to sync and display every available metric because it is possible. That produces cluttered dashboards and reports that clients skim past. Pick the core set for each goal, and add more later when a client asks a question the core set cannot answer.
Finish the audit by listing your clients in one sheet with columns for ad account name, ad account ID, business that owns it, goal type, and target cost per result or ROAS. You will use this list in every later step, and the targets will matter again in Step 6.
Step 2: Confirm Access to Each Client's Meta Ad Account
Ownership determines what you can connect. Check whether each ad account sits in the client's own Business Portfolio or in yours, and which business owns it. If the client owns it, you typically work as a partner with assigned access. If you own it, the client may only have access to view results. Note this in your client list so you know who can grant or revoke permissions later.
Then request access at the right level. Read-only, analyst-style access is generally enough for pulling performance data and building reports. If you also want to use campaign optimization features, which change things inside the account, you need advertiser-level access or higher. Role names and permission toggles have changed over the years, so confirm the current wording in Meta's Business Help Center before sending instructions to clients.
When you ask a client for access, make it easy:
- Send your Business ID (found in your Business Settings under business info).
- Tell them which ad account to share and the access level you need.
- Ask them to assign it through Business Settings under Partners, or to add your agency login as a user with the matching permission.
- Ask them to confirm once done so you can accept or verify on your side.
If a client cannot find the invite or the ad account does not show up for you, have them check Business Settings under Partners or Users to see whether the request is pending. Also confirm the invite went to the right Business ID, since a single wrong digit sends it to a different business. Pending invites sometimes need to be accepted from the receiving side, so check your own Business Settings as well.
Step 3: Connect Meta Ads to Your ClientPlug Dashboard
With access in place, create or open the client's profile in ClientPlug. Choose the Meta Ads integration and log in with the Facebook profile that has access to that client's ad account. Screen names can shift as the product updates, so follow the prompts you see rather than a fixed click path.
Meta will show a permissions dialog. Grant the requested permissions, then select only the ad accounts that belong to this client. If your login can see twenty accounts, resist the urge to tick them all. Selecting just the relevant account keeps data from being attributed to the wrong client and keeps your dashboard clean.
One mistake to avoid is authorizing with a personal profile tied to a single team member. If that person leaves, changes their password, or loses access, the connection can break and your data stops flowing without much warning. Prefer a stable agency login, owned by the business, that holds the access you need across clients. Whoever holds that login should have two-factor authentication set up in a way the agency can recover.
Repeat the process for each client. When you finish, open the dashboard and confirm each ad account appears under the correct client name. Compare the account names and IDs against the list you built in Step 1. Catching a mismatch now is far easier than discovering later that one client's report contains another client's spend.
Step 4: Verify the First Sync Against Ads Manager
Do not trust a connection until you have checked it. Pick a fixed date range that is fully in the past, such as the last 7 days ending yesterday, and compare spend, results, and impressions in ClientPlug against Ads Manager for the same account. A fixed range matters because a rolling "today" view changes as you compare.
Small gaps are normal and usually come from three settings:
- Time zone: the ad account has its own time zone, and days roll over at different moments if the tool uses another one.
- Currency: conversions between account currency and a reporting currency can shift totals slightly.
- Attribution window: results change depending on whether you view 7-day click, 1-day click, or include view-through conversions.
Check that the attribution setting matches what you report to the client. If the client expects 7-day click and Ads Manager is displaying a different window, results will never line up. Also know that Meta can revise conversion numbers after the fact as attribution catches up, so recent days often look lower than they will a few days later. Expect the last day or two to move.
If numbers do not match, work through this checklist:
- Reconfirm the right ad account is selected for that client.
- Align the date range and time zone on both sides.
- Compare the same columns and breakdowns; a view split by placement or device will not total the same as an unbroken one.
- Re-compare using an older date range where attribution has settled.
Exact matches are not always realistic, but differences should be small and explainable. When you can explain every gap, the sync is verified.
Step 5: Set Up Conversion API So the Synced Data Is Complete
Syncing only reports what Meta recorded, so incomplete tracking means incomplete data. Browser-based Pixel tracking can undercount conversions because of ad blockers, browser privacy restrictions, and iOS limits on tracking. Conversion API sends events from the server instead of the browser, which fills many of those gaps and gives Meta more signal to optimize against.
In ClientPlug, set up Conversion API per client using the few-click setup. Do this for ecommerce and lead gen clients first, since their results depend most on conversion events. Have the relevant details ready for each client, such as the Pixel or dataset they use and which events matter (for example Lead, Purchase, or Add to Cart).
After setup, verify in Meta Events Manager:
- Open the client's dataset and confirm server events are arriving, not just browser events.
- Check event match quality for key events. Low scores mean Meta struggles to tie events to people, and passing more customer information parameters can help.
- Check deduplication. When the same conversion is sent by both Pixel and server, the two events must share a matching event ID so Meta counts it once.
The mistake to avoid here is sending duplicate events with no deduplication. It inflates conversion counts, makes cost per result look better than it is, and can quietly mislead both you and the client. If Events Manager shows Pixel and server events with no sign of deduplication, fix it before relying on the numbers. After changes, give it a few days, then repeat the comparison from Step 4 on a recent range.
Step 6: Configure Health Monitoring and Alerts
Once data flows reliably, use it to catch problems early. ClientPlug lets you watch performance at the ad, campaign, client, and agency level, so decide what "unhealthy" means before something goes wrong. Useful thresholds include:
- Spend pacing: spending well ahead of or behind the monthly budget.
- Cost per acquisition above the client's target.
- A sudden drop in leads or purchases compared with the previous period.
- An ad account that has stopped delivering or lost its connection.
Set the values per client rather than using one number for everyone. A $40 cost per lead may be excellent for a home services client and a disaster for a local restaurant.
Build a weekly review routine around the hierarchy. Start with the agency-level view to see which clients are healthy and which are flagged. Then drill into only the flagged clients, moving from client to campaign to ad to find the cause. This keeps a review of many accounts to a manageable session instead of opening each one in turn.
One tip: record each client's goals in their profile, such as target CPA or ROAS. Numbers mean little without context, and generic industry averages can push you to fix accounts that are performing well or ignore ones that are missing the client's real target. Reading results against the benchmark the client agreed to keeps your attention on what matters to them.
Step 7: Automate White-Label Reports From the Synced Data
Reports are where synced data pays off. Build a template with your agency's logo and branding, then choose the core metrics you selected in Step 1 for each client type. Add a short commentary section where you explain what changed and what you plan to do next. Clients value that interpretation more than the numbers alone, so keep it to a few specific sentences.
Then schedule delivery. Weekly suits clients with high spend or active tests, and monthly suits steadier accounts. Add each client's email address and send a test to yourself first. Check the numbers against Ads Manager, confirm the date range is what you expect, and look at the layout the way a client would see it on a phone and on a desktop.
The mistake to avoid is letting reports go out without a quick check of sync status. Tokens expire, permissions get revoked, and a disconnected account can produce a report with zeros or stale figures that lands in the client's inbox on schedule. Before each scheduled send, review the dashboard for disconnected accounts or token errors and reconnect anything flagged. A two-minute check protects you from the kind of error clients remember.
If a client asks for changes, adjust the template once and the update carries into future sends, rather than being rebuilt by hand every cycle.
Keeping the Sync Healthy Week After Week
Automatic does not mean unattended. Once a week, confirm every client's connection is still active and spot check totals against Ads Manager for one or two accounts. That habit catches expired tokens and revoked access before they reach a report. Everything else runs on its own, which gives you back the hours once spent on exports. Put that time into creative testing, audience refinement, and budget decisions, the work clients actually pay you for. Learn more about our services