diff --git a/src/_data/catalog/destination_categories.yml b/src/_data/catalog/destination_categories.yml index f0240ef22e..3582847744 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-04-04 +# destination categories last updated 2024-04-05 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 2f05eb3a69..9dda3189b4 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-04-04 +# destination data last updated 2024-04-05 items: - id: 637e8d185e2dec264895ea89 display_name: 1Flow @@ -66016,6 +66016,951 @@ items: dynamic: false allowNull: false presets: [] +- id: 6512d7f86bdccc3829fc4ac3 + display_name: Optimizely Data Platform + name: Optimizely Data Platform + slug: optimizely-data-platform + hidden: false + endpoints: + - US + regions: + - us-west-2 + - eu-west-1 + url: connections/destinations/catalog/optimizely-data-platform + previous_names: + - Optimizely Data Platform + website: http://www.segment.com + status: PUBLIC_BETA + categories: + - Personalization + - A/B Testing + logo: + url: https://cdn-devcenter.segment.com/4382f18e-f9b6-4aaa-876e-52ebab6eb643.svg + mark: + url: https://cdn-devcenter.segment.com/8a97d9c2-c9ad-4e09-a033-8605443ab7ab.svg + methods: + track: true + identify: true + group: true + alias: true + screen: false + page: true + platforms: + browser: true + mobile: false + server: true + warehouse: false + cloudAppObject: false + components: [] + browserUnbundlingSupported: false + browserUnbundlingPublic: false + replay: false + connection_modes: + device: + web: false + mobile: false + server: false + cloud: + web: true + mobile: false + server: true + settings: + - name: apiKey + type: password + defaultValue: '' + description: Api Key used for Optimizely API authorization when sending events + required: true + label: Api Key + - name: region + type: select + defaultValue: US + description: Optimizely Region to sync data to. Default is US + required: true + label: Region + actions: + - id: fXGcooSt5ZV7XjR1gTBj1s + name: Upsert Contact + slug: upsertContact + description: >- + Send user profile data from Segment to Optimizely Data Platform. Creates + or updates a user profile in Optimzely Data Platform + platform: CLOUD + hidden: false + defaultTrigger: type = "identify" + fields: + - id: gxC9svnT63qNDsCmiGuVdg + sortOrder: 0 + fieldKey: user_identifiers + label: User identifiers + type: OBJECT + description: 'User identifier details to send to Optimizely. ' + placeholder: '' + defaultValue: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.traits.optimizely_vuid + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: gMcQ6XSRegcyzxUidyNLL4 + sortOrder: 1 + fieldKey: company + label: Company Name + type: STRING + description: The name of the company associated with the Contact + placeholder: '' + defaultValue: + '@path': $.traits.company + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: mrrEaEbNxgKfFNqbgErYuC + sortOrder: 2 + fieldKey: title + label: Title + type: STRING + description: The Contact's Title + placeholder: '' + defaultValue: + '@path': $.traits.title + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 81fY6TZR4n8YmwAP18isEq + sortOrder: 3 + fieldKey: name + label: Name + type: STRING + description: Contact's full name + placeholder: '' + defaultValue: + '@path': $.traits.name + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 9s4Sf2uCXTyS5S7embJWYX + sortOrder: 4 + fieldKey: firstname + label: First Name + type: STRING + description: Contact's first name + placeholder: '' + defaultValue: + '@path': $.traits.first_name + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 52aqzDYy3Qu7cFbamzjgCd + sortOrder: 5 + fieldKey: lastname + label: Last Name + type: STRING + description: Contact's last name + placeholder: '' + defaultValue: + '@path': $.traits.last_name + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: vH5d4Un2feybhi1MK1WvLM + sortOrder: 6 + fieldKey: gender + label: Gender + type: STRING + description: Contact's gender + placeholder: '' + defaultValue: + '@path': $.traits.gender + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: sMBzJ2c1gPMuE8f8qVuT6n + sortOrder: 7 + fieldKey: DOB + label: Birthday + type: DATETIME + description: Contact's birthday. The format should be datetime + placeholder: '' + defaultValue: + '@path': $.traits.birthday + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: kdPNqhDGCqL7iyUCfFZddR + sortOrder: 8 + fieldKey: phone + label: Phone + type: STRING + description: Contact's phone number. + placeholder: '' + defaultValue: + '@path': $.traits.phone + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 8Hpr9VEjBdzZFzNtY586jo + sortOrder: 9 + fieldKey: age + label: Age + type: NUMBER + description: Contact's age. + placeholder: '' + defaultValue: + '@path': $.traits.age + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: frvhCiJPa9fu4a647rgUk2 + sortOrder: 10 + fieldKey: address + label: Address + type: OBJECT + description: Address details object + placeholder: '' + defaultValue: + street: + '@path': $.traits.address.street + city: + '@path': $.traits.address.city + state: + '@path': $.traits.address.state + zip: + '@path': $.traits.address.postalCode + country: + '@path': $.traits.address.country + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: tngqTFxMihC8meogqEL4s8 + sortOrder: 11 + fieldKey: avatar + label: avatar + type: STRING + description: The user's avatar image URL. + placeholder: '' + defaultValue: + '@path': $.traits.avatar + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: iErwR3xPQSu7CD8UugWpCq + sortOrder: 12 + fieldKey: additional_traits + label: Addition User Traits + type: OBJECT + description: Additional user profile details + placeholder: '' + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: hcqEnue2U8oG3e3iVHW5KV + name: Email Event + slug: emailEvent + description: Send email related Segment track() events to Optimizely Data Platform + platform: CLOUD + hidden: false + defaultTrigger: null + fields: + - id: x7CuvmeNY7UR4SQDDsha8A + sortOrder: 0 + fieldKey: user_identifiers + label: User identifiers + type: OBJECT + description: 'User identifier details to send to Optimizely. ' + placeholder: '' + defaultValue: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.context.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.context.traits.optimizely_vuid + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: qtN7TqkR86yPfcXa9BR1u + sortOrder: 1 + fieldKey: event_action + label: Optimizely Event Action + type: STRING + description: The name of the Optimizely Event Action. + placeholder: '' + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: nv9gXafS9K76Vsv5goaSb6 + sortOrder: 2 + fieldKey: campaign + label: Campaign Name + type: STRING + description: The campaign name + placeholder: '' + defaultValue: + '@path': $.properties.campaign_name + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: uRh2sdVY9AyBonoU3ffNPP + sortOrder: 3 + fieldKey: campaign_id + label: Campaign ID + type: STRING + description: The campaign unique identifier + placeholder: '' + defaultValue: + '@path': $.properties.campaign_id + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 7N6MNXpj7z9f9Lto1ppqE4 + sortOrder: 4 + fieldKey: link_url + label: Link URL + type: STRING + description: URL of the link which was clicked + placeholder: '' + defaultValue: + '@path': $.properties.link_url + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: rUSHG6LjhpqHJ6WEpBKhmQ + sortOrder: 5 + fieldKey: timestamp + label: Timestamp + type: STRING + description: Event timestamp + placeholder: '' + defaultValue: + '@path': $.timestamp + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: meD4xgcJ8b3f29gWudiuFQ + name: Ecommerce Event + slug: customEvent + description: Send Segment Ecommerce track() events to Optimizely Data Platform + platform: CLOUD + hidden: false + defaultTrigger: null + fields: + - id: mKcrXoAFJMJVvirdKE9wwc + sortOrder: 0 + fieldKey: user_identifiers + label: User identifiers + type: OBJECT + description: 'User identifier details to send to Optimizely. ' + placeholder: '' + defaultValue: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.traits.optimizely_vuid + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: aN5iUDwxADZtYPJWS2etYA + sortOrder: 1 + fieldKey: event_type + label: Optimizely Event Type + type: STRING + description: The Optimizely Event Type. Defaults to "custom" if not provided + placeholder: '' + defaultValue: + '@path': $.event + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: sAeNWXnnkrQf5BQdQUDZcm + sortOrder: 2 + fieldKey: event_action + label: Optimizely Event Action + type: STRING + description: The name of the Optimizely Event Action. + placeholder: '' + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: oDgr989WSp3GZQc9dQUjs4 + sortOrder: 3 + fieldKey: products + label: Product details + type: OBJECT + description: >- + Product details to associate with the event. Product ID field is + required for each product + placeholder: '' + defaultValue: + '@arrayPath': + - $.properties.products + - product_id: + '@path': $.product_id + qty: + '@path': $.quantity + required: false + multiple: true + choices: null + dynamic: false + allowNull: false + - id: mXeGYjpAaGVbAiafssjc8B + sortOrder: 4 + fieldKey: order_id + label: Order ID + type: STRING + description: Identifier for the order + placeholder: '' + defaultValue: + '@path': $.properties.order_id + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: eM7bVZyi9NvmESaUR3tAbT + sortOrder: 5 + fieldKey: total + label: Order Total + type: STRING + description: Total value of the order + placeholder: '' + defaultValue: + '@path': $.properties.total + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: iiNQW8N5ekeVy6LtUY3kjU + sortOrder: 6 + fieldKey: timestamp + label: Timestamp + type: STRING + description: Event timestamp + placeholder: '' + defaultValue: + '@path': $.timestamp + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: xqor3XEmPcajqx2VPxiHJx + name: Custom Event + slug: nonEcommCustomEvent + description: Send Segment custom track() events to Optimizely Data Platform + platform: CLOUD + hidden: false + defaultTrigger: null + fields: + - id: qGohE2rWsSwGca2GyzQQyU + sortOrder: 0 + fieldKey: user_identifiers + label: User identifiers + type: OBJECT + description: 'User identifier details to send to Optimizely. ' + placeholder: '' + defaultValue: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.traits.optimizely_vuid + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: djVVTAaTM5mCYg9bkYonUh + sortOrder: 1 + fieldKey: event_type + label: Optimizely Event Type + type: STRING + description: The Optimizely Event Type. Defaults to "custom" if not provided + placeholder: '' + defaultValue: + '@path': $.event + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: sRo8xcMk7cvNWCPTFf3Haq + sortOrder: 2 + fieldKey: event_action + label: Optimizely Event Action + type: STRING + description: The name of the Optimizely Event Action. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: ec2bgYTLqu6NkpyRAz8SnP + sortOrder: 3 + fieldKey: data + label: Event Properties + type: OBJECT + description: Additional information to send with your custom event + placeholder: '' + defaultValue: + '@path': $.properties + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 5zYqdDAfbKUy7yarnVzgVa + sortOrder: 4 + fieldKey: timestamp + label: Timestamp + type: STRING + description: Event timestamp + placeholder: '' + defaultValue: + '@path': $.timestamp + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + presets: + - actionId: hcqEnue2U8oG3e3iVHW5KV + name: Email Sent + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.context.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.context.traits.optimizely_vuid + campaign: + '@path': $.properties.campaign_name + campaign_id: + '@path': $.properties.campaign_id + link_url: + '@path': $.properties.link_url + timestamp: + '@path': $.timestamp + event_action: sent + trigger: type = "track" and event = "Email Sent" + - actionId: meD4xgcJ8b3f29gWudiuFQ + name: Product Removed + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.traits.optimizely_vuid + event_type: product + products: + '@arrayPath': + - $.properties + - product_id: + '@path': $.product_id + qty: + '@path': $.quantity + order_id: + '@path': $.properties.order_id + total: + '@path': $.properties.total + timestamp: + '@path': $.timestamp + event_action: remove_from_cart + trigger: type = "track" and event = "Product Removed" + - actionId: hcqEnue2U8oG3e3iVHW5KV + name: Email Marked as Spam + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.context.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.context.traits.optimizely_vuid + campaign: + '@path': $.properties.campaign_name + campaign_id: + '@path': $.properties.campaign_id + link_url: + '@path': $.properties.link_url + timestamp: + '@path': $.timestamp + event_action: spam_report + trigger: type = "track" and event = "Email Marked as Spam" + - actionId: meD4xgcJ8b3f29gWudiuFQ + name: Product Added + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.traits.optimizely_vuid + event_type: product + products: + '@arrayPath': + - $.properties + - product_id: + '@path': $.product_id + qty: + '@path': $.quantity + order_id: + '@path': $.properties.order_id + total: + '@path': $.properties.total + timestamp: + '@path': $.timestamp + event_action: add_to_cart + trigger: type = "track" and event = "Product Added" + - actionId: hcqEnue2U8oG3e3iVHW5KV + name: Email Opened + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.context.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.context.traits.optimizely_vuid + campaign: + '@path': $.properties.campaign_name + campaign_id: + '@path': $.properties.campaign_id + link_url: + '@path': $.properties.link_url + timestamp: + '@path': $.timestamp + event_action: open + trigger: type = "track" and event = "Email Opened" + - actionId: meD4xgcJ8b3f29gWudiuFQ + name: Product Viewed + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.traits.optimizely_vuid + event_type: product + products: + '@arrayPath': + - $.properties + - product_id: + '@path': $.product_id + qty: + '@path': $.quantity + order_id: + '@path': $.properties.order_id + total: + '@path': $.properties.total + timestamp: + '@path': $.timestamp + event_action: detail + trigger: type = "track" and event = "Product Viewed" + - actionId: hcqEnue2U8oG3e3iVHW5KV + name: Email Link Clicked + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.context.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.context.traits.optimizely_vuid + campaign: + '@path': $.properties.campaign_name + campaign_id: + '@path': $.properties.campaign_id + link_url: + '@path': $.properties.link_url + timestamp: + '@path': $.timestamp + event_action: click + trigger: type = "track" and event = "Email Link Clicked" + - actionId: meD4xgcJ8b3f29gWudiuFQ + name: Order Completed + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.traits.optimizely_vuid + event_type: order + products: + '@arrayPath': + - $.properties.products + - product_id: + '@path': $.product_id + qty: + '@path': $.quantity + order_id: + '@path': $.properties.order_id + total: + '@path': $.properties.total + timestamp: + '@path': $.timestamp + event_action: purchase + trigger: type = "track" and event = "Order Completed" + - actionId: hcqEnue2U8oG3e3iVHW5KV + name: Unsubscribed + fields: + user_identifiers: + anonymousId: + '@path': $.anonymousId + userId: + '@path': $.userId + email: + '@if': + exists: + '@path': $.properties.email + then: + '@path': $.properties.email + else: + '@path': $.context.traits.email + optimizely_vuid: + '@if': + exists: + '@path': $.properties.optimizely_vuid + then: + '@path': $.properties.optimizely_vuid + else: + '@path': $.context.traits.optimizely_vuid + campaign: + '@path': $.properties.campaign_name + campaign_id: + '@path': $.properties.campaign_id + link_url: + '@path': $.properties.link_url + timestamp: + '@path': $.timestamp + event_action: unsubscribe + trigger: type = "track" and event = "Unsubscribed" - id: 641d5acea88fa531b9068608 display_name: Optimizely Feature Experimentation (Actions) name: Optimizely Feature Experimentation (Actions) diff --git a/src/_data/catalog/destinations_private.yml b/src/_data/catalog/destinations_private.yml index 2eccd851f0..53872f055f 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-04-04 +# destination data last updated 2024-04-05 items: - id: 54521fd925e721e32a72eee1 display_name: Pardot diff --git a/src/_data/catalog/source_categories.yml b/src/_data/catalog/source_categories.yml index 26a4db3170..4671e203ea 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-04-04 +# source categories last updated 2024-04-05 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 b953d32ef1..a8860cdbdf 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-04-04 +# sources last updated 2024-04-05 items: - id: 8HWbgPTt3k display_name: .NET diff --git a/src/connections/destinations/catalog/optimizely-data-platform/index.md b/src/connections/destinations/catalog/optimizely-data-platform/index.md new file mode 100644 index 0000000000..36e52dc68e --- /dev/null +++ b/src/connections/destinations/catalog/optimizely-data-platform/index.md @@ -0,0 +1,64 @@ +--- +title: Optimizely Data Platform Destination +beta: true +id: 6512d7f86bdccc3829fc4ac3 +--- + +Sync your Twilio Segment customer data to Optimizely Data Platform (ODP) for real-time segmentation, reporting, and to enrich customer profiles in ODP. + +After you set up your Optimizely Data Platform destination, Segment syncs your customer data to ODP in near real-time. + +This destination is maintained by Optimizely. For any issues with the destination, [contact Optimizely Support team](mailto:support@optimizely.com). + +## Prerequisites + +- Twilio Segment workspace +- ODP or [ODP Lite](https://support.optimizely.com/hc/en-us/articles/8359093735309-Welcome-to-ODP-Lite){:target="_blank”} account + +## Enable the integration + +1. In ODP, open the **App Directory**. +2. Select the **Twilio Segment** app. +3. Click **Install App**. +4. On the Settings tab, click **Generate** and copy the displayed token. +5. Open the Segment app and navigate to the [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank”}. +6. Search for and select **Optimizely Data Platform**. +7. Click **Add destination** and select a source to connect to the Optimizely Data Platform destination. +8. Enter a name for your destination and click **Create destination**. +9. On the destination's Settings tab, enter the following information: + - **Api Key** – Paste your ODP API token from step 4 + - **Region** – Select your region + - **Enable Destination** – Toggle to **On** +10. Click **Save Changes**. + +## Configure event mappings + +After you enable the Optimizely Data Platform destination, you must map the events that you want Twilio Segment to send to ODP. + +In Twilio Segment, on the **Mappings** tab of the Optimizely Data Platform destination, Segment displays a list of pre-built mappings that you can enable or disable. For example, if you enabled the **Email Opened** mapping, each email opened event Segment ingested after you enabled the mapping would sync to ODP. + +If you want to map an event that is not listed: +1. Click **New Mapping > Custom Event**. +2. _(Optional)_: Enter a descriptive name for the event. +3. Select the event that you want to send to ODP. +4. Click **Load Test Event from Source**. This generates the raw data for the selected event and populates your mappings. The ID and timestamp field mappings auto-populate, but you can edit them as desired. +5. Select the event type and, optionally, the event action. For example, if you are configuring a custom event to track button clicks, select _button_ for the event type and _click_ for the event action. + +> info "Required fields" +> In ODP, each event requires an ID, timestamp, and event type. The event action is optional. See ODP's [Events](https://docs.developers.optimizely.com/optimizely-data-platform/docs/thebasics-events){:target="_blank”} documentation for more details. + +