Partnerize conversion URLs need campaign, clickref, and currency
The conversion path is /conversion, and campaign, clickref, and currency live as colon-delimited segments. Basket items are repeating [category/sku/value/quantity] groups, country is a two-letter ISO code, and a raw email in any segment is unhashed PII. cdn.performancehorizon.com is not this pack.
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 |
|---|---|---|---|---|
campaign |
required | It is the Partnerize campaign id, written as campaign:{CAMPAIGNID} on the conversion path. Fix: Put the campaign id from Partnerize in the path as campaign:{id}. | vendor.partnerize.param.campaign.missingvendor.partnerize.param.campaign.empty |
docs |
clickref |
required | The most recent captured click reference is required as a path key. Partnerize explicitly permits a blank clickref for clickless exclusive-code tracking. Fix: Replay the stored clickref in the path as clickref:{value}. | vendor.partnerize.param.clickref.missing |
docs |
currency |
optional | It is the ISO 4217 currency of the conversion. Partnerize documents it as required when the event has a monetary value. Fix: Put a three-letter currency code in the path as currency:GBP. | vendor.partnerize.param.currency.emptyvendor.partnerize.param.currency.invalid |
docs |
conversionref |
optional | It is the brand's unique conversion reference. Partnerize documents it as required for validation, and says omit it when the brand cannot generate one. Fix: Put a stable order id in the path as conversionref:{id}, or omit the pair and let Partnerize mint one. | vendor.partnerize.param.conversionref.empty |
docs |
tmethod |
optional | It is the tracking method. Partnerize documents `tmethod:2` on S2S conversion URLs. Fix: Send `tmethod:2` on a server-to-server conversion. | vendor.partnerize.param.tmethod.emptyvendor.partnerize.param.tmethod.invalid |
docs |
tplatform |
optional | It is the tracking platform. Partnerize documents `tplatform:2` on S2S conversion URLs. Fix: Send `tplatform:2` on a server-to-server conversion. | vendor.partnerize.param.tplatform.emptyvendor.partnerize.param.tplatform.invalid |
docs |
tracking_mode |
optional | It is the tracking mode. Partnerize S2S samples send `tracking_mode:api`. Fix: Send `tracking_mode:api` on a server-to-server conversion. | vendor.partnerize.param.tracking_mode.empty |
docs |
country |
optional | It is the site country of the purchase. Partnerize documents ISO 3166 letter country codes. Fix: Send a two-letter ISO 3166-1 code, such as `GB`. | vendor.partnerize.param.country.emptyvendor.partnerize.param.country.invalid |
docs |
customertype |
optional | It is whether the buyer is a first-time or repeat customer. Partnerize documents `new` or `existing`, and says leave the pair blank when the value is unknown. Fix: Send `customertype:new` or `customertype:existing`, or leave the value blank. | vendor.partnerize.param.customertype.emptyvendor.partnerize.param.customertype.invalid |
docs |
voucher |
optional | It is the voucher used at purchase. Partnerize documents that the item `value` must already reflect the discount. Fix: Send the voucher code, or leave the pair blank. | vendor.partnerize.param.voucher.empty |
docs |
fulfilment_date |
optional | It is the service delivery date. Partnerize documents `YYYY-MM-DD`. Fix: Send `fulfilment_date` as `YYYY-MM-DD`, such as `2026-05-01`. | vendor.partnerize.param.fulfilment_date.emptyvendor.partnerize.param.fulfilment_date.invalid |
docs |
fulfilment_start_date |
optional | It is the start of the fulfilment period. Partnerize documents `YYYY-MM-DD`. Fix: Send `fulfilment_start_date` as `YYYY-MM-DD`. | vendor.partnerize.param.fulfilment_start_date.emptyvendor.partnerize.param.fulfilment_start_date.invalid |
docs |
conversion_time |
optional | An optional UTC timestamp in YYYY-MM-DD HH:MM:SS form must sit outside the item block. Calendar and time ranges are checked. UTC provenance without an offset cannot be verified from the string. Fix: Send `conversion_time` as `2021-10-01+18:33:03`. | vendor.partnerize.param.conversion_time.emptyvendor.partnerize.param.conversion_time.invalid |
docs |
device |
optional | It is the converting device. Partnerize documents `bot`, `desktop`, `mobile`, `tablet`, and `Other`. Fix: Send `device:mobile` or another documented device value. | vendor.partnerize.param.device.emptyvendor.partnerize.param.device.invalid |
docs |
context |
optional | It is the converting context. Partnerize documents `web`, `m_web`, `m_app`, `in_app`, `cd_d`, `cd_p`, `other`, and `offline`. Fix: Send `context:m_web` or another documented context value. | vendor.partnerize.param.context.emptyvendor.partnerize.param.context.invalid |
docs |
custref |
optional | Optional brand customer identifier at basket level. Personal data is prohibited. | docs | |
metadata_outside_items… |
forbidden | Custom metadata must be inside an item block. Declared basket parameters take precedence. | vendor.partnerize.param.metadata_outside_items.forbidden |
docs |
category |
required | It is the item category inside a basket container. Partnerize documents `category` as required on each `[...]` item. Path item scope, starting at index 0. Fix: Put `category:{name}` inside each basket container. | vendor.partnerize.path_items.category.missingvendor.partnerize.path_items.category.empty |
docs |
sku |
optional | It is the item product code inside a basket container. Path item scope, starting at index 0. Fix: Put `sku:{code}` inside the basket container, or drop the empty pair. | vendor.partnerize.path_items.sku.empty |
docs |
value |
optional | It is the individual item value, excluding tax, delivery, and currency symbols. Partnerize multiplies it by `quantity`. Path item scope, starting at index 0. Fix: Send a number such as `19.99`, with no currency symbol or comma. | vendor.partnerize.path_items.value.emptyvendor.partnerize.path_items.value.invalid |
docs |
quantity |
required | It is the item quantity inside a basket container. Partnerize documents a positive number. Path item scope, starting at index 0. Fix: Send a positive number, such as 1 or 0.5. | vendor.partnerize.path_items.quantity.missingvendor.partnerize.path_items.quantity.emptyvendor.partnerize.path_items.quantity.invalid |
docs |
fulfilment_date |
optional | It is the service delivery date. Partnerize documents `YYYY-MM-DD`. Path item scope, starting at index 0. Fix: Send `fulfilment_date` as `YYYY-MM-DD`, such as `2026-05-01`. | vendor.partnerize.path_items.fulfilment_date.emptyvendor.partnerize.path_items.fulfilment_date.invalid |
docs |
fulfilment_start_date |
optional | It is the start of the fulfilment period. Partnerize documents `YYYY-MM-DD`. Path item scope, starting at index 0. Fix: Send `fulfilment_start_date` as `YYYY-MM-DD`. | vendor.partnerize.path_items.fulfilment_start_date.emptyvendor.partnerize.path_items.fulfilment_start_date.invalid |
docs |
currency |
optional | The actual basket currency is imported from the root path for item-value requirements. A currency hidden in an item cannot satisfy this contract. Path item scope, starting at index 0. | docs | |
product_name |
optional | Optional retail metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
product_brand |
optional | Optional retail metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
product_type |
optional | Optional retail metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
product_size |
optional | Optional retail metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
product_colour |
optional | Optional retail metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
product_gender |
optional | Optional retail metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
check_in_date |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | vendor.partnerize.path_items.check_in_date.emptyvendor.partnerize.path_items.check_in_date.invalid |
docs |
check_out_date |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | vendor.partnerize.path_items.check_out_date.emptyvendor.partnerize.path_items.check_out_date.invalid |
docs |
hotel_id |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
hotel_location |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
refundable |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
number_of_guests |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
number_of_nights |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
origin |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
dest |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
passengers |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
haul |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
return |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
flight_class |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
net_value |
optional | Optional travel metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
cover_type |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
policy_start_date |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | vendor.partnerize.path_items.policy_start_date.emptyvendor.partnerize.path_items.policy_start_date.invalid |
docs |
policy_end_date |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | vendor.partnerize.path_items.policy_end_date.emptyvendor.partnerize.path_items.policy_end_date.invalid |
docs |
monthly_payment |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
application_status |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
credit_limit |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
loan_amount |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
loan_term |
optional | Optional finance metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
contract_length |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
download_limit |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
speed |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
activation_fee |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
manufacturer |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
handset |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
minutes |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
texts |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
data |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
operating_system |
optional | Optional telecoms metadata. The guide permits omitting unavailable fields and custom item metadata. Path item scope, starting at index 0. | docs | |
destination |
forbidden | Partnerize recommends avoiding destination as a metadata name. Use dest for the flight destination. Path item scope, starting at index 0. Presence diagnostic severity: warning. | vendor.partnerize.path_items.destination.forbidden |
docs |
item_value_requires_currency |
required | Monetary item values require an actual root-level ISO currency. Path item scope, starting at index 0. | vendor.partnerize.item_value_requires_currency |
docs |
item_pii.unhashed_email |
required | A path segment carries what looks like a raw email address. Partnerize forbids personal data that could identify the end user in conversion parameters. Path item scope, starting at index 0. Fix: Drop the email from the conversion path. Use `conversionref` for the order id. | vendor.partnerize.item_pii.unhashed_email |
docs |
campaign |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.campaign.forbidden |
docs |
clickref |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.clickref.forbidden |
docs |
conversionref |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.conversionref.forbidden |
docs |
currency |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.currency.forbidden |
docs |
country |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.country.forbidden |
docs |
customertype |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.customertype.forbidden |
docs |
voucher |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.voucher.forbidden |
docs |
custref |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.custref.forbidden |
docs |
tmethod |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.tmethod.forbidden |
docs |
tplatform |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.tplatform.forbidden |
docs |
tracking_mode |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.tracking_mode.forbidden |
docs |
device |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.device.forbidden |
docs |
context |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.context.forbidden |
docs |
conversion_time |
forbidden | This basket field must be outside individual item brackets. Path item scope, starting at index 0. | vendor.partnerize.path_items.conversion_time.forbidden |
docs |
pii.unhashed_email |
required | A path segment carries what looks like a raw email address. Partnerize forbids personal data that could identify the end user in conversion parameters. Fix: Drop the email from the conversion path. Use `conversionref` for the order id. | vendor.partnerize.pii.unhashed_email |
docs |
device_requires_context |
required | Device and context must both be supplied to override device reporting. | vendor.partnerize.device_requires_context |
docs |
context_requires_device |
required | Device and context must both be supplied to override device reporting. | vendor.partnerize.context_requires_device |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/partnerize
Try this failing payload in the playground. Partnerize conversion missing campaign.
https://prf.hn/conversion/tracking_mode:api/clickref:def456/currency:GBP
cargo install pixellint
·
npm install pixellint