WEBVTT

1
00:00:00.225 --> 00:00:08.712
You're listening to Claude's 90-day audit of a client's Google Ads and G A four, revealing critical issues and high-priority opportunities.

2
00:00:08.712 --> 00:00:11.875
Written by Angel Nee-evess on Promptway.

3
00:00:12.410 --> 00:00:16.185
I ran a 90 day audit of a live Google Ads account in one working session.

4
00:00:16.185 --> 00:00:19.985
Not by exporting CSVs into a spreadsheet and squinting at pivot tables.

5
00:00:19.985 --> 00:00:33.922
I gave Claude read-only access to the client's Google Ads and G A four accounts through two M C P servers, pointed it at a playbook, and got back a 119 KB H T M L report: five critical issues, ten high-priority opportunities, and a thirty sixty ninety day roadmap.

6
00:00:34.185 --> 00:00:37.260
Total time including setup: about three hours.

7
00:00:37.535 --> 00:00:38.247
The setup has

8
00:00:38.247 --> 00:00:38.585
sharp

9
00:00:38.585 --> 00:00:39.010
edges,

10
00:00:39.010 --> 00:00:39.135
and

11
00:00:39.135 --> 00:00:39.372
most

12
00:00:39.372 --> 00:00:39.447
of

13
00:00:39.447 --> 00:00:39.535
the

14
00:00:39.535 --> 00:00:39.885
writing

15
00:00:39.885 --> 00:00:40.160
about

16
00:00:40.160 --> 00:00:40.422
M

17
00:00:40.422 --> 00:00:40.697
C

18
00:00:40.697 --> 00:00:40.972
P

19
00:00:40.972 --> 00:00:41.360
skips

20
00:00:41.360 --> 00:00:41.835
them.

21
00:00:41.835 --> 00:00:41.985
So

22
00:00:41.985 --> 00:00:42.185
this

23
00:00:42.185 --> 00:00:42.335
is

24
00:00:42.335 --> 00:00:42.472
the

25
00:00:42.472 --> 00:00:42.772
piece

26
00:00:42.772 --> 00:00:42.910
I

27
00:00:42.910 --> 00:00:43.110
wish

28
00:00:43.110 --> 00:00:43.222
I

29
00:00:43.222 --> 00:00:43.360
had

30
00:00:43.360 --> 00:00:43.585
read

31
00:00:43.585 --> 00:00:44.885
one day earlier.

32
00:00:44.885 --> 00:00:48.947
The full step-by-step runbook, with every command, lives in the original post.

33
00:00:48.947 --> 00:00:50.960
Here I will give you the shape of the build, the two

34
00:00:50.960 --> 00:00:51.410
gotchas

35
00:00:51.410 --> 00:00:51.560
that

36
00:00:51.560 --> 00:00:51.985
actually

37
00:00:51.985 --> 00:00:52.272
cost

38
00:00:52.272 --> 00:00:52.410
me

39
00:00:52.410 --> 00:00:52.910
time,

40
00:00:52.910 --> 00:00:55.810
and the numbers that fell out of a real account.

41
00:00:56.085 --> 00:01:09.247
Why M C P and not C S V exports Every agency audit I have ever seen starts the same way: someone exports a stack of CSVs, pastes them into a deck, and the data is stale before the client reads it.

42
00:01:09.247 --> 00:01:12.710
M C P changes three things at once.

43
00:01:12.985 --> 00:01:13.772
It is live.

44
00:01:13.772 --> 00:01:16.560
Claude queries the A P I at the moment you ask.

45
00:01:16.560 --> 00:01:20.010
There is no "I exported this yesterday" lag.

46
00:01:20.285 --> 00:01:21.285
It is queryable.

47
00:01:21.285 --> 00:01:27.060
When a number looks wrong, the follow-up question is one tool call away, not another export.

48
00:01:27.335 --> 00:01:28.347
It is reusable.

49
00:01:28.347 --> 00:01:31.360
Same servers, same auth pattern, different client.

