From b320d40cc2c78085c37adc55526708fd609dde61 Mon Sep 17 00:00:00 2001 From: Ben McGinnis Date: Mon, 8 Aug 2022 19:41:32 -0400 Subject: [PATCH] add location param to conversion endpoint --- src/infra/ConversionTrackingReporter.ts | 2 +- src/infra/PagesAnalyticsReporter.ts | 3 ++- .../conversiontracking/CommonConversionData.ts | 5 +++++ src/models/conversiontracking/ListingsClickEvent.ts | 5 ----- test-site/src/index.ts | 13 +++++++++++-- tests/infra/ConversionTrackingReporter.ts | 11 +++++++---- tests/infra/PagesAnalyticsReporter.ts | 2 +- 7 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/infra/ConversionTrackingReporter.ts b/src/infra/ConversionTrackingReporter.ts index d6b284a9..04ee9e67 100644 --- a/src/infra/ConversionTrackingReporter.ts +++ b/src/infra/ConversionTrackingReporter.ts @@ -42,6 +42,7 @@ export class ConversionTrackingReporter implements ConversionTrackingService { params.set(COOKIE_PARAM, event.cookieId); if (event.referrer) params.set('referrer', event.referrer); params.set('v', calculateSeed().toString()); + params.set('location', event.location); } /** {@inheritDoc ConversionTrackingService.trackConversion} */ @@ -61,7 +62,6 @@ export class ConversionTrackingReporter implements ConversionTrackingService { const url = new URL(`https://${DEFAULT_CONVERSION_TRACKING_DOMAIN}/${listingsEndpoint}`); const params = new URLSearchParams(); params.set(LISTINGS_SOURCE_PARAM, event.source); - params.set('location', event.location); ConversionTrackingReporter.formatBaseEvent(event, params); url.search = params.toString(); await this.handleRequest(url.toString()); diff --git a/src/infra/PagesAnalyticsReporter.ts b/src/infra/PagesAnalyticsReporter.ts index c8dfdb72..c400b068 100644 --- a/src/infra/PagesAnalyticsReporter.ts +++ b/src/infra/PagesAnalyticsReporter.ts @@ -1,5 +1,5 @@ import { COOKIE_PARAM, DEFAULT_CONVERSION_TRACKING_DOMAIN, LISTINGS_SOURCE_PARAM } from '../models/constants'; -import { ConversionDetails } from '../models/conversiontracking/ConversionDetails'; +import { ConversionDetails } from '../models'; import { HttpRequesterService, PagesAnalyticsService } from '../services'; import { DefaultPagesEventNames, PagesAnalyticsConfig, Visitor } from '../models'; import { PagesAnalyticsEvent } from '../models'; @@ -175,6 +175,7 @@ export class PagesAnalyticsReporter implements PagesAnalyticsService{ cid: conversionInfo.cid, cv: conversionInfo.cv, cookieId: this._cookieID, + location: this._pageUrl.toString(), }); } } diff --git a/src/models/conversiontracking/CommonConversionData.ts b/src/models/conversiontracking/CommonConversionData.ts index df3849fc..21154a7d 100644 --- a/src/models/conversiontracking/CommonConversionData.ts +++ b/src/models/conversiontracking/CommonConversionData.ts @@ -13,4 +13,9 @@ export interface CommonConversionData { * Page which sent the user to the current page, comes from typically Document.referrer */ referrer?: string + + /** + * The url of the landing page. + */ + location: string, } \ No newline at end of file diff --git a/src/models/conversiontracking/ListingsClickEvent.ts b/src/models/conversiontracking/ListingsClickEvent.ts index d6666ff5..a2a2f290 100644 --- a/src/models/conversiontracking/ListingsClickEvent.ts +++ b/src/models/conversiontracking/ListingsClickEvent.ts @@ -11,9 +11,4 @@ export interface ListingsClickEvent extends CommonConversionData{ * Comes from the y_source URL Parameter. */ source: string, - - /** - * The url of the landing page. - */ - location: string, } \ No newline at end of file diff --git a/test-site/src/index.ts b/test-site/src/index.ts index d7ae81de..67447f0e 100644 --- a/test-site/src/index.ts +++ b/test-site/src/index.ts @@ -67,9 +67,18 @@ export function toggleConversionTracking() { } export function fireConversion(value?: number) { - conversions.trackConversion({cookieId: cookieId, cid: 'fd61ce31-43ca-41ce-a68d-f6b540b80556', cv: value.toString()}); + conversions.trackConversion({ + cookieId: cookieId, + cid: 'fd61ce31-43ca-41ce-a68d-f6b540b80556', + cv: value.toString(), + location: window.location.href, + }); } export function fireListings() { - conversions.trackListings({cookieId: cookieId, source: '1_NjE0MzM5Mi03MTUtbG9jYXRpb24ud2Vic2l0ZQ%3D%3D', location: 'location/04500'}); + conversions.trackListings({ + cookieId: cookieId, + source: '1_NjE0MzM5Mi03MTUtbG9jYXRpb24ud2Vic2l0ZQ%3D%3D', + location: 'location/04500' + }); } diff --git a/tests/infra/ConversionTrackingReporter.ts b/tests/infra/ConversionTrackingReporter.ts index 0aa315a7..14a4b188 100644 --- a/tests/infra/ConversionTrackingReporter.ts +++ b/tests/infra/ConversionTrackingReporter.ts @@ -14,9 +14,10 @@ it('should not set empty parameters', () => { reporter.trackConversion({ cid: '12345', cookieId: '54321', + location: 'foo', }); expect(mockService.get).toHaveBeenLastCalledWith( - 'https://realtimeanalytics.yext.com/conversiontracking/conversion?cid=12345&_yfpc=54321&v=1001', + 'https://realtimeanalytics.yext.com/conversiontracking/conversion?cid=12345&_yfpc=54321&v=1001&location=foo', ); }); @@ -27,9 +28,10 @@ it('should set all parameters passed', () => { cid: '12345', cookieId: '54321', referrer: 'http://www.google.com/foo/bar', + location: 'foo', }); expect(mockService.get).toHaveBeenLastCalledWith( - 'https://realtimeanalytics.yext.com/conversiontracking/conversion?cid=12345&_yfpc=54321&referrer=http%3A%2F%2Fwww.google.com%2Ffoo%2Fbar&v=1001', + 'https://realtimeanalytics.yext.com/conversiontracking/conversion?cid=12345&_yfpc=54321&referrer=http%3A%2F%2Fwww.google.com%2Ffoo%2Fbar&v=1001&location=foo', ); }); @@ -39,6 +41,7 @@ it('should handle an error', () => { const resPromise = conversionReporter.trackConversion({ cid: '12345', cookieId: '54321', + location: 'foo', }); expect(resPromise).rejects.toEqual(new Error(message)); }); @@ -52,7 +55,7 @@ it('should track listings', () => { location: 'https://www.example.com/my/foo/page' }); expect(mockService.get).toHaveBeenLastCalledWith( - 'https://realtimeanalytics.yext.com/listings?y_source=foo&location=https%3A%2F%2Fwww.example.com%2Fmy%2Ffoo%2Fpage&_yfpc=54321&v=1001', + 'https://realtimeanalytics.yext.com/listings?y_source=foo&_yfpc=54321&v=1001&location=https%3A%2F%2Fwww.example.com%2Fmy%2Ffoo%2Fpage', ); }); @@ -66,6 +69,6 @@ it('should track listings with more details', () => { referrer: 'http://www.google.com/foo/bar', }); expect(mockService.get).toHaveBeenLastCalledWith( - 'https://realtimeanalytics.yext.com/listings?y_source=foo&location=https%3A%2F%2Fwww.example.com%2Fmy%2Ffoo%2Fpage&_yfpc=54321&referrer=http%3A%2F%2Fwww.google.com%2Ffoo%2Fbar&v=1001', + 'https://realtimeanalytics.yext.com/listings?y_source=foo&_yfpc=54321&referrer=http%3A%2F%2Fwww.google.com%2Ffoo%2Fbar&v=1001&location=https%3A%2F%2Fwww.example.com%2Fmy%2Ffoo%2Fpage', ); }); \ No newline at end of file diff --git a/tests/infra/PagesAnalyticsReporter.ts b/tests/infra/PagesAnalyticsReporter.ts index f76a7ef4..00fd5bce 100644 --- a/tests/infra/PagesAnalyticsReporter.ts +++ b/tests/infra/PagesAnalyticsReporter.ts @@ -305,9 +305,9 @@ it('should track listings with a pageview', async () => { const listingsUrl = new URL('https://realtimeanalytics.yext.com/listings'); listingsUrl.searchParams.set('y_source', '123455'); - listingsUrl.searchParams.set('location', 'https://www.foobar.com/foo/bar?y_source=123455'); listingsUrl.searchParams.set('_yfpc', '123456'); listingsUrl.searchParams.set('v', '1001'); + listingsUrl.searchParams.set('location', 'https://www.foobar.com/foo/bar?y_source=123455'); expect(httpRequesterService.get).toHaveBeenNthCalledWith(1, listingsUrl.toString());