WhatsApp — Event Forwarding Integration for Real-Time Personalization
1 Executive Summary
This whitepaper outlines the architecture and implementation details to integrate WhatsApp Business API with Adobe Experience Platform Event Forwarding (part of Adobe Real-Time CDP Connections and Adobe Real-Time CDP) to trigger real-time personalization.
This integration is done with the following products
1. Real-Time CDP Connections or Real-Time CDP (for use of edge segmentation)
2. Adobe Experience Platform Data Collection
3. WhatsApp Business API
2 Problem Statement
With more and more communication channels in the market, it is now necessary for marketers to focus on the new communication channels to reach out to customers for communication, retargeting, and retention.
Traditional Digital Marketing channels have been display ads, email campaigns, SMS, and so on; but we now have many new products, like WhatsApp, WeChat, SnapChat, etc.
This whitepaper focuses on integrating the WhatsApp Business API with Event Forwarding for real-time personalization.
3 WhatsApp as a Delivery Channel — Key Strengths
Messaging apps are easily the most used application on any smartphone and people rely on phone-based messaging apps to connect and communicate with one another.
As per the latest WhatsApp statistics, more than 5 million businesses are actively connecting with customers on WhatsApp; as many as 80% with the opinion that it helps business grow. In 2020, WhatsApp-based automation emerged as the key to quickly developing and scaling digital presence.
WhatsApp leads the messaging app category with 2 billion active users, with over 1 billion Monthly Active Users (MAU) in February 2016. This makes 2009-born WhatsApp the biggest messaging service in the world, far ahead of all other messaging apps.
WhatsApp’s 98% message open rate completely dominates emails open rates which stand at around 20%. This makes it one of the perfect platforms to be used in all sorts of direct & indirect marketing strategies. While some customers may not open emails, they will definitely check their messages & WhatsApp notifications.
WhatsApp’s double tick & blue tick feature, which shows that a message has been delivered & read respectively, also adds value as it assures that the message is delivered to the right customer.

4 Event Forwarding — Product Positioning
Event forwarding in Adobe Experience Platform allows you to send collected event data to a destination for server-side processing. Event forwarding decreases web page and app weight by using Adobe Experience Platform Edge Network to execute tasks normally done on the client. Implemented in a similar manner to tags, event forwarding rules can transform and send data to new destinations, but instead of sending this data from a client application like a web browser, it is sent from Adobe’s servers.

5 Architecture

Data from Web / App is collected using AEP Web SDK and Mobile SDK and passed to Experience Platform. Segmentation jobs are created in Experience Platform and pushed into Custom Personalization Destination which in read in Event Forwarding to invoke WhatsApp API calls.
6 Sample User Journey


7 Implementation Steps
7.1 WhatsApp Business Account Creation
· Login/Signup into https://developers.facebook.com/
· Click on My Apps > Create App
· Select Business and next
· Enter App Name, Contact Email and Business Account Details
· Click on Create App
7.2 Create Message Templates in WhatsApp UI
· Navigate to the newly created WhatsApp Business API App.
· Under Step 2, click on the link to create new templates.
· On the resulting page, click on Create Template button to create a new template.
· Refer this link for more details on WhatsApp message templates — link.
7.3 Data Stream Configuration
· Login into https://www.experience.adobe.com
· Select Adobe Experience Platform Data Collection
· Select Datastreams from left rail
· Create new Datastream
· Add Event Forwarding as a service
NOTE: The Event Forwarding property should be created before this step
7.4 Web SDK Configuration
· Login into https://www.experience.adobe.com
· Select Adobe Experience Platform Data Collection
· Select Tags from left rail
· Create new Tags Property
· Go to Extensions Tab and add ‘AEP Web SDK’ Extension
· Under Datastream section, select the Datastream created in step 8.3
· Create Data Element and Rules to send Web SDK Calls
· In the rule, save the response received in Web SDK Send Event call using,
localStorage.setItem(‘response’,’’);
7.5 Adobe Experience Platform Segment Creation
Edge Segmentation: Edge segmentation is the ability to evaluate segments in Adobe Experience Platform instantaneously on the edge, enabling same page and next page personalization use cases. Segment Creation and Evaluation is part of Adobe Real-Time CDP (Prime or Ultimate)
1. Create a Edge Segment for all logged in Home Page visits
2. Go to Segments section in AEP and Click on Create New Segment
3. Add condition to check for all events with URL as Home Page and Login Status as ‘logged-in’.
4. Select Evaluation Method as ‘Edge’
Streaming Segmentation: Streaming segmentation on Adobe Experience Platform allows customers to do segmentation in near real-time while focusing on data richness.
1. Create a segment to monitor inactive / Waiting Cart
2. Go to Segments section in AEP and Click on Create New Segment
3. Add condition to check for items added in cart, but not checked out / Order confirmed for more than 10 mins.
4. Select Evaluation Method as ‘Streaming’
7.6 Custom Personalization Destination — Real-Time CDP Setup
This destination provides a way to retrieve segment information from Adobe Experience Platform to external personalization platforms, content management systems, ad servers, and other applications that are running on customer websites. Custom Personalization Destination is a feature in Real-Time CDP Ultimate Link
1. Navigate to Destination tab in AEP
2. Filter for Custom Personalization and click on ‘Set Up’ or ‘Activate Segments’
3. Enter Name, Description, Integration alias and Data Stream ID
4. Add the Segments created in previous step and save the connection
7.7 Event Forwarding Configuration
1. Create a Event Forwarding Property
2. Add Adobe Cloud Connector Extension
3. Create a rule for Logged In Home Page Visits.
4. Add below conditions,
a. User should be logged in and given consent for WhatsApp notification (The consent data should be collected from website/App and passed in Web SDK calls)
b. User should be qualified for the Edge Segment created in section 8.5
5. Under Action, select Adobe Cloud Connection Extension and Action Type as ‘Make Fetch Call’
6. Select Request Type as ‘POST’ and URL as ‘https://graph.facebook.com/v14.0/10900292866****/messages’ (You can get the URL from WhatApp Business API configuration.
7. The body should be as below,
{ “messaging_product”: “whatsapp”, “to”: {{phone_number}}, “type”: “template”, “template”: { “name”: “welcome_luma_txt”, “language”: { “code”: “en_US” } } }
8. {{phone_number}} should be read from AEP Profile /Segment which is sent in Web SDK calls
9. Save and build the rule
10. Repeat step 3–8 for Waiting Cart / Abandon Cart rule.
8 Validation
1. Login in into Experience Platform Debugger
2. Go to Log > Edge
3. Reload the page and search for ‘Fetch’ call in the logs

4. The Response status should be 200.
5. A message should be sent to WhatsApp too

9 Product License Requirements
· Real-Time CDP Ultimate (for Event Forwarding, Edge and Streaming Segmentation, Customer Personalization Destinations).
· WhatsApp Business Account
10 FAQ
1. How is consent managed?
Ans: Both for GDPR/CCPA and WhatsApp the consent should be collected and passed to Event Forwarding or Experience Platform through Web SDK
2. What Adobe licenses are required to implement this?
Ans: Customers should have Real-Time CDP Ultimate (for all functionalities in this article), or Real-Time CDP Prime, or Real-Time CDP Connections.
3. After sending WhatApp message, how not to send the same message to the same user?
Ans: In Event Forwarding, after sending the Fetch call, the response will have all the phone numbers to which the message was sent. This response should be saved and a logic should be built to stop sending the same message multiple times to the same user.