DEV Community

Aleksander Sekowski profile picture

Aleksander Sekowski

creator of vastlint

Joined Joined on  github website
One purchase can create four different conversion numbers.

One purchase can create four different conversion numbers.

Comments 1
3 min read

Want to connect with Aleksander Sekowski?

Create an account to connect with Aleksander Sekowski. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
The URL in the tag manager is not the URL the browser fired.

The URL in the tag manager is not the URL the browser fired.

Comments
5 min read
Hash the email. Do not hash the IP. Both mistakes still return 200.

Hash the email. Do not hash the IP. Both mistakes still return 200.

Comments
5 min read
Floodlight still needs src, type, and cat. A leftover ord=1 counts once.

Floodlight still needs src, type, and cat. A leftover ord=1 counts once.

Comments
4 min read
Pixel Helper cannot see a Conversions API POST. A 200 is not the contract.

Pixel Helper cannot see a Conversions API POST. A 200 is not the contract.

Comments
5 min read
Pixel Helper said the tag fired. Chrome Network never requested facebook.com/tr.

Pixel Helper said the tag fired. Chrome Network never requested facebook.com/tr.

Comments
6 min read
An ARTF Mutation Can Declare ACTIVATE_DEALS and Set adjust_bid. The Envelope Still Parses.

An ARTF Mutation Can Declare ACTIVATE_DEALS and Set adjust_bid. The Envelope Still Parses.

Comments
4 min read
The IAB's own VAST sample tags pass XSD validation, and two of them still break the spec

The IAB's own VAST sample tags pass XSD validation, and two of them still break the spec

Comments
5 min read
2.2 cat Codes With Omitted cattax Validate. OpenRTB Defaults to Taxonomy 1.0.

2.2 cat Codes With Omitted cattax Validate. OpenRTB Defaults to Taxonomy 1.0.

Comments
4 min read
MCP validate_vast Passes the XML the Agent Pasted. The Live Tag URL Still Has Wrappers.

MCP validate_vast Passes the XML the Agent Pasted. The Live Tag URL Still Has Wrappers.

Comments
4 min read
Curated Deals Still Look Like Plain PMP Lines. OpenRTB Has No Curation Field.

Curated Deals Still Look Like Plain PMP Lines. OpenRTB Has No Curation Field.

Comments
5 min read
A Bare Mezzanine URL Validates Like VAST 4.0. SSAI at 4.1 Needs Four Attributes.

A Bare Mezzanine URL Validates Like VAST 4.0. SSAI at 4.1 Needs Four Attributes.

Comments
3 min read
playbackmethod: [1, 2] Validates as JSON. RMT Sound State Needs One Answer.

playbackmethod: [1, 2] Validates as JSON. RMT Sound State Needs One Answer.

Comments
4 min read
A Native Bid Skips required: 1. The Response Still Validates Alone.

A Native Bid Skips required: 1. The Response Still Validates Alone.

Comments
4 min read
A Pause NonLinear MP4 Without Duration Validates. Quartile Beacons Never Schedule.

A Pause NonLinear MP4 Without Duration Validates. Quartile Beacons Never Schedule.

Comments
4 min read
ARTF Envelope tmax as "150" Is Not OpenRTB bid_request.tmax. The Agent Still Gets Called.

ARTF Envelope tmax as "150" Is Not OpenRTB bid_request.tmax. The Agent Still Gets Called.

Comments
4 min read
AdCP Scopes the Buy in adagents.json. OpenRTB imp Does Not Carry That Scope Back.

AdCP Scopes the Buy in adagents.json. OpenRTB imp Does Not Carry That Scope Back.

Comments
4 min read
The Inline Logs Impressions. The Wrapper Hop Does Not. VAST Still Requires Both.

The Inline Logs Impressions. The Wrapper Hop Does Not. VAST Still Requires Both.

Comments
3 min read
exclusive: true in adagents.json Does Not Retire the ads.txt RESELLER Line

exclusive: true in adagents.json Does Not Retire the ads.txt RESELLER Line

Comments
4 min read
gclid on the Next Page Does Not Grant ad_storage. URL Passthrough Is Not Consent.

