pixellint

Teads conversions check submitted event fields.

Teads Conversions API endpoint and locally checkable payload contracts.

What this pack matches

Hosts
ca.teads.tv
Paths
/v1/event, /v1/test/event
Vendor docs
developers.teads.tv/docs/advertisers/tam/capi/parameters

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.missing
vendor.teads-conversions-api.body.action.empty
vendor.teads-conversions-api.body.action.invalid
docs
click_id required Native JSON type: string. vendor.teads-conversions-api.body.click_id.missing
vendor.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.missing
vendor.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.missing
vendor.teads-conversions-api.body.event_source_url.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.missing
vendor.teads-conversions-api.body.privacy.invalid
docs
privacy.consent_granted required Native JSON type: boolean. vendor.teads-conversions-api.body.privacy.consent_granted.missing
vendor.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.missing
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.missing
vendor.teads-conversions-api.http.method.empty
vendor.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.missing
vendor.teads-conversions-api.http.content_type.empty
vendor.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.missing
vendor.teads-conversions-api.http.headers.authorization.empty
vendor.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