diff --git a/metadata.yaml b/metadata.yaml index 38e699e..f128e86 100644 --- a/metadata.yaml +++ b/metadata.yaml @@ -1,5 +1,7 @@ homepage: "https://stape.io/" versions: + - sha: d493f9ad8418ad6883b6a95345393ed434c18027 + changeNotes: Fix logs eventName. - sha: a2c51bc3260b8d359a90261ecc136aac0aee1de0 changeNotes: Add GTM MSR check. - sha: cf992a5bc61037372fdf07a7246721be115ae9ba diff --git a/template.js b/template.js index 5ab1de9..6425f40 100644 --- a/template.js +++ b/template.js @@ -42,6 +42,7 @@ if (url) { const apiVersion = '1.3'; const postUrl = 'https://business-api.tiktok.com/open_api/v' + apiVersion + '/event/track/'; +const eventName = getEventName(eventData, data); let postBody = mapEvent(eventData, data); if (isLoggingEnabled) { @@ -50,7 +51,7 @@ if (isLoggingEnabled) { Name: 'TikTok', Type: 'Request', TraceId: traceId, - EventName: postBody.event, + EventName: eventName, RequestMethod: 'POST', RequestUrl: postUrl, RequestBody: postBody, @@ -89,7 +90,7 @@ sendHttpRequest( Name: 'TikTok', Type: 'Response', TraceId: traceId, - EventName: postBody.event, + EventName: eventName, ResponseStatusCode: statusCode, ResponseHeaders: headers, ResponseBody: body, @@ -117,7 +118,7 @@ sendHttpRequest( function mapEvent(eventData, data) { let eventSource = data.eventSource || 'web'; let mappedData = { - event: getEventName(eventData, data), + event: eventName, event_time: getEventTime(eventData), }; @@ -201,17 +202,21 @@ function hashDataIfNeeded(mappedData) { function addPropertiesData(eventData, mappedData) { mappedData.properties = {}; - if (eventData.content_type) mappedData.properties.content_type = eventData.content_type; + if (eventData.content_type) + mappedData.properties.content_type = eventData.content_type; else mappedData.properties.content_type = 'product'; if (eventData.currency) mappedData.properties.currency = eventData.currency; if (eventData.value) mappedData.properties.value = eventData.value; - else if (eventData['x-ga-mp1-ev']) mappedData.properties.value = eventData['x-ga-mp1-ev']; - else if (eventData['x-ga-mp1-tr']) mappedData.properties.value = eventData['x-ga-mp1-tr']; + else if (eventData['x-ga-mp1-ev']) + mappedData.properties.value = eventData['x-ga-mp1-ev']; + else if (eventData['x-ga-mp1-tr']) + mappedData.properties.value = eventData['x-ga-mp1-tr']; if (eventData.query) mappedData.properties.query = eventData.query; - if (eventData.description) mappedData.properties.description = eventData.description; + if (eventData.description) + mappedData.properties.description = eventData.description; if (eventData.order_id) mappedData.properties.order_id = eventData.order_id; if (eventData.shop_id) mappedData.properties.shop_id = eventData.shop_id; @@ -250,32 +255,40 @@ function addUserData(eventData, mappedData, eventSource) { mappedData.user = {}; if (getType(eventData.user_data) === 'object') { - userEventData = eventData.user_data || eventData.user_properties || eventData.user; + userEventData = + eventData.user_data || eventData.user_properties || eventData.user; } if (eventData.email) mappedData.user.email = eventData.email; - else if (eventData.email_address) mappedData.user.email = eventData.email_address; + else if (eventData.email_address) + mappedData.user.email = eventData.email_address; else if (userEventData.email) mappedData.user.email = userEventData.email; - else if (userEventData.email_address) mappedData.user.email = userEventData.email_address; + else if (userEventData.email_address) + mappedData.user.email = userEventData.email_address; if (eventData.phone) mappedData.user.phone = eventData.phone; - else if (eventData.phone_number) mappedData.user.phone = eventData.phone_number; + else if (eventData.phone_number) + mappedData.user.phone = eventData.phone_number; else if (userEventData.phone) mappedData.user.phone = userEventData.phone; - else if (userEventData.phone_number) mappedData.user.phone = userEventData.phone_number; + else if (userEventData.phone_number) + mappedData.user.phone = userEventData.phone_number; if (eventSource === 'web') { if (ttclid) mappedData.user.ttclid = ttclid; else if (eventData.ttclid) mappedData.user.ttclid = eventData.ttclid; - else if (userEventData.ttclid) mappedData.user.ttclid = userEventData.ttclid; + else if (userEventData.ttclid) + mappedData.user.ttclid = userEventData.ttclid; if (ttp) mappedData.user.ttp = ttp; else if (eventData.ttp) mappedData.user.ttp = eventData.ttp; else if (userEventData.ttp) mappedData.user.ttp = userEventData.ttp; - if (eventData.external_id) mappedData.user.external_id = eventData.external_id; + if (eventData.external_id) + mappedData.user.external_id = eventData.external_id; else if (eventData.user_id) mappedData.user.external_id = eventData.user_id; else if (eventData.userId) mappedData.user.external_id = eventData.userId; - else if (userEventData.external_id) mappedData.user.external_id = userEventData.external_id; + else if (userEventData.external_id) + mappedData.user.external_id = userEventData.external_id; if (eventData.ip_override) mappedData.user.ip = eventData.ip_override; else if (eventData.ip_address) mappedData.user.ip = eventData.ip_address; @@ -295,12 +308,14 @@ function addUserData(eventData, mappedData, eventSource) { else if (userEventData.gaid) mappedData.user.gaid = userEventData.gaid; if (eventData.att_status) mappedData.user.att_status = eventData.att_status; - else if (userEventData.att_status) mappedData.user.att_status = userEventData.att_status; + else if (userEventData.att_status) + mappedData.user.att_status = userEventData.att_status; } if (eventSource === 'web' || eventSource === 'app') { if (eventData.locale) mappedData.user.locale = eventData.locale; - else if (userEventData.locale) mappedData.user.locale = userEventData.locale; + else if (userEventData.locale) + mappedData.user.locale = userEventData.locale; } if (data.userDataList) { @@ -380,7 +395,8 @@ function determinateIsLoggingEnabled() { function addEventId(mappedData, eventData) { if (data.eventId) mappedData.event_id = data.eventId; else if (eventData.event_id) mappedData.event_id = eventData.event_id; - else if (eventData.transaction_id) mappedData.event_id = eventData.transaction_id; + else if (eventData.transaction_id) + mappedData.event_id = eventData.transaction_id; return mappedData; } @@ -398,7 +414,8 @@ function addPageData(mappedData, eventData) { }; if (data.pageReferrer) mappedData.page.referrer = data.pageReferrer; - else if (eventData.page_referrer) mappedData.page.referrer = eventData.page_referrer; + else if (eventData.page_referrer) + mappedData.page.referrer = eventData.page_referrer; else if (eventData.referrer) mappedData.page.referrer = eventData.referrer; return mappedData; @@ -413,7 +430,8 @@ function addAppData(mappedData, eventData) { else if (eventData.app_name) mappedData.app.app_name = eventData.app_name; if (data.appVersion) mappedData.app.app_version = data.appVersion; - else if (eventData.app_version) mappedData.app.app_version = eventData.app_version; + else if (eventData.app_version) + mappedData.app.app_version = eventData.app_version; let adEventData = {}; mappedData.ad = {}; @@ -425,26 +443,37 @@ function addAppData(mappedData, eventData) { if (adEventData.callback) mappedData.ad.callback = adEventData.callback; else if (eventData.callback) mappedData.ad.callback = eventData.callback; - if (adEventData.campaign_id) mappedData.ad.campaign_id = adEventData.campaign_id; - else if (eventData.campaign_id) mappedData.ad.campaign_id = eventData.campaign_id; + if (adEventData.campaign_id) + mappedData.ad.campaign_id = adEventData.campaign_id; + else if (eventData.campaign_id) + mappedData.ad.campaign_id = eventData.campaign_id; if (adEventData.ad_id) mappedData.ad.ad_id = adEventData.ad_id; else if (eventData.ad_id) mappedData.ad.ad_id = eventData.ad_id; - if (adEventData.creative_id) mappedData.ad.creative_id = adEventData.creative_id; - else if (eventData.creative_id) mappedData.ad.creative_id = eventData.creative_id; + if (adEventData.creative_id) + mappedData.ad.creative_id = adEventData.creative_id; + else if (eventData.creative_id) + mappedData.ad.creative_id = eventData.creative_id; - if (adEventData.is_retargeting) mappedData.ad.is_retargeting = adEventData.is_retargeting; - else if (eventData.is_retargeting) mappedData.ad.is_retargeting = eventData.is_retargeting; + if (adEventData.is_retargeting) + mappedData.ad.is_retargeting = adEventData.is_retargeting; + else if (eventData.is_retargeting) + mappedData.ad.is_retargeting = eventData.is_retargeting; if (adEventData.attributed) mappedData.ad.attributed = adEventData.attributed; - else if (eventData.attributed) mappedData.ad.attributed = eventData.attributed; - - if (adEventData.attribution_type) mappedData.ad.attribution_type = adEventData.attribution_type; - else if (eventData.attribution_type) mappedData.ad.attribution_type = eventData.attribution_type; - - if (adEventData.attribution_provider) mappedData.ad.attribution_provider = adEventData.attribution_provider; - else if (eventData.attribution_provider) mappedData.ad.attribution_provider = eventData.attribution_provider; + else if (eventData.attributed) + mappedData.ad.attributed = eventData.attributed; + + if (adEventData.attribution_type) + mappedData.ad.attribution_type = adEventData.attribution_type; + else if (eventData.attribution_type) + mappedData.ad.attribution_type = eventData.attribution_type; + + if (adEventData.attribution_provider) + mappedData.ad.attribution_provider = adEventData.attribution_provider; + else if (eventData.attribution_provider) + mappedData.ad.attribution_provider = eventData.attribution_provider; if (data.adDataList) { data.adDataList.forEach((d) => { diff --git a/template.tpl b/template.tpl index 1fa608f..fb3644e 100644 --- a/template.tpl +++ b/template.tpl @@ -602,6 +602,7 @@ if (url) { const apiVersion = '1.3'; const postUrl = 'https://business-api.tiktok.com/open_api/v' + apiVersion + '/event/track/'; +const eventName = getEventName(eventData, data); let postBody = mapEvent(eventData, data); if (isLoggingEnabled) { @@ -610,7 +611,7 @@ if (isLoggingEnabled) { Name: 'TikTok', Type: 'Request', TraceId: traceId, - EventName: postBody.event, + EventName: eventName, RequestMethod: 'POST', RequestUrl: postUrl, RequestBody: postBody, @@ -649,7 +650,7 @@ sendHttpRequest( Name: 'TikTok', Type: 'Response', TraceId: traceId, - EventName: postBody.event, + EventName: eventName, ResponseStatusCode: statusCode, ResponseHeaders: headers, ResponseBody: body, @@ -677,7 +678,7 @@ sendHttpRequest( function mapEvent(eventData, data) { let eventSource = data.eventSource || 'web'; let mappedData = { - event: getEventName(eventData, data), + event: eventName, event_time: getEventTime(eventData), }; @@ -761,17 +762,21 @@ function hashDataIfNeeded(mappedData) { function addPropertiesData(eventData, mappedData) { mappedData.properties = {}; - if (eventData.content_type) mappedData.properties.content_type = eventData.content_type; + if (eventData.content_type) + mappedData.properties.content_type = eventData.content_type; else mappedData.properties.content_type = 'product'; if (eventData.currency) mappedData.properties.currency = eventData.currency; if (eventData.value) mappedData.properties.value = eventData.value; - else if (eventData['x-ga-mp1-ev']) mappedData.properties.value = eventData['x-ga-mp1-ev']; - else if (eventData['x-ga-mp1-tr']) mappedData.properties.value = eventData['x-ga-mp1-tr']; + else if (eventData['x-ga-mp1-ev']) + mappedData.properties.value = eventData['x-ga-mp1-ev']; + else if (eventData['x-ga-mp1-tr']) + mappedData.properties.value = eventData['x-ga-mp1-tr']; if (eventData.query) mappedData.properties.query = eventData.query; - if (eventData.description) mappedData.properties.description = eventData.description; + if (eventData.description) + mappedData.properties.description = eventData.description; if (eventData.order_id) mappedData.properties.order_id = eventData.order_id; if (eventData.shop_id) mappedData.properties.shop_id = eventData.shop_id; @@ -810,32 +815,40 @@ function addUserData(eventData, mappedData, eventSource) { mappedData.user = {}; if (getType(eventData.user_data) === 'object') { - userEventData = eventData.user_data || eventData.user_properties || eventData.user; + userEventData = + eventData.user_data || eventData.user_properties || eventData.user; } if (eventData.email) mappedData.user.email = eventData.email; - else if (eventData.email_address) mappedData.user.email = eventData.email_address; + else if (eventData.email_address) + mappedData.user.email = eventData.email_address; else if (userEventData.email) mappedData.user.email = userEventData.email; - else if (userEventData.email_address) mappedData.user.email = userEventData.email_address; + else if (userEventData.email_address) + mappedData.user.email = userEventData.email_address; if (eventData.phone) mappedData.user.phone = eventData.phone; - else if (eventData.phone_number) mappedData.user.phone = eventData.phone_number; + else if (eventData.phone_number) + mappedData.user.phone = eventData.phone_number; else if (userEventData.phone) mappedData.user.phone = userEventData.phone; - else if (userEventData.phone_number) mappedData.user.phone = userEventData.phone_number; + else if (userEventData.phone_number) + mappedData.user.phone = userEventData.phone_number; if (eventSource === 'web') { if (ttclid) mappedData.user.ttclid = ttclid; else if (eventData.ttclid) mappedData.user.ttclid = eventData.ttclid; - else if (userEventData.ttclid) mappedData.user.ttclid = userEventData.ttclid; + else if (userEventData.ttclid) + mappedData.user.ttclid = userEventData.ttclid; if (ttp) mappedData.user.ttp = ttp; else if (eventData.ttp) mappedData.user.ttp = eventData.ttp; else if (userEventData.ttp) mappedData.user.ttp = userEventData.ttp; - if (eventData.external_id) mappedData.user.external_id = eventData.external_id; + if (eventData.external_id) + mappedData.user.external_id = eventData.external_id; else if (eventData.user_id) mappedData.user.external_id = eventData.user_id; else if (eventData.userId) mappedData.user.external_id = eventData.userId; - else if (userEventData.external_id) mappedData.user.external_id = userEventData.external_id; + else if (userEventData.external_id) + mappedData.user.external_id = userEventData.external_id; if (eventData.ip_override) mappedData.user.ip = eventData.ip_override; else if (eventData.ip_address) mappedData.user.ip = eventData.ip_address; @@ -855,12 +868,14 @@ function addUserData(eventData, mappedData, eventSource) { else if (userEventData.gaid) mappedData.user.gaid = userEventData.gaid; if (eventData.att_status) mappedData.user.att_status = eventData.att_status; - else if (userEventData.att_status) mappedData.user.att_status = userEventData.att_status; + else if (userEventData.att_status) + mappedData.user.att_status = userEventData.att_status; } if (eventSource === 'web' || eventSource === 'app') { if (eventData.locale) mappedData.user.locale = eventData.locale; - else if (userEventData.locale) mappedData.user.locale = userEventData.locale; + else if (userEventData.locale) + mappedData.user.locale = userEventData.locale; } if (data.userDataList) { @@ -940,7 +955,8 @@ function determinateIsLoggingEnabled() { function addEventId(mappedData, eventData) { if (data.eventId) mappedData.event_id = data.eventId; else if (eventData.event_id) mappedData.event_id = eventData.event_id; - else if (eventData.transaction_id) mappedData.event_id = eventData.transaction_id; + else if (eventData.transaction_id) + mappedData.event_id = eventData.transaction_id; return mappedData; } @@ -958,7 +974,8 @@ function addPageData(mappedData, eventData) { }; if (data.pageReferrer) mappedData.page.referrer = data.pageReferrer; - else if (eventData.page_referrer) mappedData.page.referrer = eventData.page_referrer; + else if (eventData.page_referrer) + mappedData.page.referrer = eventData.page_referrer; else if (eventData.referrer) mappedData.page.referrer = eventData.referrer; return mappedData; @@ -973,7 +990,8 @@ function addAppData(mappedData, eventData) { else if (eventData.app_name) mappedData.app.app_name = eventData.app_name; if (data.appVersion) mappedData.app.app_version = data.appVersion; - else if (eventData.app_version) mappedData.app.app_version = eventData.app_version; + else if (eventData.app_version) + mappedData.app.app_version = eventData.app_version; let adEventData = {}; mappedData.ad = {}; @@ -985,26 +1003,37 @@ function addAppData(mappedData, eventData) { if (adEventData.callback) mappedData.ad.callback = adEventData.callback; else if (eventData.callback) mappedData.ad.callback = eventData.callback; - if (adEventData.campaign_id) mappedData.ad.campaign_id = adEventData.campaign_id; - else if (eventData.campaign_id) mappedData.ad.campaign_id = eventData.campaign_id; + if (adEventData.campaign_id) + mappedData.ad.campaign_id = adEventData.campaign_id; + else if (eventData.campaign_id) + mappedData.ad.campaign_id = eventData.campaign_id; if (adEventData.ad_id) mappedData.ad.ad_id = adEventData.ad_id; else if (eventData.ad_id) mappedData.ad.ad_id = eventData.ad_id; - if (adEventData.creative_id) mappedData.ad.creative_id = adEventData.creative_id; - else if (eventData.creative_id) mappedData.ad.creative_id = eventData.creative_id; + if (adEventData.creative_id) + mappedData.ad.creative_id = adEventData.creative_id; + else if (eventData.creative_id) + mappedData.ad.creative_id = eventData.creative_id; - if (adEventData.is_retargeting) mappedData.ad.is_retargeting = adEventData.is_retargeting; - else if (eventData.is_retargeting) mappedData.ad.is_retargeting = eventData.is_retargeting; + if (adEventData.is_retargeting) + mappedData.ad.is_retargeting = adEventData.is_retargeting; + else if (eventData.is_retargeting) + mappedData.ad.is_retargeting = eventData.is_retargeting; if (adEventData.attributed) mappedData.ad.attributed = adEventData.attributed; - else if (eventData.attributed) mappedData.ad.attributed = eventData.attributed; - - if (adEventData.attribution_type) mappedData.ad.attribution_type = adEventData.attribution_type; - else if (eventData.attribution_type) mappedData.ad.attribution_type = eventData.attribution_type; - - if (adEventData.attribution_provider) mappedData.ad.attribution_provider = adEventData.attribution_provider; - else if (eventData.attribution_provider) mappedData.ad.attribution_provider = eventData.attribution_provider; + else if (eventData.attributed) + mappedData.ad.attributed = eventData.attributed; + + if (adEventData.attribution_type) + mappedData.ad.attribution_type = adEventData.attribution_type; + else if (eventData.attribution_type) + mappedData.ad.attribution_type = eventData.attribution_type; + + if (adEventData.attribution_provider) + mappedData.ad.attribution_provider = adEventData.attribution_provider; + else if (eventData.attribution_provider) + mappedData.ad.attribution_provider = eventData.attribution_provider; if (data.adDataList) { data.adDataList.forEach((d) => {