gclid on the Next Page Does Not Grant ad_storage. URL Passthrough Is Not Consent.

Comments
5 min read
Mezzanine-Only SIMID Validates for SSAI. Nobody Runs the Interactive Iframe.

Mezzanine-Only SIMID Validates for SSAI. Nobody Runs the Interactive Iframe.

Comments
4 min read
mincpmpersec Without poddur Validates as JSON. OpenRTB Prices Dynamic Pods.

mincpmpersec Without poddur Validates as JSON. OpenRTB Prices Dynamic Pods.

Comments
4 min read
Pinterest CAPI Requires event_id. Meta Only Warns on the Same Field.

Pinterest CAPI Requires event_id. Meta Only Warns on the Same Field.

Comments
4 min read
VAST Extension type="pos" With a plcmt Child Still Validates. Stitchers Read type.

VAST Extension type="pos" With a plcmt Child Still Validates. Stitchers Read type.

Comments
4 min read
Publisher-Stage ARTF With bid_response on the Envelope Stages the Agent Wrong

Publisher-Stage ARTF With bid_response on the Envelope Stages the Agent Wrong

Comments
4 min read
Raw fbclid in user_data.fbc Is Not Meta's _fbc Cookie. The CAPI POST Can Still Return 200.

Raw fbclid in user_data.fbc Is Not Meta's _fbc Cookie. The CAPI POST Can Still Return 200.

Comments
4 min read
Root-Level VAST Error and Ad in One Response Breaks the VAST 4.0 Choice

Root-Level VAST Error and Ad in One Response Breaks the VAST 4.0 Choice

Comments
4 min read
adagents.json Says direct. brand.json Says delegated. Both Files Return 200.

adagents.json Says direct. brand.json Says delegated. Both Files Return 200.

Comments
5 min read
gpp_sid=7 Is US National. us_privacy=1YNN Is Not the Same Hop.

gpp_sid=7 Is US National. us_privacy=1YNN Is Not the Same Hop.

Comments
5 min read
Lowercase apiFramework="simid" Passes VAST. SIMID Players Skip the Interactive Layer.

Lowercase apiFramework="simid" Passes VAST. SIMID Players Skip the Interactive Layer.

Comments
3 min read
skipafter Without skip=1 Validates as JSON. RMT Cannot Derive a Skip Contract From It.

skipafter Without skip=1 Validates as JSON. RMT Cannot Derive a Skip Contract From It.

Comments
4 min read
AppsFlyer S2S Returns 200 When the iOS App ID Skips the id Prefix. The Event Never Lands.

AppsFlyer S2S Returns 200 When the iOS App ID Skips the id Prefix. The Event Never Lands.

Comments
4 min read
plcmt=5 With playbackmethod=1 Validates. Those Two Integers Name Different Formats.

plcmt=5 With playbackmethod=1 Validates. Those Two Integers Name Different Formats.

Comments
5 min read
ARTF ADD_METRICS Can Propose a Metric With No Type. OpenRTB Requires Metric.type.

ARTF ADD_METRICS Can Propose a Metric With No Type. OpenRTB Requires Metric.type.

Comments
4 min read
TikTok Events API Wants ISO 8601. Unix Epoch Gets Stamped as Arrival Time.

TikTok Events API Wants ISO 8601. Unix Epoch Gets Stamped as Arrival Time.

Comments 1
4 min read
AAMP Can Close a Video Buy on AdCP Duration Bounds. Nobody Opened the VAST Tag.

AAMP Can Close a Video Buy on AdCP Duration Bounds. Nobody Opened the VAST Tag.

Comments
4 min read
hp=0 in SupplyChain 1.1 Marks Custody Hops. ads.txt Checks on Them False-Fail.

hp=0 in SupplyChain 1.1 Marks Custody Hops. ads.txt Checks on Them False-Fail.

Comments
5 min read
Reject on the Banner Can Still Be Grant in gdpr_consent. Withdraw Has to Change the Hop.

Reject on the Banner Can Still Be Grant in gdpr_consent. Withdraw Has to Change the Hop.

Comments
5 min read
A VAST Tag Can Ship AdVerifications and Still Deliver Zero OMID Measurement

