Skip to content

Commit

Permalink
add location param to conversion endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
benmcginnis committed Aug 8, 2022
1 parent 66482b2 commit b320d40
Show file tree
Hide file tree
Showing 7 changed files with 27 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/infra/ConversionTrackingReporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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} */
Expand All @@ -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());
Expand Down
3 changes: 2 additions & 1 deletion src/infra/PagesAnalyticsReporter.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand Down Expand Up @@ -175,6 +175,7 @@ export class PagesAnalyticsReporter implements PagesAnalyticsService{
cid: conversionInfo.cid,
cv: conversionInfo.cv,
cookieId: this._cookieID,
location: this._pageUrl.toString(),
});
}
}
Expand Down
5 changes: 5 additions & 0 deletions src/models/conversiontracking/CommonConversionData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
5 changes: 0 additions & 5 deletions src/models/conversiontracking/ListingsClickEvent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
13 changes: 11 additions & 2 deletions test-site/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'
});
}
11 changes: 7 additions & 4 deletions tests/infra/ConversionTrackingReporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
);
});

Expand All @@ -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',
);
});

Expand All @@ -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));
});
Expand All @@ -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',
);
});

Expand All @@ -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',
);
});
2 changes: 1 addition & 1 deletion tests/infra/PagesAnalyticsReporter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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());

Expand Down

0 comments on commit b320d40

Please sign in to comment.