--- name: merchant-center-audit description: Google Merchant Center product data quality and Shopping campaign performance audit. Covers feed health, disapprovals, custom labels, price competitiveness, and product group structure. ALWAYS invoke when the user says 'Merchant Center audit', 'GMC audit', 'Shopping audit', 'feed audit', 'product disapprovals', 'Shopping performance', 'why are products not showing', or any product feed quality concern in Google. model: opus context: fork argument-hint: "[client-name] [merchant-id]" allowed-tools: Read, Grep, Glob, Bash, Write, Agent, mcp__google-ads__run_gaql, mcp__google-ads__execute_gaql_query, mcp__google-ads__get_campaign_performance, mcp__google-ads__list_resources, mcp__gmc__list_products, mcp__gmc__count_products_by_status, mcp__gmc__get_disapproved_products, mcp__gmc__get_account_status, mcp__gmc__get_datafeed_status, mcp__gmc__list_datafeeds, mcp__gmc__get_shipping_settings, mcp__gmc__get_account_issues --- # Merchant Center Audit Skill ## Trigger Conditions Invoke this skill when: - Auditing a Shopping or Performance Max campaign for an ecommerce client - Product disapprovals or feed issues are affecting campaign performance - A client's Shopping ROAS is underperforming and feed quality is a suspected factor - Setting up or optimizing custom labels for margin based bidding - Reviewing product data quality for a new Merchant Center account - Price competitiveness concerns are raised by the client or spotted in performance data ## Tool Availability There is no direct Merchant Center MCP server. Audit work uses a combination of: 1. **GAQL queries** via `mcp__google-ads__run_gaql` for Shopping and PMax performance data, listing group filters, and product level metrics 2. **Chrome browser** via `mcp__claude-in-chrome__*` for navigating Merchant Center UI directly (diagnostics, feed rules, product details, price competitiveness report) Always start with GAQL for quantitative data. Use Chrome for the Merchant Center UI when you need feed diagnostics, disapproval details, or supplemental feed configuration that is not available through the Ads API. ## Audit Checklist ### 1. Feed Health **What to check:** - Total product count (active, disapproved, pending, expiring) - Disapproval reasons and affected product count - Warning count and types - Feed processing errors and last successful fetch time - Data quality score (if available in Merchant Center UI) **How to check:** - Chrome browser: Navigate to Merchant Center > Products > Diagnostics - Look at the summary cards for item issues, account issues, and feed issues - Sort by severity: account level issues first, then item level **Flags:** | Condition | Severity | |---|---| | Disapproval rate above 10% | CRITICAL. Significant revenue loss from missing products. | | Disapproval rate 5% to 10% | HIGH. Noticeable impact on Shopping coverage. | | Warnings above 20% of catalog | MEDIUM. Data quality drag on performance. | | Feed fetch failures in last 7 days | HIGH. Products may be stale or dropping. | ### 2. Product Data Completeness **Required fields (must have for every product):** - Title (optimized, keyword rich, under 150 characters) - Description (detailed, unique per product) - Image link (high quality, clean background, no watermarks) - Price (accurate, matches landing page) - Availability (in stock/out of stock, matches landing page) - GTIN (where applicable, required for most branded products) - Brand - Condition (new/used/refurbished) **Optimization fields (not required but significantly impact performance):** - Additional image links (3+ images recommended) - Product type (full category path) - Google product category (mapped to Google taxonomy) - Sale price and sale price effective date - Shipping and tax information - Product highlights - Color, size, material, pattern (for apparel and variants) **GAQL for product level data quality signals:** ```sql SELECT segments.product_title, segments.product_type_l1, segments.product_brand, segments.product_item_id, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions_value FROM shopping_performance_view WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.cost_micros DESC LIMIT 50 ``` This shows which products are getting spend. Cross reference with Merchant Center to identify high spend products with data quality issues. ### 3. Custom Label Strategy Custom labels (0 through 4) are the primary lever for structuring Shopping and PMax campaigns around business priorities. Review the current label strategy and recommend improvements. **Recommended custom label assignments:** | Label Slot | Recommended Use | Example Values | |---|---|---| | custom_label_0 | Margin tier | high_margin, medium_margin, low_margin | | custom_label_1 | Performance tier | best_seller, steady, underperformer, new | | custom_label_2 | Seasonality | evergreen, seasonal_summer, holiday, clearance | | custom_label_3 | Priority | hero_product, standard, long_tail | | custom_label_4 | Promotion status | on_sale, full_price, bogo | **What to check:** - Are custom labels in use at all? Many accounts have empty labels. - Do the labels align with business objectives (margin based bidding, seasonal push, etc.)? - Are labels being updated regularly through supplemental feeds or feed rules? - Is campaign structure using labels effectively for bid segmentation? **Flag:** If no custom labels are configured and the account has 100+ products, this is a HIGH finding. Custom labels are essential for profitable Shopping optimization. ### 4. Supplemental Feed Configuration **Check in Merchant Center UI:** - Are supplemental feeds configured? - What data do they supply (custom labels, promotions, additional attributes)? - How frequently are they updated? - Are there feed rules that modify product data? **Common issues:** - Supplemental feed not updating (stale custom labels) - Feed rules overriding good data with bad transformations - Missing supplemental feed entirely when custom labels are needed ### 5. Price Competitiveness **Check in Merchant Center UI:** - Navigate to Growth > Price Competitiveness - Review the benchmark price comparison for top products - Identify products where the client is significantly above market average **GAQL for price competitiveness signals:** Products with high impressions but low CTR may indicate pricing issues: ```sql SELECT segments.product_title, segments.product_item_id, metrics.impressions, metrics.clicks, metrics.ctr, metrics.average_cpc FROM shopping_performance_view WHERE segments.date DURING LAST_30_DAYS AND metrics.impressions > 100 ORDER BY metrics.ctr ASC LIMIT 30 ``` Low CTR with high impressions often means the product is showing but shoppers are choosing competitors. Price is the most common reason. ### 6. Shopping Campaign Structure Alignment Verify that campaign structure aligns with the product feed: **GAQL for listing group structure in PMax:** ```sql SELECT asset_group.name, asset_group_listing_group_filter.type, asset_group_listing_group_filter.case_value.product_brand.value, asset_group_listing_group_filter.case_value.product_type.value, asset_group_listing_group_filter.case_value.product_custom_attribute.value FROM asset_group_listing_group_filter WHERE campaign.id = {campaign_id} ``` **What to check:** - Are listing groups segmented meaningfully (by brand, category, margin tier)? - Is there a catch all 'Everything Else' group that is consuming most spend? - Do the listing group segments match the custom label strategy? - Are high margin products in separate asset groups with appropriate ROAS targets? **Flags:** | Condition | Severity | |---|---| | Single 'All Products' listing group with no segmentation | HIGH. No ability to differentiate bids by product value. | | Catch all group consuming over 50% of spend | MEDIUM. Likely subsidizing low margin products. | | Listing groups do not align with custom label strategy | MEDIUM. Missed optimization opportunity. | ### 7. Performance by Product Category **GAQL for category level performance:** ```sql SELECT segments.product_type_l1, segments.product_type_l2, metrics.impressions, metrics.clicks, metrics.cost_micros, metrics.conversions, metrics.conversions_value FROM shopping_performance_view WHERE segments.date DURING LAST_30_DAYS ORDER BY metrics.cost_micros DESC LIMIT 30 ``` Look for: - Categories with high spend and low ROAS (candidates for negative targeting or bid reduction) - Categories with strong ROAS that could benefit from more budget - Categories with zero conversions but meaningful spend (potential exclusions) ## Output Format Present Merchant Center audit findings in this structure: **Feed Health Summary** - Total products: X active, Y disapproved, Z warnings - Disapproval rate: X% - Top disapproval reasons: [list] **Data Quality Findings** | Finding | Severity | Affected Products | Recommendation | |---|---|---|---| **Custom Label Assessment** - Current state: [in use / not configured / partially configured] - Recommended label strategy: [table] **Top Opportunities** 1. [Highest impact fix] 2. [Second highest impact fix] 3. [Third highest impact fix] ## Connected Skills and References - `.claude/rules/gaql-field-reference.md` for Shopping and PMax field names - `.claude/skills/google-ads-deep-audit/SKILL.md` for integrating Merchant Center findings into the full account audit - `.claude/frameworks/poas-methodology.md` for connecting custom label margin tiers to POAS optimization - `.claude/rules/data-verification.md` for verifying product data before reporting findings - `.claude/rules/mcp-response-efficiency.md` for keeping Shopping performance queries bounded - `.claude/frameworks/deliverable-recipes.md` for formatting the audit output as a client deliverable