
Marketplace Advertising
- 136 installs
- 41 repo stars
- Updated March 13, 2026
- finsilabs/awesome-ecommerce-skills
Plan and optimize paid ads for Amazon, Etsy, and other marketplaces including keyword targeting, budget splits, creative tests, and ROAS-focused campaign structure.
About
Marketplace-advertising skill from finsilabs/awesome-ecommerce-skills guides Claude through ecommerce paid media on third-party marketplaces, optimizing keywords, creatives, budgets, and performance reporting for sellers scaling beyond organic listing traffic.
- Structures marketplace PPC and sponsored product campaigns
- Aligns listings, keywords, and creatives for ROAS
- Supports budget testing across SKUs and seasons
- Covers Amazon-style and multi-marketplace tactics
- Connects ad spend to pricing and margin goals
Marketplace Advertising by the numbers
- 136 all-time installs (skills.sh)
- Ranked #403 of 853 Sales & Marketing skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill marketplace-advertisingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 136 |
|---|---|
| repo stars | ★ 41 |
| Last updated | March 13, 2026 |
| Repository | finsilabs/awesome-ecommerce-skills ↗ |
What it does
Plan and optimize paid ads for Amazon, Etsy, and other marketplaces including keyword targeting, budget splits, creative tests, and ROAS-focused campaign structure.
Files
Marketplace Advertising
Overview
Marketplace advertising (Amazon Sponsored Products, Walmart Connect, eBay Promoted Listings) puts your products in front of shoppers with high purchase intent directly on the platform where they are shopping. Unlike Google/Meta, marketplace ads run within a closed ecosystem — clicks and conversions happen on the marketplace, not your site. The strategic work is campaign structure, keyword harvesting, and bid management. Amazon's native Campaign Manager UI handles most of this without code; automation tools like Perpetua or Sellics add bid optimization rules on top.
When to Use This Skill
- When selling on Amazon and needing a structured campaign setup from scratch
- When ACOS (Advertising Cost of Sale) is above your target and needs systematic optimization
- When running campaigns across multiple marketplaces and needing unified reporting
- When wanting to automate keyword harvesting and bid adjustments without building custom scripts
- When launching a new product and needing an auto-campaign to discover converting search terms
Core Instructions
Step 1: Choose the right advertising management approach
| Approach | Best For | Platforms | Price |
|---|---|---|---|
| Amazon Campaign Manager (native) | All sellers, getting started | Amazon | Free (% of ad spend) |
| Perpetua | Automation + goal-based bidding | Amazon, Walmart, Instacart | $250+/mo |
| Sellics (now Perpetua) | Analytics-heavy sellers | Amazon | $250+/mo |
| Jungle Scout | Sellers wanting product research + ads in one tool | Amazon | $49+/mo |
| Pacvue | Enterprise, multi-marketplace | Amazon, Walmart, Target | Custom |
| Walmart Campaign Center (native) | Walmart sellers | Walmart | Free (% of ad spend) |
Start with Amazon's native Campaign Manager for campaign setup. Once you have 30 days of data, add Perpetua or Jungle Scout for automated bid optimization if managing more than 5 active campaigns.
Step 2: Set up your Amazon Sponsored Products campaigns
Note: Marketplace advertising is independent of your Shopify/WooCommerce/BigCommerce store. Amazon campaigns run within Seller Central regardless of your ecommerce platform.
---
Amazon Seller Central — Campaign Setup
Create the two-campaign structure for each product group:
Auto campaign (keyword discovery): 1. Go to Amazon Seller Central → Advertising → Campaign Manager → Create Campaign 2. Select Sponsored Products 3. Set:
- Campaign name:
[Product Name] - Auto - Daily budget: 30% of your total product budget (e.g., $15/day if total budget is $50/day)
- Targeting: Automatic targeting
- Default bid: $0.75
4. Under Automatic Targeting, set bids for all four match types (close match, loose match, substitutes, complements) — start equal, optimize after 2 weeks of data 5. Create the ad by selecting your ASIN
Manual campaign (scaling proven keywords): 1. Create a second campaign: [Product Name] - Manual 2. Set:
- Daily budget: 70% of your total product budget
- Targeting: Manual targeting → Keyword targeting
- Match types: Add each seed keyword in both Exact (bid: $1.20) and Phrase (bid: $0.90)
3. Add negative keywords at campaign level: "free", "DIY", "how to", competitor brand names
---
Harvest keywords from auto campaign (weekly task)
After 7–14 days, move converting search terms from auto to manual:
1. Go to Campaign Manager → [Auto Campaign] → Search Term Report 2. Download the report for the last 14 days 3. Filter for rows where:
7 Day Total Orders (#)> 0Advertising Cost of Sales (ACOS)< your target ACOS (e.g., 30%)Clicks>= 5 (minimum data threshold)
4. For each qualifying search term:
- Add it as an Exact match keyword in your manual campaign
- Add it as a Negative exact keyword in your auto campaign (prevents both campaigns from competing for the same query)
---
Walmart Campaign Center
1. Go to Walmart Seller Center → Advertising → Campaign Manager 2. Create a Sponsored Products campaign 3. Walmart's setup mirrors Amazon's: choose automatic or manual targeting, set a daily budget and default bid 4. Walmart's search term report works identically to Amazon's — run the same weekly harvest process
---
eBay Promoted Listings
1. Go to eBay Seller Hub → Marketing → Promoted Listings 2. Select Promoted Listings Standard (cost-per-sale, no cost for clicks) 3. Set an ad rate (typically 5–15% of item sale price — higher rates = more visibility) 4. Select listings to promote — focus on listings with high conversion rates 5. eBay does not require keyword management for Standard; use Promoted Listings Advanced (CPC model) for keyword-level control
Step 3: Set ACOS targets by product margin
ACOS = Advertising Cost ÷ Attributed Sales. Your target ACOS depends directly on your margin:
| Product Gross Margin | Target ACOS | Notes |
|---|---|---|
| 60%+ | 25–35% | Aggressive growth acceptable |
| 40–60% | 20–25% | Balanced growth |
| 25–40% | 15–20% | Conservative; break-even focus |
| < 25% | < 15% or pause ads | Low-margin products rarely work profitably on Amazon Ads |
Set your target ACOS in Campaign Manager → Bidding Strategy → Target ACOS (dynamic bidding) — Amazon will automatically adjust bids up/down to hit your target.
Step 4: Bid optimization
Amazon's built-in dynamic bidding (no third-party tool needed): 1. Go to Campaign Manager → [Campaign] → Edit 2. Under Bidding, select Dynamic bids — up and down 3. Set a target ACOS — Amazon adjusts bids in real time 4. This works well for established campaigns with 30+ days of data
Manual bid optimization rules (do weekly):
- Keywords with ACOS > 1.2× target and 10+ clicks → reduce bid by 15%
- Keywords with ACOS < 0.8× target and 1,000+ impressions → increase bid by 10%
- Keywords with 20+ clicks and zero sales → pause or add as negative
With Perpetua (automated): 1. Connect Perpetua to your Amazon Seller Central account 2. Set a goal (target ACOS or target revenue) per campaign 3. Perpetua runs bid optimization daily using machine learning — no manual weekly reviews needed 4. Go to Perpetua → Campaigns → Performance to review automated recommendations before they execute
Step 5: Track performance
Monitor these metrics in Campaign Manager weekly:
| Metric | Healthy Target | Where to Find |
|---|---|---|
| ACOS | Below your margin threshold | Campaign Manager → Campaigns |
| Click-through rate (CTR) | > 0.3% for Sponsored Products | Campaign Manager → Ad Groups |
| Conversion rate | > 10% for Sponsored Products | Search Term Report |
| Impression Share | > 20% for top keywords | Search Term Impression Share report |
| Total Ad Spend / Total Revenue ratio (TACoS) | < 10% for mature products | Calculate manually: total ad spend ÷ total product revenue |
Step 6: Custom / API-based management
Use the Amazon Advertising API only if you are managing 50+ campaigns programmatically or building a custom reporting dashboard. For most sellers, Campaign Manager is sufficient.
// Amazon Advertising API client — only needed for programmatic campaign management
async function getAmazonAdsToken(config: {
clientId: string;
clientSecret: string;
refreshToken: string;
}): Promise<string> {
const response = await fetch('https://api.amazon.com/auth/o2/token', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
grant_type: 'refresh_token',
client_id: config.clientId,
client_secret: config.clientSecret,
refresh_token: config.refreshToken,
}),
});
const { access_token } = await response.json();
return access_token;
}
// Automated bid optimization — runs weekly as a scheduled job
async function optimizeBids(adGroupId: string, targetAcos: number) {
// Get 30-day keyword performance from the Reporting API
// Filter keywords with insufficient data (< 10 clicks) — skip them
// Keywords with ACOS > targetAcos * 1.2: reduce bid 15%
// Keywords with ACOS < targetAcos * 0.8 and impressions > 1000: increase bid 10%
// Clamp all bids between $0.10 and $10.00
}For most sellers, use Perpetua or Jungle Scout's built-in automation rather than the API — these tools provide the same bid logic with a UI and no infrastructure to manage.
Best Practices
- Separate auto and manual campaigns from day one — auto campaigns discover keywords; manual campaigns scale the winners with controlled bids; mixing them creates reporting confusion
- Harvest keywords weekly for the first 60 days — after initial launch, graduate the best terms to manual and add non-converters as negatives in the auto campaign
- Pause keywords spending $20+ with zero sales — set this as a weekly rule; low-converting keywords drain budget without contributing to ACOS
- Use campaign-level negatives before launch — add "free", "DIY", "how to", "used", "wholesale" as broad match negatives to all campaigns at launch
- Align ACOS targets with actual product margins — a 30% ACOS target on a 25% margin product guarantees losses; recalculate for each product group
- Run Sponsored Brands alongside Sponsored Products — occupying both the top banner (Sponsored Brands) and product grid (Sponsored Products) increases share of voice significantly
Common Pitfalls
| Problem | Solution |
|---|---|
| Auto campaign spending entirely on irrelevant queries | Add a comprehensive negative keyword list before launch; review search term report within 48 hours of first campaign |
| Manual and auto campaigns competing for the same queries | Graduate terms from auto to manual and add them as negative exact keywords in the auto campaign |
| ACOS looks high because of 14-day attribution window | Amazon attributes sales up to 14 days after a click; wait 14 days before evaluating a new campaign's ACOS |
| Out-of-stock ASINs still accruing ad spend | Pause campaigns when inventory drops below 2 weeks of supply; resume on restock |
| Low-margin products unprofitable despite hitting ACOS target | Calculate TACoS (total ad spend ÷ total product revenue) — if TACoS exceeds your contribution margin, the product does not support advertising |
Related Skills
- @google-shopping-feed
- @google-ads-ecommerce
- @marketing-attribution-dashboard
- @multi-channel-selling
- @pricing-promotions
{
"context": "Tests whether the agent implements the correct ACOS-based bid adjustment thresholds, multipliers, data minimums, bid clamping, and change filtering as specified in the marketplace advertising skill, plus exponential backoff for API rate limiting.",
"type": "weighted_checklist",
"checklist": [
{
"name": "High ACOS threshold 1.2x",
"max_score": 8,
"description": "Bid reduction is triggered when currentAcos exceeds targetAcos multiplied by 1.2"
},
{
"name": "Bid reduction multiplier 0.85",
"max_score": 8,
"description": "When ACOS is too high, the bid is reduced by multiplying by 0.85 (a 15% reduction)"
},
{
"name": "Low ACOS threshold 0.8x",
"max_score": 8,
"description": "Bid increase is triggered when currentAcos is below targetAcos multiplied by 0.8"
},
{
"name": "Bid increase multiplier 1.10",
"max_score": 8,
"description": "When ACOS is very low, the bid is increased by multiplying by 1.10 (a 10% increase)"
},
{
"name": "Impression threshold for increase",
"max_score": 8,
"description": "Bid increase is only applied when impressions exceed 1000 (in addition to the low ACOS check)"
},
{
"name": "Minimum 10 clicks threshold",
"max_score": 8,
"description": "Keywords with fewer than 10 clicks are skipped / excluded from optimization (insufficient data)"
},
{
"name": "Bid floor $0.10",
"max_score": 8,
"description": "Bids are clamped to a minimum of $0.10 after adjustment"
},
{
"name": "Bid ceiling $10.00",
"max_score": 8,
"description": "Bids are clamped to a maximum of $10.00 after adjustment"
},
{
"name": "Change threshold $0.01",
"max_score": 8,
"description": "Bid updates are only submitted when the absolute change in bid is greater than $0.01"
},
{
"name": "Exponential backoff",
"max_score": 12,
"description": "API calls include retry logic with exponential backoff (increasing delays between retries, not fixed-interval polling)"
},
{
"name": "TARGET_ACOS env var",
"max_score": 8,
"description": "Reads target ACOS from process.env.TARGET_ACOS with a default fallback of 0.30"
},
{
"name": "30-day performance window",
"max_score": 8,
"description": "Bid decisions are based on 30-day performance data (not 7-day or other windows)"
}
]
}
Automated Keyword Bid Optimizer
Problem/Feature Description
An Amazon seller managing dozens of Sponsored Products ad groups is spending hours each week manually reviewing keyword performance and adjusting bids in the advertising console. Their ACOS is inconsistent across the catalog — some keywords are underperforming and draining budget, while others are highly efficient but stuck at low bids that limit their visibility. The seller wants to automate this weekly bid review process.
The optimization logic needs to be data-driven: keywords without enough performance history shouldn't be touched, and bid changes should only be applied when there's a meaningful difference to avoid unnecessary API churn. The system must also handle the reality that Amazon's API has rate limits and that making the same change twice before it propagates causes confusing state. The target ACOS should be configurable per product line.
Output Specification
Write a TypeScript file named bid-optimizer.ts that:
- Implements a function to optimize bids for all enabled keywords in a given ad group based on historical performance
- Applies directional bid adjustments based on ACOS relative to the target
- Respects minimum data requirements before making changes
- Enforces bid floor and ceiling bounds
- Only submits API updates when the bid change is meaningful
- Handles Amazon API reliability concerns appropriately
The implementation should use fetch for HTTP calls and follow the Amazon Ads API authentication pattern. Include inline comments explaining the logic for each decision threshold.
{
"context": "Tests whether the agent creates the correct two-campaign structure for Amazon Sponsored Products with proper budget split, bid defaults, and keyword match types as specified in the marketplace advertising skill.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Two-campaign structure",
"max_score": 10,
"description": "Creates two separate campaigns: one with targetingType 'auto' and one with targetingType 'manual'"
},
{
"name": "Auto budget 30%",
"max_score": 10,
"description": "The auto campaign's dailyBudget is set to 30% of the total (e.g., totalBudget * 0.3 or equivalent fraction)"
},
{
"name": "Manual budget 70%",
"max_score": 10,
"description": "The manual campaign's dailyBudget is set to 70% of the total (e.g., totalBudget * 0.7 or equivalent fraction)"
},
{
"name": "Auto ad group bid 0.75",
"max_score": 8,
"description": "The auto campaign's ad group defaultBid is set to 0.75"
},
{
"name": "Manual ad group bid 1.20",
"max_score": 8,
"description": "The manual campaign's ad group defaultBid is set to 1.20"
},
{
"name": "Exact match keywords",
"max_score": 8,
"description": "Seed keywords are added to the manual campaign with matchType 'exact' at bid 1.20"
},
{
"name": "Phrase match keywords",
"max_score": 8,
"description": "Seed keywords are also added to the manual campaign with matchType 'phrase' at bid 0.90"
},
{
"name": "NA region endpoint",
"max_score": 6,
"description": "Uses the North America endpoint https://advertising-api.amazon.com (not EU or FE endpoints)"
},
{
"name": "Amazon-Advertising-API-ClientId header",
"max_score": 8,
"description": "API requests include the Amazon-Advertising-API-ClientId header"
},
{
"name": "Amazon-Advertising-API-Scope header",
"max_score": 8,
"description": "API requests include the Amazon-Advertising-API-Scope header set to the profileId"
},
{
"name": "OAuth2 refresh token auth",
"max_score": 8,
"description": "Obtains access token from https://api.amazon.com/auth/o2/token using grant_type 'refresh_token'"
},
{
"name": "Negative keywords at launch",
"max_score": 8,
"description": "Adds campaign-level negative keywords containing at least one of: 'free', 'diy', 'how to'"
}
]
}
Amazon Sponsored Products Campaign Setup
Problem/Feature Description
A small home goods brand just launched a new stainless steel travel mug on Amazon (ASIN: B0EXAMPLE123) and needs to start advertising. The brand manager has heard that a structured approach to Sponsored Products works better than a single campaign, but doesn't know how to set it up programmatically. They have the Amazon Advertising API credentials already registered in the console, and want a TypeScript module that creates the complete initial campaign structure for the product.
The brand operates in the North America marketplace, has a daily advertising budget of $50, and has identified initial seed keywords: "stainless steel travel mug", "insulated coffee tumbler", and "leak proof travel cup". They want the setup to be production-ready with proper authentication handling and structured so that it can easily discover new keywords over time while maintaining controlled spending on proven terms.
Output Specification
Write a TypeScript file named campaign-setup.ts that:
- Defines the Amazon Ads API configuration interface and authentication
- Implements a function to create the full campaign structure for the ASIN above
- Creates all necessary campaigns, ad groups, product ads, and keywords
- Is ready to be called with the provided parameters
The file should be self-contained and use only standard Node.js/TypeScript patterns with fetch for HTTP calls. No additional libraries beyond date-fns for date formatting are needed.
{
"context": "Tests whether the agent implements keyword harvesting with the correct report parameters, filtering thresholds, weekly cadence, and the dual-write pattern (exact match to manual + negative exact to auto) as specified in the marketplace advertising skill.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Weekly harvest cadence",
"max_score": 10,
"description": "Code or comments indicate a weekly schedule (e.g., 7-day lookback window using subDays(new Date(), 7), or comment referencing weekly job)"
},
{
"name": "Report metrics parameter",
"max_score": 10,
"description": "Report request uses metrics string containing all of: impressions, clicks, cost, sales7d, acos7d"
},
{
"name": "Report recordType targets",
"max_score": 8,
"description": "Report request sets recordType to 'targets'"
},
{
"name": "Report segment query",
"max_score": 8,
"description": "Report request sets segment to 'query'"
},
{
"name": "Filter: sales > 0",
"max_score": 10,
"description": "Filters out queries where sales7d is 0 or less (requires at least one conversion)"
},
{
"name": "Filter: ACOS below target",
"max_score": 10,
"description": "Filters out queries where acos7d is greater than or equal to the target ACOS value"
},
{
"name": "Filter: minimum 5 clicks",
"max_score": 8,
"description": "Filters out queries with fewer than 5 clicks (minimum data threshold check)"
},
{
"name": "TARGET_ACOS env var",
"max_score": 8,
"description": "Reads target ACOS from process.env.TARGET_ACOS with a default fallback of 0.30"
},
{
"name": "Promote as exact match",
"max_score": 10,
"description": "Qualifying queries are added to the manual ad group as keywords with matchType 'exact'"
},
{
"name": "Negate in auto campaign",
"max_score": 10,
"description": "The same queries are also added to the auto campaign as negative keywords with matchType 'negativeExact'"
},
{
"name": "Deduplication check",
"max_score": 8,
"description": "Code checks for existing keywords in the manual campaign to avoid adding duplicates"
}
]
}
Sponsored Products Keyword Harvesting Tool
Problem/Feature Description
An Amazon seller running Sponsored Products campaigns has noticed their auto campaign is finding converting search terms, but those terms are not being captured in their manual campaign for more precise bidding control. They need a scheduled harvesting process that automatically identifies high-performing search queries from their auto campaign and promotes them to their manual campaign so they can bid more efficiently on proven terms.
The seller's marketing operations team wants this as a TypeScript module they can run as a scheduled automation job. The system should be smart about which queries to promote — not every query that gets a click is worth promoting, and they don't want to flood the manual campaign with untested terms. Once a term is promoted, the auto campaign should stop competing on it to avoid bidding against themselves.
The seller uses a target ACOS that varies by product, so the threshold should be configurable via environment variable rather than hardcoded.
Output Specification
Write a TypeScript file named keyword-harvester.ts that:
- Implements a function to harvest converting keywords from an auto campaign and add them to a manual ad group
- Pulls the appropriate search term report with correct parameters
- Applies filtering logic to select only statistically reliable, high-performing queries
- Adds qualifying queries to the manual campaign and prevents the auto campaign from competing on them
- Reads the target ACOS from an environment variable (fall back to a sensible default if not set)
The implementation should use fetch for HTTP calls and follow the same Amazon Ads API authentication pattern (config object with clientId, clientSecret, refreshToken, profileId, region).
{
"name": "finsi/marketplace-advertising",
"version": "0.1.0",
"summary": "Manage sponsored product ads across Amazon, eBay, and Walmart marketplace platforms with bid optimization, keyword targeting, and ACOS tracking",
"skills": {
"marketplace-advertising": {
"path": "SKILL.md"
}
}
}