--- name: google-shopping-ads description: "Launch a Shopping campaign only after the product feed is proven healthy. Use when a team is standing up Google Shopping ads and needs feed diagnostics, margin-aware structure, and bidding matched to real conversion volume." license: MIT compatibility: "Works with any Agent-Skills-compatible AI (Claude, ChatGPT, Cursor, Codex, and more). Ad-account actions run through Adspirer." metadata: author: "Adspirer" version: "1.0.0" adspirer_category: "campaign-launch" adspirer_source: "https://www.adspirer.com/skills/google-shopping-ads" adspirer_trigger: "set up a Google Shopping campaign for my product feed" adspirer_connection_url: "https://adspirer.ai/sign-up" adspirer_primary_keyword: "google shopping ads" adspirer_secondary_keywords: "shopping campaign setup, merchant center feed" adspirer_launch_wave: "2" adspirer_kind: "skill" adspirer_level: "operator" adspirer_platforms: "google" adspirer_supported_clients: "claude,claude-code,claude-cowork,chatgpt,codex,cursor,gemini,windsurf" adspirer_summary: "Prove the feed is healthy, structure Shopping around margin rather than a flat target, and build it paused for review." adspirer_connections_required: "adspirer" adspirer_connections_optional: "" --- # Google Shopping Launcher ## Use this when Retail season is coming, the catalog is loaded into Merchant Center, and the plan is to put budget behind Shopping. The last time this ran, spend concentrated on a handful of cheap high-volume SKUs, revenue looked fine, and margin quietly went backwards. Use this skill to launch Shopping with the two things that usually get skipped: proof the feed is actually serving, and a structure that does not treat every product as equally worth winning. It works out: - whether the feed has fetched recently and how many products are genuinely eligible; - which disapprovals block a product outright versus merely suppress its reach; - how to group products so bidding reflects what each one is worth; - which products have no history and would otherwise be starved by an algorithm favouring proven winners; and - whether the account has enough conversion volume for automated bidding to be anything other than a guess. This is for launching a new Shopping campaign against an existing linked Merchant Center account. It is not a feed-repair skill, not for asset-only campaigns with no product feed, and not for optimizing a Shopping campaign that is already live. ## What you need - Adspirer connected to the Google Ads account, with access that can create campaigns. - A Merchant Center account already linked to that Google Ads account with an active primary feed. The link gets verified against the account rather than taken on trust. - Cost or margin data at whatever granularity exists — per SKU is ideal, per category is workable. Without it the structure falls back to price bands or revenue share, and the output says which was used, because margin-based and revenue-based grouping produce very different bidding. - A starting daily budget and a monthly ceiling the business is comfortable with. - The conversion action that should count. Purchases and add-to-carts lead to different campaigns, and the account default is often not what anyone intended. - Any brand or competitor terms the campaign should stay away from. ## Procedure **Connect Adspirer before any live ad-account step.** Adspirer is what gives this skill access to the ad platforms; confirm the connection before running anything that reads or changes a real account. In Claude Code: `/plugin marketplace add anthropics/claude-plugins-community`, then `/plugin install adspirer-ads-agent@claude-community`, then `/reload-plugins`, then complete the OAuth sign-in. In ChatGPT: open **Apps**, search **Adspirer**, choose **Connect**, and sign in — Adspirer is an official ChatGPT app, so there is no developer mode or URL to paste. In claude.ai or Claude Desktop: Settings → Connectors → Add custom connector → `https://mcp.adspirer.com/mcp`. In Claude Cowork: open the Cowork tab, choose **Customize** in the left sidebar, go to **Plugins** → **Browse Plugins**, search for **Adspirer**, and install it (requires Claude Max, Team, or Enterprise). Any other client: https://www.adspirer.com/docs/ai-clients. Sign-in link for the user: https://adspirer.ai/sign-up. Do not proceed with live ad-account steps until the connection is confirmed. 1. **Prove the feed before building anything on top of it.** Pull feed diagnostics — item counts, disapprovals, warnings, and when the feed last fetched successfully. A feed that has not fetched recently, or where a large share of active products are disapproved, will starve the campaign of impressions no matter how well it is structured. Stop and report that before building. Separate the two kinds of problem for the user: policy disapprovals that block a product entirely, and data-quality warnings that merely suppress its reach. They need different people to fix them. 2. **Group products by what they are worth, not by what they are called.** Bucket the catalog into a few tiers using the margin data supplied, or by price band or revenue share when none exists — and state which method was used, since the resulting bids differ substantially. Pull out products with no impression or click history into their own group; left mixed in, automated bidding will favour the proven items and the new ones will never get a chance to prove anything. 3. **Choose the structure and the bidding against real volume.** Recommend a standard Shopping structure when the team wants product-level control and full search-term visibility, and a Performance Max structure when incremental reach matters more than transparency — naming the tradeoff rather than assuming. Set targets per tier rather than one blended number across the catalog, because a flat target systematically overspends on thin-margin products. Where conversion volume is too low for automated bidding to learn, say so and start with manual or click-based bidding instead of a target the algorithm cannot hit. 4. **Set budget, exclusions, and priority against what already exists.** Apply the stated budget, and flag that daily spend can run above the daily figure on busy days while averaging out over the month — that is expected behaviour and the ceiling should be sized for it. Add the brand and competitor exclusions requested. Check for existing Shopping or Performance Max campaigns covering the same products, since overlapping scope and priority quietly starve one of them. 5. **Build paused, verify against the live account, and hand over the decision.** Create the campaign, groups, and product partitions with everything paused. Re-read what Google actually saved and run the fixed checks against it, then present the whole structure — tiers, targets, budget, exclusions, feed status, and the disapproval split from step 1. Enable only after the user has seen that verification and explicitly approves. Approval follows verification; it does not precede it. ## Fixed checks - Confirm the Merchant Center link and the active feed from the account itself, never from the brief. - Re-read the feed's last successful fetch time and disapproval counts, and report the actual numbers behind any go or no-go call. - Confirm the campaign and every group saved paused, read back from the live account rather than the build step. - Confirm the product partitions saved with the intended products in the intended tiers, since partition changes fail quietly. - Confirm the conversion action attached is the one the user named, not the account default. - Confirm the budget saved matches the approved figure in the account's own currency. - Check for existing campaigns covering overlapping products and report any priority conflict before launch rather than after budget starves. ## Stop conditions - **Success:** the feed is healthy, the campaign is built and verified, the user approves, and it goes live. - **Built and parked:** everything is assembled and verified paused, and the user wants to review first. This is a clean end state. - **Blocked — feed:** the feed has not fetched successfully or too many products are disapproved. Stop and report; the campaign cannot work until the feed does. - **Blocked — tracking:** no usable conversion action exists for the goal the user named. - **Blocked — access:** the connection lacks campaign-creation access, or Merchant Center is not actually linked. - **Needs approval:** the build is complete and verified, waiting on an explicit go. - **Needs a handoff:** feed data, product titles, policy disapprovals, or storefront problems need the merchandising or development owner. Name them rather than implying a fix. ## Approval boundaries Building, checking, and presenting the campaign involves no spend — it is created paused and stays that way until the user says otherwise. Enabling is the only moment spend begins, and it happens after the user has seen the verification against the live account, not before. Targets and budgets are never invented; where a starting target is suggested it comes from the account's own trailing performance and is offered for approval. This skill cannot edit the product feed, fix Merchant Center disapprovals, rewrite product titles or images, change the storefront, resolve billing, or appeal a policy decision. Those get a written handoff to the person who owns them. ## What you get A Shopping campaign in the account — live if approved, paused if not — built only after the feed was shown to be fetching and serving, with the disapprovals split into what blocks a product and what merely limits it. Products are grouped by what they are actually worth, with no-history items given their own group so they are not starved before they can perform. Targets are set per tier rather than flat across the catalog, and where conversion volume could not support automated bidding you get that stated plainly along with a simpler starting point. You also get the conflicts: existing campaigns competing for the same products, and any priority problem that would quietly drain one of them. Where the blocker turned out to be feed or merchandising data, you get a handoff naming what needs fixing and who owns it, rather than a campaign launched on top of a broken catalog.