Feedico

Engineering · Platform entity schema

Affiliate platform data model: entity map and ERD

Updated September 14, 2026 · ~14 min read · Reference guide

A practical entity map for affiliate network platforms: what belongs in a click tracker versus a catalogue API. Covers merchants, coupons, product feeds, webhooks, payouts, and creatives, plus the Feedico Firm/Coupon schema with ERD, JSON examples, and OpenAPI. Deep dives: product feed & creative library · webhook & postback model.

Two valid platform data models (pick the section you need)

Model A · Click-tracking & finance

Affiliate, Click, Conversion, Commission, Payout. Used by trackers and network reporting APIs.

Tracking links, conversions & payouts →

Model B · Catalogue aggregation (Feedico)

Account, Integration, Firm, Coupon, Product feed rows. One JSON contract across CJ, Awin, Impact.

Feedico entity catalog & JSON →

Most production stacks use both: a catalogue API for merchants and promos, plus a tracker for clicks and payouts. Jump to webhooks & postbacks, product feeds & creatives, or the full entity map.

Need conversion, payout, or creative tables?

See tracking, conversions & payouts and the full platform entity map.

Building a multi-network coupon or deals API?

Jump to Feedico entity catalog, JSON examples, and OpenAPI.

Full affiliate platform entity checklist

  • Account, Integration, Provider (network connection)
  • Firm / partner merchant programme
  • Coupon, promo offer, tracked link
  • Product feed, SKU catalog, deep-link product lists
  • Webhook delivery, conversion postback events
  • Tracking link, click id, attribution
  • Payout, settlement, commission ledger
  • Creative library, banner assets, promotional media
  • Sync snapshots and normalized JSON (Feedico catalogue layer)

Full affiliate platform entity map

Use this table when you need a full affiliate platform entity checklist: webhooks, product feeds, tracking links, payouts, and creative libraries. The Feedico column shows what this API normalizes for catalogue and sync workloads.

Where each affiliate platform entity is typically modeled
EntityFeedicoTypical trackerNetwork nativeNotes
Account / publisher identityYesYesYesTenant, API token, plan quotas
Partner / merchant programmeYesMetadataYesFirst-class Firm row in Feedico
Integration / network connectionYesPartialN/ACredentials and sync state per provider
Coupon / promo offerYesAs campaignPartialNormalized catalogue row with offerUrl
Product feed / SKU catalogOptionalRareYesOptional Product rows when feeds sync
Product list / deep-link rulesYesRarePartialCustomer-defined catalog filters
Webhook / delta eventsYesSometimesSometimesaffiliate.delta outbound deliveries
Conversion / postbackNoYesYesOwned by your tracker or network reporting
Click / tracking link ledgerNoYesYesImmutable click events, not in catalogue API
Payout / settlementNoYesYesFinancial commission batches
Creative / banner libraryNoYesYesNetwork promotional asset catalogs
Sync snapshot cacheYesNoInternalProgramme metadata between sync passes

Core entity relationships (catalogue aggregation)

Account (tenant)
Integration → Provider (CJ, Awin, Impact, …)
Firm (merchant / programme)
Sync snapshot (optional cache)
Coupon (promo / link offer)
Product (optional SKU feed)
Webhook delivery (affiliate.delta events)

Webhook, conversion postback & delta event entities

Architects often conflate inbound conversion postbacks with outbound catalogue webhooks. Trackers ingest commission callbacks; catalogue platforms emit change notifications when merchant or promo rows update. Full guide: webhook & conversion postback data model.

EntityTypical tracker / networkFeedico
Inbound conversion postbackHTTP callback with click id + order idNot stored (use tracker)
Outbound webhook / deltaOptional network hooksaffiliate.delta on catalogue changes
Webhook subscriptionPer advertiser URL configDashboard webhook settings
Event payloadtransaction_id, commission, statusupserted/inactivated firm & coupon ids

Implementation guide: Webhook delta sync.

Tracking links, conversions & payout entities

Queries mentioning partners tracking links conversions payouts map to the click-tracking schema. These tables sit in affiliate trackers (Post Affiliate Pro, Everflow) or network reporting APIs, not in a catalogue aggregation API.

EntityPrimary fieldsFeedico catalogue API
Tracking link / offer URLsub_id, campaign_id, destination URLofferUrl on tenant coupons only
Click eventclick_id, ip, timestamp, referrerNot modeled
Conversionorder_value, commission, statusNot modeled
Partner / affiliatepublisher_id, tier, payment detailsAccount (tenant) only
Payout / settlementbatch_id, amount, currency, periodNot modeled