A VAST Tag Can Ship AdVerifications and Still Deliver Zero OMID Measurement

Comments
5 min read
OpenRTB 3.0 Placement With Only tagid Has No AdCOM Subtype

OpenRTB 3.0 Placement With Only tagid Has No AdCOM Subtype

Comments
3 min read
A TC String in the gpp Parameter Decodes as Header Type 2, Not Type 3

A TC String in the gpp Parameter Decodes as Header Type 2, Not Type 3

Comments
4 min read
plcmt=5 in the VAST Tag Does Not Make a Linear MP4 a Pause Ad

plcmt=5 in the VAST Tag Does Not Make a Linear MP4 a Pause Ad

Comments
5 min read
MCP validate_bid_request Defaults to profile spec. Google AB Needs at: 3 and billing_id.

MCP validate_bid_request Defaults to profile spec. Google AB Needs at: 3 and billing_id.

Comments
4 min read
Reddit CAPI v3 Wants Milliseconds. Meta's Seconds Helper Lands in 1970.

Reddit CAPI v3 Wants Milliseconds. Meta's Seconds Helper Lands in 1970.

Comments
5 min read
A Companion With No Width Is Not a 300x250. The Player Cannot Match It.

A Companion With No Width Is Not a 300x250. The Player Cannot Match It.

Comments
3 min read
LIFECYCLE_DSP_BID_RESPONSE Can Ship Without bid_response. The Agent Has Nothing to Shade.

LIFECYCLE_DSP_BID_RESPONSE Can Ship Without bid_response. The Agent Has Nothing to Shade.

Comments
4 min read
AAMP Can Finish a Video Buy With a Wrapper. It Cannot Prove the InLine Exists.

AAMP Can Finish a Video Buy With a Wrapper. It Cannot Prove the InLine Exists.

5
Comments 6
5 min read
One CAPI JSON cannot serve every vendor

One CAPI JSON cannot serve every vendor

1
Comments 1
2 min read
OpenAI CAPI is not Meta with a new host

OpenAI CAPI is not Meta with a new host

Comments
2 min read
imp.native.request is a JSON string, not a nested object.

imp.native.request is a JSON string, not a nested object.

1
Comments
2 min read
adagents.json does not audit schain. Those two trust files do not talk.

adagents.json does not audit schain. Those two trust files do not talk.

Comments
2 min read
The Wrapper You QA Is Not the Creative That Plays. The Inline Lives on Another Host.

The Wrapper You QA Is Not the Creative That Plays. The Inline Lives on Another Host.

Comments
2 min read
A Live VAST URL Is Not a Paste. The Tester and the Inspector Do Different Jobs.

A Live VAST URL Is Not a Paste. The Tester and the Inspector Do Different Jobs.

1
Comments
3 min read
VAST 4.1 Dropped UniversalAdId's idValue Attribute. The ID Has to Live in the Text.

VAST 4.1 Dropped UniversalAdId's idValue Attribute. The ID Has to Live in the Text.

Comments
4 min read
LinkedIn's Conversions API Wants userIds Even When You Match on userInfo

LinkedIn's Conversions API Wants userIds Even When You Match on userInfo

Comments
4 min read
OpenRTB Video Still Sends placement: 1. Buyers Filter on plcmt Now.

OpenRTB Video Still Sends placement: 1. Buyers Filter on plcmt Now.

Comments
4 min read
A Linear VAST Tag Can Ship an MP4 and Still Be Missing Duration

A Linear VAST Tag Can Ship an MP4 and Still Be Missing Duration

Comments
4 min read
A Segment Track Call Needs an Event Name. The HTTP 200 Does Not Check.

A Segment Track Call Needs an Event Name. The HTTP 200 Does Not Check.

Comments
3 min read
PostHog Capture Treats an Epoch Timestamp as Ingestion Time

PostHog Capture Treats an Epoch Timestamp as Ingestion Time

Comments
3 min read
GA4 Measurement Protocol Wants Microseconds. Date.now() Is Milliseconds.

GA4 Measurement Protocol Wants Microseconds. Date.now() Is Milliseconds.

Comments
4 min read
loading...