pixellint

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

Hosts
pt.ispot.tv, staging-pt.ispot.tv
Paths
Full path expression: ^/v2/[^/]*\.gif$
Vendor docs
developer.ispot.tv/sites/default/files/TV%20Conversion%20Integration%20Guide_2023.pdf

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.missing
vendor.ispot-conversion.param.tracking_code.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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.empty
vendor.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