feat: add Pinterest click ID capture (epik/_epik)#1265
Conversation
Add Pinterest _epik parameter mapping to integrationMappingExternal. - Maps _epik to Pinterest.click_id custom flag - Supports capture from URL query params, cookies, and localStorage - Follows standard priority: query params > localStorage > cookies - Outputs to CUSTOM_FLAGS (same as other click ID integrations) Reference: https://help.pinterest.com/en/business/article/add-event-codes Testing: - Verified extraction from URL, cookie, and localStorage sources - Confirmed priority resolution works correctly - Validated custom flag mapping to Pinterest.click_id
Co-authored-by: Alex S <49695018+alexs-mparticle@users.noreply.github.com>
- Add epik parameter mapping in addition to _epik - Both epik and _epik map to Pinterest.click_id custom flag - Support capture from query params, cookies, and localStorage - Add comprehensive tests for both parameter variants - Reference: https://developers.pinterest.com/docs/track-conversions/track-conversions-in-the-api/
added output for _epik
Co-authored-by: Robert Ing <rmi22186@gmail.com>
…sert value is defined
Stub epik in getQueryParams and expect Pinterest.click_id on events, matching the Snap integration test pattern.
Extract expectCapturedSnapchatAndPinterestFlags helper to satisfy duplication threshold on new code.
- Add expectCapturedGoogleFacebookFlags helper - Remove duplicate commerce it blocks (identical copies)
- expectStubbedIntegrationCaptureFlags wraps Google/Facebook + Snap/Pinterest - Shared commerce purchase helpers and constants - logThreeEventsUploadAndParseBatch for batch upload tests
Replace duplicated event/pageview and commerce it() bodies with CAPTURE_CUSTOM_FLAG_CASES and COMMERCE_CAPTURE_CASES tables.
…stomFlags block - Fix indentation and close describe before partner identities suite - Use stable assertions (toBeDefined + includes) per review
Sonar rule javascript:S7764 prefers globalThis over window in tests; behavior unchanged under jsdom.
Satisfies Sonar no-zero-fraction rule; value unchanged.
A missing brace nested _scid under _epik and broke integrationMappingExternal parsing. Restore _scid as a top-level key next to Pinterest entries.
Assert both Pinterest source keys are registered in filtered mappings, then that Pinterest.click_id is one of the input values (same key, last-write wins).
epik and _epik map to the same custom flag. Prefer query params over localStorage and cookies, then localStorage over cookies, mirroring Facebook fbclid/_fbc and Rokt-style precedence. Add Jest coverage for each tier.
Add clickIdsAfterFullCaptureAllMode helper; drive Pinterest, Snapchat, and Rokt #capture cases from tables; consolidate capture V2 mode gating tests.
… tests Restores Window augmentation typing for mParticle (fixes rollup TS2352). Sonar may flag window again; acceptable tradeoff.
PR SummaryMedium Risk Overview Updates Reviewed by Cursor Bugbot for commit c5abf7d. Bugbot is set up for automated code reviews on this repo. Configure here. |
|



Background
epikquery parameter and/or theepik/_epikcookie (and similar storage). Those values are used with Pinterest Conversions API / tag flows.localStorageinto custom flags and related outputs. Pinterest was not represented in that mapping, so those IDs were not captured consistently for downstream event payloads.epikand_epikboth correspond to the same logical Pinterest click id; they must map to a single custom flag without letting lower-priority sources override a URL value in ambiguous cases.What Has Changed
src/integrationCapture.tsepikand_epiktointegrationMappingExternal, both mapped to custom flagPinterest.click_id, with references to Pinterest developer and help documentation where appropriate.capture(): when a Pinterest id appears in the query string, Pinterest keys are dropped from cookies andlocalStoragebefore merge; when there is no query Pinterest id but one exists inlocalStorage, Pinterest keys are dropped from cookies—aligned with existing Facebook (fbclid/_fbc) and Rokt precedence patterns._scid/SnapchatConversions.Cookie1as a sibling mapping (no nesting under Pinterest keys).test/jest/integration-capture.spec.ts: coverage for Pinterest from query, cookie, andlocalStorage; precedence cases; custom flags; constructor keys; refactors to reduce duplication and keep Sonar duplication down where practical.test/src/tests-integration-capture.ts: Karma-style coverage for captured custom flags including Pinterest alongside existing integrations (e.g. Snap), using shared expectations/helpers where the file already does so.windowfor DOM globals where needed so the distribution build (Rollup + TypeScript) stays compatible withWindowaugmentation formParticle.Screenshots/Video
Checklist
Additional Notes
patch-1tofeat/pinterest-click-id-capturefor the semantic branch name check.Reference Issue (For employees only. Ignore if you are an outside contributor)
go/jticket.