50
00:01:31.360 --> 00:01:34.835
The second account costs you minutes, not an afternoon.

51
00:01:35.085 --> 00:01:40.672
The two servers Both are read-only Python MCPs maintained by Google.

52
00:01:40.672 --> 00:01:45.210
That matters: I am not handing an agent write access to ad spend.

53
00:01:45.547 --> 00:02:18.372
Server Repo Auth What you get Google Ads googleads/google-ads-mcp oh auth refresh token + developer token + M C C ID G A Q L search, resource metadata, account listing G A four googleanalytics/google-analytics-mcp Service account jay-son with Viewer role Reports, conversions, funnels, G A four is the easier of the two: enable the Analytics A P Is in a Google Cloud project, create a service account, grant it Viewer on the property, install with pipx, wire it into Claude at user scope.

54
00:02:18.372 --> 00:02:22.785
Google Ads adds an oh auth consent dance and a developer token.

55
00:02:23.060 --> 00:02:28.147
The two gotchas worth knowing in advance The developer token tier blocks you silently.

56
00:02:28.147 --> 00:02:30.560
Google Ads developer tokens come in tiers.

57
00:02:30.560 --> 00:02:34.760
The Test tier only talks to test accounts, so your first real query just fails.

58
00:02:34.760 --> 00:02:41.510
The Explorer tier covers production accounts at two thousand eight hundred eighty operations a day and gets auto-issued within about 24 hours.

59
00:02:41.510 --> 00:02:42.885
That is plenty for audits.

60
00:02:42.885 --> 00:02:45.235
Request it before the day you need it.

61
00:02:45.510 --> 00:02:48.885
The G A four permissions U I rejects valid service accounts.

62
00:02:48.885 --> 00:02:55.685
The Property Access Management form would not accept my .iam.gserviceaccount.com email, even though the A P I accepts it fine.

63
00:02:55.685 --> 00:03:01.747
The workaround is to call the Admin A P I directly with an oh auth Playground token and POST the access binding yourself.

64
00:03:01.747 --> 00:03:05.485
Ugly, documented in the runbook, takes five minutes once you know.

65
00:03:05.785 --> 00:03:13.060
One more that trips people: GOOGLEADSLOGINCUSTOMERID wants your manager (M C C) account ID, without dashes.

66
00:03:13.060 --> 00:03:23.847
The U I shows "767-971-9496", the A P I wants "7679719496".

67
00:03:24.135 --> 00:03:29.697
And the client account will not show up in listaccessiblecustomers when you access it through an M C C.

68
00:03:29.697 --> 00:03:34.310
You confirm access by querying the customer resource directly.

69
00:03:34.560 --> 00:03:44.035
The prompt that runs the audit After setup, the entire audit is one sentence, because the intelligence lives in a runbook file the agent reads first.

70
00:03:44.335 --> 00:03:56.247
The runbook is about 400 lines of markdown: client context, the wired servers, every account ID, where credentials live (paths only, never values), the audit playbook itself, and known gotchas.

71
00:03:56.247 --> 00:04:02.260
A project-level CLAUDE.md points at it so any future agent finds it without being told.

72
00:04:02.610 --> 00:04:04.872
Write the runbook the day you do the setup.

73
00:04:04.872 --> 00:04:05.747
Not later.

74
00:04:05.747 --> 00:04:11.660
Not "when I have time." The runbook is what turns a clever afternoon into infrastructure.

75
00:04:11.935 --> 00:04:16.160
What Claude actually did with it Watching the session is the convincing part.

76
00:04:16.160 --> 00:04:23.560
Claude called getresourcemetadata before writing any G A Q L, so its queries used field names that exist in the current A P I version instead of hallucinated ones.

77
00:04:23.560 --> 00:04:29.310
It pulled campaign settings, conversion actions, negatives, ad groups, and geo, device, and day-of-week breakdowns in parallel.

