Engineering · Product feed & creatives
Product feed, SKU deep links, and creative banner sizes
Updated September 14, 2026 · ~14 min read · Reference guide
Affiliate stacks mix two asset types that look similar in network UIs but belong in different tables: product feed SKUs (commerce catalogue + deep links) and creative library banners (fixed pixel sizes for display). This guide maps fields, deep-link wrap flow, standard banner sizes, and where Feedico stops so you do not collapse feeds and creatives into one broken schema.
Two asset layers (keep the join key explicit)
Layer A · Product feed
Sellable SKU identity: price, availability, images, and a destination that should reach the PDP after tracking wrap. Join key: provider + product id (+ programme when needed).
Layer B · Creative library
Marketing media: width × height, asset URL, optional HTML widget, default landing. Join key: creative id or programme + size + language. Not a SKU.
Both may share a programme id or brand name in the network UI. That shared label is not enough for a primary key. Model them as sibling tables under the same Firm / programme, not as one denormalized feed row.
Feed, deep link, and creative entity map
Use this map when designing CMS foreign keys or warehouse star schemas. The Feedico column shows what the catalogue API normalizes today.
| Entity | Network / tracker fields | Feedico |
|---|---|---|
| Product feed / SKU row | sku, gtin, price, image_url, deep_link | Product + images[] (optional sync) |
| Product list / filter | category, brand, price band rules | Customer catalog list filters |
| Deep link rule | product_id → tracked URL template | merchantUrl + tenant offerUrl |
| Creative / banner asset | width, height, asset_url, landing page | Not modeled (network UI) |
| Logo / text link pack | asset type, language, brand kit | Not modeled (network UI) |
| HTML / widget creative | embed snippet, dimensions | Not modeled (network UI) |
SKU field checklist
Minimum viable product feed for deal grids, search indexes, and agent tooling. Optional fields still matter for geo filters and sale merchandising.
| Field | Why it matters | Notes |
|---|---|---|
| sku / gtin | Stable item identity for upserts | Required for warehouses |
| title / brand | Merchandising and search | Normalized on Product rows |
| price / salePrice / currency | Deal grids and alerts | salePrice optional |
| availability | Out-of-stock filtering | String status from upstream |
| images[] | Thumbnails in UI | URL list when synced |
| merchantUrl | Store or PDP destination | Not always tracked |
| countries[] | Geo eligibility | When network exposes it |
| provider | Source network slug | Always present on rows |
SKU catalogue and deep linking
A product feed row is a sellable item identity, not a promo code. Deep linking means the destination URL resolves to that SKU’s product page (or a mapped category) after tracking wrap. Keep click/subid parameters on the tracking layer; keep SKU identity on the catalogue layer.
Coupon offerUrl values are promotion-scoped tracked links. They may land on a homepage, category, or campaign URL. Do not assume every coupon URL is a valid SKU deep link for every product in that merchant’s catalogue.
{
"id": "prod_9f8e7d6c5b4a3210",
"firmName": "Example Outdoor Co",
"provider": "cj_affiliate",
"title": "30m climbing rope",
"brand": "ExampleBrand",
"sku": "SKU-ROPE-30",
"price": 129.0,
"salePrice": 99.0,
"currency": "USD",
"availability": "in stock",
"countries": ["US", "CA"],
"merchantUrl": "https://www.example-outdoor.com",
"images": ["https://cdn.example/rope.jpg"]
}Implementation: Product Data API · Product Deal Feed API · schema normalization.
Deep-link wrap flow
Publishers usually receive either a resolved product URL or a template with placeholders. The tracking wrap is network-specific (Impact subId1, CJ sid, Awin clickref, Admitad subid4, and peers). Attribution still keys off the click event, not the SKU primary key.
# Conceptual deep-link wrap (publisher side)
1. Feed row provides product destination (PDP or mapped category URL)
2. Publisher wraps with network tracking + sub_id / clickref / sid
3. Click lands on PDP after network redirect chain
4. Conversion postback (if any) keys off click_id — not SKU id
# Do not
- Treat promo code offerUrl as a SKU deep link
- Store banner binaries inside the product feed table
- Expect creative width/height on /me/products responsesFor hop tagging and Managed Partner click match, see partner attribution docs and the webhook & postback data model.
Creative library: common banner sizes
Creative libraries ship display assets sized for ad slots. They are marketing creatives, not SKU rows. Pull width/height, asset URL, and default landing from the network creative API or publisher UI. Many programmes also expose text links and HTML widgets alongside fixed banners.
| Size | Name | Typical placement | Notes |
|---|---|---|---|
| 300×250 | Medium rectangle | In-article, sidebar | Highest inventory on content sites |
| 728×90 | Leaderboard | Header / above fold | Desktop-first; often paired with 320×50 |
| 160×600 | Wide skyscraper | Sidebar | Long dwell placements |
| 320×50 | Mobile banner | Mobile sticky | App / responsive sticky footers |
| 300×600 | Half page | Desktop sidebar | Higher CPM on review layouts |
| 970×250 | Billboard | Wide desktop header | Homepage / category hubs |
| 120×600 | Skyscraper | Narrow sidebar | Legacy; still in many libraries |
| 468×60 | Full banner | Legacy header | Older programmes; low priority |
Feedico does not store banner binaries. Use network creative tools for assets; use Feedico for merchants, coupons, and optional product feeds.
Example creative asset shape (network-native)
Networks differ on field names, but the logical shape is stable. Keep this object in a creative_asset table keyed by programme, not inside Product.
{
"creative_id": "bnr_728x90_spring",
"type": "banner",
"width": 728,
"height": 90,
"asset_url": "https://cdn.network.example/creatives/spring-728x90.jpg",
"landing_url": "https://www.example-outdoor.com/spring",
"language": "en",
"programme_id": "4210991"
}What to store where
- Catalogue API (Feedico): Firm, Coupon, optional Product SKU rows, list filters. Endpoints:
/me/products,/catalog/products. - Network creative UI/API: Banner sizes, HTML widgets, logo packs, seasonal creatives, language variants.
- Publisher CMS: Which size slots your templates accept, lazy-load rules, and brand compliance for logos.
- Tracker: Click ids, conversion postbacks, payouts. See the webhook & postback model.
Full platform entity checklist: affiliate platform data model.
Anti-patterns to avoid
- Joining banner creatives into the Product table by filename or campaign name
- Using coupon offerUrl as if it were a SKU deep link for every product click
- Hard-deleting SKUs on every sync miss (breaks historical deal pages)
- Expecting one global deep-link template across CJ, Awin, and Impact without provider branching
- Building SERP titles from raw keyword dumps instead of benefit-led product copy
Frequently asked questions
- What belongs in an affiliate product feed row?
- At minimum: SKU or GTIN identity, title, brand, price, currency, availability, image URL, and a destination URL (merchant or tracked deep link). Optional fields include sale price, categories, and country eligibility.
- How does SKU deep linking work?
- Networks expose a product-level URL template or a resolved deep link so a click lands on the exact PDP, not the homepage. Publishers wrap that URL with their tracking parameters. Feedico stores merchantUrl and optional product rows; tenant offerUrl on coupons is separate from SKU deep links.
- What are standard creative library banner sizes?
- Common IAB-style sizes still used in affiliate creative libraries include 300×250, 728×90, 160×600, 320×50, 300×600, and 970×250. Networks also ship logo packs, text links, and HTML widgets. Feedico does not host banner creatives; pull those from each network’s creative UI or API.
- Does Feedico sync creative banner assets?
- No. Creative libraries stay network-native. Feedico focuses on catalogue aggregation: firms, coupons, and optional product feed rows when your plan includes product sync.
- Where do I call the product feed API?
- Use POST /api/v1/me/products for account-scoped SKUs and POST /api/v1/catalog/products for discovery. See the Product Data API and Product Deal Feed API pages for endpoint contracts.
- Is a product feed the same as a coupon feed?
- No. Coupon/offer rows carry codes, titles, and tracked offerUrl for promotions. Product feed rows are SKU-level commerce objects. Many publishers run both: coupons for deal pages, products for search/merchandising grids.
- How should warehouses upsert product rows?
- Prefer a composite natural key of provider plus upstream product identity (and firm/programme context when the same SKU appears under multiple programmes). Soft-delete or mark inactive when a SKU disappears from the latest sync rather than hard-deleting history.
- Which plan includes product feed access?
- Product feed entitlement is on Pro and Business. Free and Starter include merchant and coupon data but not product feed. Confirm limits on the pricing page before designing SKU-heavy ETL.
Affiliate disclosure: some links on Feedico are affiliate links. We may earn a commission when you buy through them, at no extra cost to you. Publishers still need programme approval and compliant use at each affiliate network. Feedico provides the integration layer, not a substitute for network terms.
Related pages
Ready to try it on your own networks?
Free plan, no credit card. Or start from the ready catalog with the Partner Program.