Expand my Community achievements bar.

Example Submission: Cross channel real time personalization with Adobe Experience Cloud solutions


Employee Advisor


Company: Luma

Company background: Luma is a retail company which sells fitness clothing and gear. We have a retail website where customers can browse and buy our products and we’ve been striving to deliver more personalized experiences for our customers.

Contact: Kunal Gaba

Title: Technical Architect 

Related URL(s): N/A


Please attach any visual aids that may help convey your story. Note: for an optimal experience please focus on including text and images in your submission. Other forms of media such as video or powerpoint may not upload properly


1. Please describe your company and the problem you set out to solve. What challenges did you have to overcome?

Every business today is present on digital and online channels, but just having a digital presence does not give you the edge over your competitors. It is critical to deliver personalized and relevant experiences to your customers. However, a personalized experience can be delivered only if you understand the context of your customers across channels and devices. In this submission, we will share how our company, Luma, achieved real time personalization using Adobe Experience Platform and Adobe Target.


Luma recently launched a new Amazon Alexa app which helps our customers meditate by playing soft music and customers can ask questions related to health and wellness topics. Luma wanted to understand how customers were using the Alexa App and deliver them offers and personalized content on our website and vice versa.


2. How did you leverage Adobe Experience Cloud to solve your problem? Please provide any information that will be helpful in understanding your integration (ie: architectural diagram, step by step process explanation, etc)

By using Adobe Experience Platform and Adobe Target, Luma can now deliver real time personalization to better engage our customers. Luma’s website is integrated with Adobe’s Experience Platform via Adobe Web SDK along with Adobe Target using Tags. 


The diagram below shows the overall architecture of the solution:



  1. We installed Alexa Skill in Alexa App and linked the customer’s Luma account identity with the Alexa account.
  2. The skill on Alexa device gets invoked by the customer.
  3. The skill makes a backend call to business logic running in AWS Lambda function.
  4. The Lambda function fetches the customer’s email address from Luma’s Identity platform by exchanging the access token. You can access the accessToken in “context.System.user.accessToken” field of context object of your custom Alexa skill.
  5. The function makes use of Adobe Experience Platform’s HTTP API to stream the profile and event data into Adobe Experience Platform data sources. The event data contains the intent the user makes while interacting with the skill. Like “Where can I buy fitness shirts”. “Fitness shirts” is the intent which gets captured in the event data.
  6. The data gets ingested in Adobe Experience Platform’s dataset and is processed into the Data Lake.
  7. The intelligent identity service of Adobe Experience Platform stitches the customer profile on Alexa with Website and mobile app profiles. 
  8. The users who have interacted with Alexa skill are added to a segment.
  9. The segment is activated to Adobe Target.
  10. Adobe Target is configured to deliver offers to the customers based on their segments. Example: – “Show an offer to users who asked for “fitness shirts” in Alexa and have browsed “yoga gear and clothes” page.

Implementation Approach

Unique Identifier for Alexa Skill users

The Adobe Experience Platform automatically stitches identity profiles and sends the hashed email address as the primary identity to Adobe Experience Platform. However, this will not work if there is a requirement to show personalized offers from Adobe Target and read them out in Alexa. This is because Adobe Target and all other Dx solutions use ECID as the primary identity which is not same as email ID of the user.

We fetch the ECID in Lambda function code by making HTTP calls to the identity service as shown below. The d_orgid param is the IMS orgid of our Adobe Experience Cloud instance.



We get the following response from the above call.



The d_mid above is the ECID in the above response. This ID is refreshed after “id_sync_ttl” time. We store this ECID and the TTL in a database (Use emailID of the user as primary key) and reuse the same until it is valid has not expired. We then regenerate the new ECID of the logged in user when the TTL time in seconds is less than current timestamp in seconds.


Setup XDM Schema and Datasets in AEP

We created a new profile and event XDM schema in Adobe Experience Cloud which is used to ingest data into the data lake.








Event Schema

Profile Schema


The event fields in the event schema capture the customer’s intent and information. The ECID in the event schema is the primary identity and the email address of the user is the primary identity in the profile schema. Adobe Experience Platform then stiches the event data with the customer profile in real time.

After defining the schema, it is enabled for Profile as shown in following screenshot:



We saved the schemas and created datasets for both the schemas and linked them to an HTTP API data source.  We made sure both datasets were linked to the Profile just as we did for the Schema. Documentation guidance for this can be found here: https://experienceleague.adobe.com/docs/experience-platform/sources/ui-tutorials/create/streaming/ht...

Update Lambda function to stream data to AEP

The next step was to update the Lambda function to stream the data to AEP datasets using the HTTP API. See the below code examples to see how the event and profile data was streamed via NodeJS code.

We sent the profile data once when the skill was launched, and the event data was sent on every intent request of the skill.

Send event data:



Send profile data:



We then defined the headers and body payload of the request object and sent it to the data flow end point. The payload structure of the request matches with the schema structure created in XDM schema.

The following are variables in the above code:

  1. ACCESS_TOKEN – Fetch the JWT service token of Experience Platform APIs using Adobe Developer console.
  2. AEP_STREAMING_HOST and AEP_STREAMING_PATH point to the data flow URL which is generated by AEP after we created the source connection.
  3. AEP_ORG points to the IMS Org of our company in Experience Cloud.

In the final step, we sent the data to the endpoint as a standard HTTPS POST request.

We received the following response after successful ingestion:




Create segments in AEP and activate to Adobe Target

We then created a new segment in AEP by using the Alexa Skill Experience Event attribute which we created in the schema. Example: the below segment captures all Alexa users who have inquired for “Fitness Shirts”.



We then verified the sample profiles in the segment and checked its estimated audience size before we activated it.

Finally, we activated this segment to Adobe Target destination in AEP. Documentation guidance we used can be found here: https://experienceleague.adobe.com/docs/platform-learn/tutorials/destinations/create-destinations-an...


Create an Activity in Adobe Target

We logged into our Adobe Target instance and setup a new activity which will present an offer to all users who are in Alexa skill and have inquired for “Fitness Shirts”.




We then see a new audience or segment in Adobe Target after it was activated from AEP. We used that audience to build a new offer and presented it to our customers. In the above diagram, the “kgaba-Alexa-users” is the audience who have interacted with Alexa skill and who have inquired for “Fitness Shirts”.

Finally, when a customer logs in to our website with the same email address which they used for interacting with the Alexa skill, they will see a new offer displayed on the home page:






Regular customer sees above home page

Alexa skill customer who inquired about fitness shirts sees the above page.


3. What were your results? Please cite both qualitative and quantitative results if applicable


Luma can now run campaigns and easily target our customers with relevant offers and thereby increase overall engagement and retain our customers for a longer duration.

In this story, we shared how we achieved real time cross channel personalization with Adobe Experience Platform and Adobe Target.

We personalized the experience of the Alexa Skill by fetching offers from Adobe Target in the AWS Lambda function using the same ECID which was originally generated. The Lambda function fetches the offers from the Adobe Target server side and read it to the users of the skill.


Additional resources:

Aspire Experience Platform Target