78
00:04:29.310 --> 00:04:35.810
It dumped the expensive reads, search terms and keyword views, to files on disk and sliced them with jq and Python instead of re-querying.

79
00:04:36.085 --> 00:04:47.560
Then it did the thing a spreadsheet never does: it read the client's WordPress plugin source in the same repo and cross-referenced the campaign setup against how the site actually works, MLS feed scope, IDX integrations, the works.

80
00:04:47.560 --> 00:04:55.135
The final report is standalone H T M L with inline C S S, about one thousand five hundred lines, ready to email or print.

81
00:04:55.410 --> 00:05:05.535
What fell out of one real account This was a residential real estate account in southwest Broward, Florida, five months old, audited over 90 days.

82
00:05:05.835 --> 00:05:10.410
ninety two percent of ad spend was targeting "presence or interest" instead of physical presence.

83
00:05:10.410 --> 00:05:13.110
For local real estate, that is money leaving the county.

84
00:05:13.110 --> 00:05:17.285
one thousand four hundred eighty four ad clicks produced roughly 55 G A four sessions.

85
00:05:17.285 --> 00:05:22.385
An eighty four percent click-to-session gap, which usually means tracking is broken, not that users are vanishing.

86
00:05:22.385 --> 00:05:26.222
eighty two percent of keywords had a Quality Score of zero or null.

87
00:05:26.510 --> 00:05:31.572
The Sellers Search campaign was losing sixty two percent of impression share to ad rank.

88
00:05:31.572 --> 00:05:35.222
Mobile forms had 66 starts and 4 completions.

89
00:05:35.222 --> 00:05:37.447
A ninety four percent abandonment rate.

90
00:05:37.447 --> 00:05:44.485
27 phone clicks in 90 days were invisible to optimization because the conversion action was set to HIDDEN.

91
00:05:44.785 --> 00:05:56.285
The roadmap projects monthly conversions going from 7 to the 25 to 40 range, and cost per acquisition dropping from one hundred thirty eight dollars to between twenty five dollars and forty dollars.

92
00:05:56.285 --> 00:05:58.210
Projections, not promises.

93
00:05:58.210 --> 00:06:02.135
But every line item traces to a query you can re-run.

94
00:06:02.410 --> 00:06:10.972
Read tool results as data, not as conclusions One lesson worth stating plainly: the model treats A P I output as ground truth, and you should not.

95
00:06:10.972 --> 00:06:12.697
Some fields come back stale.

96
00:06:12.697 --> 00:06:18.085
Some come back null because they are unimplemented in the current A P I version, not because the value is zero.

97
00:06:18.085 --> 00:06:21.559
The audit playbook tells the agent which fields deserve suspicion.

98
00:06:21.559 --> 00:06:25.360
That paragraph of the runbook has already paid for itself twice.

99
00:06:25.635 --> 00:06:28.060
What I would build next Two things.

100
00:06:28.060 --> 00:06:34.585
A Meta Ads M C P wrapper, because Facebook is thirty percent of this client's paid mix and currently the least monitored.

101
00:06:34.585 --> 00:06:40.297
And a monthly delta prompt that diffs this month against last month instead of re-running the full 90 day audit.

102
00:06:40.297 --> 00:06:45.860
Lower cognitive load, natural to schedule, and it turns the audit from an event into a habit.

103
00:06:46.160 --> 00:06:51.110
If your site is the other half of your funnel, the same wiring philosophy applies there too.

104
00:06:51.110 --> 00:07:01.310
I wrote up how I tuned a site for S E O, A E O, and GEO as the companion piece, and the eight-layer AI visibility stack covers the content side.

105
00:07:01.585 --> 00:07:08.360
If you have done a similar build, or you are stuck on one of the gotchas above, I would genuinely like to compare notes.

106
00:07:08.920 --> 00:07:09.770
That's the story.

107
00:07:09.770 --> 00:07:12.682
You'll find every source linked at the end of the article.

108
00:07:12.682 --> 00:07:15.345
Thanks for listening, on Promptway.
