AdPlatform
One advertising platform, and the figures it reports for this merchant. A platform exists here whether or not the merchant has connected it: seeing what a channel would cost before committing to it is the point of the module.
type AdPlatform {
id: ID!
provider: AdProvider!
name: String!
brand: String!
connected: Boolean!
countsTowardsBlended: Boolean!
monthly: AdMonthlyTotals!
returnOnAdSpend: Float
monthlyBudgetCap: Money
health: AdPlatformHealth
weeklySeries: [AdWeeklyPoint!]!
}
Fields
AdPlatform.id ● ID! non-null scalar
The opaque identifier of this platform, unique across the whole platform. Treat it as a string with no parts to read.
AdPlatform.provider ● AdProvider! non-null enum
Which advertising platform this is, as a value a client can branch on.
AdPlatform.name ● String! non-null scalar
The platform’s name as the merchant would say it out loud, so a heading matches the console they log into.
AdPlatform.brand ● String! non-null scalar
A stable key for the brand mark this platform is shown under. Lower case, no spaces, and it only ever gains values — a client should fall back to the name rather than assume it knows every key.
AdPlatform.connected ● Boolean! non-null scalar
Whether the merchant has connected this platform to the workspace. A platform that is not connected still reports figures here; what it does not do is accept changes.
AdPlatform.countsTowardsBlended ● Boolean! non-null scalar
Whether this platform’s month is inside the blended totals. A channel the merchant is only trialling is reported alongside them and left out of them, so it cannot move the figure a lender reads.
AdPlatform.monthly ● AdMonthlyTotals! non-null object
What the platform reports for the merchant’s current month.
AdPlatform.returnOnAdSpend ● Float scalar
This platform’s own return on ad spend for the month, to one decimal place: monthly.attributedRevenue over monthly.spend. Served rather than left to the client because the comparison table shows it beside the blended figure, and two roundings of the same quotient in two places is how a table ends up disagreeing with itself. Unlike BlendedMetrics.returnOnAdSpend this one is a single platform’s, so both halves are that platform’s reported month. Null when the platform spent nothing this month — a return on no spend is undefined, not zero.
AdPlatform.monthlyBudgetCap ● Money object
The most the merchant has decided to spend on this platform in a month. Null when they have set no cap, which is not the same as a cap of zero.
AdPlatform.health ● AdPlatformHealth object
How well this platform is set up. Null when the platform has not been assessed — a channel reported for comparison only has nothing to score. On a platform where connected is false this card is a PROJECTION of what an audit would find on connecting, not a measurement of a live connection: it is what makes "here is what this channel would cost you, and what you would have to fix" answerable before the merchant commits. Say so in the interface rather than rendering it as measured.
AdPlatform.weeklySeries ● [AdWeeklyPoint!]! non-null object
Week by week over the platform’s reporting window, oldest first. Empty when no week has been reported yet; a client should draw nothing rather than a flat line at zero. This is a plain list and not a cursor connection — deliberately, because a window is read as a unit and never sliced — so it carries a hard ceiling instead of a page size: **at most 53 points**, a year of weeks, enforced in storage. Twelve is what it holds today.
Member Of
AdAccount object ● AdPlatformConnection object ● AdPlatformEdge object