Skip to main content

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