Skip to content

feat(ads): pixels, conversions API and custom conversions - #38

Merged
alihesari merged 5 commits into
mainfrom
feature/ads-tracking
Oct 18, 2026
Merged

alihesari merged 5 commits into
mainfrom
feature/ads-tracking

Conversation

@alihesari

Copy link
Copy Markdown
Member

What changed

  • ads().sendPixelConversions(params, idempotencyKey): the idempotent Conversions API send at POST /v1/ads/conversions/events, key sent as the Idempotency-Key header (required, blank throws). ads().listConversionBatches(workspaceId, connectionId, limit) reads GET /v1/ads/conversions/events.
  • ads().uploadConversions now returns ConversionUploadResult (id, accepted, eventCount, replayed) instead of a bare count, and has an overload taking an optional idempotency key. Existing callers reading the count switch to .accepted().
  • Pixels: pixels, createPixel, pixel, updatePixel, sharePixel, pixelStats, eventMatchQuality with AdPixel, AdPixelDetail, AdPixelStats, EventMatchQuality records.
  • Custom conversions: customConversions, createCustomConversion, customConversion, updateCustomConversion, deleteCustomConversion with CustomConversion / CustomConversionRule and CreateCustomConversionParams / UpdateCustomConversionParams.
  • ApiClient.request gains an overload with extra headers (internal), which is how the idempotency header is sent.
  • README section "Tracking" and an Unreleased CHANGELOG entry. No version bump, no tag.

Tests

mvn -B verify: BUILD SUCCESS, 177 tests, 0 failures, warning-free. New AdsTrackingTest covers the header on the idempotent send (and its absence on the plain upload), the batch list filters, a pixel read, match quality and a custom conversion create plus delete-with-body.

Owed

  • fopost-spring does not reference uploadConversions, so no lockstep PR was needed; its dependency bump happens at release.
  • Release is batched by Ali.

@alihesari
alihesari merged commit 1287778 into main Oct 18, 2026
3 checks passed
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