{"id":38,"date":"2026-11-01T19:46:36","date_gmt":"2026-11-01T19:46:36","guid":{"rendered":"https:\/\/www.vibelets.ai\/blogs\/?p=38"},"modified":"2026-11-01T19:46:36","modified_gmt":"2026-11-01T19:46:36","slug":"audit-facebook-ad-account","status":"publish","type":"post","link":"https:\/\/www.vibelets.ai\/blogs\/2026\/11\/01\/audit-facebook-ad-account\/","title":{"rendered":"How to audit a client&#8217;s Facebook ad account"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Most agencies inherit a client&#8217;s Facebook ad account and find the problems a month later, after they own the results. The tracking was half broken, six ad sets were stuck in learning, and an ad that stopped working in spring was still taking a fifth of the budget.<\/p>\n\n\n<p class=\"wp-block-paragraph\">An audit before you sign, or in the first week, fixes that. It tells you what you are walking into, gives you a list of quick wins for the first 30 days, and gives you a baseline the client agreed to before your name was on the account.<\/p>\n\n\n<p class=\"wp-block-paragraph\">This guide is the audit we would run: six checks, in order, each with where to look in Ads Manager or Events Manager and what &#8220;bad&#8221; looks like. You can do it in about an hour with view access to the account.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Key takeaways<\/h2>\n\n\n<ul class=\"wp-block-list\">\n<li>Check tracking first. If the Pixel and Conversions API aren&#8217;t both sending clean, deduplicated events, every other number in the account is suspect.<\/li>\n\n\n<li>Look for ad sets stuck in learning. Meta says an ad set usually exits after about 50 results in the week after its last significant edit.<\/li>\n\n\n<li>List every ad set that has spent well past the client&#8217;s target CPA with zero conversions. That is the fastest money you can save.<\/li>\n\n\n<li>Find ads that have run for weeks while cost per result climbs, and check what Meta&#8217;s Delivery column says about them.<\/li>\n\n\n<li>Finish with pacing and objectives: is the money landing where the plan says, and is each campaign optimizing for what the client actually sells?<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading\">Before you start: set up the hour<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Ask the client for partner access to the ad account and to the dataset (the Pixel) in Events Manager. View access is enough for an audit. Ask for two numbers too: their target CPA or target ROAS, and the orders or revenue their store recorded for the last 30 days.<\/p>\n\n\n<p class=\"wp-block-paragraph\">In Ads Manager, set the date range to the last 30 days, then compare against the last 90 for context. Budget your time roughly like this: 15 minutes on tracking, 10 on structure, 10 on wasted spend, 10 on creative, 15 on pacing, objectives and writing it up.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Check 1: Tracking<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Do this first because every other check reads conversion numbers. If those are wrong, your audit will be too.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Where to look<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Open Events Manager, pick the client&#8217;s dataset, and click View details on the Purchase event (or Lead, for a lead-gen client). Meta&#8217;s <a href=\"https:\/\/www.facebook.com\/business\/help\/1541268312717919\">server event details<\/a> view has tabs for Event overview, Event coverage, Event matching, Event deduplication and Data freshness. Go through them in that order.<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Both sources firing.<\/strong> Meta recommends a <a href=\"https:\/\/www.facebook.com\/business\/help\/308855623839366\">redundant setup<\/a>: the same events sent from the Pixel in the browser and from the Conversions API on the server.<\/li>\n\n\n<li><strong>Event coverage.<\/strong> Meta&#8217;s guidance is to aim for a 75% ratio of Conversions API events to Pixel events.<\/li>\n\n\n<li><strong>Deduplication.<\/strong> When both sources send the same event, Meta <a href=\"https:\/\/www.facebook.com\/business\/help\/823677331451951\">deduplicates<\/a> it when the event name and event_id match (or, as a fallback, the event name and external_id or fbp).<\/li>\n\n\n<li><strong>Event Match Quality.<\/strong> Meta scores it from <a href=\"https:\/\/www.facebook.com\/business\/help\/765081237991954\">0 to 10<\/a> per web event sent through the Conversions API, using the last 48 hours of data. Email and click ID are the two parameters Meta lists as high priority.<\/li>\n<\/ul>\n\n\n<h3 class=\"wp-block-heading\">What bad looks like<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Purchase comes only from the browser, with no server events. Coverage sits well under 75%. The deduplication tab shows events without an event_id. Event Match Quality on Purchase is low and the event sends no email. Or the simplest test fails: Ads Manager reports more purchases in the last 30 days than the store recorded orders. That usually means double counting, and it makes the account look better than it is.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Check 2: Structure and the learning phase<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Meta says an ad set <a href=\"https:\/\/www.facebook.com\/business\/help\/112167992830700\">exits the learning phase<\/a> once it delivers stably, which usually happens after about 50 results in the week after its last significant edit. Budget spread across too many ad sets keeps them all in learning.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Where to look<\/h3>\n\n\n<p class=\"wp-block-paragraph\">At the ad set level in Ads Manager, read the Delivery column. Add the Last significant edit and Optimization events columns through Columns, then Customize columns. Count how many active ad sets show &#8220;Learning&#8221; or &#8220;Learning limited&#8221;.<\/p>\n\n\n<h3 class=\"wp-block-heading\">What bad looks like<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Most of the spend sits in ad sets marked <a href=\"https:\/\/www.facebook.com\/business\/help\/269269737396981\">Learning limited<\/a>. Meta lists the usual causes: small audiences, low budget, a low bid or cost control, high auction overlap, an infrequent optimization event, or too many ads at once.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Do the maths. Say the client&#8217;s target CPA is $40. Fifty purchases a week costs about $2,000, or roughly $286 a day per ad set. If the account runs $300 a day across six ad sets, each one gets $50 and can expect around nine purchases a week. None of them will leave learning.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Also check the Last significant edit dates. Meta counts changes to targeting, creative, the optimization event or bid strategy, adding a new ad, and pausing for 7 days or more as <a href=\"https:\/\/www.facebook.com\/business\/help\/316478108955072\">significant edits<\/a>. Large budget changes can count too. If the previous team edited every few days, the account never had a chance to settle.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Check 3: Spend with no return<\/h2>\n\n\n<h3 class=\"wp-block-heading\">Where to look<\/h3>\n\n\n<p class=\"wp-block-paragraph\">At the ad set level, last 30 days, sort by Amount spent. Add the Results column for the client&#8217;s conversion event. Then do the same at the ad level.<\/p>\n\n\n<h3 class=\"wp-block-heading\">What bad looks like<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Ad sets or ads that have spent well past the client&#8217;s target with zero conversions. Pick a threshold and write it down. Say the target CPA is $40 and you flag anything that spent three times that, $120, with no purchase. Add up what those lines spent. &#8220;$1,800 of last month&#8217;s spend bought zero orders&#8221; is the sentence that wins pitches, as long as Check 1 shows the tracking can be trusted.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Check 4: Creative age and fatigue<\/h2>\n\n\n<h3 class=\"wp-block-heading\">Where to look<\/h3>\n\n\n<p class=\"wp-block-paragraph\">At the ad level, note when each active ad started running and add the Frequency and Cost per result columns. Compare the last 7 days with the first weeks the ad ran. Then read the Delivery column. Meta shows <a href=\"https:\/\/www.facebook.com\/business\/help\/1346816142327858\">Creative limited<\/a> when an ad&#8217;s cost per result is higher than the ads you ran before but under twice as much, and Creative fatigue when it is twice as much or more. Meta only offers this for some setups, mainly ad sets with one creative, so don&#8217;t treat a missing label as a clean bill of health.<\/p>\n\n\n<h3 class=\"wp-block-heading\">What bad looks like<\/h3>\n\n\n<p class=\"wp-block-paragraph\">An ad that has run for six weeks or more, with frequency rising and cost per result climbing week over week, still taking a large share of spend. Or no new creative launched in the last 30 days at all. Note which ads are holding up too: they seed your first tests.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Check 5: Budget pacing and objectives<\/h2>\n\n\n<h3 class=\"wp-block-heading\">Budget pacing<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Meta <a href=\"https:\/\/www.facebook.com\/business\/help\/1754368491258883\">paces<\/a> spend across the ad set&#8217;s schedule, and daily budgets flex. Per Meta&#8217;s <a href=\"https:\/\/www.facebook.com\/business\/help\/190490051321426\">daily budget rules<\/a>, it may spend up to 75% over the daily budget on a given day, but no more than 7 times the daily budget in a Sunday to Saturday week. So a $500 daily budget can spend $875 on Tuesday and still be on plan.<\/p>\n\n\n<p class=\"wp-block-paragraph\">Judge pacing against the client&#8217;s monthly plan, not single days. Bad looks like month-to-date spend far ahead of or behind plan, ad sets that consistently spend well under budget (often a cost control set too low or an audience too small), or budget sitting in campaigns the client doesn&#8217;t care about.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Objectives<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Check each campaign&#8217;s objective and each ad set&#8217;s performance goal. Meta notes these can <a href=\"https:\/\/www.facebook.com\/business\/help\/355670007911605\">differ<\/a>: a Sales campaign can still optimize for link clicks. Bad looks like an ecommerce client paying for Traffic or Engagement campaigns while judging you on orders, or Sales campaigns optimizing for clicks or landing page views with no stated reason. Optimizing for add to cart can be a deliberate choice when purchases are too few to exit learning. Ask before you call it a mistake.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Copy-ready audit checklist<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Paste this into the client doc and fill in one line per check.<\/p>\n\n\n<ol class=\"wp-block-list\">\n<li>Tracking: Pixel and Conversions API both sending Purchase? Coverage vs Meta&#8217;s 75% guide? Deduplicated by event_id? Event Match Quality on Purchase (0 to 10)? Ads Manager purchases vs store orders, last 30 days. Finding: ___<\/li>\n\n\n<li>Structure: number of active ad sets. How many are Learning or Learning limited? Share of spend in them. Last significant edit dates. Finding: ___<\/li>\n\n\n<li>Spend with no return: threshold used (for example 3x target CPA). Ad sets and ads over it with zero conversions, and their total spend. Finding: ___<\/li>\n\n\n<li>Creative: age of each top-spending ad, frequency trend, cost per result trend, any Creative limited or Creative fatigue status. Last new ad launched on: ___<\/li>\n\n\n<li>Budget pacing: month-to-date spend vs plan. Ad sets underspending their budget. Finding: ___<\/li>\n\n\n<li>Objectives: objective and performance goal per campaign vs the client&#8217;s business goal. Mismatches: ___<\/li>\n\n\n<li>Top 3 fixes for the first 30 days: ___<\/li>\n<\/ol>\n\n\n<h2 class=\"wp-block-heading\">Where Vibelets fits<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Vibelets audits each client&#8217;s Meta ad account once it is connected and the 14-day trial starts. Each week it writes a plan of what to pause, test and launch, with the reason for each proposed change, and it runs only the changes your team approves. Several client accounts sit in one workspace, each with its own audit and plan. It covers Meta only and never promises a ROAS or CPA. See <a href=\"https:\/\/www.vibelets.ai\/for\/agencies\">Vibelets for agencies<\/a>.<\/p>\n\n\n<h2 class=\"wp-block-heading\">FAQ<\/h2>\n\n\n<h4 class=\"wp-block-heading\">How long does a Facebook ad account audit take?<\/h4>\n\n\n<p class=\"wp-block-paragraph\">About an hour for a typical ecommerce account with a handful of campaigns, if you have view access and the client&#8217;s store numbers ready. Accounts with many brands or countries take longer.<\/p>\n\n\n<h4 class=\"wp-block-heading\">What access do I need from the client?<\/h4>\n\n\n<p class=\"wp-block-paragraph\">View access to the ad account and to the dataset in Events Manager, shared to your business as a partner. You don&#8217;t need edit rights for an audit, and asking for less makes it an easier yes before a contract is signed.<\/p>\n\n\n<h4 class=\"wp-block-heading\">Should I share the audit with a prospect before they sign?<\/h4>\n\n\n<p class=\"wp-block-paragraph\">Share the findings, not the full fix plan. The tracking result, the wasted spend total and the learning phase count show you know the account. The plan for fixing them is what they hire you for.<\/p>\n\n\n<h4 class=\"wp-block-heading\">What if tracking is broken?<\/h4>\n\n\n<p class=\"wp-block-paragraph\">Then that is the first fix, and the other five checks become directional. Say so in the write-up, fix the events, and rerun Checks 2 to 4 once a couple of weeks of clean data has come in.<\/p>\n\n\n<h2 class=\"wp-block-heading\">Sources<\/h2>\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/112167992830700\">Meta Business Help Center: About the learning phase<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/316478108955072\">Meta Business Help Center: Significant edits and learning phase<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/269269737396981\">Meta Business Help Center: About learning limited<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/308855623839366\">Meta Business Help Center: Best practices for Conversions API<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/765081237991954\">Meta Business Help Center: About event match quality<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/823677331451951\">Meta Business Help Center: About deduplication for Meta Pixel and Conversions API events<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/1541268312717919\">Meta Business Help Center: View server event details in Meta Events Manager<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/1346816142327858\">Meta Business Help Center: About creative fatigue recommendations in Meta Ads Manager<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/1754368491258883\">Meta Business Help Center: About pacing<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/190490051321426\">Meta Business Help Center: About daily budgets<\/a><\/li>\n\n\n<li><a href=\"https:\/\/www.facebook.com\/business\/help\/355670007911605\">Meta Business Help Center: About performance goals<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>A one-hour Facebook ad account audit for agencies: six checks in order, where to look in Ads Manager and Events Manager, and what bad looks like.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-38","post","type-post","status-publish","format-standard","hentry","category-ai"],"_links":{"self":[{"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/posts\/38","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/comments?post=38"}],"version-history":[{"count":1,"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/posts\/38\/revisions"}],"predecessor-version":[{"id":42,"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/posts\/38\/revisions\/42"}],"wp:attachment":[{"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/media?parent=38"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/categories?post=38"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vibelets.ai\/blogs\/wp-json\/wp\/v2\/tags?post=38"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}