Problem
Several calculated-rate fields in the Paid Media field groups are constrained with "maximum": 1, but in practice these rates can legitimately exceed 1.0, causing ingestion failures.
Example failure when ingesting Google Ads summary metrics:
The value (2.0) for the field: paidMedia.conversionMetrics.conversionRate with type: Double
must be less than or equal to the specified maximum limit: 1.0.
paidMedia.conversionMetrics.conversionRate maps to Google Ads metrics.conversions_from_interactions_rate, which is all_conversions / interactions — i.e. multiple conversions can be attributed to a single click, so the ratio can exceed 1.0. See Google Ads API field reference.
The same problem applies to other rates whose numerator and denominator come from different event populations (numerator is not a subset of the denominator):
ctr (clicks / impressions) — networks may report more tracked clicks than impressions or inflate counts
engagementRate (engagements / impressions) — one impression can yield multiple engagements (like + share + comment)
budgetUtilization / dailyBudgetUtilization (spend / allocated) — overspend exceeds 100%
negativeActionRate / positiveActionRate (actions / impressions) — multiple actions per impression
crossDeviceConversionRate — conversions can outnumber the denominator interactions
Proposed fix
Remove the "maximum": 1 constraint from the above calculated-rate fields (keep "minimum": 0, since rates are non-negative) and document in each field's description why the value can exceed 1.0.
True subset/total proportions that are mathematically bounded at 1.0 — viewabilityRate, the video view/completion/skip rates, fraudRate, validationRate, leadFormCompletionRate, invalid/bot/human traffic rates, the impressionShare set, attribution weights/confidence/contribution, and statistical indices — keep their "maximum": 1 cap.
This is a non-breaking change: removing a maximum only loosens validation, so existing valid data remains valid.
Problem
Several calculated-rate fields in the Paid Media field groups are constrained with
"maximum": 1, but in practice these rates can legitimately exceed 1.0, causing ingestion failures.Example failure when ingesting Google Ads summary metrics:
paidMedia.conversionMetrics.conversionRatemaps to Google Adsmetrics.conversions_from_interactions_rate, which isall_conversions / interactions— i.e. multiple conversions can be attributed to a single click, so the ratio can exceed 1.0. See Google Ads API field reference.The same problem applies to other rates whose numerator and denominator come from different event populations (numerator is not a subset of the denominator):
ctr(clicks / impressions) — networks may report more tracked clicks than impressions or inflate countsengagementRate(engagements / impressions) — one impression can yield multiple engagements (like + share + comment)budgetUtilization/dailyBudgetUtilization(spend / allocated) — overspend exceeds 100%negativeActionRate/positiveActionRate(actions / impressions) — multiple actions per impressioncrossDeviceConversionRate— conversions can outnumber the denominator interactionsProposed fix
Remove the
"maximum": 1constraint from the above calculated-rate fields (keep"minimum": 0, since rates are non-negative) and document in each field'sdescriptionwhy the value can exceed 1.0.True subset/total proportions that are mathematically bounded at 1.0 —
viewabilityRate, the video view/completion/skip rates,fraudRate,validationRate,leadFormCompletionRate, invalid/bot/human traffic rates, theimpressionShareset, attribution weights/confidence/contribution, and statistical indices — keep their"maximum": 1cap.This is a non-breaking change: removing a
maximumonly loosens validation, so existing valid data remains valid.