agentleFS
gomarble-aigomarble-ai/marketing-agent/skills/google-ads-tool-fundamentals/SKILL.md

google-ads-tool-fundamentals

Skill15 starsChanged 38 days agoMITView on GitHub

Foundation tool reference for any Google Ads task — GAQL syntax, common entity relationships, default reporting windows. Used internally when working with Google Ads tools.

The file

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 9 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈9

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Always confirm account currency before showing monetary values.

    line 31
  2. Distinctive:

    Use GAQL relative ranges where possible — they're more reliable than fixed dates:

    line 35
  3. Very specific:

    Always include campaign.status = 'ENABLED' (and ad_group.status = 'ENABLED' where relevant) when analyzing current performance — historical …

    line 45
  4. Very specific:

    Always run google_ads_list_accounts first to confirm the customer ID and check whether this is an MCC vs a leaf account.

    line 53
  5. Distinctive:

    When the user has not stated account type, infer from data:

    line 90
  6. Distinctive:

    Unclear: ASK the user. Don't default.

    line 95
  7. Distinctive:

    Before computing or presenting CPA / ROAS / Conv.

    line 150
  8. Distinctive:

    Check chat title for keywords: "GMB", "footfall", "store visits", "calls", "directions", "awareness", "reach"

    line 152
  9. Distinctive:

    Check campaign objectives loaded via google_ads_run_gaql:

    line 154
  10. Distinctive:

    Check conversion actions in the account: are they store visits, phone calls, directions — or actual purchases / leads?

    line 158
  11. Distinctive:

    If the account is footfall / awareness / local-service:

    line 161

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Google Ads - Tool Fundamentals

How to use Google Ads tools effectively, plus the canonical metric definitions used across all Google Ads skills. Auto-loaded with every Google Ads skill request.

Tools

  • google_ads_run_gaql: primary read tool for Google Ads Query Language. Use for any structural or performance pull from campaign, ad_group, keyword_view, search_term_view, asset_group, geographic_view, shopping_performance_view, etc.
  • google_ads_propose_update_*: write tools for bid, budget, status, and structural changes (…_campaigns, …_adgroups, …_ads, …_asset, …_bid_modifiers, …_negative_keyword_list, …_pmax_asset_group). Money is in account currency, not micros. Always dry-run first and apply only after the user approves.
  • google_ads_keyword_discover / google_ads_keyword_metrics: keyword research; volume, CPC, competition, and forecast data.
  • google_ads_get_change_logs: audit account changes within a window.
  • google_ads_list_accounts: discover MCC structure and customer IDs.

Currency: Micros

Google Ads cost and bid fields are returned in micros (1,000,000 micros = 1 unit of the account currency).

FieldConversion
metrics.cost_microsdivide by 1,000,000 to get cost in account currency
cpc_bid_microsdivide by 1,000,000
amount_micros (campaign budget)divide by 1,000,000
metrics.average_cpcalready in account currency — do NOT divide

Always confirm account currency before showing monetary values; never assume USD.

Date Filtering

Use GAQL relative ranges where possible — they're more reliable than fixed dates:

  • segments.date DURING LAST_7_DAYS
  • segments.date DURING LAST_30_DAYS
  • segments.date DURING LAST_90_DAYS
  • segments.date DURING THIS_MONTH / LAST_MONTH

For week-over-week or month-over-month comparison, run two queries with different DURING clauses and compute deltas locally.

Status Filtering

Always include campaign.status = 'ENABLED' (and ad_group.status = 'ENABLED' where relevant) when analyzing current performance — historical paused entities will otherwise pollute aggregates.

Pagination

GAQL responses can be large. Use LIMIT with ORDER BY metrics.cost_micros DESC to keep result sizes manageable; default to LIMIT 200 for entity-level pulls, LIMIT 100 for breakdown segments.

Account Context

Always run google_ads_list_accounts first to confirm the customer ID and check whether this is an MCC vs a leaf account. For MCC, ask the user which sub-account to operate on.

Metric Glossary

Canonical definitions used across all Google Ads skills. Workflow skills (google-ads-search-analysis, google-ads-pmax-evaluation, google-ads-shopping, google-ads-depth-of-analysis) reference these — they do NOT redefine them.

Direct Metrics (GAQL metrics.*)