Product feed, SKU, deep linking & creative asset entities

Product feed rows (SKU, price, deep link) and creative libraries (banner sizes, asset URLs) are separate tables in most networks. Feedico normalizes optional product rows; banner creatives stay in the network UI. Deep dive: product feed, SKU deep links & banner sizes.

EntityNetwork / trackerFeedico
Product feed / SKU rowsku, gtin, price, image_url, deep_linkProduct + images[] (optional sync)
Product list / filtercategory, brand, price band rulesCustomer catalog list filters
Creative / banner assetwidth, height, asset_url, landing pageNot modeled (network UI)
Deep link ruleproduct_id → tracked URL templatemerchantUrl + tenant offerUrl

Product API fields: REST API product page · Global catalogue API.

Catalogue aggregation vs click-tracking schemas

Both are valid “affiliate platform” data models. They solve different problems. Tracking platforms record referral traffic and commission math; aggregation platforms normalize merchant programmes and promotions from CJ, Awin, Impact, and peers into one JSON contract your product consumes.

Typical entity focus by platform type
EntityClick-tracking platformFeedico (catalogue API)
Affiliate / PublisherCore identityAccount (tenant)
Campaign / OfferTracked link configCoupon + Firm
ClickImmutable eventNot modeled (your product owns attribution)
ConversionCommission triggerNot modeled
Payout / SettlementFinancial ledgerNot modeled
Merchant programmeMetadata on offerFirm (first-class row)
Network integrationPostback URL configIntegration + Provider

If you operate both surfaces, a deals site plus internal attribution, treat Feedico as the catalogue source of truth and keep clicks and conversions in your tracker or network reporting. See the unified affiliate API pillar for product positioning.

Feedico entity catalog

These are the platform entities exposed (directly or indirectly) through customer APIs and dashboard integrations. Internal admin tables are omitted. This is the publisher-facing ontology for the catalogue layer highlighted in the entity map above.

EntityRoleNatural keySurface
Account (tenant)Publisher customer, API token, plan quotas, connected integrationsappUserIdImplicit via Bearer token on /api/v1/me/*
IntegrationAuthorized connection to one affiliate network (credentials + sync state)(accountId, provider)Dashboard → Integrations
ProviderUpstream network slug attached to every normalized rowprovider slugcj_affiliate, awin_affiliate, impact_com, …
FirmMerchant / programme you are approved to promote(provider, externalMerchantKey)POST /api/v1/me/networks
CouponCoded promo, percentage title, or tracked link offer(provider, externalCouponId)POST /api/v1/me/coupons
ProductOptional SKU/catalog rows when product feeds are synced(provider, externalProductId)Catalog / product list APIs
Product listCustomer-defined filter over synced products for a propertylistIdDashboard catalog lists
Sync snapshotPoint-in-time upstream entity cache (e.g. Awin programme snapshots)provider + entity type + snapshot idInternal sync layer
Webhook deliveryOutbound affiliate.delta (or related) event to your endpointeventId / delivery idWebhook subscription settings

Relationships & entity diagram (ERD)

An Account owns many Integrations (one per connected network). Each Integration writes Firms and Coupons into tenant-scoped tables during sync. Coupons always reference a parent Firm via networkId. Product rows and Product lists are optional when catalog feeds are enabled. Webhook subscriptions emit delta events when eligible plans expose them.

Mermaid ERD (copy into docs or diagrams.net)
erDiagram
  ACCOUNT ||--o{ INTEGRATION : owns
  INTEGRATION }o--|| PROVIDER : connects
  INTEGRATION ||--o{ FIRM : syncs
  FIRM ||--o{ COUPON : exposes
  FIRM ||--o{ PRODUCT : optional
  INTEGRATION ||--o{ WEBHOOK_DELIVERY : emits
  ACCOUNT {
    string appUserId
  }
  FIRM {
    string provider
    string externalMerchantKey
  }
  COUPON {
    string networkId
    string externalCouponId
    string code
  }

Firm & coupon JSON shapes

Customer list endpoints return these normalized objects regardless of upstream network. Field-by-field CJ / Awin / Impact mapping lives in the schema normalization deep dive.

Normalized firm row
{
  "id": "88341",
  "displayName": "Example Retailer EU",
  "provider": "awin_affiliate",
  "externalMerchantKey": "12345",
  "merchantWebsiteUrl": "https://example-retailer.eu",
  "status": "active",
  "couponCount": 12,
  "lastSyncedAt": "2026-08-10T18:04:00.000Z",
  "extra": { /* upstream programme fields */ }
}
Normalized coupon row
{
  "id": "1849201",
  "networkId": "88341",
  "networkName": "Example Retailer EU",
  "provider": "awin_affiliate",
  "externalMerchantKey": "12345",
  "externalCouponId": "promo-998877",
  "code": "SPRING15",
  "title": "15% off sitewide",
  "startsAt": "2026-03-01T00:00:00.000Z",
  "endsAt": "2026-06-30T23:59:59.000Z",
  "offerUrl": "https://…/tracked-offer",
  "status": "active",
  "extra": { /* voucher type, region flags, native enums */ }
}

