Skip to content

feat(ads): add measurement tags to Ad contract#6310

Merged
idoshamun merged 2 commits into
mainfrom
feat/ad-measurement-tags-signature
Jul 13, 2026
Merged

feat(ads): add measurement tags to Ad contract#6310
idoshamun merged 2 commits into
mainfrom
feat/ad-measurement-tags-signature

Conversation

@idoshamun

@idoshamun idoshamun commented Jul 13, 2026

Copy link
Copy Markdown
Member

What

Extends the skadi `Ad` signature with third-party measurement support for enterprise advertisers (CM360 JS/iframe tags, DoubleVerify viewability/IVT/suitability).

```ts
export interface Ad {
// ...
tags?: AdMeasurementTag[];
}

export interface AdMeasurementTag {
markup: string; // raw tag HTML, macros unsubstituted
overlay?: boolean; // frame must cover the creative (e.g. DV viewability)
}
```

Why this shape

  • Server describes, client decides execution. No ad-level `renderMode` — the same DV ad runs inline on webapp but inside a web-origin frame on the extension (MV3 CSP forbids remote JS in the extension page). Framing is a per-surface decision, not a property of the ad.
  • `pixel[]` stays the native path. skadi sends image impression trackers in the existing `pixel[]` whenever available, so the common CM360 advertiser is fully native and frameless on every surface. `tags[]` is the escape hatch only for JS-based measurement.
  • No vendor field. Client behavior is identical regardless of vendor: inject markup, substitute macros, fire.
  • One frame per ad. On the extension all of an ad's `tags[]` load into a single web-origin frame; `overlay` is ORed across them — card-sized only when geometry is actually required, otherwise 0×0 hidden.
  • `markup` unsubstituted. Cachebuster/consent macros (`${GDPR}`, `[timestamp]`) are filled client-side at fire time.

Scope

Signature only. Rendering (native macro substitution on web, the web-origin measurement frame on the extension) lands in follow-ups. Coordinate with the ad-server team so skadi populates `tags[]` accordingly.

Ref: `plans/cm360-doubleverify-support.md`

Preview domain

https://feat-ad-measurement-tags-signatu.preview.app.daily.dev

Extend the skadi Ad signature with an optional tags[] array carrying
third-party measurement tags (CM360 JS/iframe, DoubleVerify) that cannot
run natively under the extension MV3 CSP. Each tag holds raw markup with
macros unsubstituted plus an overlay flag indicating whether it must cover
the creative (viewability geometry). Execution stays client-decided:
inline on web, single web-origin frame on the extension.
@vercel

vercel Bot commented Jul 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
daily-webapp Ready Ready Preview Jul 13, 2026 2:18pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
storybook Ignored Ignored Jul 13, 2026 2:18pm

Request Review

Removed comments regarding third-party measurement tags from the AdMeasurementTag interface.
@idoshamun idoshamun merged commit 5866d87 into main Jul 13, 2026
5 of 11 checks passed
@idoshamun idoshamun deleted the feat/ad-measurement-tags-signature branch July 13, 2026 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant