Teads conversions check submitted event fields.
Teads Conversions API endpoint and locally checkable payload contracts.
What this pack matches
Rules
Codes are stable. A finding in CI, MCP, or the playground lands on the same id.
| Field | Required | What it checks | Rule ids | Source |
|---|---|---|---|---|
root |
optional | Native JSON type: object. | vendor.teads-conversions-api.body.root.invalid |
docs |
action |
required | Native JSON type: string. | vendor.teads-conversions-api.body.action.missingvendor.teads-conversions-api.body.action.emptyvendor.teads-conversions-api.body.action.invalid |
docs |
click_id |
required | Native JSON type: string. | vendor.teads-conversions-api.body.click_id.missingvendor.teads-conversions-api.body.click_id.invalid |
docs |
buyer_pixel_id |
required | The official sender emits a string while direct examples use a number. Native JSON type: string or integer. | vendor.teads-conversions-api.body.buyer_pixel_id.missingvendor.teads-conversions-api.body.buyer_pixel_id.invalid |
docs |
event_source_url |
required | Native JSON type: string. | vendor.teads-conversions-api.body.event_source_url.missingvendor.teads-conversions-api.body.event_source_url.emptyvendor.teads-conversions-api.body.event_source_url.invalid |
docs |
user_session_id |
optional | Native JSON type: string. | vendor.teads-conversions-api.body.user_session_id.invalid |
docs |
event_time |
optional | Direct docs say seconds and reception-time override. The official GTM template emits milliseconds; no unit or age rejection is inferred. Native JSON type: integer. | vendor.teads-conversions-api.body.event_time.invalid |
docs |
conversion_type |
optional | Native JSON type: string. | vendor.teads-conversions-api.body.conversion_type.emptyvendor.teads-conversions-api.body.conversion_type.invalid |
docs |
conversion_name |
optional | Native JSON type: string. Maximum decoded characters: 100. | vendor.teads-conversions-api.body.conversion_name.invalid |
docs |
conversion_params |
optional | Native JSON type: object. | vendor.teads-conversions-api.body.conversion_params.invalid |
docs |
conversion_params.price |
optional | Docs specify a number; the official configurable sender also serializes string prices. Native JSON type: number or string. | vendor.teads-conversions-api.body.conversion_params.price.emptyvendor.teads-conversions-api.body.conversion_params.price.invalid |
docs |
conversion_params.currency |
optional | Value diagnostic severity: warning. Native JSON type: string. | vendor.teads-conversions-api.body.conversion_params.currency.emptyvendor.teads-conversions-api.body.conversion_params.currency.invalid |
docs |
conversion_params.name |
optional | Native JSON type: string. Maximum decoded characters: 100. | vendor.teads-conversions-api.body.conversion_params.name.invalid |
docs |
privacy |
required | Native JSON type: object. | vendor.teads-conversions-api.body.privacy.missingvendor.teads-conversions-api.body.privacy.invalid |
docs |
privacy.consent_granted |
required | Native JSON type: boolean. | vendor.teads-conversions-api.body.privacy.consent_granted.missingvendor.teads-conversions-api.body.privacy.consent_granted.invalid |
docs |
privacy.gdpr_applies |
recommended | Native JSON type: boolean. | vendor.teads-conversions-api.body.privacy.gdpr_applies.missingvendor.teads-conversions-api.body.privacy.gdpr_applies.invalid |
docs |
privacy.tcf_consent_string |
optional | Native JSON type: string. | vendor.teads-conversions-api.body.privacy.tcf_consent_string.emptyvendor.teads-conversions-api.body.privacy.tcf_consent_string.invalid |
docs |
privacy.us_privacy |
optional | Native JSON type: string. | vendor.teads-conversions-api.body.privacy.us_privacy.emptyvendor.teads-conversions-api.body.privacy.us_privacy.invalid |
docs |
privacy.gpp_string |
optional | Native JSON type: string. | vendor.teads-conversions-api.body.privacy.gpp_string.emptyvendor.teads-conversions-api.body.privacy.gpp_string.invalid |
docs |
privacy.opt_out |
optional | Native JSON type: boolean. | vendor.teads-conversions-api.body.privacy.opt_out.invalid |
docs |
conversion_type_required |
required | Conversion actions require conversion_type. | vendor.teads-conversions-api.conversion_type_required |
docs |
conversion_label_required |
required | Conversion actions need conversion_name or the backward-compatible conversion_params.name. | vendor.teads-conversions-api.conversion_label_required |
docs |
consent_denied |
required | Teads rejects events with consent_granted=false. | vendor.teads-conversions-api.consent_denied |
docs |
opted_out |
required | Teads rejects events with opt_out=true. | vendor.teads-conversions-api.opted_out |
docs |
tcf_required |
required | GDPR-applicable events require a TCF consent string. | vendor.teads-conversions-api.tcf_required |
docs |
method |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.teads-conversions-api.http.method.missingvendor.teads-conversions-api.http.method.emptyvendor.teads-conversions-api.http.method.invalid |
docs |
content_type |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.teads-conversions-api.http.content_type.missingvendor.teads-conversions-api.http.content_type.emptyvendor.teads-conversions-api.http.content_type.invalid |
docs |
body |
required | Complete HTTP capture contract. | vendor.teads-conversions-api.http.body.missing |
docs |
headers.authorization |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.teads-conversions-api.http.headers.authorization.missingvendor.teads-conversions-api.http.headers.authorization.emptyvendor.teads-conversions-api.http.headers.authorization.invalid |
docs |
http.auth_profile_conflict |
optional | Direct docs specify Token authorization; the official GTM template uses Bearer. Confirm the intended integration profile. Complete HTTP capture contract. | vendor.teads-conversions-api.http.auth_profile_conflict |
docs |
Validate a payload
pixellint validate request @request.json --rulepack vendor/teads-conversions-api
Try this failing payload in the playground. An example with a validation finding.
{
"url": "https://ca.teads.tv/v1/event",
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Authorization": "Token synthetic"
},
"body": "{\"action\":\"conversion\",\"click_id\":\"52d7d822-c723-47f9-82ff-c19a152562ef\",\"buyer_pixel_id\":1234,\"event_source_url\":\"http://www.my-advertiser.com/product?sort=ASC&page=2\",\"conversion_type\":\"Purchase\",\"conversion_params\":{\"price\":14.54,\"currency\":\"USD\"},\"privacy\":{\"consent_granted\":true,\"gdpr_applies\":false},\"event_time\":1519914000}"
}
cargo install pixellint
·
npm install pixellint