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.
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 |
|---|---|---|---|---|
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.missingvendor.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.missingvendor.openai.param.event.emptyvendor.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].missingvendor.openai.param.data[type].emptyvendor.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.emptyvendor.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].emptyvendor.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].emptyvendor.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