iSpot conversion pixels preserve defaults and check optional event data.
Omitted app and type retain the documented web and visit defaults. Supplied general, retail and automotive values receive advisory checks for published field limits. Event names remain configured values.
Amount precision and custom-data counts follow the published conversion guide. Structured legacy custom data stays opaque. Supplied IPs accept IPv4 and IPv6; browser pixels do not require forwarding headers. Account setup and attribution need external context.
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 |
|---|---|---|---|---|
tracking_code |
required | It is the Site ID on the TV conversion pixel. iSpot documents it as TC-XXXX-X. Fix: Put the Site ID from iSpot in the path so it reads /v2/TC-{account}-{site}.gif. | vendor.ispot-conversion.param.tracking_code.missingvendor.ispot-conversion.param.tracking_code.emptyvendor.ispot-conversion.param.tracking_code.invalid |
docs |
type |
optional | The conversion guide defaults an omitted type to visit. Supplied event names have a 32-character limit and use underscores in place of whitespace. Event names are configured, not a closed enum. Presence diagnostic severity: warning. Maximum decoded characters: 32. | vendor.ispot-conversion.param.type.emptyvendor.ispot-conversion.param.type.invalid |
docs |
app |
optional | The conversion guide defaults an omitted app to web. Use app only for a dedicated mobile app. Presence diagnostic severity: warning. Maximum decoded characters: 4. | vendor.ispot-conversion.param.app.emptyvendor.ispot-conversion.param.app.invalid |
docs |
cid |
optional | The conversion guide limits optional cid to 128 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 128. | vendor.ispot-conversion.param.cid.invalid |
docs |
campaignid |
optional | The conversion guide limits optional campaignid to 64 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 64. | vendor.ispot-conversion.param.campaignid.invalid |
docs |
channel |
optional | The conversion guide limits optional channel to 64 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 64. | vendor.ispot-conversion.param.channel.invalid |
docs |
customdata |
optional | The conversion guide limits customdata to 256 characters and up to five comma-separated dashboard values. Structured legacy server custom data remains opaque; high-cardinality correctness needs surrounding context. Presence diagnostic severity: warning. Maximum decoded characters: 256. | vendor.ispot-conversion.param.customdata.emptyvendor.ispot-conversion.param.customdata.invalid |
docs |
customertype |
optional | The conversion guide limits optional customertype to 32 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 32. | vendor.ispot-conversion.param.customertype.invalid |
docs |
refid |
optional | The conversion guide limits optional refid to 128 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 128. | vendor.ispot-conversion.param.refid.invalid |
docs |
uid |
optional | The conversion guide limits optional uid to 128 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 128. | vendor.ispot-conversion.param.uid.invalid |
docs |
orderid |
optional | The conversion guide limits optional orderid to 64 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 64. | vendor.ispot-conversion.param.orderid.invalid |
docs |
sku |
optional | The conversion guide limits optional sku to 256 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 256. | vendor.ispot-conversion.param.sku.invalid |
docs |
make |
optional | The conversion guide limits optional make to 32 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 32. | vendor.ispot-conversion.param.make.invalid |
docs |
model |
optional | The conversion guide limits optional model to 64 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 64. | vendor.ispot-conversion.param.model.invalid |
docs |
tier |
optional | The conversion guide limits optional tier to 32 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 32. | vendor.ispot-conversion.param.tier.invalid |
docs |
trim |
optional | The conversion guide limits optional trim to 64 characters. Values are configured by the integration and remain open. Presence diagnostic severity: warning. Maximum decoded characters: 64. | vendor.ispot-conversion.param.trim.invalid |
docs |
year |
optional | The conversion guide limits optional year to 16 characters. Values are configured by the integration and remain open. The source declares a string, so four-digit numeric years are not imposed. Presence diagnostic severity: warning. Maximum decoded characters: 16. | vendor.ispot-conversion.param.year.invalid |
docs |
amount |
optional | The retail table declares decimal(7,2). The advisory accepts signed values with up to five significant integer digits and two fractional digits, preserving zero and leading zero padding. Presence diagnostic severity: warning. | vendor.ispot-conversion.param.amount.emptyvendor.ispot-conversion.param.amount.invalid |
docs |
ip |
optional | An optional original-client IP override. Current iSpot matching guidance also allows IPv6 with an identity partner, so this syntax check accepts both IP families. Omission does not imply missing forwarding. Presence diagnostic severity: warning. | vendor.ispot-conversion.param.ip.emptyvendor.ispot-conversion.param.ip.invalid |
docs |
datetime |
optional | The server guide describes the original client visit time in UTC, YYYY-MM-DD HH:MM:SS. This advisory checks calendar validity at second resolution. Omission retains immediate browser and header-based integrations; no event-age window is invented. Presence diagnostic severity: warning. | vendor.ispot-conversion.param.datetime.emptyvendor.ispot-conversion.param.datetime.invalid |
docs |
method |
optional | The documented conversion image and server-side endpoint use GET. Complete HTTP capture contract. Presence diagnostic severity: warning. | vendor.ispot-conversion.http.method.emptyvendor.ispot-conversion.http.method.invalid |
docs |
headers.x-forwarded-for |
optional | The server guide permits a forwarded chain with the original client address first. Validate supplied IP-chain syntax without requiring the header on browser or query-IP requests. Address provenance is external. Complete HTTP capture contract. Presence diagnostic severity: warning. | vendor.ispot-conversion.http.headers.x-forwarded-for.emptyvendor.ispot-conversion.http.headers.x-forwarded-for.invalid |
docs |
Validate a payload
pixellint validate url "$ARTIFACT" --rulepack vendor/ispot-conversion
Try this failing payload in the playground. An iSpot retail conversion with an over-precision amount.
https://pt.ispot.tv/v2/TC-1234-1.gif?app=web&type=purchase&amount=12.345
cargo install pixellint
·
npm install pixellint