diff --git a/src/_data/catalog/destination_categories.yml b/src/_data/catalog/destination_categories.yml index 22e572090e..2ee0442e13 100644 --- a/src/_data/catalog/destination_categories.yml +++ b/src/_data/catalog/destination_categories.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination categories last updated 2024-02-08 +# destination categories last updated 2024-02-13 items: - display_name: A/B Testing slug: a-b-testing diff --git a/src/_data/catalog/destinations.yml b/src/_data/catalog/destinations.yml index 193662499a..1663922136 100644 --- a/src/_data/catalog/destinations.yml +++ b/src/_data/catalog/destinations.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination data last updated 2024-02-08 +# destination data last updated 2024-02-13 items: - id: 637e8d185e2dec264895ea89 display_name: 1Flow @@ -10140,19 +10140,163 @@ items: label: API Key actions: [] presets: [] -- id: 64b67be0d0dd66094c162ca7 - display_name: App Fit - name: App Fit - slug: app-fit +- id: 554926390a20f4e22f0fb38a + display_name: Appcues + name: Appcues + slug: appcues hidden: false endpoints: - US regions: - us-west-2 - eu-west-1 - url: connections/destinations/catalog/app-fit + url: connections/destinations/catalog/appcues + previous_names: + - Appcues + website: http://www.appcues.com/ + status: PUBLIC + categories: + - Personalization + logo: + url: https://cdn.filepicker.io/api/file/RO2CSvXiRZyZWIoUuh6A + mark: + url: https://cdn.filepicker.io/api/file/d5US10rDRAm3rBJDHqDh + methods: + track: true + identify: true + group: true + alias: false + screen: false + page: true + platforms: + browser: true + mobile: true + server: true + warehouse: false + cloudAppObject: false + components: + - code: https://github.com/segment-integrations/analytics.js-integration-appcues + type: BROWSER + browserUnbundlingSupported: false + browserUnbundlingPublic: true + replay: false + connection_modes: + device: + web: true + mobile: false + server: false + cloud: + web: false + mobile: false + server: false + settings: + - name: apiKey + type: string + defaultValue: '' + description: >- + **Required for server-side integration functionality**. You can find your + API Key in your [Appcues account page](https://my.appcues.com/account). + required: true + label: API Key + - name: appcuesId + type: string + defaultValue: '' + description: >- + **Required for client-side integration functionality**. You can find your + Appcues ID in your [Appcues account page](https://my.appcues.com/account). + required: true + label: Appcues Id + actions: [] + presets: [] +- id: 620ff0b76a6f5d2317a7a353 + display_name: Appcues Mobile + name: Appcues Mobile + slug: appcues-mobile + hidden: true + endpoints: + - US + regions: + - us-west-2 + - eu-west-1 + url: connections/destinations/catalog/appcues-mobile + previous_names: + - AppCues Mobile + - Appcues Mobile + website: http://www.appcues.com/ + status: PUBLIC + categories: + - Personalization + - Analytics + logo: + url: https://cdn.filepicker.io/api/file/IBwccHUASduVLs7bXegV + mark: + url: https://cdn.filepicker.io/api/file/ocZ7wHLeQBOd77n6zcoQ + methods: + track: true + identify: true + group: true + alias: true + screen: false + page: true + platforms: + browser: false + mobile: true + server: false + warehouse: false + cloudAppObject: false + components: + - code: https://github.com/appcues/segment-appcues-ios + owner: PARTNER + type: IOS + - code: https://github.com/appcues/segment-appcues-android + owner: PARTNER + type: ANDROID + browserUnbundlingSupported: false + browserUnbundlingPublic: true + replay: false + connection_modes: + device: + web: false + mobile: true + server: false + cloud: + web: false + mobile: false + server: false + settings: + - name: accountId + type: string + defaultValue: '' + description: >- + You can find your Account ID on the Studio Settings page of your AppCues + Account. It should be a series of numbers, like `997086`. + required: true + label: Account ID + - name: applicationId + type: string + defaultValue: '' + description: >- + You can find your Application ID once you have registered a mobile App + with Appcues. It should look something like this: + `dfdbfe6f-e7bf-4938-8e82-7d1938e48ab8` + required: true + label: Application ID + actions: [] + presets: [] +- id: 64b67be0d0dd66094c162ca7 + display_name: AppFit + name: AppFit + slug: appfit + hidden: true + endpoints: + - US + regions: + - us-west-2 + - eu-west-1 + url: connections/destinations/catalog/appfit previous_names: - App Fit + - AppFit website: http://www.appfit.io status: PUBLIC_BETA categories: @@ -10330,149 +10474,6 @@ items: dynamic: false allowNull: false presets: [] -- id: 554926390a20f4e22f0fb38a - display_name: Appcues - name: Appcues - slug: appcues - hidden: false - endpoints: - - US - regions: - - us-west-2 - - eu-west-1 - url: connections/destinations/catalog/appcues - previous_names: - - Appcues - website: http://www.appcues.com/ - status: PUBLIC - categories: - - Personalization - logo: - url: https://cdn.filepicker.io/api/file/RO2CSvXiRZyZWIoUuh6A - mark: - url: https://cdn.filepicker.io/api/file/d5US10rDRAm3rBJDHqDh - methods: - track: true - identify: true - group: true - alias: false - screen: false - page: true - platforms: - browser: true - mobile: true - server: true - warehouse: false - cloudAppObject: false - components: - - code: https://github.com/segment-integrations/analytics.js-integration-appcues - type: BROWSER - browserUnbundlingSupported: false - browserUnbundlingPublic: true - replay: false - connection_modes: - device: - web: true - mobile: false - server: false - cloud: - web: false - mobile: false - server: false - settings: - - name: apiKey - type: string - defaultValue: '' - description: >- - **Required for server-side integration functionality**. You can find your - API Key in your [Appcues account page](https://my.appcues.com/account). - required: true - label: API Key - - name: appcuesId - type: string - defaultValue: '' - description: >- - **Required for client-side integration functionality**. You can find your - Appcues ID in your [Appcues account page](https://my.appcues.com/account). - required: true - label: Appcues Id - actions: [] - presets: [] -- id: 620ff0b76a6f5d2317a7a353 - display_name: Appcues Mobile - name: Appcues Mobile - slug: appcues-mobile - hidden: true - endpoints: - - US - regions: - - us-west-2 - - eu-west-1 - url: connections/destinations/catalog/appcues-mobile - previous_names: - - AppCues Mobile - - Appcues Mobile - website: http://www.appcues.com/ - status: PUBLIC - categories: - - Personalization - - Analytics - logo: - url: https://cdn.filepicker.io/api/file/IBwccHUASduVLs7bXegV - mark: - url: https://cdn.filepicker.io/api/file/ocZ7wHLeQBOd77n6zcoQ - methods: - track: true - identify: true - group: true - alias: true - screen: false - page: true - platforms: - browser: false - mobile: true - server: false - warehouse: false - cloudAppObject: false - components: - - code: https://github.com/appcues/segment-appcues-ios - owner: PARTNER - type: IOS - - code: https://github.com/appcues/segment-appcues-android - owner: PARTNER - type: ANDROID - browserUnbundlingSupported: false - browserUnbundlingPublic: true - replay: false - connection_modes: - device: - web: false - mobile: true - server: false - cloud: - web: false - mobile: false - server: false - settings: - - name: accountId - type: string - defaultValue: '' - description: >- - You can find your Account ID on the Studio Settings page of your AppCues - Account. It should be a series of numbers, like `997086`. - required: true - label: Account ID - - name: applicationId - type: string - defaultValue: '' - description: >- - You can find your Application ID once you have registered a mobile App - with Appcues. It should look something like this: - `dfdbfe6f-e7bf-4938-8e82-7d1938e48ab8` - required: true - label: Application ID - actions: [] - presets: [] - id: 54521fd525e721e32a72ee95 display_name: AppNexus name: AppNexus @@ -22068,7 +22069,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: vA8o374wJqCpnv9wXyxPHV + - id: uBi48hfoQuvfUD3jmLRhpa sortOrder: 0 fieldKey: id label: Person ID @@ -22090,7 +22091,7 @@ items: choices: null dynamic: false allowNull: false - - id: rrNPupfsjoygNzjRioFn3w + - id: bDcLfM9vZDxG1zpPxiJ6J sortOrder: 1 fieldKey: anonymous_id label: Anonymous ID @@ -22106,7 +22107,7 @@ items: choices: null dynamic: false allowNull: false - - id: 4MNCeUTKpA9kqnMyD8EFQZ + - id: aSVbSGv7rSFtZhPQLxCQS3 sortOrder: 2 fieldKey: email label: Email Address @@ -22120,7 +22121,7 @@ items: choices: null dynamic: false allowNull: false - - id: en1ZMBKKJ6LxhPnXUsJSVo + - id: 7KJsafPiQy8qkw3gwFTBGg sortOrder: 3 fieldKey: created_at label: Created At @@ -22134,7 +22135,7 @@ items: choices: null dynamic: false allowNull: false - - id: uzCvi76G6DaWA4cCkRYLSs + - id: 9xwkcPkppqJ6iMEkiACFPs sortOrder: 4 fieldKey: group_id label: Object ID @@ -22150,7 +22151,7 @@ items: choices: null dynamic: false allowNull: false - - id: aDi4yeT16RK3zYC49TuYLg + - id: rNZkoxokcB9YdAe8pHsgUu sortOrder: 5 fieldKey: custom_attributes label: Person Attributes @@ -22166,7 +22167,7 @@ items: choices: null dynamic: false allowNull: false - - id: jfsaJgVmwJcWk953XkvHYK + - id: qfuqajW4vkCA6FEroxsAdR sortOrder: 6 fieldKey: convert_timestamp label: Convert Timestamps @@ -22179,7 +22180,7 @@ items: choices: null dynamic: false allowNull: false - - id: vwpaBaVDmt2DAw5SD8gWLh + - id: v8VixP2r1f8hPye2jZWpik sortOrder: 7 fieldKey: object_type_id label: Object Type Id @@ -22203,7 +22204,7 @@ items: hidden: false defaultTrigger: type = "track" fields: - - id: dvDPYn9uKBNngDYSKP6hFD + - id: mih5TyJX5ahNJNuEp9czQW sortOrder: 0 fieldKey: id label: Person ID @@ -22219,7 +22220,7 @@ items: choices: null dynamic: false allowNull: false - - id: 6XqFK8KZak6cPA84Lj9qdM + - id: kLqWYqgK7qyZoZAidCzkkM sortOrder: 1 fieldKey: anonymous_id label: Anonymous ID @@ -22235,7 +22236,7 @@ items: choices: null dynamic: false allowNull: false - - id: iXjhJ1TtxCZGVXxZ4byJDK + - id: im3Vvde3taqVemMn8XPJXw sortOrder: 2 fieldKey: name label: Event Name @@ -22249,7 +22250,7 @@ items: choices: null dynamic: false allowNull: false - - id: tKftRE5tyyaA3PZaMtQYmS + - id: rNEGnXktKF3nztzQJrHify sortOrder: 3 fieldKey: event_id label: Event ID @@ -22265,7 +22266,7 @@ items: choices: null dynamic: false allowNull: false - - id: t5Lva6ELzULZQMKu5QpdLi + - id: kTRRKToMRPXJ9fC4GR2XB sortOrder: 4 fieldKey: timestamp label: Timestamp @@ -22281,7 +22282,7 @@ items: choices: null dynamic: false allowNull: false - - id: uFNCwEC7peuqP5TZggtCkk + - id: uex8YEzFzzW5SNrwZ9KvxZ sortOrder: 5 fieldKey: data label: Event Attributes @@ -22295,7 +22296,7 @@ items: choices: null dynamic: false allowNull: false - - id: 55fhZcCZf1w1yJw3jmm8cn + - id: 3QsZBxBw2CfnRmCZYhyyj3 sortOrder: 6 fieldKey: convert_timestamp label: Convert Timestamps @@ -22318,7 +22319,7 @@ items: hidden: false defaultTrigger: type = "track" and event = "Application Installed" fields: - - id: 58BBZp36k2vvZjmdfwYkVd + - id: qAHeTk9F1ovNYfg8kE9hGz sortOrder: 0 fieldKey: person_id label: Person ID @@ -22332,7 +22333,7 @@ items: choices: null dynamic: false allowNull: false - - id: fLF58VvnNwBbaVNt7W2jnx + - id: cEWK33PfEnkXWafDKAvu8A sortOrder: 1 fieldKey: device_id label: Device ID @@ -22346,7 +22347,7 @@ items: choices: null dynamic: false allowNull: false - - id: rSeMEoqxuVHTQJ2mKQfUeo + - id: iE8Db8zm2uWsei48p2f5gA sortOrder: 2 fieldKey: app_version label: App Version @@ -22360,7 +22361,7 @@ items: choices: null dynamic: false allowNull: false - - id: tURkPEwLabccKUCnw5b9zb + - id: dKDG9R1oFQdpEharQYsWgH sortOrder: 3 fieldKey: platform label: Platform @@ -22374,7 +22375,7 @@ items: choices: null dynamic: false allowNull: false - - id: kbkhtqZYxB8NEAdiPqzLtw + - id: oqCFLX872LuNn7hSkn72MF sortOrder: 4 fieldKey: last_used label: Last Used @@ -22390,7 +22391,7 @@ items: choices: null dynamic: false allowNull: false - - id: axcbGYnW8wD8Aiwj9csqpR + - id: H3MUE66bkxNVt8LxFrLtm sortOrder: 5 fieldKey: convert_timestamp label: Convert Timestamps @@ -22411,7 +22412,7 @@ items: hidden: false defaultTrigger: type = "page" fields: - - id: 4dWDqmt9MwmMybYafZtRon + - id: uPFDP5DaZtjHBBUnQAr2mC sortOrder: 0 fieldKey: id label: Person ID @@ -22427,7 +22428,7 @@ items: choices: null dynamic: false allowNull: false - - id: akzw6vdU67RAD79B2iR1k3 + - id: keHBX19kR1GBdkyoDA7CUA sortOrder: 1 fieldKey: anonymous_id label: Anonymous ID @@ -22443,7 +22444,7 @@ items: choices: null dynamic: false allowNull: false - - id: ayF1C4BLLJ6fMhPRnbk51b + - id: apisfVcsv4FYLPpsnFksar sortOrder: 2 fieldKey: url label: Page URL @@ -22457,7 +22458,7 @@ items: choices: null dynamic: false allowNull: false - - id: jUKCuwDASoNSwrqB4cBxtX + - id: qdJ5P9vCWCAVxBoEqsEDXD sortOrder: 3 fieldKey: timestamp label: Timestamp @@ -22473,7 +22474,7 @@ items: choices: null dynamic: false allowNull: false - - id: qTfzZwZaTzV2TorCNv7En7 + - id: vq35uaUUaYsh4mD3y7gvgk sortOrder: 4 fieldKey: data label: Event Attributes @@ -22487,7 +22488,7 @@ items: choices: null dynamic: false allowNull: false - - id: 4k6CnJ92awWrqMra5frQsu + - id: e7o3L6TLaFr41gM1zy7ncK sortOrder: 5 fieldKey: convert_timestamp label: Convert Timestamps @@ -22508,7 +22509,7 @@ items: hidden: false defaultTrigger: event = "Application Uninstalled" fields: - - id: wyR6EpxqLHLGL18pqmXvJ + - id: 4MjL5KnALnfk6YVuqEC3Li sortOrder: 0 fieldKey: person_id label: Person ID @@ -22522,7 +22523,7 @@ items: choices: null dynamic: false allowNull: false - - id: 96U3urbb5HsLtjvQCV56jE + - id: 9qrP1C79vDnbtg7UQf24ag sortOrder: 1 fieldKey: device_id label: Device ID @@ -22544,7 +22545,7 @@ items: hidden: false defaultTrigger: type = "screen" fields: - - id: eRUyHAc2Wv1khPzGqDiaRk + - id: oYRxDpWgf1PQ8BYqPBFRhc sortOrder: 0 fieldKey: id label: Person ID @@ -22560,7 +22561,7 @@ items: choices: null dynamic: false allowNull: false - - id: 8fpqem6h4xM3ceGVbrj6cc + - id: tDtTW17T4LY6UT6gSMngoo sortOrder: 1 fieldKey: anonymous_id label: Anonymous ID @@ -22576,7 +22577,7 @@ items: choices: null dynamic: false allowNull: false - - id: pxRVTqvuTBRALvM37XBhmG + - id: txDxKAfVXMWLBDid4uNPcu sortOrder: 2 fieldKey: name label: Screen name @@ -22590,7 +22591,7 @@ items: choices: null dynamic: false allowNull: false - - id: 6Y3h5EWqSwxmjiiZ86wmpc + - id: x346dKeQH49jf1TkXqRe6G sortOrder: 3 fieldKey: timestamp label: Timestamp @@ -22606,7 +22607,7 @@ items: choices: null dynamic: false allowNull: false - - id: aVYHMam9NktyibXrzCWprC + - id: mgpiFD9ckJVA1Mk6NCUyUd sortOrder: 4 fieldKey: data label: Event Attributes @@ -22620,7 +22621,7 @@ items: choices: null dynamic: false allowNull: false - - id: t4EuSuB4EAzGoMQLgcWBGc + - id: 3cAqfZpwSZqJC1ronreQ2p sortOrder: 5 fieldKey: convert_timestamp label: Convert Timestamps @@ -22641,7 +22642,7 @@ items: hidden: false defaultTrigger: type = "group" fields: - - id: tpGvLZAs1YZXumgjHewBTg + - id: tvC1vPuqW2Lqt4Y2pd6b3B sortOrder: 0 fieldKey: id label: Object ID @@ -22657,7 +22658,7 @@ items: choices: null dynamic: false allowNull: false - - id: cpACRLiUzkeKmHqQDu7cgn + - id: eYGvSXyTUjSz8gzWvQ9kXT sortOrder: 1 fieldKey: created_at label: Created At @@ -22671,7 +22672,7 @@ items: choices: null dynamic: false allowNull: false - - id: 9rtjhKxGy28vB2FcNEoGXm + - id: uS1QnsyTniyssKFGmHsxWi sortOrder: 2 fieldKey: custom_attributes label: Object Attributes @@ -22687,7 +22688,7 @@ items: choices: null dynamic: false allowNull: false - - id: 8yHdGVZp6q9ZRALfqyMAvd + - id: uVzks8rhcQWeWUYcFZo2hB sortOrder: 3 fieldKey: user_id label: User ID @@ -22703,7 +22704,7 @@ items: choices: null dynamic: false allowNull: false - - id: rkriaUBGMtPXATC4pDkWke + - id: 8K4kPfkvPVyftrFAzmoNb1 sortOrder: 4 fieldKey: anonymous_id label: Anonymous ID @@ -22719,7 +22720,7 @@ items: choices: null dynamic: false allowNull: false - - id: vr5GHsaAfZP5Eseb8us5DA + - id: r8VbhACf5Q7nxGF1r1c2Ms sortOrder: 5 fieldKey: object_type_id label: Object Type Id @@ -22735,7 +22736,7 @@ items: choices: null dynamic: false allowNull: false - - id: kGCS1MGKDLFfWHtUAnD5ep + - id: mgnWWNJaWEz54hSJK3wuRQ sortOrder: 6 fieldKey: convert_timestamp label: Convert Timestamps @@ -22749,36 +22750,55 @@ items: dynamic: false allowNull: false presets: - - actionId: bYpBhuXizNTPeBLwoJ1RxZ - name: Track Page View + - actionId: s7FEfD963drbt4mBbnUxfR + name: Create or Update Device + fields: + person_id: + '@path': $.userId + device_id: + '@path': $.context.device.token + app_version: + '@path': $.context.app.version + platform: + '@path': $.context.device.type + last_used: + '@path': $.timestamp + convert_timestamp: true + trigger: event = "Application Installed" or event = "Application Opened" + - actionId: ni61rg53jNVHceAAKpAMiU + name: Track Event fields: id: '@path': $.userId anonymous_id: '@path': $.anonymousId - url: - '@path': $.properties.url + name: + '@path': $.event + event_id: + '@path': $.messageId timestamp: '@path': $.timestamp data: '@path': $.properties convert_timestamp: true - trigger: type = "page" - - actionId: sqJbxd67L97ZpX6N8wphL3 - name: Track Screen View + trigger: type = "track" + - actionId: tLbwUgCeC2qVhPm8ia7adn + name: Create or Update Object fields: id: + '@path': $.groupId + created_at: + '@template': '{{traits.created_at}}' + custom_attributes: + '@path': $.traits + user_id: '@path': $.userId anonymous_id: '@path': $.anonymousId - name: - '@path': $.name - timestamp: - '@path': $.timestamp - data: - '@path': $.properties + object_type_id: + '@path': $.objectTypeId convert_timestamp: true - trigger: type = "screen" + trigger: type = "group" - actionId: k4Xb8oym74V59L3n6YmkQe name: Create or Update Person fields: @@ -22804,38 +22824,21 @@ items: object_type_id: '@path': $.objectTypeId trigger: type = "identify" - - actionId: ni61rg53jNVHceAAKpAMiU - name: Track Event + - actionId: sqJbxd67L97ZpX6N8wphL3 + name: Track Screen View fields: id: '@path': $.userId anonymous_id: '@path': $.anonymousId name: - '@path': $.event - event_id: - '@path': $.messageId + '@path': $.name timestamp: '@path': $.timestamp data: '@path': $.properties convert_timestamp: true - trigger: type = "track" - - actionId: s7FEfD963drbt4mBbnUxfR - name: Create or Update Device - fields: - person_id: - '@path': $.userId - device_id: - '@path': $.context.device.token - app_version: - '@path': $.context.app.version - platform: - '@path': $.context.device.type - last_used: - '@path': $.timestamp - convert_timestamp: true - trigger: event = "Application Installed" or event = "Application Opened" + trigger: type = "screen" - actionId: kHtCvAgiKSBNGShFzW5Wwo name: Delete Device fields: @@ -22844,23 +22847,21 @@ items: device_id: '@path': $.context.device.token trigger: event = "Application Uninstalled" - - actionId: tLbwUgCeC2qVhPm8ia7adn - name: Create or Update Object + - actionId: bYpBhuXizNTPeBLwoJ1RxZ + name: Track Page View fields: id: - '@path': $.groupId - created_at: - '@template': '{{traits.created_at}}' - custom_attributes: - '@path': $.traits - user_id: '@path': $.userId anonymous_id: '@path': $.anonymousId - object_type_id: - '@path': $.objectTypeId + url: + '@path': $.properties.url + timestamp: + '@path': $.timestamp + data: + '@path': $.properties convert_timestamp: true - trigger: type = "group" + trigger: type = "page" - id: 5c9ce8b88171a10001f9eefa display_name: CustomerSuccessBox name: CustomerSuccessBox @@ -24375,7 +24376,7 @@ items: - Encharge Cloud (Actions) - Encharge (Actions) website: https://encharge.io - status: PUBLIC_BETA + status: PUBLIC categories: - Marketing Automation - Email Marketing @@ -32365,7 +32366,7 @@ items: hidden: false defaultTrigger: type = "track" fields: - - id: qAr5CCPBtN9YdoeNq9zrLk + - id: sQEUBADbKsMmfcB7WVXv58 sortOrder: 0 fieldKey: userId label: User ID @@ -32379,7 +32380,7 @@ items: choices: null dynamic: false allowNull: false - - id: kYFfuHbHvobrVsNeYnNv8F + - id: pynkXWZjeTokcxDTSk5VQ8 sortOrder: 1 fieldKey: name label: Name @@ -32393,7 +32394,7 @@ items: choices: null dynamic: false allowNull: false - - id: uryEFxRqG7zC4kPu5YdqKK + - id: o6xa8YhPFhevxHn41vz4xE sortOrder: 2 fieldKey: properties label: Properties @@ -32409,7 +32410,7 @@ items: choices: null dynamic: false allowNull: false - - id: 2aDHpdBADRHxANPP6TyuD9 + - id: vkNnqQXEUTBkxiEACqm9ss sortOrder: 3 fieldKey: timestamp label: Timestamp @@ -32425,7 +32426,7 @@ items: choices: null dynamic: false allowNull: false - - id: 9Q7b7f4FKvvXhFkpZhFmch + - id: kRZDb5WZBNag8kFQMA5xYd sortOrder: 4 fieldKey: useRecentSession label: Use Recent Session @@ -32440,7 +32441,7 @@ items: choices: null dynamic: false allowNull: false - - id: sdQm52vETJq1GVWhkWbXv1 + - id: qJixDGH7ujERBLjrcg4qwo sortOrder: 5 fieldKey: sessionUrl label: Session URL @@ -32462,7 +32463,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: cp8KL4eFFWxEwyWhns8Dk1 + - id: w4wvnBzX3bYhHYbusFxH1e sortOrder: 0 fieldKey: userId label: User ID @@ -32476,7 +32477,7 @@ items: choices: null dynamic: false allowNull: false - - id: hLptvfit1LKu1yQMMofyNe + - id: j4ptKF7nPRh6hPTi62DLoH sortOrder: 1 fieldKey: anonymousId label: Anonymous ID @@ -32490,7 +32491,7 @@ items: choices: null dynamic: false allowNull: false - - id: prjAaP9pEhxB1FP7p8nYh5 + - id: gfBki32fpJvYGdHWyeBXCY sortOrder: 2 fieldKey: displayName label: Display Name @@ -32504,7 +32505,7 @@ items: choices: null dynamic: false allowNull: false - - id: cNhwxDdBBr57RsYhr6ctVA + - id: jisJvz3CXhnhBrT9pHifFS sortOrder: 3 fieldKey: email label: Email @@ -32518,7 +32519,7 @@ items: choices: null dynamic: false allowNull: false - - id: 9fGUd2gyaRfBQWBViDPGx3 + - id: v3tWVKPcT78jaE73AmG7hw sortOrder: 4 fieldKey: traits label: Traits @@ -32542,7 +32543,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: hdqpUQpHXHXzW3SWgLvLB6 + - id: 5G9Bcm2a5u6dLRQKUVj4Kq sortOrder: 0 fieldKey: uid label: User ID @@ -32556,7 +32557,7 @@ items: choices: null dynamic: false allowNull: false - - id: 6GM5mcAEi5H6QKPa3Xa3Vp + - id: wfwTAqmtBuDge5zcDpHoZ4 sortOrder: 1 fieldKey: anonymousId label: Anonymous ID @@ -32570,7 +32571,7 @@ items: choices: null dynamic: false allowNull: false - - id: w7AVjQt8N8rB6FEvtzDWYw + - id: i4tTvDCdtnEkUmUXbFtG8z sortOrder: 2 fieldKey: displayName label: Display Name @@ -32584,7 +32585,7 @@ items: choices: null dynamic: false allowNull: false - - id: 2mfzzFS8f9QRSmf1VGudvB + - id: Wn19LFBxA6V6CBgKj35yC sortOrder: 3 fieldKey: email label: Email @@ -32598,7 +32599,7 @@ items: choices: null dynamic: false allowNull: false - - id: pha43kfJRfhBHoJpmrRKMv + - id: ruDfktMQdpHaZGBwgBatHx sortOrder: 4 fieldKey: properties label: Traits @@ -32620,7 +32621,7 @@ items: hidden: false defaultTrigger: type = "track" fields: - - id: 9sGN7wLYtJT32WzNpB9mb6 + - id: iqeJupEacS9LPvcuH2fEsW sortOrder: 0 fieldKey: userId label: User ID @@ -32634,7 +32635,7 @@ items: choices: null dynamic: false allowNull: false - - id: 6QURwpWxGaGMHDgrZCk6ib + - id: rSeDNFQg8t6qTjxRDuPtP3 sortOrder: 1 fieldKey: name label: Name @@ -32648,7 +32649,7 @@ items: choices: null dynamic: false allowNull: false - - id: 7W8kBqzirckavPzhYUGmpx + - id: b4jRAtkEMCAgYzvwmxViQK sortOrder: 2 fieldKey: properties label: Properties @@ -32664,7 +32665,7 @@ items: choices: null dynamic: false allowNull: false - - id: mCi6FqEsy5qD9PK4ZcqmcD + - id: 84JArhBiGEHqLzujJbHGUp sortOrder: 3 fieldKey: timestamp label: Timestamp @@ -32680,7 +32681,7 @@ items: choices: null dynamic: false allowNull: false - - id: ign5H7oL2KqK1Gt6d1pA3X + - id: oBQBTidxYoE1gHunAQaY5G sortOrder: 4 fieldKey: useRecentSession label: Use Recent Session @@ -32695,7 +32696,7 @@ items: choices: null dynamic: false allowNull: false - - id: mTxgR5kSLQubVbzNXRH6WP + - id: rqRcSxyKXhnRQctWyUe3qj sortOrder: 5 fieldKey: sessionUrl label: Session URL @@ -32710,7 +32711,7 @@ items: dynamic: false allowNull: false presets: - - actionId: cQzjeG68Cd8ah9pDvBHRWi + - actionId: tSQynH2dL7wcoWdwYhLdE5 name: Track Event fields: userId: @@ -32722,10 +32723,10 @@ items: timestamp: '@path': $.timestamp trigger: type = "track" - - actionId: pV6QyXGpGYCEj1N3chZrw2 + - actionId: cG4Pxw8gkhTWa8i7ZF6bx7 name: Identify User fields: - userId: + uid: '@path': $.userId anonymousId: '@path': $.anonymousId @@ -32733,7 +32734,7 @@ items: '@path': $.traits.name email: '@path': $.traits.email - traits: + properties: '@path': $.traits trigger: type = "identify" - id: 5d3752aec1c95d00012c80aa @@ -50419,7 +50420,7 @@ items: hidden: false defaultTrigger: type = "track" and event != "Order Completed" and event != "Cart Updated" fields: - - id: mGSaw1fSQqA6UQgqHdZmZc + - id: h3LtsAdSXtCPPnUrVeN8dF sortOrder: 0 fieldKey: email label: Email Address @@ -50439,7 +50440,7 @@ items: choices: null dynamic: false allowNull: false - - id: fPEMX72Hpp1T5S4UkJhJy4 + - id: xymGtAHpaxGQ1aUV2zxC7a sortOrder: 1 fieldKey: userId label: User ID @@ -50453,7 +50454,7 @@ items: choices: null dynamic: false allowNull: false - - id: 8eW682QkFJBfa2P8PeajjJ + - id: wu1nhgvqJZunK3Ps7JXKRC sortOrder: 2 fieldKey: eventName label: Event name @@ -50467,7 +50468,7 @@ items: choices: null dynamic: false allowNull: false - - id: gBeoD7rrmgxLxxU2JX4qq2 + - id: kX3oVdHCQNHCzoYCGFs5Vb sortOrder: 3 fieldKey: dataFields label: Event Data Fields @@ -50481,7 +50482,7 @@ items: choices: null dynamic: false allowNull: false - - id: 3BdwKga2sDCroUcu6Gv4T1 + - id: 5DfeLXuXbQ1BPwV78Y8epH sortOrder: 4 fieldKey: id label: Event ID @@ -50495,7 +50496,7 @@ items: choices: null dynamic: false allowNull: false - - id: aRkPKLSK8JUXJjRUy44kCg + - id: cuDR6uokrEkGSTfjyJZZxS sortOrder: 5 fieldKey: createdAt label: Timestamp @@ -50509,7 +50510,7 @@ items: choices: null dynamic: false allowNull: false - - id: 2nyXo7M6eKTfBsBPWnrqMP + - id: cPVTgiybaDgWT2Ndi4CfiN sortOrder: 6 fieldKey: campaignId label: Campaign ID @@ -50523,7 +50524,7 @@ items: choices: null dynamic: false allowNull: false - - id: c5SPmYTP3DCPbAS22QoY3H + - id: m6VWporL6u5gLqXxsMBxsP sortOrder: 7 fieldKey: templateId label: Template ID @@ -50545,7 +50546,7 @@ items: hidden: false defaultTrigger: type = "track" and event == "Cart Updated" fields: - - id: erxwiXfQeSuooWyr3bCXAq + - id: 3cwG8qetmfJ7DXAtJEj2kh sortOrder: 0 fieldKey: user label: User Data @@ -50573,7 +50574,7 @@ items: choices: null dynamic: false allowNull: false - - id: q2fgY2AZKJ6ytQ37syHs5P + - id: mKJ18sizAKyVFFmB1VQbQH sortOrder: 1 fieldKey: items label: Cart items @@ -50616,7 +50617,7 @@ items: hidden: false defaultTrigger: type = "track" and event == "Order Completed" fields: - - id: b3Gha23T4etPQ1efdtzrM8 + - id: i48Xb3AWZaoqCy51coWWSR sortOrder: 0 fieldKey: id label: Order ID @@ -50634,7 +50635,7 @@ items: choices: null dynamic: false allowNull: false - - id: 4ocJEZyUDCg3kKNJgAv8pe + - id: fMaCHP4cLKTLXv3rHRJDwD sortOrder: 1 fieldKey: user label: User Data @@ -50662,7 +50663,7 @@ items: choices: null dynamic: false allowNull: false - - id: 93dcBEfoXceo2pwwZbHF7h + - id: cWEyLBK7zxXtr4k7pQNpV4 sortOrder: 2 fieldKey: dataFields label: Event Data Fields @@ -50676,7 +50677,7 @@ items: choices: null dynamic: false allowNull: false - - id: bGBXCYUPBr65anoKfwa91j + - id: uF78EHrvLTzyunJe5Vproe sortOrder: 3 fieldKey: items label: Cart items @@ -50711,7 +50712,7 @@ items: choices: null dynamic: false allowNull: false - - id: bY4JTGpFksNNr42hFqyL5i + - id: aH8WrzzQhqh7EBXnpybwu9 sortOrder: 4 fieldKey: total label: Total @@ -50725,7 +50726,7 @@ items: choices: null dynamic: false allowNull: false - - id: 7Lm5uJKg5qbxeE95dm3iz1 + - id: cQcqwYu7A7fPbDjkdrYimG sortOrder: 5 fieldKey: createdAt label: Timestamp @@ -50739,7 +50740,7 @@ items: choices: null dynamic: false allowNull: false - - id: 5gqoTRoq8afyC1Mr3r2H8s + - id: cqdcFYiUkozTYBQLfcScJZ sortOrder: 6 fieldKey: campaignId label: Campaign ID @@ -50753,7 +50754,7 @@ items: choices: null dynamic: false allowNull: false - - id: 3Kds1wiK5QCEvH4we6Uvam + - id: imNjZaQN1TQy2zLos2G4au sortOrder: 7 fieldKey: templateId label: Template ID @@ -50775,7 +50776,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: dFtwDHbv2b3PLX83MtvnEB + - id: 3CVTPExfpFxBhwewTQGk43 sortOrder: 0 fieldKey: email label: Email Address @@ -50789,7 +50790,7 @@ items: choices: null dynamic: false allowNull: false - - id: 717WkXbK5WP1yuWHpnci3K + - id: mi6mFvF4ySgwTom3LrTR74 sortOrder: 1 fieldKey: userId label: User ID @@ -50803,7 +50804,7 @@ items: choices: null dynamic: false allowNull: false - - id: u5znmkJdbGYB5fx5YRcL1u + - id: t9csoRow3tCf5cnDnn3wMu sortOrder: 2 fieldKey: dataFields label: User Data Fields @@ -50817,7 +50818,7 @@ items: choices: null dynamic: false allowNull: false - - id: vk4EMv6hhKvpkPuGynfzNV + - id: sUrPffLkhBJ6z3QS7rBqky sortOrder: 3 fieldKey: phoneNumber label: User Phone Number @@ -50833,7 +50834,7 @@ items: choices: null dynamic: false allowNull: true - - id: mrXMjP1EvS2Guk8keUutf1 + - id: 5c6GA9o1wH8T22gavQHiLu sortOrder: 4 fieldKey: mergeNestedObjects label: Merge Nested Objects @@ -50850,35 +50851,24 @@ items: dynamic: false allowNull: false presets: - - actionId: 3MrS3Se3PAaxL4wpQN93gA - name: Track Calls + - actionId: ifeXsLqNNjJ5HJdRKSJwea + name: Identify Calls fields: email: - '@if': - exists: - '@path': $.properties.email - then: - '@path': $.properties.email - else: - '@path': $.context.traits.email + '@path': $.traits.email userId: '@path': $.userId - eventName: - '@path': $.event dataFields: - '@path': $.properties - id: - '@path': $.messageId - createdAt: - '@path': $.timestamp - campaignId: - '@path': $.properties.campaignId - templateId: - '@path': $.properties.templateId - trigger: type = "track" and event != "Order Completed" and event != "Cart Updated" - - actionId: 455R6caawb6HFBsewGmtS3 - name: Update Cart Calls + '@path': $.traits + phoneNumber: + '@path': $.traits.phone + mergeNestedObjects: false + trigger: type = "identify" + - actionId: hgu8jn8qk4wt7VZD4P67uV + name: Order Completed Calls fields: + id: + '@path': $.properties.order_id user: email: '@if': @@ -50895,6 +50885,8 @@ items: phoneNumber: '@path': $.context.traits.phone mergeNestedObjects: false + dataFields: + '@path': $.properties items: '@arrayPath': - $.properties.products @@ -50916,12 +50908,44 @@ items: '@path': image_url description: '@path': description - trigger: type = "track" and event = "Cart Updated" - - actionId: hgu8jn8qk4wt7VZD4P67uV - name: Order Completed Calls + total: + '@path': $.properties.total + createdAt: + '@path': $.timestamp + campaignId: + '@path': $.properties.campaignId + templateId: + '@path': $.properties.templateId + trigger: type = "track" and event = "Order Completed" + - actionId: 3MrS3Se3PAaxL4wpQN93gA + name: Track Calls fields: + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.context.traits.email + userId: + '@path': $.userId + eventName: + '@path': $.event + dataFields: + '@path': $.properties id: - '@path': $.properties.order_id + '@path': $.messageId + createdAt: + '@path': $.timestamp + campaignId: + '@path': $.properties.campaignId + templateId: + '@path': $.properties.templateId + trigger: type = "track" and event != "Order Completed" and event != "Cart Updated" + - actionId: 455R6caawb6HFBsewGmtS3 + name: Update Cart Calls + fields: user: email: '@if': @@ -50938,8 +50962,6 @@ items: phoneNumber: '@path': $.context.traits.phone mergeNestedObjects: false - dataFields: - '@path': $.properties items: '@arrayPath': - $.properties.products @@ -50961,28 +50983,7 @@ items: '@path': image_url description: '@path': description - total: - '@path': $.properties.total - createdAt: - '@path': $.timestamp - campaignId: - '@path': $.properties.campaignId - templateId: - '@path': $.properties.templateId - trigger: type = "track" and event = "Order Completed" - - actionId: ifeXsLqNNjJ5HJdRKSJwea - name: Identify Calls - fields: - email: - '@path': $.traits.email - userId: - '@path': $.userId - dataFields: - '@path': $.traits - phoneNumber: - '@path': $.traits.phone - mergeNestedObjects: false - trigger: type = "identify" + trigger: type = "track" and event = "Cart Updated" - id: 62fec615a42fa3dbfd208ce7 display_name: Iterate Web (Actions) name: Iterate Web (Actions) @@ -80725,13 +80726,19 @@ items: - code: https://github.com/Survicate/analytics.js-integration-survicate owner: PARTNER type: BROWSER + - code: https://github.com/Survicate/analytics-swift-survicate + owner: PARTNER + type: IOS + - code: https://github.com/Survicate/analytics-kotlin-survicate + owner: PARTNER + type: ANDROID browserUnbundlingSupported: false browserUnbundlingPublic: true replay: false connection_modes: device: web: true - mobile: false + mobile: true server: false cloud: web: false diff --git a/src/_data/catalog/destinations_private.yml b/src/_data/catalog/destinations_private.yml index 8dfcca671a..df208be1d9 100644 --- a/src/_data/catalog/destinations_private.yml +++ b/src/_data/catalog/destinations_private.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination data last updated 2024-02-08 +# destination data last updated 2024-02-13 items: - id: 54521fd725e721e32a72eec6 display_name: Intercom diff --git a/src/_data/catalog/slugs.yml b/src/_data/catalog/slugs.yml index 1cb1884d53..1fc9b193d8 100644 --- a/src/_data/catalog/slugs.yml +++ b/src/_data/catalog/slugs.yml @@ -207,5 +207,7 @@ destinations: override: "actions-aggregations-io" - original: "fullstory-cloud-mode-actions" override: "actions-fullstory-cloud" - - original: "klayvio-actions" - override: "actions-klayvio" \ No newline at end of file + - original: "actions-klayvio" + override: "klayvio-actions" + - original: "google-analytics-4-cloud" + override: "actions-google-analytics-4" \ No newline at end of file diff --git a/src/_data/catalog/source_categories.yml b/src/_data/catalog/source_categories.yml index 405346ce3d..59149a8126 100644 --- a/src/_data/catalog/source_categories.yml +++ b/src/_data/catalog/source_categories.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# source categories last updated 2024-02-08 +# source categories last updated 2024-02-13 items: - display_name: A/B Testing slug: a-b-testing diff --git a/src/_data/catalog/sources.yml b/src/_data/catalog/sources.yml index 4c0f2d473f..5c11b3cad3 100644 --- a/src/_data/catalog/sources.yml +++ b/src/_data/catalog/sources.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# sources last updated 2024-02-08 +# sources last updated 2024-02-13 items: - id: 8HWbgPTt3k display_name: .NET diff --git a/src/_data/support-types.yml b/src/_data/support-types.yml index c611213c64..cd629b7c89 100644 --- a/src/_data/support-types.yml +++ b/src/_data/support-types.yml @@ -1,10 +1,10 @@ types: - display_name: Community slug: community - support-note: "Segment originally developed but no longer manages or updates community libraries. These libraries are available on GitHub under the MIT License for the open-source community." - - display_name: Legacy - slug: legacy - support-note: "Legacy libraries function reliably and send data as intended but receive no new feature support other than security and privacy updates." + support-note: "Segment doesn't manage or update community libraries. These libraries are available on GitHub under the MIT License for the open-source community to fork or contribute." + - display_name: Maintenance + slug: maintenance + support-note: "Maintenance libraries send data as intended but receive no new feature support and only critical maintenance updates from Segment. When possible, Segment recommends using a Flagship version of these libraries." - display_name: Flagship slug: flagship support-note: "Flagship libraries offer the most up-to-date functionality on Segment’s most popular platforms. Segment actively maintains flagship libraries, which benefit from new feature releases and ongoing development and support." diff --git a/src/connections/destinations/catalog/actions-segment-profiles/index.md b/src/connections/destinations/catalog/actions-segment-profiles/index.md index 9475b8eee0..31b0eb7b4f 100644 --- a/src/connections/destinations/catalog/actions-segment-profiles/index.md +++ b/src/connections/destinations/catalog/actions-segment-profiles/index.md @@ -34,3 +34,6 @@ The Segment Profiles destination is not subject to API call or MTU costs. Any us ### Succesful syncs but no changes on profiles Make sure that the Endpoint Region setting matches the region of your workspace. If the region is correct and you don't see any profile changes, [contact Segment](https://segment.com/help/contact/){:target="_blank"}. + +### Test Mapping +The **Test Mapping** feature on the Mapping page does not send events to Profiles. It will only validate the mappings and confirm that the event will be accepted by the Tracking API. To send and validate the event in profile, please run a RETL sync. diff --git a/src/connections/destinations/catalog/actions-segment/index.md b/src/connections/destinations/catalog/actions-segment/index.md index d4decadd8d..da70dd5eeb 100644 --- a/src/connections/destinations/catalog/actions-segment/index.md +++ b/src/connections/destinations/catalog/actions-segment/index.md @@ -32,3 +32,6 @@ The Segment Connections destination enables you to mold data extracted from your ### API Calls and MTUs The Segment Connections destination sends data to Segment's Tracking API, which has cost implications. New users will count as new MTUs and each call will count as an API call. For information on how Segment calculates MTUs and API calls, please see [MTUs, Throughput and Billing](/docs/guides/usage-and-billing/mtus-and-throughput/). + +### Test Mapping +The **Test Mapping** feature on the Mapping page does not send events to the Tracking API. It only validates the mappings and confirms that the event will be accepted by the Tracking API. To send and validate the event in your source, run a RETL sync. \ No newline at end of file diff --git a/src/connections/destinations/catalog/actions-stackadapt/images/copy-pixel-id.png b/src/connections/destinations/catalog/actions-stackadapt/images/copy-pixel-id.png new file mode 100644 index 0000000000..5779b94896 Binary files /dev/null and b/src/connections/destinations/catalog/actions-stackadapt/images/copy-pixel-id.png differ diff --git a/src/connections/destinations/catalog/actions-stackadapt/images/install-pixel-link.png b/src/connections/destinations/catalog/actions-stackadapt/images/install-pixel-link.png new file mode 100644 index 0000000000..10dda554bd Binary files /dev/null and b/src/connections/destinations/catalog/actions-stackadapt/images/install-pixel-link.png differ diff --git a/src/connections/destinations/catalog/actions-stackadapt/images/order-completed-event-rule.png b/src/connections/destinations/catalog/actions-stackadapt/images/order-completed-event-rule.png new file mode 100644 index 0000000000..d850eceeb0 Binary files /dev/null and b/src/connections/destinations/catalog/actions-stackadapt/images/order-completed-event-rule.png differ diff --git a/src/connections/destinations/catalog/actions-stackadapt/images/user-registered-event-rule.png b/src/connections/destinations/catalog/actions-stackadapt/images/user-registered-event-rule.png new file mode 100644 index 0000000000..a4f493cfad Binary files /dev/null and b/src/connections/destinations/catalog/actions-stackadapt/images/user-registered-event-rule.png differ diff --git a/src/connections/destinations/catalog/actions-stackadapt/index.md b/src/connections/destinations/catalog/actions-stackadapt/index.md new file mode 100644 index 0000000000..7c8f56abb4 --- /dev/null +++ b/src/connections/destinations/catalog/actions-stackadapt/index.md @@ -0,0 +1,117 @@ +--- +title: StackAdapt (Actions) Destination +hide-boilerplate: true +hide-dossier: true +beta: true +id: 61d8859be4f795335d5c677c +hidden: true +--- + +{% include content/plan-grid.md name="actions" %} + +By setting up StackAdapt as a Segment destination, your Segment events will be forwarded to [StackAdapt](https://www.stackadapt.com/){:target="_blank"}. This allows you to generate retargeting and lookalike audiences, track conversions, and measure return on ad spend using your Segment events - bypassing the need to install the StackAdapt pixel on your website and write code to send events to StackAdapt. + +This destination is maintained by StackAdapt. For any issues with the destination, please [submit a ticket to StackAdapt's support team](https://support.stackadapt.com/hc/en-us/requests/new?ticket_form_id=360006572593){:target="_blank"}. + + +## Getting started + +### Getting your StackAdapt Universal Pixel ID + +1. Log in to your StackAdapt account and navigate to the Pixels page. +2. Above the list of pixels, click **Install StackAdapt Pixel**. + + ![Image showing location of link to install Pixel](images/install-pixel-link.png) + +3. In the instructions that appear, copy the universal pixel ID from the code snippet. Below is an example of a code snippet where the universal pixel ID is `sqQHa3Ob1hFi__2EcYYVZg1`. + +![Image showing location of universal pixel ID in code snippet](images/copy-pixel-id.png) + +### Setting up the StackAdapt destination in Segment + +1. From the Segment web app, navigate to **Connections > Catalog > Destinations**. +2. Search for and select the "StackAdapt" destination. +3. Click **Add Destination**. +4. Select an existing source to connect to the StackAdapt destination. +5. Give the destination a name. +6. On the Settings screen, provide your StackAdapt Universal Pixel ID. This can be found on the Pixels page in StackAdapt as described above. +7. Toggle on the destination using the **Enable Destination** toggle. +8. Click **Save Change**. + +### StackAdapt Pixel setup + +Segment events that are forwarded to StackAdapt can be used to track ad conversions, and to generate retargeting and lookalike audiences. Please review the StackAdapt documentation for the general setup of these if you are not already familiar: + +- [Creating Conversion Events](https://support.stackadapt.com/hc/en-us/articles/360005859214-Creating-Conversion-Events){:target="_blank"} +- [Creating Retargeting Audiences](https://support.stackadapt.com/hc/en-us/articles/360005939153-Creating-Retargeting-Audiences){:target="_blank"} +- [How to Generate and Target a Lookalike Audience](https://support.stackadapt.com/hc/en-us/articles/360023738733-How-to-Generate-and-Target-a-Lookalike-Audience){:target="_blank"} + +Setup of conversion events, retargeting audiences, and lookalike audiences that fire on Segment events is largely the same as the setup in the StackAdapt documentation, with a few caveats: + +1. You **must** select "Universal Pixel" as the pixel type. This is because the StackAdapt destination in Segment uses your Universal Pixel ID to send events to StackAdapt. +2. There is no need to install the StackAdapt pixel on your website as instructed in the "Installation" step, since Segment will forward events to StackAdapt that would normally be tracked by the StackAdapt pixel. +3. If you choose to set up event rules, you will need to ensure that you use the event keys supported by the the StackAdapt destination as described below. + +### Event rules + +The StackAdapt Segment destination sends an `action` event key which by default is mapped to the Segment event name. Creating rules on this `action` key should be sufficient for most simple event rule use cases. For example, if you fire a Segment event when a user fills out a registration form on your website and want to track this as a conversion event in StackAdapt, you can create a rule in StackAdapt that matches the `action` key with the Segment event name. + +A Segment event fired with the code `analytics.track("User Registered")` can be tracked as a conversion event with an event rule that matches an `action` of `User Registered` as shown below: + +![Image showing event rule in StackAdapt the matches a User Registered event](images/user-registered-event-rule.png) + +#### Ecommerce events + +The StackAdapt destination also supports forwarding ecommerce fields for the purpose of creating event rules that match ecommerce events, with default mappings to properties specified in the [Segment V2 Ecommerce Event Spec](/docs/connections/spec/ecommerce/v2/) as described in the below table: + +| Segment Ecommerce Event Property | StackAdapt Event Key | +|----------------------------------|----------------------| +| `order_id` | `order_id` | +| `revenue` | `revenue` | +| `product_id` | `product_id` | +| `category` | `product_category` | +| `name` | `product_name` | +| `price` | `product_price` | +| `quantity` | `product_quantity` | + +For events that can involve multiple products, such as checkout events, StackAdapt forwards a JSON array of product objects with a `products` key and fields that map by default to following Segment product array fields: + +| Segment Ecommerce Event Property | StackAdapt Product Object Key | +|----------------------------------|-------------------------------| +| `products.$.product_id` | `product_id` | +| `products.$.category` | `product_category` | +| `products.$.name` | `product_name` | +| `products.$.price` | `product_price` | +| `products.$.quantity` | `product_quantity` | + +For example, to create a conversion event when an order is completed with a revenue value greater than 10, you could set up an event rule matching an `action` value of `Order Completed` and a `revenue` value greater than 10 as shown below: + +![Image showing event rule in StackAdapt the matches an Order Completed event with a revenue greater than 10](images/order-completed-event-rule.png) + +This rule would match a Segment event fired with code such as: + +```javascript +analytics.track("Order Completed", { + order_id: '50314b8e9bcf000000000000', + revenue: 11.5 + products: [ + { + product_id: '507f1f77bcf86cd799439011', + name: 'Monopoly: 3rd Edition', + price: 11.5, + quantity: 1, + category: 'Games' + } + ] +}); +``` + +### URL rules + +If you are using URL rules, these will be matched whenever Segment sends an event to StackAdapt with a `url` matching the URL rule. This should be accomplished by the page event Segment automatically fires when a page is viewed, so setup of URL rules should be identical to setting up URL rules with the StackAdapt pixel. + +{% include components/actions-fields.html %} + +## Data and privacy + +Review [StackAdapt's Data Processing Agreement](https://www.stackadapt.com/data-processing-agreement){:target="_blank"} to learn more about StackAdapt's privacy and data terms. diff --git a/src/connections/destinations/catalog/avo/images/api-key.png b/src/connections/destinations/catalog/avo/images/api-key.png new file mode 100644 index 0000000000..c038148bde Binary files /dev/null and b/src/connections/destinations/catalog/avo/images/api-key.png differ diff --git a/src/connections/destinations/catalog/avo/images/avo-destination.png b/src/connections/destinations/catalog/avo/images/avo-destination.png new file mode 100644 index 0000000000..d59a4e984f Binary files /dev/null and b/src/connections/destinations/catalog/avo/images/avo-destination.png differ diff --git a/src/connections/destinations/catalog/avo/images/issue-sidebar.png b/src/connections/destinations/catalog/avo/images/issue-sidebar.png new file mode 100644 index 0000000000..de597c2c1c Binary files /dev/null and b/src/connections/destinations/catalog/avo/images/issue-sidebar.png differ diff --git a/src/connections/destinations/catalog/avo/images/select-source.png b/src/connections/destinations/catalog/avo/images/select-source.png new file mode 100644 index 0000000000..35307c852a Binary files /dev/null and b/src/connections/destinations/catalog/avo/images/select-source.png differ diff --git a/src/connections/destinations/catalog/avo/index.md b/src/connections/destinations/catalog/avo/index.md new file mode 100644 index 0000000000..c708450fb9 --- /dev/null +++ b/src/connections/destinations/catalog/avo/index.md @@ -0,0 +1,75 @@ +--- +title: Avo Destination +id: 65c2465d0d7d550aa8e7e5c6 +beta: true +hidden: true +redirect_from: "/connections/destinations/catalog/actions-avo/" +--- + +With [Avo](https://avo.app){:target="\_blank”} Inspector, data quality is no longer a dream, it’s a workflow. + +[Inspector](https://www.avo.app/data-observability){:target="\_blank”} lets you find, triage, fix, and prevent data quality issues in your product analytics. Launch Inspector to discover all your data quality issues and systematically work towards better data, one resolved issue at a time. + +The Avo Inspector destination automatically extracts event schemas from your product events, sending only the signatures from the connected Segment sources to the Inspector API. **Avo Inspector receives no PII data from your source**. + + +{% include content/plan-grid.md name="actions" %} + +## Supported methods + +### Track events + +The Avo destination supports Track events. + +Example of Track call: + +```js +analytics.track("Login", { + userName: "John", + city: "San Fransisco" + age: 32 +}); +``` + +This Track call is translated into a event signature that is sent to Avo's Inspector API. + +```js +{ + "eventName": "Login", + "properties": [ + {"userName": "string"}, + {"city": "string"} + {"age": "integer"} + ] +} +``` + +## Getting started + +1. From the Segment web app, click **Catalog**, then click **Destinations**. +2. Find the Destinations Actions item in the left navigation, and click it. +3. Select Avo from the list of destinations, then click **Add destination**. +4. Select a source to connect to Avo (Actions) and click **Next**. +5. Enter a name for your Avo (Actions) destination and click **Create destination**. + + + +{% include components/actions-fields.html %} + +## Getting Avo API key +Before connecting the segment source to Avo, you will need an API key for your source. + +1. Create your Avo workspace at avo.app (If you don’t have one already). +2. From the Avo workspace sidebar, select **Sources**. +3. Select an existing source or create a new one. (Avo recommends naming your Avo sources the same as your Segment sources, for example "Web", "iOS", "Android") + ![Select a source](images/select-source.png) +4. Click the **Inspector Setup** tab in the Avo source +5. Copy the API Key + ![Copy API key](images/api-key.png) + +## Destination settings +1. Copy the **API Key** from Avo into the field `API Key` in settings. +2. Select an environment you'd like the data to go to within Avo. It should reflect from what environment the source is receiving data from. (**Production** / **Development** / **Staging**) +3. **(Optional):** If you have an event property describing the app release version of your source you can provide it under App Version. By default the destination attempts to extract your app release version from `{context.app.version}` which defaults to `unversioned` if that does not exist. Having accurate app release versions in Avo Inspector will help you identify which releases an issue is impacting, and monitor for regressions in future releases after you’ve resolved the issue. + +![Select a source](images/avo-destination.png) diff --git a/src/connections/destinations/catalog/encharge-cloud-actions/index.md b/src/connections/destinations/catalog/encharge-cloud-actions/index.md index 7cb0067f87..9c615aa32b 100644 --- a/src/connections/destinations/catalog/encharge-cloud-actions/index.md +++ b/src/connections/destinations/catalog/encharge-cloud-actions/index.md @@ -3,7 +3,6 @@ title: Encharge (Actions) Destination hide-personas-partial: true hide-boilerplate: true hide-cmodes: true -beta: true id: 642440d46b66b3eeac42b581 --- {% include content/plan-grid.md name="actions" %} diff --git a/src/connections/destinations/catalog/equals/index.md b/src/connections/destinations/catalog/equals/index.md new file mode 100644 index 0000000000..51de0ce704 --- /dev/null +++ b/src/connections/destinations/catalog/equals/index.md @@ -0,0 +1,7 @@ +--- +title: 'Equals Destination' +hidden: true +id: 659eb6903c4d201ebd9e2f5c +published: false +beta: true +--- diff --git a/src/connections/oauth.md b/src/connections/oauth.md index 03d06c3c41..387c7cafaa 100644 --- a/src/connections/oauth.md +++ b/src/connections/oauth.md @@ -67,14 +67,62 @@ Once you've connected your source to OAuth, you can enable it. To enable your so To disable your source from OAuth, turn the toggle off for **Enable OAuth**. - +## Obtain the access token +You can obtain an access token once you create an OAuth application and enable a source to OAuth. + +Access tokens are only valid within a region. The supported regional authorization servers are: +* Oregon - `https://oauth2.segment.io` +* Dublin - `https://oauth2.eu1.segmentapis.com` + +To obtain the access token: + +1. Create a JWT token with the header and payload as below: + + Header + ``` + { + "alg":"RS256", + "typ":"JWT", + "kid":"<>" + } + ``` + + Payload + ``` + { + "iss":"<>", + "sub":"<>", + "aud":"<>", + "iat":"<>", + "exp":"<>", + "jti":"<>" + } + ``` + + Field | Description + ------------ | ------------- + KID | The key ID of the public key in the OAuth application. + ISS | The identifier of the JWT issuer. + SUB | The OAuth application ID. + IAT | The epoch time in seconds when the token was issued. + EXP | The expiry time in seconds. This is expected to be valid only for a short duration under a minute. + JTI | The unique identifer for the token. + +2. Send a form-url-encoded `POST` request to the regional authorization server with the following parameters: + + ``` + grant_type=client_credentials + client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer + client_assertion=<> + scope=<> + ``` + + Field | Description + ----- | ------------ + JWT | The signed JWT token string from Step 1. + SCOPE | Scopes for which token is requested. See [supported scopes](#supported-scopes). + +To use the access token, see an example of how to use the access token in the [HTTP API source](). ## Edit an OAuth application To edit an existing OAuth application: diff --git a/src/connections/sources/catalog/cloud-apps/google-ads/index.md b/src/connections/sources/catalog/cloud-apps/google-ads/index.md index aca7e28989..73a3d9c551 100644 --- a/src/connections/sources/catalog/cloud-apps/google-ads/index.md +++ b/src/connections/sources/catalog/cloud-apps/google-ads/index.md @@ -61,14 +61,14 @@ Collections are the groupings of resources Segment pulls from your source. In yo | Collection | Type | Description | | --------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ad_groups | object | An [ad group](https://developers.google.com/google-ads/api/reference/rpc/v10/AdGroup){:target="_blank"} is a set of ads that share the same daily or lifetime budget, schedule, bid type, bid info, and targeting data | -| ad_performance_report | object | [Ad Performance Report](https://developers.google.com/google-ads/api/docs/migration/overview){:target="_blank"} includes all statistics aggregated at the ad level, one row per ad. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | -| ads | object | An [ad object](https://developers.google.com/google-ads/api/reference/rpc/v10/Ad){:target="_blank"} contains the data necessary to visually display an ad and associate it with a corresponding ad set. | -| campaigns | object | A [campaign](https://developers.google.com/google-ads/api/reference/rpc/v10/Campaign){:target="_blank"} is a grouping of ad sets which are organized by the same business goal. | -| campaign_performance_report | object | [Campaign performance reports](https://developers.google.com/google-ads/api/docs/migration/overview){:target="_blank"} include a daily snapshot of performance statistics per campaign. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | -| click_performance_report | object | [Click performance Reports](https://developers.google.com/google-ads/api/docs/migration/overview){:target="_blank"} include stats at the click level, including both valid and invalid clicks. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | -| search_performance_report | object | **[Contact Support](https://segment.com/help/contact) to add this collection** [Search query performance Reports](https://developers.google.com/google-ads/api/docs/migration/overview){:target="_blank"} include statistics aggregated at the search terms level, one row per combination of search terms. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | -| keywords_performance_report | object | **[Contact Support](https://segment.com/help/contact) to add this collection** [Keywords Performance Report](https://developers.google.com/google-ads/api/docs/migration/overview){:target="_blank"} includes all statistics aggregated at the keyword level, one row per keyword. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | +| ad_groups | object | An [ad group](https://developers.google.com/google-ads/api/reference/rpc/v15/AdGroup){:target="_blank"} is a set of ads that share the same daily or lifetime budget, schedule, bid type, bid info, and targeting data | +| ad_performance_report | object | [Ad Performance Report](https://developers.google.com/google-ads/api/reference/rpc/v15/AdGroupAd){:target="_blank"} includes all statistics aggregated at the ad level, one row per ad. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | +| ads | object | An [ad object](https://developers.google.com/google-ads/api/reference/rpc/v15/Ad){:target="_blank"} contains the data necessary to visually display an ad and associate it with a corresponding ad set. | +| campaigns | object | A [campaign](https://developers.google.com/google-ads/api/reference/rpc/v15/Campaign){:target="_blank"} is a grouping of ad sets which are organized by the same business goal. | +| campaign_performance_report | object | [Campaign performance reports](https://developers.google.com/google-ads/api/reference/rpc/v15/Campaign){:target="_blank"} include a daily snapshot of performance statistics per campaign. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | +| click_performance_report | object | [Click performance Reports](https://developers.google.com/google-ads/api/reference/rpc/v15/ClickView){:target="_blank"} include stats at the click level, including both valid and invalid clicks. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | +| search_performance_report | object | **[Contact Support](https://segment.com/help/contact){:target="_blank"} to add this collection** [Search query performance Reports](https://developers.google.com/google-ads/api/reference/rpc/v15/SearchTermView){:target="_blank"} include statistics aggregated at the search terms level, one row per combination of search terms. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | +| keywords_performance_report | object | **[Contact Support](https://segment.com/help/contact){:target="_blank"} to add this collection** [Keywords Performance Report](https://developers.google.com/google-ads/api/reference/rpc/v15/KeywordView){:target="_blank"} includes all statistics aggregated at the keyword level, one row per keyword. Segment pulls [7 days of data.](https://developers.google.com/google-ads/api/docs/query/date-ranges){:target="_blank"} | ### Video Campaign Reports diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 988ba1ff20..af468a223d 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -89,3 +89,5 @@ Collections are the groupings of resources Segment pulls from your source. In yo If you're getting an "Invalid Credentials" error when setting up the SendGrid source, send a direct ping to the [SendGrid Marketing Campaigns API](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”} to test if you're using the correct credentials. Make sure you allowlist Segment IP addresses on SendGrid. [Contact Segment](https://segment.com/help/contact/){:target="_blank”} for the list of IP addresses to allowlist. + +When you disable your SendGrid source, you'll need to also disable the webhook portion of your configuration. diff --git a/src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/index.md b/src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/index.md index b08c2aa0ae..e1ec470701 100644 --- a/src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/index.md +++ b/src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/index.md @@ -50,6 +50,12 @@ plugins: url: https://cdn.filepicker.io/api/file/W6teayYkRmKgb8SMqxIn mark: url: https://cdn.filepicker.io/api/file/ztKtaLBUT7GUZKius5sa + # - name: Intercom + # url: connections/sources/catalog/libraries/mobile/apple/destination-plugins/intercom-swift/ + # logo: + # url: https://cdn.filepicker.io/api/file/PLYt4sbQsa4vXGtq0oxe + # mark: + # url: https://cdn.filepicker.io/api/file/TPPTdCreS9SO46zTF0ax - name: Localytics url: connections/sources/catalog/libraries/mobile/apple/destination-plugins/localytics-swift/ logo: diff --git a/src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/nielsen-dcr.md b/src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/nielsen-dcr-swift.md similarity index 100% rename from src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/nielsen-dcr.md rename to src/connections/sources/catalog/libraries/mobile/apple/destination-plugins/nielsen-dcr-swift.md diff --git a/src/connections/sources/catalog/libraries/mobile/react-native/implementation.md b/src/connections/sources/catalog/libraries/mobile/react-native/implementation.md index a25f877b52..fc2fe1e645 100644 --- a/src/connections/sources/catalog/libraries/mobile/react-native/implementation.md +++ b/src/connections/sources/catalog/libraries/mobile/react-native/implementation.md @@ -14,6 +14,8 @@ Once you've installed the Analytics React Native library, you can start collecti The [Identify](/docs/connections/spec/identify/) method lets you tie a user to their actions and record traits about them. This includes a unique user ID and any optional traits you know about them like their email, name, or address. The traits option can include any information you want to tie to the user. When using any of the [reserved user traits](/docs/connections/spec/identify/#traits), be sure the information reflects the name of the trait. For example, `email` should always be a string of the user's email address. +To send updates for anonymous users who haven't yet signed up for your app, pass `null` for the `userId` like in the example below. + {% codeexample %} {% codeexampletab Method signature %} ```js @@ -30,6 +32,13 @@ identify('user-123', { email: 'hello@test.com', plan: 'premium', }); + +//To send traits for an anonymous user +identify(null, { + username: 'MisterWhiskers', + email: 'hello@test.com', + plan: 'premium', +}); ``` {% endcodeexampletab %} {% endcodeexample %} diff --git a/src/connections/sources/catalog/libraries/ott/roku/index.md b/src/connections/sources/catalog/libraries/ott/roku/index.md index 004022e639..ebf4805df7 100644 --- a/src/connections/sources/catalog/libraries/ott/roku/index.md +++ b/src/connections/sources/catalog/libraries/ott/roku/index.md @@ -2,10 +2,12 @@ title: Analytics for Roku sourceTitle: 'Roku' id: BbupS2SB0b +support_type: community --- The Segment Roku SDK makes it easy to send data to Segment from any Roku enabled device. This library is open-source, so you can [check it out on GitHub](https://github.com/segmentio/analytics-roku). -**NOTE:** The Roku SDK is currently in alpha. We recommend using this version for development, test or QA builds. +> info "" +> The Roku SDK is currently in alpha. Segment recommends using this version for development, test or QA builds. ## Getting Started diff --git a/src/connections/sources/catalog/libraries/server/clojure/index.md b/src/connections/sources/catalog/libraries/server/clojure/index.md index a833b73e19..84b83d6f11 100644 --- a/src/connections/sources/catalog/libraries/server/clojure/index.md +++ b/src/connections/sources/catalog/libraries/server/clojure/index.md @@ -6,9 +6,9 @@ shortName: 'clojure' support_type: community id: B6L7qzHmhI --- -The clojure library lets you record analytics data from your clojure code. The requests hit our servers, and then we route your data to any analytics service you enable on your destinations page. +The clojure library lets you record analytics data from your clojure code. The requests hit Segment servers, and then Segment routes your data to any analytics service you enable on your destinations page. -The library is open-source and was contributed by the very awesome [CircleCI](https://circleci.com/), thanks! You can [check it out on GitHub](https://github.com/circleci/analytics-clj). The clojure library is a wrapper around our [Java library](https://github.com/segmentio/analytics-java). +The library is open-source and was contributed by [CircleCI](https://circleci.com/){:target="_blank"}. You can [check it out on GitHub](https://github.com/circleci/analytics-clj){:target="_blank"}. The clojure library is a wrapper around Segment's [Java library](https://github.com/segmentio/analytics-java){:target="_blank"}. The clojure library (like our other server side libraries) is built for high-performance, so you can use them in your web server controller code. This library uses an internal queue to make calls non-blocking and fast. It also batches messages and flushes asynchronously to our servers. diff --git a/src/connections/sources/catalog/libraries/server/csharp/index.md b/src/connections/sources/catalog/libraries/server/csharp/index.md index e589f11aee..1cf3a5f818 100644 --- a/src/connections/sources/catalog/libraries/server/csharp/index.md +++ b/src/connections/sources/catalog/libraries/server/csharp/index.md @@ -1,6 +1,7 @@ --- title: Analytics-CSharp (C#) strat: csharp +support_type: maintenance id: redirect_from: - '/connections/sources/catalog/libraries/mobile/unity' diff --git a/src/connections/sources/catalog/libraries/server/go/index.md b/src/connections/sources/catalog/libraries/server/go/index.md index f60ddbfeec..01d6089bfb 100644 --- a/src/connections/sources/catalog/libraries/server/go/index.md +++ b/src/connections/sources/catalog/libraries/server/go/index.md @@ -4,8 +4,9 @@ sourceTitle: 'Go' sourceCategory: 'Server' repo: analytics-go id: yBvi77aEwr +support_type: maintenance --- -Our Go library lets you record analytics data from your Go code. The requests hit our servers, and then we route your data to any analytics service you enable on your destinations page. +Segment's Go library lets you record analytics data from your Go code. The requests hit Segment servers, and then Segment routes your data to any analytics service you enable on your destinations page. This library is open-source, so you can [check it out on GitHub](https://github.com/segmentio/analytics-go). diff --git a/src/connections/sources/catalog/libraries/server/http-api/index.md b/src/connections/sources/catalog/libraries/server/http-api/index.md index 9a1810b258..1ddb32d307 100644 --- a/src/connections/sources/catalog/libraries/server/http-api/index.md +++ b/src/connections/sources/catalog/libraries/server/http-api/index.md @@ -11,6 +11,10 @@ Segment has native [sources](/docs/connections/sources/) for most use cases (lik ### Authentication +Choose between [basic authentication](#basic-authentication) and [OAuth](#oauth) to authenticate requests. + +#### Basic authentication + Authenticate to the Tracking API by sending your project's **Write Key** along with a request. Authentication uses HTTP Basic Auth, which involves a `username:password` that is base64 encoded and prepended with the string `Basic`. @@ -19,6 +23,33 @@ In practice that means taking a Segment source **Write Key**,`'abc123'`, as the > info "" > Include a colon before encoding. While encoding the write key without a colon might work due to backward compatibility, this won't always be the case. +#### OAuth +[Obtain the access token](/docs/connections/oauth/) from the Authorization Server specific to the region. + +Include the access token in the Authorization header as a Bearer token along with your project's write key in the payload of the request. For example, Authorization with Bearer token looks like: + + ``` + Authorization: Bearer + ``` + + +For example, to use the access token in the HTTP API Source, use `access_token` in the header and `write_key` in the payload. An example cURL request looks like: + +``` + curl --location 'https://api.segment.io/v1/track' \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Bearer ' \ + --data-raw '{ + "event": "happy-path-a3ef8a6f-0482-4694-bc4d-4afba03a0eab", + "email": "test@example.org", + "messageId": "58524f3a-3b76-4eac-aa97-d88bccdf4f77", + "userId": "123", + "writeKey": "DmBXIN4JnwqBnTqXccTF0wBnLXNQmFtk" + } +``` + +You can reuse the access token until the expiry period specified on the OAuth application. + ### Content-Type To send data to Segment's HTTP API, a content-type header must be set to `'application/json'`. diff --git a/src/connections/sources/catalog/libraries/server/java/index.md b/src/connections/sources/catalog/libraries/server/java/index.md index 2b2b9c2279..c47be79da6 100644 --- a/src/connections/sources/catalog/libraries/server/java/index.md +++ b/src/connections/sources/catalog/libraries/server/java/index.md @@ -2,10 +2,11 @@ title: Analytics for Java repo: analytics-java id: V6ynUvQgbc +support_type: flagship --- [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.segment.analytics.java/analytics/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.segment.analytics.java/analytics) -Segment's Java library lets you record analytics data from your Java code. The requests hit Segment's servers, and then route your data to any analytics service you enable on your destinations page. +Segment's Java library lets you record analytics data from your Java code. The requests hit Segment's servers, and then routes your data to any analytics service you enable on your destinations page. This library is open-source, so you can [check it out on GitHub](https://github.com/segmentio/analytics-java). diff --git a/src/connections/sources/catalog/libraries/server/net/index.md b/src/connections/sources/catalog/libraries/server/net/index.md index 8638be5101..513de81b4f 100644 --- a/src/connections/sources/catalog/libraries/server/net/index.md +++ b/src/connections/sources/catalog/libraries/server/net/index.md @@ -2,7 +2,7 @@ title: Analytics for .NET repo: analytics.NET id: 8HWbgPTt3k -support_type: legacy +support_type: community tags: - C# - C-sharp diff --git a/src/connections/sources/catalog/libraries/server/php/index.md b/src/connections/sources/catalog/libraries/server/php/index.md index db39bd0dcd..ee2ca1162d 100644 --- a/src/connections/sources/catalog/libraries/server/php/index.md +++ b/src/connections/sources/catalog/libraries/server/php/index.md @@ -2,8 +2,9 @@ title: Analytics for PHP repo: analytics-php id: TDO70If4mD +support_type: maintenance --- -Our PHP library lets you record analytics data from your PHP code. The requests hit our servers, and then we route your data to any analytics service you enable on your destinations page. +Segment's PHP library lets you record analytics data from your PHP code. The requests hit Segment servers, and then Segment routes your data to any analytics service you enable on your destinations page. This library is open-source, so you can [check it out on GitHub](https://github.com/segmentio/analytics-php). diff --git a/src/connections/sources/catalog/libraries/server/python/index.md b/src/connections/sources/catalog/libraries/server/python/index.md index 3bfa8694fa..14aa811104 100644 --- a/src/connections/sources/catalog/libraries/server/python/index.md +++ b/src/connections/sources/catalog/libraries/server/python/index.md @@ -1,6 +1,7 @@ --- title: Analytics for Python id: XRksQPCr7X +support_type: maintenance --- Segment's Python library lets you record analytics data from your Python code. The requests hit Segment's servers, and then Segment routes your data to any analytics service you enable on your destinations page. diff --git a/src/connections/sources/catalog/libraries/server/ruby/index.md b/src/connections/sources/catalog/libraries/server/ruby/index.md index af277ef529..a2c1462afe 100644 --- a/src/connections/sources/catalog/libraries/server/ruby/index.md +++ b/src/connections/sources/catalog/libraries/server/ruby/index.md @@ -3,8 +3,9 @@ title: Analytics for Ruby sourceTitle: 'Ruby' sourceCategory: 'Server' id: aACTBqIbWT +support_type: maintenance --- -Our Ruby library lets you record analytics data from your ruby code. The requests hit our servers, and then we route your data to any analytics service you enable on your destinations page. +Segment's Ruby library lets you record analytics data from your ruby code. The requests hit Segment servers, and then Segment routes your data to any analytics service you enable on your destinations page. This library is open-source, so you can [check it out on GitHub](https://github.com/segmentio/analytics-ruby). diff --git a/src/connections/sources/catalog/libraries/website/shopify/images/manage_events.png b/src/connections/sources/catalog/libraries/website/shopify/images/manage_events.png new file mode 100644 index 0000000000..42293e256c Binary files /dev/null and b/src/connections/sources/catalog/libraries/website/shopify/images/manage_events.png differ diff --git a/src/connections/sources/catalog/libraries/website/shopify/images/manage_user_profile_details.png b/src/connections/sources/catalog/libraries/website/shopify/images/manage_user_profile_details.png new file mode 100644 index 0000000000..0487d3fa19 Binary files /dev/null and b/src/connections/sources/catalog/libraries/website/shopify/images/manage_user_profile_details.png differ diff --git a/src/connections/sources/catalog/libraries/website/shopify/images/settings.png b/src/connections/sources/catalog/libraries/website/shopify/images/settings.png new file mode 100644 index 0000000000..aa431ea155 Binary files /dev/null and b/src/connections/sources/catalog/libraries/website/shopify/images/settings.png differ diff --git a/src/connections/sources/catalog/libraries/website/shopify/index.md b/src/connections/sources/catalog/libraries/website/shopify/index.md new file mode 100644 index 0000000000..65561e9d8b --- /dev/null +++ b/src/connections/sources/catalog/libraries/website/shopify/index.md @@ -0,0 +1,316 @@ +--- +title: Shopify +redirect_from: +id: +hidden: true +--- + +This Shopify Source lets you send [Shopify Web Pixel API Standard Events](https://shopify.dev/docs/api/web-pixels-api/standard-events){:target="_blank"} from your Shopify Store to Segment. Events sent to Segment are formatted to match the [Segment Ecommerce Spec](/docs/connections/spec/ecommerce/v2/). + +This Source is a free [Shopify App Extension](https://shopify.dev/docs/apps/app-extensions){:target="_blank"} which can be installed using your Shopify Store's Admin interface. + +#### Overview + +Once installed and enabled, Segment collects events from the user's browser and sends them to your Segment 'Shopify' Source in real time. + +- You can control which Segment `track()` events get collected as well as how user profile details are passed to Segment. +- A custom JavaScript snippet is loaded in the Shopify store. This script transforms Shopify Standard Events to Segment Ecommerce Spec events. Note that Segment's Analytics.js 2.0 library will **not** load on any Shopify store page. +- You can control which Segment Track events get collected as well as how user profile details are passed to Segment. +- This is a Device Mode (client side) Integration. No data is sent server-side from Shopify to Segment. +- This source does not collect post-purchase events. +- The Segment anonymousId is set to the value of the Shopify client ID. The Segment userId value is never populated. +- Email address and phone number details are sent to Segment if they are collected by Shopify. + +If you require more advanced functionality or want to collect post-purchase events, consider using the [Shopify by Littledata](/docs/connections/sources/catalog/libraries/website/shopify-littledata/) Source. Shopify by Littledata requires a paid subscription. + +## Getting Started + +1. **Log in** to your Segment Workspace. +2. Click on 'Catalog'. +3. Use the 'Search an Integration' search field to search for the term 'Shopify'. +4. Select the 'Shopify' tile and complete the steps to set it up. +5. Make a note of the [**Source write key**](/docs/connections/find-writekey/) for your Shopify Source. +6. **Log in** to your Shopify Store account. +7. Go to the [Shopify app store listing](https://apps.shopify.com/twilio-segment){:target="\_blank"} for **Twilio Segment**. +8. Click **Add app** to begin the installation process. +9. Add the [**Segment write key**](/docs/connections/find-writekey/) for your Segment Source, and select the Region for your Segment Workspace. +10. Use the checkboxes under 'Manage Events' to select which `track()` events to send to Segment. +11. Use the checkboxes under 'Manage user profile details' to select how user profile details should be sent to Segment. +12. Click the 'Turn On' button to enable start sending analytics events from your Shopify Store to Segment. + +## Identifiers + +- **anonymousId** - The Segment `anonymousId` field are populated with the Shopify client ID. The Shopify client ID is a 'client-side ID of the customer, provided by Shopify'. You cannot configure the Segment anonymousId to be populated with any other value. +- **userId** - The Segment `userId` field does not populate. You cannot configure the userId to be populated with any value from Shopify. +- **email and phone** - `traits.email` and `traits.phone` are collected using Identify events (unless explicitly disabled in the 'Manage user profile details' section of the Shopify App User Interface). + +## Track and Page events sent to Segment + +See the [Shopify Standard Events](https://shopify.dev/docs/api/web-pixels-api/standard-events){:target="_blank"} documentation for more information about when events are triggered. + +| Segment Event Name | Shopify Standard Event Name | Event trigger | +| ----------------------- | ----------------------------------- | ------------------------------------------------------------------- | +| `Page Viewed` | `page_viewed` | A user has visited a page. Sent as a Segment Page event | +| `Products Searched` | `search_submitted` | A user has performed a search on the Shopify storefront | +| `Product List Viewed` | `collection_viewed` | A user has visited a product collection index page | +| `Product Viewed` | `product_viewed` | A user has visited a product details page | +| `Product Added` | `product_added_to_cart` | A user has added a product to their cart | +| `Product Removed` | `product_removed_from_cart` | A user has removed a product from their cart | +| `Cart Viewed` | `cart_viewed` | A user has visited the cart page | +| `Checkout Started` | `checkout_started` | A user has started the checkout process | +| `Shipping Info Entered` | `checkout_shipping_info_submitted` | A user has chosen a shipping rate | +| `Address Info Entered` | `checkout_address_info_submitted` | A user has submitted their mailing address | +| `Contact Info Entered` | `checkout_contact_info_submitted` | A user has submitted a checkout form | +| `Payment Info Entered` | `payment_info_submitted` | A user has submitted their payment information | +| `Order Completed` | `checkout_completed` | A user has completed a purchase | + +You can control which Track and Page events to send to Segment in the 'Manage events' section of the Shopify App User Interface. +![Screenshot of the Manage events settings section.](images/manage_events.png) + +## Page context data + +The fields below are automatically sent to Segment with every Track, Page and Identify event. For Page events, these fields are also included in the `properties` object. + +| Field | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `context.page.url` | The entire URL of the page | String | +| `context.page.search` | a string containing a '?' followed by the parameters or "querystring" of the URL | String | +| `context.page.path` | a string containing an initial '/' followed by the path of the URL, excludes the query string | String | +| `context.page.title` | The title of the current page | String | +| `context.page.referrer` | URI of the page that linked to the current page | String | + +## UTM data + +The fields below are automatically sent to Segment with every Track, Page and Identify call, if present in the QueryString of the page url. + +| Field | Description | Type | +| --------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------- | +| `context.campaign.source` | `utm_source` QueryString value | String | +| `context.campaign.medium` | `utm_medium` QueryString value | String | +| `context.campaign.name` | `utm_campaign` QueryString value | String | +| `context.campaign.term` | `utm_term` QueryString value | String | +| `context.campaign.content` | `utm_content` QueryString value | String | + +## Page Viewed / Page event properties + +The properties below are included with Page events. + +> info "Missing properties?" +> Your Segment events may be missing one of the following properties if Shopify provides `null` or an empty value for a property. + + +| Field | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `url` | The entire URL of the page | String | +| `search` | a string containing a '?' followed by the parameters or "querystring" of the URL | String | +| `path` | a string containing an initial '/' followed by the path of the URL, excludes the query string | String | +| `title` | The title of the current page | String | +| `referrer` | URI of the page that linked to the current page | String | + +## Product Viewed Track event properties + +The properties below are included with `Product Viewed` Track events. + +> info "Missing properties?" +> Your Segment events may be missing one of the following properties if Shopify provides `null` or an empty value for a property. + + +| Property | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `product_id` | Unique ID for the product | String | +| `name` | The product name | String | +| `untranslated_name` | Untranslated name of the product | String | +| `variant` | The product variant | String | +| `untranslated_variant` | Untranslated product variant | String | +| `category` | Product type specified by the merchant | String | +| `brand` | The product’s vendor name | String | +| `url` | URL to the product page | String | +| `image_url` | URL to the product image | String | +| `currency` | The three-letter code that represents the currency, for example 'USD' | String | +| `price` | The decimal money amount (price) for the product | Number | +| `sku` | The SKU (stock keeping unit) associated with the variant | String | + +## Product Added and Product Removed Track event properties + +The properties below are included with `Product Added` and `Product Removed` Track events. + +> info "Missing properties?" +> Your Segment events may be missing one of the following properties if Shopify provides `null` or an empty value for a property. + + +| Property | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `product_id` | Unique ID for the product | String | +| `name` | The product name | String | +| `untranslated_name` | Untranslated name of the product | String | +| `variant` | The product variant | String | +| `untranslated_variant` | Untranslated product variant | String | +| `category` | Product type specified by the merchant | String | +| `brand` | The product’s vendor name | String | +| `url` | URL to the product page | String | +| `image_url` | URL to the product image | String | +| `currency` | The three-letter code that represents the currency, for example 'USD' | String | +| `price` | The decimal money amount (price) for the product | Number | +| `quantity` | The quantity of the merchandise that the customer intends to purchase | Integer | +| `total_price` | The total decimal money amount (price) for the product | Number | +| `sku` | The SKU (stock keeping unit) associated with the variant | String | + +## Product List Viewed Track event properties + +The properties below are included with `Product List Viewed` Track events. `products.$.` indicates an array named 'products'. + +> info "Missing properties?" +> Your Segment events may be missing one of the following properties if Shopify provides `null` or an empty value for a property. + + +| Property | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `products.$.product_id` | Unique ID for the product | String | +| `products.$.name` | The product name | String | +| `products.$.untranslated_name` | Untranslated name of the product | String | +| `products.$.variant` | The product variant | String | +| `products.$.untranslated_variant` | Untranslated product variant | String | +| `products.$.category` | Product type specified by the merchant | String | +| `products.$.brand` | The product’s vendor name | String | +| `products.$.url` | URL to the product page | String | +| `products.$.image_url` | URL to the product image | String | +| `products.$.currency` | The three-letter code that represents the currency, for example 'USD' | String | +| `products.$.price` | The decimal money amount (price) for the product | Number | +| `products.$.sku` | The SKU (stock keeping unit) associated with the variant | String | + +## Products Searched Track event properties + +The properties below are included with `Products Searched` Track events. `products.$.` indicates an array named 'products'. + +> info "Missing properties?" +> Your Segment events may be missing one of the following properties if Shopify provides `null` or an empty value for a property. + + +| Property | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `products.$.product_id` | Unique ID for the product | String | +| `products.$.name` | The product name | String | +| `products.$.untranslated_name` | Untranslated name of the product | String | +| `products.$.variant` | The product variant | String | +| `products.$.untranslated_variant` | Untranslated product variant | String | +| `products.$.category` | Product type specified by the merchant | String | +| `products.$.brand` | The product’s vendor name | String | +| `products.$.url` | URL to the product page | String | +| `products.$.image_url` | URL to the product image | String | +| `products.$.currency` | The three-letter code that represents the currency, for example 'USD' | String | +| `products.$.price` | The decimal money amount (price) for the product | Number | +| `products.$.sku` | The SKU (stock keeping unit) associated with the variant | String | +| `query` | The search query that was executed | String | + +## Cart Viewed Track event properties + +The properties below are included with `Cart Viewed` Track events. `products.$.` indicates an array named 'products'. + +> info "Missing properties?" +> Your Segment events may be missing one of the following properties if Shopify provides `null` or an empty value for a property. + + +| Property | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `products.$.product_id` | Unique ID for the product | String | +| `products.$.name` | The product name | String | +| `products.$.untranslated_name` | Untranslated name of the product | String | +| `products.$.variant` | The product variant | String | +| `products.$.untranslated_variant` | Untranslated product variant | String | +| `products.$.category` | Product type specified by the merchant | String | +| `products.$.brand` | The product’s vendor name | String | +| `products.$.url` | URL to the product page | String | +| `products.$.image_url` | URL to the product image | String | +| `products.$.currency` | The three-letter code that represents the currency, for example 'USD' | String | +| `products.$.price` | The decimal money amount (price) for the product | Number | +| `products.$.sku` | The SKU (stock keeping unit) associated with the variant | String | +| `cart_id` | A globally unique identifier for the cart | String | +| `subtotal` | The price at checkout before duties, shipping, and taxes | Number | +| `currency` | The three-letter code that represents the currency, for example 'USD' | String | + +## Checkout and purchase Track event properties + +The properties below are included with `Checkout Started`, `Address Info Entered`, `Shipping Info Entered`, `Contact Info Entered`, `Payment Info Entered` and `Order Completed` Track events. `products.$.` indicates an array named 'products'. + +> info "Missing properties?" +> Your Segment events may be missing one of the following properties if Shopify provides `null` or an empty value for a property. + + +| Property | Description | Type | +| --------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------- | +| `products.$.product_id` | Unique ID for the product | String | +| `products.$.name` | The product name | String | +| `products.$.untranslated_name` | Untranslated name of the product | String | +| `products.$.variant` | The product variant | String | +| `products.$.untranslated_variant` | Untranslated product variant | String | +| `products.$.category` | Product type specified by the merchant | String | +| `products.$.brand` | The product’s vendor name | String | +| `products.$.url` | URL to the product page | String | +| `products.$.image_url` | URL to the product image | String | +| `products.$.currency` | The three-letter code that represents the currency, for example 'USD' | String | +| `products.$.price` | The decimal money amount (price) for the product | Number | +| `products.$.sku` | The SKU (stock keeping unit) associated with the variant | String | +| `subtotal` | The price at checkout before duties, shipping, and taxes | Number | +| `currency` | The three-letter code that represents the currency, for example 'USD' | String | +| `order_id` | The ID for the order | String | +| `checkout_id` | A unique identifier for a particular checkout | String | +| `shipping` | Total shipping price | Number | +| `discount` | Total monetary value allocated as a discount | Number | +| `coupon` | Comma delimited list of customer-facing discount names / codes | String | +| `payment_method` | Comma delimited list of payment providers used for the transaction | String | + +## Sending user profile details to Segment + +User profile details can be sent to Segment in 3 ways: +1. As `traits` in Identify events. +2. As `properties` in Track events. +3. As `traits` in Track events, included in the `context.traits` object. + +User profile details are only sent to Segment when the following track events are triggered by Shopify: +`Checkout Started`, `Address Info Entered`, `Shipping Info Entered`, `Contact Info Entered`, `Payment Info Entered` and `Order Completed`. + +You can control how user profile details are sent to Segment on the 'Manage user profile details' section of the Shopify App User Interface. +![Screenshot of the Manage user profile details settings section.](images/manage_user_profile_details.png) + +The following user profile details are sent to Segment as they become available in the user checkout journey. + +| User profile trait / property name | Description | +| ---------------------------------- | ------------------------------------------------------------------- | +| `email` | The user's email address | +| `phone` | The user's phone number address | +| `first_name` | The user's first name | +| `last_name` | The user's last name | +| `billing_address.address1` | Billing address first line | +| `billing_address.address2` | Billing address second line | +| `billing_address.city` | Billing address city | +| `billing_address.country` | Billing address country | +| `billing_address.postal_code` | Billing address post code / zip code | +| `billing_address.province_code` | Billing address province or state code | +| `billing_address.country` | Billing address country | +| `shipping_address.address1` | Shipping address first line | +| `shipping_address.address2` | Shipping address second line | +| `shipping_address.city` | Shipping address city | +| `shipping_address.country` | Shipping address country | +| `shipping_address.postal_code` | Shipping address post code / zip code | +| `shipping_address.province_code` | Shipping address province or state code | +| `shipping_address.country` | Shipping address country | + +## FAQs + +### Why don't I see all of my events? +This Source uses client-side Javascript to send data to Segment. As with any client-side analytics tracking, some ad-blockers prevent data from being sent to Segment. This can lead to an under reporting of events to Segment. For more information about data loss associated with ad blockers, see the [Ad Blocking](/docs/connections/sources/catalog/libraries/website/javascript/#ad-blocking) documentation. + +### When do Identify events trigger? +To send Identify events, you must select the 'Send identify() calls' checkbox. If this setting is selected, Identify events are triggered when `Checkout Started`, `Address Info Entered`, `Shipping Info Entered`, `Contact Info Entered`, `Payment Info Entered` or `Order Completed` Track calls are triggered. + +### Why aren't my Identify events triggering when expected? +To save on API call volume, Segment only triggers an Identify event when user profile details have changed. If no change is detected, then the Identify call is not triggered. + +### Why are some events duplicated and triggered multiple times? +Shopify sometimes erroneously triggers duplicate `Address Info Entered`, `Shipping Info Entered`, `Contact Info Entered`, `Payment Info Entered` events in short succession. This is a known bug with Shopify. Segment deduplicates the majority of these duplicate events but is unable to filter all of them out. + +### Why do some Address/Shipping/Contact/Payment Info Entered events contain product arrays? +Shopify sometimes includes product array details in [Standard Events](https://shopify.dev/docs/api/web-pixels-api/standard-events){:target="_blank"} which Segment uses to populate the `Address Info Entered`, `Shipping Info Entered`, `Contact Info Entered`, `Payment Info Entered` events. Segment includes these product details in Segment events. + +### Why are some event properties missing even though the documentation indicates that they should be present? +Mapping code is in place to map the majority of valuable fields from Shopify's [Standard Events](https://shopify.dev/docs/api/web-pixels-api/standard-events){:target="_blank"} to Segment events. If properties are missing, it is due to the values not being provided by the Shopify event. diff --git a/src/connections/storage/data-lakes/index.md b/src/connections/storage/data-lakes/index.md index 2d453951c3..2de26f8eb6 100644 --- a/src/connections/storage/data-lakes/index.md +++ b/src/connections/storage/data-lakes/index.md @@ -179,7 +179,7 @@ Segment doesn't support User deletions in Data Lakes, but supports [user suppres ### How does Data Lakes handle schema evolution? -As the data schema evolves and new columns are added, Segment Data Lakes will detect any new columns. New columns will be appended to the end of the table in the Glue Data Catalog. +As the data schema evolves, both Segment Data Lakes (AWS) and Segment Data Lakes (Azure) can detect new columns and add them to Glue Data Catalog or Azure Data Lake Storage (ADLS). However, Segment can't update existing data types. To update Segment-created data types, please reach out to [AWS Support](https://aws.amazon.com/contact-us/){:target="_blank"} or [Azure Support](https://support.microsoft.com/en-us/topic/contact-microsoft-azure-support-2315e669-8b1f-493b-5fb1-d88a8736ffe4){:target="_blank"}. ### How does Data Lakes work with Protocols? diff --git a/src/engage/audiences/index.md b/src/engage/audiences/index.md index 58d08c49c9..e77d5ecec9 100644 --- a/src/engage/audiences/index.md +++ b/src/engage/audiences/index.md @@ -262,3 +262,10 @@ The audience summary is a breakdown of the percentages of external_ids of users > info "" > The Identifier Breakdown won't show custom IDs included in the Identity resolution configuration. Segment only displays external IDs in the breakdown. + +## FAQ + +### Why do I get a different user count when I use `$` on a field?** +Segment recommends using the `$` operator when you deal with array properties. However, the `$` causes logical conditions to apply independently to each array entry independently. As a result, you'll get more accurate results by using the `equals one of` condition: + +![$ operator](https://github.com/segmentio/segment-docs/assets/68755692/7b0b6923-a4ad-4290-8aa6-bbbc7cb1ee1b) diff --git a/src/engage/profiles/csv-upload.md b/src/engage/profiles/csv-upload.md index ef033e37aa..70bb120e54 100644 --- a/src/engage/profiles/csv-upload.md +++ b/src/engage/profiles/csv-upload.md @@ -11,7 +11,6 @@ Keep the following guidelines in mind as you upload CSV files to Twilio Engage: - You can only upload `.csv` files. - Files can't be empty and must have at least one header and one row. - You can't have multiple columns with the same header. -- CSV files can't contain extraneous column headers. - CSV files cannot exceed 1 million rows (plus one header row), 299 columns, or 100 MB in file size. - You can only upload one file at a time. - Add an identifier column or `anonymous_id` in your identity resolution configuration. diff --git a/src/engage/user-subscriptions/csv-upload.md b/src/engage/user-subscriptions/csv-upload.md index 2163d93cdc..ce79e0519a 100644 --- a/src/engage/user-subscriptions/csv-upload.md +++ b/src/engage/user-subscriptions/csv-upload.md @@ -121,7 +121,6 @@ Please note the following limits as you upload CSV files to Twilio Engage: - You can only upload .csv files. - Files can't be empty and must have at least one header and one row. - You can't have multiple columns with the same header. -- CSV files can't contain extraneous column headers. - Upload CSV files with up to 1 million rows (plus one header row). - You can only upload one file at a time. - The CSV file size can't exceed 100 MB.