From 1fa20f6335bdc277e42eee3a1f2265cb7f40efb4 Mon Sep 17 00:00:00 2001 From: dmytro-po Date: Wed, 25 Feb 2026 17:28:38 +0200 Subject: [PATCH 1/2] AGT-787: partnerAuctionId to analytical module --- .../intentIqConstants/intentIqConstants.js | 2 +- modules/intentIqAnalyticsAdapter.js | 27 ++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/libraries/intentIqConstants/intentIqConstants.js b/libraries/intentIqConstants/intentIqConstants.js index 6bcf994d2b4..432ea6ff6a4 100644 --- a/libraries/intentIqConstants/intentIqConstants.js +++ b/libraries/intentIqConstants/intentIqConstants.js @@ -9,7 +9,7 @@ export const BLACK_LIST = "L"; export const CLIENT_HINTS_KEY = "_iiq_ch"; export const EMPTY = "EMPTY"; export const GVLID = "1323"; -export const VERSION = 0.33; +export const VERSION = 0.35; export const PREBID = "pbjs"; export const HOURS_24 = 86400000; export const HOURS_72 = HOURS_24 * 3; diff --git a/modules/intentIqAnalyticsAdapter.js b/modules/intentIqAnalyticsAdapter.js index bf179d3e880..15823d1eb39 100644 --- a/modules/intentIqAnalyticsAdapter.js +++ b/modules/intentIqAnalyticsAdapter.js @@ -218,7 +218,7 @@ function bidWon(args, isReportExternal) { if (shouldSendReport(isReportExternal)) { const success = receivePartnerData(); - const preparedPayload = preparePayload(args); + const preparedPayload = preparePayload(args, isReportExternal); if (!preparedPayload) return false; if (success === false) { preparedPayload[PARAMS_NAMES.terminationCause] = -1 @@ -268,7 +268,7 @@ function getRandom(start, end) { return Math.floor(Math.random() * (end - start + 1) + start); } -export function preparePayload(data) { +export function preparePayload(data, isReportExternal) { const result = getDefaultDataObject(); const fullUrl = getCurrentUrl(); result[PARAMS_NAMES.partnerId] = iiqAnalyticsAnalyticsAdapter.initOptions.partner; @@ -297,7 +297,7 @@ export function preparePayload(data) { if (iiqAnalyticsAnalyticsAdapter.initOptions.configSource) { result[PARAMS_NAMES.ABTestingConfigurationSource] = iiqAnalyticsAnalyticsAdapter.initOptions.configSource } - prepareData(data, result); + prepareData(data, result, isReportExternal); if (shouldSubscribeOnGAM()) { if (!reportList[result.placementId] || !reportList[result.placementId][result.prebidAuctionId]) { @@ -327,7 +327,7 @@ function fillEidsData(result) { } } -function prepareData(data, result) { +function prepareData(data, result, isReportExternal) { const adTypeValue = data.adType || data.mediaType; if (data.bidderCode) { @@ -387,7 +387,12 @@ function prepareData(data, result) { } result.biddingPlatformId = data.biddingPlatformId || 1; - result.partnerAuctionId = 'BW'; + + if (isReportExternal && data && data.partnerAuctionId) { + result.partnerAuctionId = data.partnerAuctionId; + } else { + result.partnerAuctionId = 'BW'; + } } function extractPlacementId(data) { @@ -424,6 +429,7 @@ function constructFullUrl(data) { const reportMethod = iiqAnalyticsAnalyticsAdapter.initOptions.reportMethod; const partnerData = window[identityGlobalName]?.partnerData; const currentBrowserLowerCase = detectBrowser(); + const partnerAuctionId = data.partnerAuctionId || 'BW'; data = btoa(JSON.stringify(data)); report.push(data); @@ -434,6 +440,7 @@ function constructFullUrl(data) { baseUrl + '?pid=' + iiqAnalyticsAnalyticsAdapter.initOptions.partner + + '&paucid=' + encodeURIComponent(JSON.stringify([partnerAuctionId])) + '&mct=1' + (iiqAnalyticsAnalyticsAdapter.initOptions?.fpid ? '&iiqid=' + encodeURIComponent(iiqAnalyticsAnalyticsAdapter.initOptions.fpid.pcid) @@ -451,17 +458,17 @@ function constructFullUrl(data) { (cmpData.gdprString ? '&gdpr_consent=' + encodeURIComponent(cmpData.gdprString) + '&gdpr=1' : '&gdpr=0'); url = appendSPData(url, partnerData); url = appendVrrefAndFui(url, iiqAnalyticsAnalyticsAdapter.initOptions.domainName); - - if (reportMethod === 'POST') { - return { url, method: 'POST', payload: JSON.stringify(report) }; - } - url += '&payload=' + encodeURIComponent(JSON.stringify(report)); url = handleAdditionalParams( currentBrowserLowerCase, url, 2, iiqAnalyticsAnalyticsAdapter.initOptions.additionalParams ); + + if (reportMethod === 'POST') { + return { url, method: 'POST', payload: JSON.stringify(report) }; + } + url += '&payload=' + encodeURIComponent(JSON.stringify(report)); return { url, method: 'GET' }; } From 324ce1f4aee868d00decb33259872e6eebc44315 Mon Sep 17 00:00:00 2001 From: dmytro-po Date: Thu, 26 Feb 2026 16:47:23 +0200 Subject: [PATCH 2/2] AGT-787: Some fix and tests --- modules/intentIqAnalyticsAdapter.js | 59 +++++++------------ .../modules/intentIqAnalyticsAdapter_spec.js | 52 ++++++++++++++++ 2 files changed, 73 insertions(+), 38 deletions(-) diff --git a/modules/intentIqAnalyticsAdapter.js b/modules/intentIqAnalyticsAdapter.js index 15823d1eb39..f411b773169 100644 --- a/modules/intentIqAnalyticsAdapter.js +++ b/modules/intentIqAnalyticsAdapter.js @@ -218,7 +218,7 @@ function bidWon(args, isReportExternal) { if (shouldSendReport(isReportExternal)) { const success = receivePartnerData(); - const preparedPayload = preparePayload(args, isReportExternal); + const preparedPayload = preparePayload(args); if (!preparedPayload) return false; if (success === false) { preparedPayload[PARAMS_NAMES.terminationCause] = -1 @@ -268,7 +268,7 @@ function getRandom(start, end) { return Math.floor(Math.random() * (end - start + 1) + start); } -export function preparePayload(data, isReportExternal) { +export function preparePayload(data) { const result = getDefaultDataObject(); const fullUrl = getCurrentUrl(); result[PARAMS_NAMES.partnerId] = iiqAnalyticsAnalyticsAdapter.initOptions.partner; @@ -297,7 +297,7 @@ export function preparePayload(data, isReportExternal) { if (iiqAnalyticsAnalyticsAdapter.initOptions.configSource) { result[PARAMS_NAMES.ABTestingConfigurationSource] = iiqAnalyticsAnalyticsAdapter.initOptions.configSource } - prepareData(data, result, isReportExternal); + prepareData(data, result); if (shouldSubscribeOnGAM()) { if (!reportList[result.placementId] || !reportList[result.placementId][result.prebidAuctionId]) { @@ -327,30 +327,16 @@ function fillEidsData(result) { } } -function prepareData(data, result, isReportExternal) { +function prepareData(data, result) { const adTypeValue = data.adType || data.mediaType; - if (data.bidderCode) { - result.bidderCode = data.bidderCode; - } - if (data.cpm) { - result.cpm = data.cpm; - } - if (data.currency) { - result.currency = data.currency; - } - if (data.originalCpm) { - result.originalCpm = data.originalCpm; - } - if (data.originalCurrency) { - result.originalCurrency = data.originalCurrency; - } - if (data.status) { - result.status = data.status; - } - if (data.size) { - result.size = data.size; - } + if (data.bidderCode) result.bidderCode = data.bidderCode; + if (data.cpm) result.cpm = data.cpm; + if (data.currency) result.currency = data.currency; + if (data.originalCpm) result.originalCpm = data.originalCpm; + if (data.originalCurrency) result.originalCurrency = data.originalCurrency; + if (data.status) result.status = data.status; + if (data.size) result.size = data.size; if (typeof data.pos === 'number') { result.pos = data.pos; } else if (data.adUnitCode) { @@ -360,9 +346,7 @@ function prepareData(data, result, isReportExternal) { result.prebidAuctionId = data.auctionId || data.prebidAuctionId; - if (adTypeValue) { - result[PARAMS_NAMES.adType] = adTypeValue; - } + if (adTypeValue) result[PARAMS_NAMES.adType] = adTypeValue; switch (iiqAnalyticsAnalyticsAdapter.initOptions.adUnitConfig) { case 1: @@ -388,11 +372,7 @@ function prepareData(data, result, isReportExternal) { result.biddingPlatformId = data.biddingPlatformId || 1; - if (isReportExternal && data && data.partnerAuctionId) { - result.partnerAuctionId = data.partnerAuctionId; - } else { - result.partnerAuctionId = 'BW'; - } + if (data?.partnerAuctionId) result.partnerAuctionId = data.partnerAuctionId; } function extractPlacementId(data) { @@ -413,7 +393,6 @@ function getDefaultDataObject() { return { inbbl: false, pbjsver: prebidVersion, - partnerAuctionId: 'BW', reportSource: 'pbjs', jsversion: VERSION, partnerId: -1, @@ -429,7 +408,7 @@ function constructFullUrl(data) { const reportMethod = iiqAnalyticsAnalyticsAdapter.initOptions.reportMethod; const partnerData = window[identityGlobalName]?.partnerData; const currentBrowserLowerCase = detectBrowser(); - const partnerAuctionId = data.partnerAuctionId || 'BW'; + const partnerAuctionId = data?.partnerAuctionId; data = btoa(JSON.stringify(data)); report.push(data); @@ -439,9 +418,13 @@ function constructFullUrl(data) { let url = baseUrl + '?pid=' + - iiqAnalyticsAnalyticsAdapter.initOptions.partner + - '&paucid=' + encodeURIComponent(JSON.stringify([partnerAuctionId])) + - '&mct=1' + + iiqAnalyticsAnalyticsAdapter.initOptions.partner; + if (partnerAuctionId) { + url += + '&paucid=' + + encodeURIComponent(JSON.stringify([partnerAuctionId])); + } + url += '&mct=1' + (iiqAnalyticsAnalyticsAdapter.initOptions?.fpid ? '&iiqid=' + encodeURIComponent(iiqAnalyticsAnalyticsAdapter.initOptions.fpid.pcid) : '') + diff --git a/test/spec/modules/intentIqAnalyticsAdapter_spec.js b/test/spec/modules/intentIqAnalyticsAdapter_spec.js index 8389ca4a644..0a31b43b5f5 100644 --- a/test/spec/modules/intentIqAnalyticsAdapter_spec.js +++ b/test/spec/modules/intentIqAnalyticsAdapter_spec.js @@ -1020,4 +1020,56 @@ describe("IntentIQ tests all", function () { // Verify that the group from options is used in the payload expect(decodedPayload).to.have.property("abGroup", providedGroup); }); + + it("should include partnerAuctionId in query params and payload if provided by partner (GET)", function () { + const partnerAuctionId = "TEST-PAUCID-123"; + enableAnalyticWithSpecialOptions({ + manualWinReportEnabled: true, + reportMethod: "GET" + }); + + window[`intentIqAnalyticsAdapter_${partner}`].reportExternalWin({ + cpm: 1, + currency: "USD", + adType: "banner", + partnerAuctionId + }); + + const request = server.requests[0]; + const url = new URL(request.url); + const paucidParam = url.searchParams.get("paucid"); + const payloadEncoded = url.searchParams.get("payload"); + const payloadDecoded = JSON.parse( + atob(JSON.parse(payloadEncoded)[0]) + ); + + expect(payloadEncoded).to.be.a('string'); + expect(JSON.parse(paucidParam)).to.deep.equal([partnerAuctionId]); + expect(payloadDecoded.partnerAuctionId).to.equal(partnerAuctionId); + }); + + it("should include partnerAuctionId in query params and payload if provided by partner (POST)", function () { + const partnerAuctionId = "TEST-PAUCID-123"; + enableAnalyticWithSpecialOptions({ + manualWinReportEnabled: true, + reportMethod: "POST" + }); + + window[`intentIqAnalyticsAdapter_${partner}`].reportExternalWin({ + cpm: 1, + currency: "USD", + adType: "banner", + partnerAuctionId + }); + + const request = server.requests[0]; + const url = new URL(request.url); + const paucidParam = url.searchParams.get("paucid"); + const bodyArray = JSON.parse(request.requestBody); + const payloadDecoded = JSON.parse(atob(bodyArray[0])); + + expect(request.requestBody).to.be.a('string'); + expect(JSON.parse(paucidParam)).to.deep.equal([partnerAuctionId]); + expect(payloadDecoded.partnerAuctionId).to.equal(partnerAuctionId); + }); });