MetricGAQL FieldNotes
Costmetrics.cost_microsDivide by 1e6
Conversionsmetrics.conversionsIncludes all configured conversion actions unless filtered
Conversion valuemetrics.conversions_valueRevenue for value-based conversions
Clicksmetrics.clicks
Impressionsmetrics.impressions
Average CPCmetrics.average_cpcAlready in account currency
CTRmetrics.ctrDecimal (0.05 = 5%)
Search ISmetrics.search_impression_share
IS Lost (Rank)metrics.search_rank_lost_impression_share
IS Lost (Budget)metrics.search_budget_lost_impression_share
Top of Page Ratemetrics.search_top_impression_percentage
Absolute Top Ratemetrics.search_absolute_top_impression_percentage

Calculated Metrics

MetricFormulaNotes
CPA(cost_micros / 1e6) / conversionsCost per conversion in account currency
ROASconversions_value / (cost_micros / 1e6)Decimal multiple, e.g. 3.5 = 3.5×
CVR (Conversion Rate)conversions / clicks * 100
AOVtotal_conversions_value / total_conversionsAccount-level over the same window
CPC trend WoW(this_week_cpc - last_week_cpc) / last_week_cpc * 100Use two relative-date queries
CPC trend MoM(this_month_cpc - last_month_cpc) / last_month_cpc * 100
Spend Shareentity_cost / total_cost * 100For prioritization within a campaign or account

Account-Type Inference

When the user has not stated account type, infer from data:

  • E-commerce: purchase conversion actions present AND non-zero metrics.conversions_value → use ROAS, AOV, CPA
  • Lead gen: conversions present AND metrics.conversions_value = 0 → use CPA only; ROAS unreliable unless offline conversion import is configured
  • Mixed: group campaigns by primary conversion action and apply each group's PCM separately
  • Unclear: ASK the user. Don't default.

Maturity & Statistical-Significance Gates

GateThresholdRationale
Smart Bidding minimum (Search)≥ 30 conversions / 30 daysBelow this, tCPA/tROAS lacks signal
Smart Bidding minimum (PMax / Shopping)≥ 50 conversions / 30 daysWider channel mix needs more signal
PMax maturity gateAge ≥ 30 days (ideally 60) OR conversions ≥ 50Required before any PMax optimization
Segment-level recommendation≥ 50 clicks AND ≥ 5 conversionsBelow this → flag as low-confidence
Scaling step cap≤ 20% per move (search/shopping); ≤ 50% per move on mature PMaxFrom guardrails / pmax-scaling
Lookback for Shopping14 days if ≥ 100 purchases / month, else 30 days

PMax vs Search ROAS Comparison

Apply only after the PMax maturity gate passes.

PMax ROAS RatioAssessmentDefault Action
< 0.5× Search ROASPoorMonitor closely; consider pausing if not improving
0.5 – 0.9× Search ROASBelow parOptimize assets and negatives before any scaling
≥ 0.9× Search ROASHealthyOptimize, scale eligible
> Search ROASOutperformingPrioritize scaling

PMax Asset Performance Labels

Google returns performance_label per asset (NOT cost / conversion data per asset).

LabelInterpretationDefault Action
BESTTop performer in its asset groupCreate variations with similar style
GOODAcceptableKeep, monitor
LOWUnderperformingRemove; replace with BEST variations
PENDING / UNSPECIFIEDInsufficient dataWait 14+ days

Shopping Item Classification (definitions only — workflow in google-ads-shopping skill)

ClassificationTrigger
KILLcost ≥ 2× AOV AND conversions = 0
DOWNGRADEROAS < 0.7× target AND cost ≥ 0.5× AOV
PROMOTEconversions ≥ 2 AND ROAS ≥ target

Quality Score Components (when CPC is high)

Decompose Quality Score into:

  • Expected CTR
  • Ad relevance
  • Landing page experience

Identify which dragged and recommend fixes for that component — do NOT recommend bid changes alone to compensate for low QS.

Account-Purpose Classification (CRITICAL — must run before any KPI application)

Before computing or presenting CPA / ROAS / Conv. Value:

  1. Check chat title for keywords: "GMB", "footfall", "store visits", "calls", "directions", "awareness", "reach"
  2. Check campaign objectives loaded via google_ads_run_gaql:
    • , → footfall account
    • , → awareness account
    • , → conversion-tracking-capable
  3. Check conversion actions in the account: are they store visits, phone calls, directions — or actual purchases / leads?

If the account is footfall / awareness / local-service:

  • REPLACE CPA / ROAS in headline metrics with: Cost Per Footfall Action, Cost Per Call, Cost Per Direction, CPM, Reach, Frequency
  • State explicitly: "This account is configured for [footfall/awareness]; purchase-derived CPA/ROAS do not apply."

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.