pixellint

vendor/openai · vendor documented

OpenAI Ads image tags need pid and a matching data type

The image tag is /v1/sdk/events. pid, event, and data[type] are required. data[type] must be the shape OpenAI documents for that event. event=custom without custom_event_name is incomplete. The image tag has no user object. The Conversions API is a different pack on /v1/events.

data[type] has to match the event

page_viewed, order_created, and the other contents events need data[type]=contents. lead_created and registration_completed need customer_action. A custom name on a standard event is also a miss.

Rule: vendor.openai.contents_requires_contents_data

What this pack matches

Hosts
bzr.openai.com
Paths
/v1/sdk/events
Vendor docs
developers.openai.com/ads/image-tag

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
pid required It is the Pixel ID, and the image tag requires it. Fix: Set `pid` to the Pixel ID from OpenAI Ads. vendor.openai.param.pid.missing
vendor.openai.param.pid.empty
docs
event required It is a supported event name, or `custom`. OpenAI documents the image tag as requiring it. `app_installed` and `app_opened` are Conversions API only. Fix: Set `event` to a documented name such as `page_viewed`, or to `custom` with `custom_event_name`. vendor.openai.param.event.missing
vendor.openai.param.event.empty
vendor.openai.param.event.invalid
docs
data[type] required It names the data shape for the event. OpenAI documents it as required, matching the event. Fix: Set `data[type]` to the shape documented for this event, such as `contents`. vendor.openai.param.data[type].missing
vendor.openai.param.data[type].empty
vendor.openai.param.data[type].invalid
docs
custom_event_name optional It names a custom event. OpenAI documents 1-64 letters, digits, underscores, or hyphens, starting and ending with a letter or digit, and forbids standard event names. Fix: Send `custom_event_name` when `event=custom`. Do not reuse a standard event name. vendor.openai.param.custom_event_name.empty
vendor.openai.param.custom_event_name.invalid
docs
event_id optional It identifies the event for deduplication against the Conversions API. Use the same value as CAPI `id`. Fix: Send the same `event_id` the Conversions API event uses as `id`. vendor.openai.param.event_id.empty docs
oppref optional It is an OpenAI-provided attribution identifier. The image tag does not capture it for you. Fix: Pass `oppref` only when the page already has the value, or drop the empty pair. vendor.openai.param.oppref.empty docs
data[amount] optional It is the event-level monetary value in the currency's minor unit. OpenAI documents an integer. Fix: Send `data[amount]` as an integer in minor units, and send `data[currency]`. vendor.openai.param.data[amount].empty
vendor.openai.param.data[amount].invalid
docs
data[currency] optional It is the ISO 4217 currency code. OpenAI documents it as required when `data[amount]` is present. Fix: Send a three-letter code such as `USD`. vendor.openai.param.data[currency].empty
vendor.openai.param.data[currency].invalid
docs
data[plan_id] optional It identifies a subscription or trial plan. OpenAI documents it on `plan_enrollment` and `custom` data. Fix: Set `data[plan_id]` to the plan id, or drop the empty pair. vendor.openai.param.data[plan_id].empty docs
data[contents] optional It is the contents array, serialized as JSON and URL-encoded. OpenAI documents it on `contents`, `plan_enrollment`, and `custom` data. Fix: Serialize the contents array as JSON, URL-encode it, or drop the empty pair. vendor.openai.param.data[contents].empty docs
custom_requires_name required `event` is `custom` but `custom_event_name` is missing. OpenAI documents that name as required for custom events. Fix: Add `custom_event_name` with the custom event name. vendor.openai.custom_requires_name docs
amount_requires_currency required The tag carries `data[amount]` with no `data[currency]`. OpenAI documents currency as required whenever amount is set. Fix: Add `data[currency]` as an ISO 4217 code alongside the amount. vendor.openai.amount_requires_currency docs
contents_requires_contents_data required This event requires `data[type]=contents`. OpenAI documents that shape for page, content, cart, and order events. Fix: Set `data[type]` to `contents`. vendor.openai.contents_requires_contents_data docs
customer_action_requires_customer_action_data required This event requires `data[type]=customer_action`. OpenAI documents that shape for appointment, lead, and registration events. Fix: Set `data[type]` to `customer_action`. vendor.openai.customer_action_requires_customer_action_data docs
plan_enrollment_requires_plan_enrollment_data required This event requires `data[type]=plan_enrollment`. OpenAI documents that shape for subscription and trial events. Fix: Set `data[type]` to `plan_enrollment`. vendor.openai.plan_enrollment_requires_plan_enrollment_data docs
custom_requires_custom_data required A `custom` event requires `data[type]=custom`. OpenAI documents that shape for custom events. Fix: Set `data[type]` to `custom`. vendor.openai.custom_requires_custom_data docs
standard_forbids_custom_event_name required A standard event carries `custom_event_name`. OpenAI documents that parameter as required for `custom` and omitted otherwise. Fix: Drop `custom_event_name`, or set `event` to `custom`. vendor.openai.standard_forbids_custom_event_name docs
customer_action_forbids_contents required `data[type]` is `customer_action` but the tag carries `data[contents]`. OpenAI documents contents as unavailable on that shape. Fix: Remove `data[contents]`. vendor.openai.customer_action_forbids_contents docs
contents_forbids_plan_id required This data shape carries `data[plan_id]`. OpenAI documents `plan_id` on `plan_enrollment` and `custom` only. Fix: Remove `data[plan_id]`, or use `plan_enrollment` or `custom` data. vendor.openai.contents_forbids_plan_id docs
reserved_custom_event_name required `custom_event_name` matches a standard event name. OpenAI documents that a custom name cannot reuse a built-in event. Fix: Pick a name that is not a standard event, such as `quote_requested`. vendor.openai.reserved_custom_event_name docs
pii.unhashed_email required A query parameter carries what looks like a raw email address. The image tag does not support a user object, and OpenAI forbids personal data on the query string. Fix: Remove the address from the image tag. Send hashed identifiers on the Conversions API instead. vendor.openai.pii.unhashed_email docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/openai

Try this failing payload in the playground. OpenAI ads image tag missing id.

https://bzr.openai.com/v1/sdk/events

cargo install pixellint · npm install pixellint