Google Ads audit · bold-bi
2026-11-12 15:47 · success · score 50· by sarathkumarvenkatesan · reviewed by sarathkumarvenkatesan on 2026-11-12· backend claude-code 2.1.322 (claude-opus-5-5)
Checklist: demand-gen/paid/ads-account-audit.md
Summary
Headline
The Bold BI Google Ads account (Bold BI, 2545735992, USD) did not serve at all from 2026-10-15 to 2026-11-11: $0 spend, 0 impressions. In the prior 28 days it spent $2,405.20 for 113 clicks and 3 conversions, and its last day with impressions was 2026-09-23. Every campaign is paused except "Bold BI | Embedded Analytics | Experiement | LP 1". That campaign has status ENABLED, but its serving status is ENDED. So this audit mostly checks configuration that will apply when the account is relaunched.
Targeting hygiene is good: exact and phrase match only, Presence geo, Search Partners and Display off on recent campaigns, theme-matched /lp/ landing pages, and no disapprovals. The problems are bidding on raw form fills alongside the CRM import, no brand negatives in non-brand campaigns, and ad copy with unsourced claims, including a "$200K+ a year" customer saving.
Score
50 / 100 (7 of 14 scored items passed; a warn counts as not passed; 1 item n/a and 1 not checked are excluded)
- Pass: 7 | Warn: 4 | Fail: 3 | n/a: 1 | Not checked: 1
Top 3 actions
- Fix conversion goals before any relaunch (B3). Make the CRM import ("Google Ads - BI - Offline Conversions") the primary goal under a qualified-lead category, and set the web form fill ("Google Ads - Common Goal") to secondary. Both are now primary and counted in the same SUBMIT_LEAD_FORM goal, so one lead can count twice. Owner: paid search lead and sales ops.
- Source or remove ad claims (C4, C1). The claims to check are "One customer saved $200K+ a year…", "Rated 4.4/5 on G2", "4.9/5 on Capterra", "SOC 2, HIPAA & GDPR Compliant", "140+ sources" and "Best Tableau Alternative". Owner: product marketing.
- Add a brand negative list to every non-brand campaign (B6). In the prior period, "bold bi" matched in Embedded & White Label for $108.93 with 0 conversions. Decide at the same time whether a brand campaign should run on relaunch.
Findings
Ads account audit: bold-bi, Bold BI (2545735992), 2026-11-12
Period: 2026-10-15 to 2026-11-11 (28 days), compared with 2026-09-17 to 2026-10-14 | Run by: Claude
| ID | Item | Result | Evidence | Est. monthly waste | Proposed fix |
|---|---|---|---|---|---|
| A1 | Broad match without negatives | Pass | No broad keywords in the 6 campaigns that served in the prior period or in the enabled campaign (18 exact, 4 phrase). All use Manual CPC. | n/a | None. |
| A2 | Search Partners and Display bleed | Pass | The enabled campaign and the 6 recently active campaigns have Search Partners and Display off. Six paused Search campaigns have Search Partners on: 21990029422, 23121886784, 23121953486, 23122497300, 23122793889 and 23345986229. | n/a | Turn Search Partners off on those six before re-enabling them. |
| A3 | No student/free/job-seeker negatives | Warn | "General Negatives" (on all 7 recent and enabled Search campaigns) has free, jobs, tutorial, crack, course, career, salary, internship and torrent. student, students, careers, job and courses are missing from all 5 lists checked. "free" is negated even though the ads promote a free trial. | unknown | Add the missing terms. Review the "free" negative. |
| A4 | Geo "presence or interest" | Pass | The enabled campaign and the 6 recently active campaigns use Presence. Eight paused campaigns (3 Search, 1 PMax, 4 Display) still use Presence or interest. | n/a | Switch them before re-enabling. |
| A5 | Search-term waste | Warn | No terms in the audit period. Top 50 from the prior period reviewed: mostly on-theme. Flagged: "bold bi" $108.93 (0 conv), "data analytics for ai" $36.30, "power bi vs microstrategy" $19.80, "power bi vs tableau" $19.76, "dashboard for computer" $18.17. The General campaign spent $913.97 for 55 clicks and 0 conversions. | unknown | Add negatives, and review the General campaign before relaunch. |
| A6 | Audience Network (Microsoft Ads) | Not checked | No Microsoft Ads source was connected. | unknown | Check manually. |
| B1 | Auto-applied recommendations | Pass | All 3 recommendation subscriptions are PAUSED. No changes by GOOGLE_ADS_RECOMMENDATIONS in the last 30 days, only 7 asset creates by INTERNAL_TOOL. | n/a | None. |
| B2 | PMax cannibalizing brand | n/a | The only PMax campaign (23639788257) is paused with no spend in either period. It has no brand exclusion or negatives, and both brand campaigns are paused. | n/a | Add a brand exclusion before re-enabling it. |
| B3 | Wrong conversion goals | Fail | The web form fill ("Common Goal", WEBPAGE) and the CRM import ("BI - Offline Conversions", UPLOAD_CLICKS) are both primary and counted, both in SUBMIT_LEAD_FORM, the biddable goal. QUALIFIED_LEAD is not biddable. | unknown | Make the CRM import primary under a qualified-lead goal, and make form fills secondary. |
| B4 | Offline conversion import | Pass | ADS_DATA_CONNECTOR status EXCELLENT, 2 of 2 events successful, last upload 2026-11-10. Only 2 events in total. Click-ID capture on forms can't be verified via the API. | n/a | Confirm GCLID capture in the CRM. |
| B5 | CPA vs pricing model | Warn | Recent and enabled campaigns use Manual CPC with no targets. The prior period cost $2,405.20 for 3 conversions (about $801.73 each). Older paused campaigns use a $25 or $150 target CPA with no split between embedded/OEM and self-service. | unknown | Set separate targets per offer after B3 is fixed. |
| B6 | Brand exclusion | Fail | No brand terms in any of the 5 shared lists. Only Embedded & White Label has an exact "bold bi" negative. In the prior period, "bold bi" cost $108.93 there. | unknown | Create and attach a brand negative list. |
| C1 | Competitor trademark issues | Warn | Tableau and Power BI names appear in the ad text, and all assets are APPROVED. "Best Tableau Alternative" is an unsourced superlative, and the pricing comparisons ("No Per-Creator Tableau Fees", "No Premium Capacity Fees") need checking. | n/a | Product marketing to confirm permission and facts. |
| C2 | Landing page mismatch | Pass | All 37 non-removed ads go to theme-matched /lp/ pages. None goes to the home page. The buyer-fit audit was not run. | n/a | Run the buyer-fit audit on the /lp/ pages. |
| C3 | Disapproved or limited ads | Pass | All 37 non-removed ads in the 7 recent and enabled campaigns are APPROVED. | n/a | None. |
| C4 | Claims | Fail | No prices. Unsourced: "One customer saved $200K+ a year…", "Rated 4.4/5 on G2", "4.9/5 on Capterra", "SOC 2, HIPAA & GDPR Compliant", "140+ sources", "40+ chart types", "Dashboard in Under an Hour", "Free 30-day trial". 7 RSAs sampled. | unknown | Source or remove, then review every RSA. |
Score
- Pass: 7 | Fail: 3 | n/a: 1 (also Warn: 4, Not checked: 1)
Proposed changes (need human approval before applying)
See "Proposed changes (need approval)" below.
Remember to add these results to the team's shared results log (location TBD).
Not checked
- Live performance (all items): the account had no impressions from 2026-10-15 to 2026-11-11. A1, A2, A4 and B5 were judged on current settings. A5 used the comparison period (2026-09-17 to 2026-10-14). Its last serving day was 2026-09-23.
- A6 Audience Network (Microsoft Ads): no Microsoft Ads data source was connected. The Microsoft Ads half of B1 was not checked for the same reason.
- B1 change history: the Ads API only returns the last 30 days of change events (2026-10-14 onward).
- B2 brand impression share: both brand campaigns are paused, so there is nothing to compare.
- B4 form click-ID capture: whether GCLID, GBRAID and WBRAID are stored on forms needs a CRM or form check.
- A3/B6 negatives: only targeted lookups were run against the 5 shared lists attached to recent campaigns. The large "Exclude Globally" lists (more than 4,000 terms each) were not read in full.
- C1, C3, C4: based on ads in the 7 recent and enabled campaigns. Ad copy came from 7 sampled RSAs. Ads in the older paused campaigns were not reviewed.
- C2 buyer-fit audit of the /lp/ pages was not run. It is a separate skill.
- Date range: the checklist default is 90 days compared with the prior 90. This run used the 28-day range pbmaintain supplied.
- Waste estimate:
ads.wasted_spend_estis null. There was no spend in the period, and the prior-period terms flagged ($202.96 combined) are not a monthly waste estimate. - Why the account is paused: this can't be told from account data. It may be intentional.
Proposed changes (need approval)
None of these has been applied. Each one needs approval from the paid search lead in chat.
- Conversion settings: "Google Ads - Common Goal" (form fill) and "Google Ads - BI - Offline Conversions" (CRM import) are both primary in SUBMIT_LEAD_FORM → move the CRM import to a qualified-lead goal and make it the only biddable primary. Set the form fill to secondary. Reason: B3.
- RSA copy (ads 822377190631, 822377442625, 822410973025, 823873386684, 823830608337 and any others like them): unsourced customer-savings, rating, compliance and count claims → source them or remove them. Replace "Best Tableau Alternative" unless it is sourced. Reason: C4, C1.
- New shared list "Bold BI brand" (bold bi, boldbi, bold bi pricing, bold bi login): not present → create it and attach it to all non-brand Search and PMax campaigns. Reason: B6.
- Brand coverage: both brand campaigns are paused → paid search lead decides whether to re-enable "Bold BI | Brand Campaign | US | Manual CPC" when the account relaunches. Reason: B6, B2.
- "General Negatives" list: student, students, careers, job and courses are missing → add them as negatives. Decide whether to keep the broad "free" negative, given the free trial. Reason: A3.
- Negatives for flagged terms: add "dashboard for computer" and competitor-vs-competitor patterns ("vs microstrategy", "power bi vs tableau") to the Power BI Alternative and General campaigns, or route them to comparison ads. Reason: A5.
- Paused Search campaigns 21990029422, 23121886784, 23121953486, 23122497300, 23122793889 and 23345986229: Search Partners on → turn it off before re-enabling. Reason: A2.
- Paused campaigns 23122793889, 23336940957, 23487762224, 23639788257, 21868027126, 21985086914, 22221338605 and 23663331314: Presence or interest → switch to Presence before re-enabling. Reason: A4.
- PMax 23639788257: no brand exclusion → add one before re-enabling. Reason: B2.
- Bidding on relaunch: Manual CPC with no targets, and old $25 and $150 target CPAs → set separate targets for embedded/white-label and self-service/cloud once change 1 is live. Reason: B5.
Data sources
- Google Ads API v24 through the
google-adsMCP server (run_gaql, read-only), customer 2545735992 "Bold BI", currency USD, time zone America/New_York. Queried 2026-11-12. The other accessible accounts (syncfusion.com, _bolddesk.com, boldsign.com, boldreports.com) were identified but not audited. - Resources queried:
customer,campaign,campaign_budget,keyword_view,ad_group_criterion,search_term_view,shared_set,shared_criterion,campaign_shared_set,campaign_criterion,conversion_action,customer_conversion_goal,offline_conversion_upload_client_summary,change_event,recommendation_subscription,ad_group_ad. - Raw exports in
raw/:account_and_conversions.json,campaigns.csv,keywords_prior_period.csv,search_terms_prior_period_top50.csv,negatives.csv,ads_landing_pages.csvandad_copy_sample.json. Costs are in micros, as the API returns them. Dollar figures here are micros ÷ 1,000,000. Cost per conversion is cost ÷ conversions, rounded to cents. - Checklist:
demand-gen/paid/ads-account-audit.md.
Findings
| ID | Item | Status | Severity | Effort | Recommendation | Checklist |
|---|---|---|---|---|---|---|
| B3 | Wrong conversion goalsneeds approval Primary and counted in Conversions: 'Google Ads - Common Goal' (WEBPAGE, SUBMIT_LEAD_FORM) and 'Google Ads - BI - Offline Conversions' (UPLOAD_CLICKS, SUBMIT_LEAD_FORM). The biddable goal is SUBMIT_LEAD_FORM~WEBSITE; QUALIFIED_LEAD~WEBSITE is not biddable. The web form fill is a primary bidding signal, and the CRM import sits in the same lead-form category, so one lead can count twice. Comparison period: 2 Common Goal + 1 Offline conversions. | fail | high | M | Make the CRM import the primary goal under a qualified-lead (or converted-lead) category, set the web form fill to secondary, and confirm which pipeline stage the import represents. | demand-gen/paid/ads-account-audit.md#checklist |
| C4 | Claimsneeds approval No hard-coded prices found. Unsourced in this run: 'One customer saved $200K+ a year switching off per-seat pricing.' (customer result), 'Rated 4.4/5 on G2', '4.9/5 on Capterra', 'SOC 2, HIPAA & GDPR Compliant', 'Analyze Data From 140+ Sources', '40+ Chart and Graph Types', 'Dashboard in Under an Hour', 'Free 30-day trial'. Ratings and trial length can go stale. 7 RSAs sampled. | fail | high | M | Product marketing to source or remove the $200K+ customer claim and the rating, compliance and connector-count claims. Then review every RSA, not just the sample. | demand-gen/paid/ads-account-audit.md#checklist |
| B6 | Brand exclusionneeds approval No brand terms (bold bi, boldbi, bold) in any of the 5 shared negative lists used by recent campaigns. Only 'Bold BI | Embedded & White Label' has an exact 'bold bi' campaign negative. The other 5 recently active campaigns and the enabled experiment have none. In the comparison period 'bold bi' matched in Embedded & White Label for $108.93, 3 clicks, 0 conversions. | fail | medium | S | Create a 'Bold BI brand' negative list (bold bi, boldbi, bold bi pricing, bold bi login) and attach it to every non-brand campaign. Re-enable a brand campaign if brand coverage is wanted. | demand-gen/paid/ads-account-audit.md#checklist |
| A3 | No student/free/job-seeker negativesneeds approval 'General Negatives' (attached to all 7 recent/enabled Search campaigns) has broad negatives free, jobs, tutorial, crack, course, career, salary, internship, torrent, download, certification. Missing from all 5 checked lists: student, students, careers, job, courses (negative keywords do not match plural or singular variants). 'free' is a broad negative while ads say 'Try Bold BI for Free' and 'Free 30-day trial'. | warn | medium | S | Add student, students, careers, job and courses to General Negatives. Paid search lead to decide whether to keep 'free' given the free trial. | demand-gen/paid/ads-account-audit.md#checklist |
| B5 | CPA vs pricing modelneeds approval Every campaign that served recently, and the enabled one, uses Manual CPC with no CPA or ROAS target. Comparison period: $2,405.20 for 3 conversions (about $801.73 each). Older paused campaigns use a $25 target CPA (21696972880, 22881114182) or $150 (23121822128), with nothing to separate embedded/OEM deals from self-service. | warn | medium | M | When the account is relaunched and B3 is fixed, set separate targets for embedded/white-label and self-service/cloud campaigns, in line with the pricing reference. | demand-gen/paid/ads-account-audit.md#checklist |
| C1 | Competitor trademark issuesneeds approval Tableau and Power BI names appear in headlines and descriptions ('Best Tableau Alternative', 'Tableau Costs Adding Up?', 'No Per-Creator Tableau Fees', 'Skip Power BI Per-User Fees', 'No Premium Capacity Fees', 'Try It Free; Leave Power BI'). All assets are APPROVED, with no disapprovals or limits. Tone is comparative rather than disparaging, but 'Best Tableau Alternative' is an unsourced superlative and the pricing comparisons need to be factual. 3 competitor RSAs sampled. | warn | medium | S | Product marketing to confirm competitor-name use is permitted and that the Tableau and Power BI pricing comparisons are current. Drop 'Best' unless it can be sourced. | demand-gen/paid/ads-account-audit.md#checklist |
| A5 | Search-term wasteneeds approval No search terms in 2026-10-15..2026-11-11 (no spend). Reviewed the top 50 terms by spend from the comparison period (2026-09-17..2026-10-14, last serving day 2026-09-23). Mostly on-theme. Flagged: 'bold bi' (brand) in Embedded & White Label, $108.93, 3 clicks, 0 conv; 'data analytics for ai' $36.30; 'power bi vs microstrategy' $19.80; 'power bi vs tableau' $19.76; 'dashboard for computer' $18.17. 'Bold BI | General | US' spent $913.97 for 55 clicks and 0 conversions. | warn | low | S | Add 'dashboard for computer' and competitor-vs-competitor patterns ('vs microstrategy', 'power bi vs tableau') as negatives or route them to comparison ads; handle brand per B6. Review General campaign before relaunch. | demand-gen/paid/ads-account-audit.md#checklist |
| A6 | Audience Network (Microsoft Ads) No Microsoft Ads data source was connected for this run. | not-checked | low | S | Check manually in Microsoft Ads if a Bold BI account exists. | demand-gen/paid/ads-account-audit.md#checklist |
| B4 | Offline conversion import Upload client ADS_DATA_CONNECTOR, status EXCELLENT, 2 of 2 events successful, last upload 2026-11-10 15:03:47 (within 7 days). Only 2 events in total. Whether GCLID, GBRAID and WBRAID are captured on forms can't be seen from the Ads API. | pass | high | S | Confirm click-ID capture on the boldbi.com forms in the CRM. | demand-gen/paid/ads-account-audit.md#checklist |
| A1 | Broad match without negatives No broad match keywords in the 6 campaigns that served in the comparison period or in the only enabled campaign (24215208938: 18 EXACT, 4 PHRASE). All of these use Manual CPC. The account had no impressions from 2026-10-15 to 2026-11-11, so this is a configuration check. | pass | medium | S | None. If broad match is added later, pair it with Smart Bidding and the shared negative lists. | demand-gen/paid/ads-account-audit.md#checklist |
| A2 | Search Partners and Display bleedneeds approval Enabled campaign 24215208938 and the 6 campaigns that served in the comparison period have Search Partners (target_search_network) and Display off. Six paused Search campaigns have Search Partners on: 21990029422 German Speaking - Buyer Intent, 23121886784 US On Premise BI, 23121953486 US Cloud BI, 23122497300 French - AI Analytics, 23122793889 Germany - AI Analytics, 23345986229 German - Embedded Analytics. | pass | medium | S | Turn Search Partners off on the six paused Search campaigns before re-enabling them. | demand-gen/paid/ads-account-audit.md#checklist |
| A4 | Geo presence or interestneeds approval Enabled campaign and all 6 recently active campaigns use PRESENCE. Paused campaigns still on PRESENCE_OR_INTEREST: Search 23122793889 Germany - AI Analytics, 23336940957 US - General - YouTube Remarketing Campaign, 23487762224 US - KPI & Client Dashboards; PMax 23639788257; Display 21868027126, 21985086914, 22221338605, 23663331314. | pass | medium | S | Switch the paused campaigns to Presence before re-enabling them. | demand-gen/paid/ads-account-audit.md#checklist |
| B1 | Auto-applied recommendations All 3 recommendation_subscription entries are PAUSED (OPTIMIZE_AD_ROTATION and 2 UNKNOWN). change_event 2026-10-14..2026-11-12 shows only 7 ASSET creates by INTERNAL_TOOL and none by GOOGLE_ADS_RECOMMENDATIONS. Microsoft Ads not checked. | pass | medium | S | None for Google Ads. | demand-gen/paid/ads-account-audit.md#checklist |
| C2 | Landing page mismatch All 37 non-removed ads in the 7 recent/enabled campaigns use theme-matched /lp/ pages: embedded to /embedded-bi-software/lp/ and /embedded-analytics/lp/, white label to /white-label-analytics/lp/, Tableau to /tableau-alternative/lp/, Power BI to /power-bi-alternative/lp/, AI to /ai-analytics/lp/, dashboards to /business-dashboards/lp/, and so on. No ads point at the home page. The buyer-fit audit was not run. | pass | medium | M | Run the website buyer-fit audit on the /lp/ pages before relaunch. | demand-gen/paid/ads-account-audit.md#checklist |
| C3 | Disapproved or limited ads All 37 non-removed ads in the 7 recent/enabled campaigns are REVIEWED / APPROVED. Ads in older paused campaigns were not checked. | pass | low | S | None. | demand-gen/paid/ads-account-audit.md#checklist |
| B2 | PMax cannibalizing brandneeds approval The only PMax campaign (23639788257 BI - US - PMAX - Embedded Analytics) is paused and had no spend in either period. It has no brand list exclusion and no negative keywords. Both brand campaigns (23735818275, 24229302127) are paused, so brand impression share can't be compared. | n-a | medium | S | Before re-enabling the PMax campaign, add a Bold BI brand exclusion. | demand-gen/paid/ads-account-audit.md#checklist |
Metrics
| Metric | Value | Previous | Change | Period | Dimensions |
|---|---|---|---|---|---|
| Ad spend ads.spend | 0 | 2,405 | -100.0% | 2026-10-15 – 2026-11-11 | platform: google-ads, account: 2545735992 |
| Ad clicks ads.clicks | 0 | 113 | -100.0% | 2026-10-15 – 2026-11-11 | platform: google-ads, account: 2545735992 |
| Conversions ads.conversions | 0 | 3 | -100.0% | 2026-10-15 – 2026-11-11 | platform: google-ads, account: 2545735992 |
| Cost per conversion ads.cpa | – | 801.73 | – | 2026-10-15 – 2026-11-11 | platform: google-ads, account: 2545735992 |
| Estimated monthly waste ads.wasted_spend_est | – | – | – | 2026-10-15 – 2026-11-11 | platform: google-ads, account: 2545735992 |
| Audit items passed ads.audit_pass_rate | 50.0% | – | – | 2026-10-15 – 2026-11-11 | checked_items: 14, passed_items: 7 |
Folder: reports/publish/bold-bi/google-ads-audit/20261112-1547_google-ads-audit_bold-bi_4d91