← Google & Meta Ads: LoomaScaleCONTENT HISTORY

Update to Google & Meta Ads: LoomaScale

Snapshot Nov 3, 2026 · 00:11 UTC · version 1.1.4

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Google & Meta Ads: LoomaScale and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Explain marketing performance using relevant connected Google Ads, Meta Ads, LinkedIn Ads, Google Analytics 4, Google Search Console, Google Merchant Center and Google Tag Manager evidence. Use for changing results, wasted spend, budget priorities, organic traffic, shopping eligibility, tracking, landing pages and funnels, including single-source questions. Grounds custom Google Ads queries in live metadata. Use the loomascale skill for account setup and campaign changes.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 605
    },
    {
      "relative_path": "references/analysis-guide.md",
      "size_in_bytes": 11133
    }
  ],
  "name": "cross-source-insights",
  "skill_md_contents": "---\nname: cross-source-insights\ndescription: Explain marketing performance using relevant connected Google Ads, Meta Ads, LinkedIn Ads, Google Analytics 4, Google Search Console, Google Merchant Center and Google Tag Manager evidence. Use for changing results, wasted spend, budget priorities, organic traffic, shopping eligibility, tracking, landing pages and funnels, including single-source questions. Grounds custom Google Ads queries in live metadata. Use the loomascale skill for account setup and campaign changes.\n---\n\n# LoomaScale cross-source insights\n\nUse LoomaScale to connect advertising delivery and cost to on-site behavior and\nbusiness outcomes, organic visibility, product eligibility and tracking configuration.\nAnswer the user's question with evidence, likely drivers and practical next steps.\nThe user's instructions take precedence\nover this skill's workflow defaults; live tool schemas and server permissions\ndetermine supported operations.\n\n## Scope the question and choose sources\n\nIdentify the decision, business outcome, period and relevant accounts. Reuse the\nconversation's context. If the period is unspecified, use the last 30 complete\ndays and the preceding equal-length period, stating the dates. When Search Console\nis needed, use its finalized end date (normally three Pacific days ago) for a\ndirect cross-source comparison, or label differing windows explicitly. Ask only\nwhen an unresolved business/account/property choice would materially change the answer;\ncontinue independent reads while that choice is pending.\n\nChoose sources by what they can explain, not simply because they are connected:\n\n| Question | Evidence to combine when available |\n|---|---|\n| Why did leads, sales or ROAS change? | Relevant ad platforms' spend, delivery and reported outcomes; GA4 traffic, business events and revenue; then the largest changing campaign, device, geography or landing-page segments. |\n| Where is spend being wasted? | Ad costs, search terms or creative performance; GA4 engagement and matching business outcomes. Distinguish poor traffic from on-site drop-off and missing measurement. |\n| Which channel or campaign deserves budget? | Comparable ad costs and GA4 outcomes, current delivery/pacing and data volume. Treat platform-attributed results as a separate view. |\n| Why do reports disagree? | Platform conversion definitions and attribution settings where exposed; GA4 event definitions, attribution, property settings and Google Ads links. |\n| Where does the funnel break? | GA4 landing-page, device and ordered funnel reports; relevant ad campaign/source context. |\n| Why did organic traffic fall, or which pages deserve work? | Search Console query/page changes and indexing evidence; GA4 organic landing-page behavior and business outcomes. Keep paid results separate. |\n| Why did Shopping or Performance Max results decline? | Google Ads delivery and product performance where supported; Merchant Center account health, product issues and paid/free-listing performance. Verify the merchant relationship before attributing a campaign change to feed issues. |\n| Is tracking configuration causing the discrepancy? | Relevant Google Ads conversion actions, Meta datasets, GA4 events/property context and GTM's published tags, triggers, variables and pending workspace changes. Configuration alone does not prove runtime behavior. |\n\nFor concrete diagnostic patterns and join rules, read\n[the analysis guide](references/analysis-guide.md) when combining sources.\nFor standalone GA4, Search Console, Merchant Center or Tag Manager procedures,\nread the [measurement and commerce guide](../loomascale/references/measurement-and-commerce.md)\nonly for the relevant integration.\n\n## Discover accounts and establish comparable data\n\n- Discover only relevant connections with `gads_list_ad_accounts`,\n  `meta_list_ad_accounts`, `linkedin_list_ad_accounts` and\n  `ga4_get_account_summaries`; use `gsc_list_sites`, `gmc_list_accounts` or\n  `gtm_list_containers` when their evidence is relevant and available. Use explicit\n  account/property/site/container IDs on subsequent reads. Google manager accounts\n  contain client accounts; query the relevant client.\n  Respect dashboard resource switches. Do not use `*_select_account` to scope\n  analysis: it changes a persistent default shared across chats.\n- Before comparing GA4 with ads, call `ga4_get_property_details` for time zone and\n  currency. Use `ga4_list_google_ads_links` to verify the Google Ads relationship;\n  a matching account or property name alone is insufficient.\n- Align inclusive date boundaries, time zones, currencies, conversion definitions\n  and reporting grain. When daily boundaries cannot be reconciled, say so. Keep\n  currencies separate unless an evidenced conversion basis is available.\n- Prefer typed tools: `gads_get_insights`, `gads_list_search_terms`,\n  `gads_list_ads`, `meta_get_insights`, `meta_list_ads`, `linkedin_get_insights`\n  and `linkedin_analyze_demographics`, as relevant. Inspect their current schemas\n  for available breakdowns, date formats and account arguments.\n- For GA4, use `ga4_run_report` for traffic, engagement and site outcomes;\n  `ga4_run_funnel_report` for ordered steps; `ga4_run_conversions_report` for its\n  supported attribution/ROAS metrics and dimensions. Its schema differs from\n  ordinary reports. Use `ga4_get_custom_dimensions_and_metrics` for property-specific\n  fields. Read current tool definitions; do not invent GA4 tools or field names.\n\n## Ground every custom Google Ads query\n\nPrefer a typed read when it answers the question. Before **every** `gads_query`,\ncomplete this preflight; never send a speculative query to discover the schema:\n\n1. Read the advertised `gads_query` input schema. Its arguments are `query`\n   (one GAQL SELECT string) and optional `customer_id`. Do not pass SQL-style\n   `fields`, `resource`, `filters`, `date_range` or `gaql` arguments to this tool.\n2. Call `gads_get_resource_metadata` for the intended `FROM` resource before\n   constructing the query. Its arguments are `resource` and optional `contains`\n   and `limit`; it has no `customer_id` argument. Use `resource=\"metrics\"` and\n   `resource=\"segments\"` to look up those field families separately. Look up\n   attributed fields under their own resource too, such as `campaign` fields\n   used in a view query. Reuse metadata already returned in this conversation\n   only when it covers the same resource and every field about to be used.\n3. Verify every SELECT, WHERE and ORDER BY field against returned names,\n   `selectable`, `filterable`, `sortable`, data types and `enumValues`. A truncated\n   metadata response is incomplete: narrow `contains` to the missing field.\n   Metadata confirms field definitions, **not** compatibility of every field\n   combination or whether every resource accepts date segments. If compatibility\n   is uncertain, consult the current Google Ads field documentation when available\n   or choose a supported typed read or narrower query; never promise validity from\n   metadata alone.\n4. Write GAQL with snake_case paths and a bounded LIMIT. Use the question's exact\n   dates only on resources supporting the date segment. GAQL is not SQL: no JOIN,\n   OR, SQL functions, or parenthesized boolean expressions. Use supported IN\n   filters or separate queries. Send only schema-supported JSON arguments.\n5. Interpret returned camelCase paths, the actual returned query and `truncated`\n   flag. Convert `costMicros` to currency units by dividing by 1,000,000; do not\n   apply that conversion to already-denominated costs from typed tools.\n\nIf a query fails validation, inspect the error, refresh metadata for the implicated\nfields, and correct the query only when supported by that evidence. Retry once;\notherwise use a typed read or explain the precise missing evidence. If metadata\ncannot be obtained, do not fall back to guessed GAQL.\n\n## Diagnose before recommending\n\nStart with totals and the comparison period, then drill into the largest changes.\nTrace the relevant chain: spend → impressions → clicks → sessions → business\nevents → revenue. Clicks and sessions are different measures; a gap is a diagnostic\nsignal, not proof of tracking failure. Define the business event instead of treating\nevery GA4 key event as a lead or sale.\n\nJoin only on verified keys and at a compatible grain. Keep platform-attributed and\nGA4-attributed conversions/revenue separate; never add them together as unique\nbusiness results. Do not sum platform conversions across channels as deduplicated\nleads. Recompute aggregate ratios from totals, and label zero-denominator ratios\nas unavailable. Never silently turn missing rows, errors or `(not set)` into zero.\n\nCheck paging and coverage before claiming totals: GA4 `rowCount`/`returnedRows`\nand `offset`, Google Ads/Merchant Center query `truncated`, Search Console\n`returnedRows`/`startRow` and other tools' limits. Search Console query `totals`\nsummarize the returned rows; use a separate ungrouped report for property totals.\nFetch remaining needed rows or report partial coverage. Preserve sampling, thresholding,\nfreshness or data-loss warnings. Recent conversion lag and small samples limit\nconclusions. Distinguish observations, plausible explanations and tests that could\nconfirm them; correlation does not establish causation.\n\n## Deliver an answer the user can act on\n\nLead with the answer to the decision. Include only the comparisons that support it,\nthen rank the likely drivers by measured contribution where possible. For each\nmaterial finding, identify its source/account/property, dates, metric definition\nand relevant filter; use returned report links when available, never invent links.\nShow absolute changes with relative changes, and percentage-point changes for\nrates. Explain conflicts between sources rather than choosing a convenient number.\n\nRecommend actions tied to the evidence and a way to measure their effect. Separate\nobserved facts from hypotheses and conditional upside estimates. If a missing\nconnection blocks a conclusion, explain which question that source would resolve\nand provide the supported partial answer. Users manage connections in the\n[LoomaScale dashboard](https://ai.loomascale.com/dashboard/connections).\n\nAnalysis does not authorize changes to ads. This workflow uses read-only tools;\npresent proposed budget, campaign or tracking changes for the user's decision.\nHonor existing explicit authorization for any separately requested action, its\ntool's permissions and the configured spend cap; use the\n[LoomaScale workflow skill](../loomascale/SKILL.md) for execution.\nLinkedIn Ads, GA4, Search Console, Merchant Center and Tag Manager tools are\nread-only.\nIf a plan/trial limit blocks a read, use `loomascale_check_quota` and\nreport the limitation without retry loops.\n"
}

SHA-256 of public snapshot: 8e61bb17de94a814d3494d74c42ab47dd38931615d5cef9680fb4f30a2674234