Margin reporting: revenue per impression and net margin on ad spend

Margin reporting shows what each impression earned after cost and what each dollar of partner spend returned in net margin, along the grid and by partner, so retailers and brands can price every placement to margin rather than to CPM. Reading time about 5 minutes.

Measures

MeasureDefinition
Revenue per impressionAll revenue attributed to the impression (ad, package, commerce) divided by impressions
Cost per impressionServing where metered, revenue shares paid out, creator shares, partner shares
Net margin per impressionRevenue per impression minus cost per impression
Net margin on ad spendFor a partner's package, the gross margin on attributed sales minus the partner's spend, divided by spend
Retail attributed revenue (RAR)Sales attributed to the package within the window

How it is built

Revenue (see Revenue reporting, payouts, and the Creator Wallet) and attribution (see Attribution: closed-loop commerce and conversion forecasts) are joined on the grid (see The Hierarchical Grid: one spine for inventory, layout, and reporting); margin inputs (product margin, cost of goods) come from your catalog or a margin file under Audiences → Conversions.

Using it

  • Set floors per placement to a target net margin rather than a CPM; BCC proposes floors from this report.
  • Rank partners and packages by net margin on ad spend when renewing.
  • Feed the Pricer agent in Canvas (see Canvas: run your network with growth and monetization agents) so floors and package prices move with margin.

Exports go to CSV, the Intelligence SDK (see Intelligence SDK: bring Genuin signals into your own stack), and scheduled reports for finance.

How it runs

These reports are reviewed on a cadence and the three recommended changes are brought to you; the ones you approve are applied. Any question about the numbers can be asked in plain language from the report.

Support. Help is available 24/7 from Brand Control Center and from every page of these docs. Ask in plain language; when a person is needed, an account manager, developer, or Ops engineer joins the same thread and stays on it until it is resolved. Every Business Account owner has this on every plan (see 24/7 Octo-enabled support: how Octo brings in account managers, developers, and Ops).

API & SDK

Access: the calls in the table are the proposed Business Account API (see Business Account API: provisioning, OAuth, and the resource map), authenticated with a key scoped to the account and a role or an OAuth client acting for it; every confirmation in this article becomes a proposal you can approve by API (POST /proposals/{proposalId}:approve). Live today, the server API under /api/thirdparty authenticates with a gn-access-token (see Generate an access token), and Live API today and the Business Account API roadmap maps what is live to what is proposed.

CallPurpose
GET /reports/marginRevenue per impression and net margin on ad spend
GET /reports/revenueRevenue by placement, partner, source, tier; payouts and creator shares
js
js
// proposed server SDK (Business Account API)
import { Genuin } from '@genuin/sdk';
const genuin = new Genuin({ apiKey: process.env.GENUIN_KEY });
await genuin.reports.margin({ brandId });
await genuin.reports.revenue({ brandId, by: 'source' });

Live today: Receive engagement events in your own analytics · Query Genuin event data in BigQuery.

SDKs: Web SDK 2.0.6 (see Embed the Genuin Web SDK on your website), iOS SDK 2.1.5 (see Integrate the Genuin iOS SDK), Android SDK 2.1.5 (see Integrate the Genuin Android SDK), React Native 3.0.3 (see Integrate the Genuin SDK with React Native apps), and Flutter (see Integrate the Genuin SDK with Flutter apps) render Genuin and sign members in; the Node (@genuin/sdk) and Python (genuin) server SDKs are proposed with Business Account API: provisioning, OAuth, and the resource map.

TRUST AND COMPLIANCE

© 2026 Genuin Inc.

Genuin Footer