Skip to main content

validate_property_delivery

AdCP 3.0 Proposal - This task is under development for AdCP 3.0.
Validates delivery records against a property list to determine compliance. Answers two questions:
  1. Property compliance: Did my impressions land on properties in my list?
  2. Supply path authorization: Was the sales agent authorized to sell that inventory?

Use Cases

  • Post-campaign validation: Verify that impressions were delivered to compliant properties
  • Supply path verification: Confirm sales agents were authorized by publishers
  • Real-time monitoring: Check compliance rate during campaign execution
  • Audit trails: Generate compliance reports for regulatory or brand safety reviews

Request

Parameters

Response

Response Fields

Summary Fields

The summary provides raw counts - consumers calculate rates as needed:

Validation Statuses

Understanding not_covered vs unidentified

These two statuses distinguish different types of “unknown” scenarios: not_covered - The governance agent recognized the identifier (e.g., it’s a valid domain) but doesn’t have data for that specific property. This happens when:
  • A property is too new to be in the agent’s database
  • The property exists but hasn’t been evaluated yet
  • The agent’s coverage doesn’t include that property category
unidentified - The governance agent couldn’t recognize the identifier at all. This happens when:
  • Client-side detection failed to capture the property
  • The identifier type isn’t supported (e.g., agent handles domains but received an app ID)
  • The identifier value is malformed or invalid
Both statuses should be excluded from compliance rate calculations - you cannot penalize for detection or coverage gaps.

Optional Aggregate Metrics

Governance agents can optionally return computed metrics in the aggregate field:
The aggregate field is optional and agent-specific. Consumers should not assume a particular format - always check methodology_url for interpretation.

Calculating Your Own Rates

The response always includes raw counts. Calculate rates as needed:
In the example above:
  • Compliant impressions: 103
  • Non-compliant impressions: 47
  • not_covered + unidentified impressions: 50 (excluded)
  • Compliance rate: 103 / (200 - 50) = 103 / 150 = 68.7%

Violation Codes

Feature Violation Details

When a property fails a feature requirement, the violation includes the feature details:
The feature_id and requirement fields are optional - they’re included when the violation is due to a feature requirement filter.

Supply Path Authorization

When sales_agent_url is provided in delivery records, the governance agent validates that the sales agent is authorized to sell the property by checking the publisher’s adagents.json.

Request with Authorization

Response with Authorization

When authorization is validated, each result includes an authorization field:

Authorization Statuses

Authorization Violation Codes

Two Independent Checks

Property compliance and authorization are independent checks. A record can be: Both checks use the same “unknown excludes from rate” pattern - you cannot penalize for detection gaps.

Best Practices

Batch Validation

For large-scale validation, batch records up to the 10,000 limit:

Sampling Strategy

For real-time monitoring during campaign execution, validate a statistical sample rather than all records:

Handling Unknown Records

Track unknown rates separately to identify detection gaps: