Migrating signals
AdCP 3.0 rc.1 makes three changes to the Signals Protocol: delivery target flattening, structured pricing options, and usage reporting simplification.Deliver-to flattening
The nesteddeliver_to object in get_signals requests is replaced by two top-level fields.
beta.3:
test=false
test=false
Pricing options
The legacypricing object (with a single cpm field) is replaced by a pricing_options array. Each option is a discriminated union on model.
Three pricing models
CPM — Fixed cost per thousand impressions:Activation with pricing
When activating a signal, pass the selectedpricing_option_id:
test=false
Usage reporting
report_usage adds idempotency_key and removes the kind and operator_id fields.
rc.1 usage report:
pricing_option_id in the usage record must match the one passed at activation, allowing the vendor to verify the correct rate was applied.
Migration steps
1
Flatten deliver_to
Move
deliver_to.destinations and deliver_to.countries to top-level fields in get_signals requests.2
Parse pricing_options array
Update signal response parsing to read
pricing_options (array) instead of pricing (object). Switch on model field to determine the pricing type.3
Select pricing at activation
When calling
activate_signal, pass the selected pricing_option_id from the signal’s pricing_options array.4
Add idempotency_key to report_usage
Generate a unique key (UUID) for each
report_usage call. Retries with the same key are idempotent.5
Remove kind and operator_id
Remove
kind and operator_id from usage records. Usage type is determined by the presence of signal_agent_segment_id (signals) or standards_id (governance).6
Track pricing_option_id through lifecycle
Store the
pricing_option_id at activation time and pass it in report_usage records so the vendor can verify billing.7
Validate against schemas
Run requests against
get-signals-request.json, activate-signal-request.json, and report-usage-request.json schemas.Signals Protocol
Full reference for signal discovery, activation, usage reporting, and pricing models.
Related: Pricing | Optimization goals | AdCP 3.0 overview