Dedup keys & lifecycle

  • Firms: upsert on (provider, externalMerchantKey)
  • Coupons: upsert on (provider, externalCouponId) within the tenant
  • Join: coupon.networkId → firm.id
  • Soft delete: rows missing from the latest sync pass flip to status: inactive. Warehouses archive instead of hard-deleting history
  • Provider filter: every list request can scope to one upstream network via the provider slug

Sync pipeline & webhooks

Scheduled sync jobs pull advertiser programmes and promotions using dashboard credentials. Adapters map upstream payloads into Firm and Coupon rows. Some networks (notably Awin) also maintain entity snapshots for programme metadata between full sync passes. For near-real-time updates, pair batch ETL with webhook delta sync when your plan exposes affiliate.delta events. Reference worker patterns are in the coupon warehouse ETL guide.

Object APIs for Firm, Product, and Offer

This page is the platform entity map. When you need endpoint tables, curl samples, and field glossaries for the catalogue objects Feedico serves over REST, open the object landings:

Field mapping from CJ, Awin, and Impact into these shapes is covered in schema normalization.

OpenAPI & machine-readable schema

The entity model above maps to the customer REST contract documented in openapi-customer.yaml and the interactive explorer linked from REST API (product). Import the spec into Postman or codegen tools to generate typed clients against Firm and Coupon list endpoints.

Frequently asked questions

What entities does an affiliate marketing network platform need?
A full-stack affiliate platform spans catalogue rows (merchants, coupons, product feeds), event surfaces (webhooks, conversion postbacks, tracking links), finance (payouts), and creative assets (banners). Use the platform entity map on this page for the complete checklist. Feedico implements the catalogue aggregation slice: Account, Integration, Provider, Firm, Coupon, optional Product rows, Sync snapshots, and Webhook deliveries.
What is the affiliate marketing webhook, conversion postback, and product feed data model?
Industry trackers model Webhook/postback as inbound conversion events tied to click ids; product feeds as SKU catalogs with deep links; creative assets as banner libraries. Feedico models outbound affiliate.delta webhooks when catalogue rows change, optional Product feed rows from CJ and peers, and does not store inbound conversion postbacks (those stay in your tracker or network reporting). See the webhook/postback and product feed sections on this page.
How are affiliate tracking links, conversions, and payouts modeled?
Click-tracking platforms use Click (immutable event), Conversion (commission trigger), and Payout/settlement ledger tables. Affiliate networks expose similar reporting APIs. Feedico does not duplicate those ledgers: it supplies normalized Firm and Coupon catalogue rows so your tracker or storefront can attach tracking links and postbacks separately.
How do Firm and Coupon relate in Feedico's schema?
Every Coupon references a Firm via networkId (the internal firm row id). Firms deduplicate on (provider, externalMerchantKey); coupons on (provider, externalCouponId). One firm can expose many coupons; coupons inherit networkName and merchant context from the parent firm row.
Is this the same as an affiliate tracking data model?
No. Generic affiliate tracker schemas center on referral links, click ids, conversion postbacks, and payout batches. Feedico is a multi-network aggregation layer: sync upstream programme and promotion catalogues, normalize field names, and expose one REST contract. Your product still owns attribution and checkout if you run a tracker separately.
Where do network-native fields live?
Top-level customer API fields are stable camelCase (provider, externalMerchantKey, code, startsAt, etc.). Upstream-only enums, regional flags, and vendor-specific metadata are preserved in an extra JSON object on each row so warehouses can promote fields later without re-syncing history.
What are the primary keys for warehouse upserts?
Use composite natural keys: (provider, externalMerchantKey) for firms and (provider, externalCouponId) for coupons, scoped to your tenant. Feedico id is a stable internal numeric string for CMS foreign keys; external keys track upstream identity across sync runs.
Where should I read field-by-field CJ/Awin/Impact mapping?
This page is the platform entity overview. For per-network column mapping, provider tags, pagination normalization, and the extra JSON escape hatch, read the schema normalization deep dive linked below.

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.