Skip to content

Commit

Permalink
feat: update klaviyo api version (#1981)
Browse files Browse the repository at this point in the history
* feat: update klaviyo api version

* fix: correct batching logic

* feat: update Klaviyo API version and add batching for subscribe endpoint

* feat: update group call and test cases

* feat: update batching logic for group call

* feat: make consent field backward-compatible

* fix: consent conditional check

* feat: add consent in mapping and update mapping

* fix: remove extra comments and add optional chaining

* feat: add total and value mapping for value and remove extra lines

* feat: add conditon for failed request

* feat: add test coverage

* feat: refactor code and improve coverage

* feat: add optional chaining

* fix: make use of common variable

* fix: profile id parsing

* chore: add negative router test cases

* fix: lint errors

* fix: correct event extraction

* chore: refactor code

* fix(klaviyo): add array index for subsribe reponse array in batching logic

* chore: refactor batching logic, and break the functions and move them to util

* chore: refactor batching logic, and break the functions and move them to util

* chore: refactor code

* chore: rename function parameters to relevant names

* chore: refactor code

* chore: refactor code

* chore: update parameter names add documentation for function

* fix: sonar code-smell & change forEach to map

Signed-off-by: Sai Sankeerth <sanpj2292@github.com>

* fix(klaviyo): fix bugs created due to last few refactor commits

* fix(klaviyo): add _id to customProperties

* fix(klaviyo): remove unused import

---------

Signed-off-by: Sai Sankeerth <sanpj2292@github.com>
Co-authored-by: Sai Sankeerth <sanpj2292@github.com>
  • Loading branch information
ujjwal-ab and Sai Sankeerth committed Jun 9, 2023
1 parent b3ddce1 commit dd69dbc
Show file tree
Hide file tree
Showing 11 changed files with 1,119 additions and 1,149 deletions.
10 changes: 7 additions & 3 deletions src/v0/destinations/klaviyo/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@ const { getMappingConfig } = require('../../util');

const BASE_ENDPOINT = 'https://a.klaviyo.com';

const MAX_BATCH_SIZE = 100;

// TRACK and IDENTIFY DOCS: https://www.klaviyo.com/docs/http-api
// LIST API [MEMBERSHIP/SUBSCRIBE] DOCS:https://www.klaviyo.com/docs/http-api

const CONFIG_CATEGORIES = {
IDENTIFY: { name: 'KlaviyoIdentify', apiUrl: '/api/identify' },
SCREEN: { name: 'KlaviyoTrack', apiUrl: '/api/track' },
TRACK: { name: 'KlaviyoTrack', apiUrl: '/api/track' },
IDENTIFY: { name: 'KlaviyoIdentify', apiUrl: '/api/profiles' },
SCREEN: { name: 'KlaviyoTrack', apiUrl: '/api/events' },
TRACK: { name: 'KlaviyoTrack', apiUrl: '/api/events' },
GROUP: { name: 'KlaviyoGroup' },
PROFILE: { name: 'KlaviyoProfile' },
STARTED_CHECKOUT: { name: 'StartedCheckout' },
VIEWED_PRODUCT: { name: 'ViewedProduct' },
ADDED_TO_CART: { name: 'AddedToCart' },
Expand Down Expand Up @@ -57,6 +60,7 @@ const MAPPING_CONFIG = getMappingConfig(CONFIG_CATEGORIES, __dirname);

module.exports = {
BASE_ENDPOINT,
MAX_BATCH_SIZE,
CONFIG_CATEGORIES,
MAPPING_CONFIG,
LIST_CONF,
Expand Down
62 changes: 0 additions & 62 deletions src/v0/destinations/klaviyo/data/KlaviyoGroup.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,67 +10,5 @@
"sourceKeys": "phone",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$id",
"sourceKeys": "userId",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "first_name",
"sourceKeys": "firstName",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "last_name",
"sourceKeys": "lastName",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$title",
"sourceKeys": ["context.traits.title", "properties.title"],
"required": false
},
{
"destKey": "$organization",
"sourceKeys": ["context.traits.organization", "properties.organization"],
"required": false
},
{
"destKey": "$city",
"sourceKeys": ["context.traits.city", "context.traits.address.city", "properties.city"],
"required": false
},
{
"destKey": "$region",
"sourceKeys": ["context.traits.region", "context.traits.address.region", "properties.region"],
"required": false
},
{
"destKey": "$country",
"sourceKeys": [
"context.traits.country",
"context.traits.address.country",
"properties.country"
],
"required": false
},
{
"destKey": "$zip",
"sourceKeys": ["context.traits.zip", "context.traits.address.postalcode", "properties.zip"],
"required": false
},
{
"destKey": "$image",
"sourceKeys": ["context.traits.image", "properties.image"],
"required": false
},
{
"destKey": "$timezone",
"sourceKeys": ["context.traits.timezone", "properties.timezone"],
"required": false
}
]
33 changes: 19 additions & 14 deletions src/v0/destinations/klaviyo/data/KlaviyoIdentify.json
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
[
{
"destKey": "$id",
"destKey": "external_id",
"sourceKeys": "userId",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$email",
"destKey": "email",
"sourceKeys": "email",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$first_name",
"destKey": "first_name",
"sourceKeys": "firstName",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$last_name",
"destKey": "last_name",
"sourceKeys": "lastName",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$phone_number",
"destKey": "phone_number",
"sourceKeys": "phone",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$title",
"destKey": "title",
"sourceKeys": ["traits.title", "context.traits.title", "properties.title"],
"required": false
},
{
"destKey": "$organization",
"destKey": "organization",
"sourceKeys": ["traits.organization", "context.traits.organization", "properties.organization"],
"required": false
},
{
"destKey": "$city",
"destKey": "location.city",
"sourceKeys": [
"traits.city",
"traits.address.city",
Expand All @@ -51,7 +51,7 @@
"required": false
},
{
"destKey": "$region",
"destKey": "location.region",
"sourceKeys": [
"traits.region",
"traits.address.region",
Expand All @@ -62,7 +62,7 @@
"required": false
},
{
"destKey": "$country",
"destKey": "location.country",
"sourceKeys": [
"traits.country",
"traits.address.country",
Expand All @@ -73,23 +73,28 @@
"required": false
},
{
"destKey": "$zip",
"destKey": "location.zip",
"sourceKeys": [
"traits.zip",
"traits.postalcode",
"traits.address.zip",
"traits.address.postalcode",
"context.traits.zip",
"context.traits.postalcode",
"context.traits.address.zip",
"context.traits.address.postalcode",
"properties.zip"
"properties.zip",
"properties.postalcode"
],
"required": false
},
{
"destKey": "$image",
"destKey": "image",
"sourceKeys": ["traits.image", "context.traits.image", "properties.image"],
"required": false
},
{
"destKey": "$timezone",
"destKey": "location.timezone",
"sourceKeys": ["traits.timezone", "context.traits.timezone", "properties.timezone"],
"required": false
}
Expand Down
85 changes: 85 additions & 0 deletions src/v0/destinations/klaviyo/data/KlaviyoProfile.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
[
{
"destKey": "$email",
"sourceKeys": "email",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$first_name",
"sourceKeys": "firstName",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$last_name",
"sourceKeys": "lastName",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$phone_number",
"sourceKeys": "phone",
"required": false,
"sourceFromGenericMap": true
},
{
"destKey": "$city",
"sourceKeys": [
"traits.city",
"traits.address.city",
"context.traits.city",
"context.traits.address.city",
"properties.city"
],
"required": false
},
{
"destKey": "$region",
"sourceKeys": [
"traits.region",
"traits.address.region",
"context.traits.region",
"context.traits.address.region",
"properties.region"
],
"required": false
},
{
"destKey": "$country",
"sourceKeys": [
"traits.country",
"traits.address.country",
"context.traits.country",
"context.traits.address.country",
"properties.country"
],
"required": false
},
{
"destKey": "$zip",
"sourceKeys": [
"traits.zip",
"traits.postalcode",
"traits.address.zip",
"traits.address.postalcode",
"context.traits.zip",
"context.traits.postalcode",
"context.traits.address.zip",
"context.traits.address.postalcode",
"properties.zip",
"properties.postalcode"
],
"required": false
},
{
"destKey": "$consent",
"sourceKeys": ["context.traits.consent", "traits.consent", "properties.consent"],
"required": false
},
{
"destKey": "$image",
"sourceKeys": ["traits.image", "context.traits.image", "properties.image"],
"required": false
}
]
4 changes: 2 additions & 2 deletions src/v0/destinations/klaviyo/data/KlaviyoTrack.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[
{
"destKey": "event",
"destKey": "metric.name",
"sourceKeys": ["event", "properties.event", "properties.name"],
"required": true
},
{
"destKey": "properties",
"sourceKeys": "properties",
"metadata": {
"excludes": ["email", "phone"]
"excludes": ["email", "phone", "revenue", "total", "value"]
}
}
]
Loading

0 comments on commit dd69dbc

Please sign in to comment.