Skip to content

Commit

Permalink
fix: deduplication key issue (#2757)
Browse files Browse the repository at this point in the history
  • Loading branch information
anantjain45823 committed Oct 20, 2023
1 parent 4d65048 commit bc76305
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 18 deletions.
17 changes: 1 addition & 16 deletions src/v0/destinations/snapchat_conversion/transform.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,19 +161,6 @@ const addSpecificEventDetails = (
}
return updatedPayload;
};
const handleDeduplication = (payload, enableDeduplication, deduplicationKey, message) => {
if (enableDeduplication) {
const dedupId = deduplicationKey || 'messageId';
const clientDedupId = get(message, dedupId);
if (!clientDedupId) {
throw new InstrumentationError(
'Deduplication enabled but no deduplication key provided in the message',
);
}
return clientDedupId;
}
return undefined;
};
const getEventConversionType = (message) => {
const channel = get(message, 'channel');
let eventConversionType = message?.properties?.eventConversionType;
Expand Down Expand Up @@ -300,8 +287,6 @@ const trackResponseBuilder = (message, { Config }, mappedEvent) => {
snapAppId,
appId,
);
payload.client_dedup_id = handleDeduplication(enableDeduplication, deduplicationKey, message);

// adding for deduplication for more than one source
if (enableDeduplication) {
const dedupId = deduplicationKey || 'messageId';
Expand Down Expand Up @@ -412,4 +397,4 @@ const processRouterDest = async (inputs, reqMetadata) => {
return [...batchResponseList, ...errorRespList];
};

module.exports = { process, processRouterDest };
module.exports = { process, processRouterDest };
122 changes: 120 additions & 2 deletions test/__tests__/data/snapchat_conversion.json
Original file line number Diff line number Diff line change
Expand Up @@ -2683,13 +2683,14 @@
]
},
{
"description": "Mapping revenue to price for order completed event",
"description": "Enable deduplication with duplication key as email",
"input": {
"message": {
"messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
"originalTimestamp": "2022-04-22T10:57:58Z",
"channel": "mobile",
"anonymousId": "ea5cfab2-3961-4d8a-8187-3d1858c99090",
"request_ip": "127.0.0.1",
"context": {
"traits": {
"email": "test@email.com",
Expand Down Expand Up @@ -2744,7 +2745,8 @@
"quantity": 3
}
],
"revenue": "100"
"revenue": "100",
"custom_dedup_id": "1234"
},
"integrations": {
"All": true
Expand All @@ -2755,6 +2757,8 @@
"Config": {
"apiKey": "dummyApiKey",
"pixelId": "dummyPixelId",
"deduplicationKey": "properties.custom_dedup_id",
"enableDeduplication": true,
"appId": "dhfeih44f",
"snapAppId": "hfhdhfd"
}
Expand All @@ -2777,6 +2781,120 @@
"123",
"123"
],
"client_dedup_id": "1234",
"hashed_ip_address": "12ca17b49af2289436f303e0166030a21e525d266e209267433801a8fd4071a0",
"price": "100",
"hashed_email": "73062d872926c2a556f17b36f50e328ddf9bff9d403939bd14b6c3b7f5a33fc2",
"hashed_phone_number": "bc77d64d7045fe44795ed926df37231a0cfb6ec6b74588c512790e9f143cc492",
"hashed_mobile_ad_id": "f9779d734aaee50f16ee0011260bae7048f1d9a128c62b6a661077875701edd2",
"hashed_idfv": "54bd0b26a3d39dad90f5149db49b9fd9ba885f8e35d1d94cae69273f5e657b9f",
"user_agent": "mozilla/5.0 (macintosh; intel mac os x 10_15_2) applewebkit/537.36 (khtml, like gecko) chrome/79.0.3945.88 safari/537.36",
"timestamp": "1650625078",
"event_conversion_type": "MOBILE_APP",
"snap_app_id": "hfhdhfd",
"app_id": "dhfeih44f"
},
"JSON_ARRAY": {},
"XML": {},
"FORM": {}
},
"files": {}
}
},
{
"description": "Mapping revenue to price for product list viewed event",
"input": {
"message": {
"messageId": "ec5481b6-a926-4d2e-b293-0b3a77c4d3be",
"originalTimestamp": "2022-04-22T10:57:58Z",
"channel": "mobile",
"anonymousId": "ea5cfab2-3961-4d8a-8187-3d1858c99090",
"context": {
"traits": {
"email": "test@email.com",
"phone": "+91 2111111 "
},
"app": {
"build": "1.0.0",
"name": "RudderLabs JavaScript SDK",
"namespace": "com.rudderlabs.javascript",
"version": "1.0.0"
},
"device": {
"advertisingId": "T0T0T072-5e28-45a1-9eda-ce22a3e36d1a",
"id": "3f034872-5e28-45a1-9eda-ce22a3e36d1a",
"manufacturer": "Google",
"name": "generic_x86_arm",
"type": "ios",
"attTrackingStatus": 3
},
"library": {
"name": "RudderLabs JavaScript SDK",
"version": "1.0.0"
},
"locale": "en-US",
"os": {
"name": "iOS",
"version": "14.4.1"
},
"screen": {
"density": 2
},
"externalId": [
{
"type": "ga4AppInstanceId",
"id": "f0dd99v4f979fb997ce453373900f891"
}
],
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
},
"type": "track",
"event": "Product List Viewed",
"properties": {
"products": [
{
"product_id": "123",
"price": "14"
},
{
"product_id": "123",
"price": 14,
"quantity": 3
}
],
"revenue": "100"
},
"integrations": {
"All": true
},
"sentAt": "2022-04-22T10:57:58Z"
},
"destination": {
"Config": {
"apiKey": "dummyApiKey",
"pixelId": "dummyPixelId",
"appId": "dhfeih44f",
"snapAppId": "hfhdhfd"
}
}
},
"output": {
"version": "1",
"type": "REST",
"method": "POST",
"endpoint": "https://tr.snapchat.com/v2/conversion",
"headers": {
"Authorization": "Bearer dummyApiKey",
"Content-Type": "application/json"
},
"params": {},
"body": {
"JSON": {
"event_type": "VIEW_CONTENT",
"item_ids": [
"123",
"123"
],
"price": "100",
"hashed_email": "73062d872926c2a556f17b36f50e328ddf9bff9d403939bd14b6c3b7f5a33fc2",
"hashed_phone_number": "bc77d64d7045fe44795ed926df37231a0cfb6ec6b74588c512790e9f143cc492",
Expand Down

0 comments on commit bc76305

Please sign in to comment.