Adobe Tech Blog
Published in

Adobe Tech Blog

Level Up Your Customer Experiences with Location-Based Offer Decisioning

In this post, we’ll explore how Adobe solutions fit together to provide a consistent customer experience. We’re going to focus on how to best use real-time data such as GPS coordinates, stock availability, or weather forecast with Adobe Experience Platform offer decisioning engine to propose contextual, relevant content to our customers.

With the ever-increasing usage of mobile devices, brands have more and more data at their disposal to build innovative and relevant ways to interact with their prospects and customers. A mobile app is a channel of choice for marketers to provide relevant and contextual customer experiences. Think of all the IoT devices brands can also leverage: vehicles, bicycles, health, and fitness trackers, these are a gold mine waiting for action in the company's data lake.

From real-time contextual alerts to augmented reality features and proactive maintenance, there’s a wide range of customer experiences the marketing team can think of. Now the challenge lies in the ability to use this data, coming from heterogeneous sources with minimal efforts. This is where Adobe Experience Platform comes into play and helps brands lower the cost and complexity of maintaining rich customer experiences.

Build the customer journey with Adobe Experience Platform

Let’s have a closer look at what is needed to build real-time geofenced personalized experience. Imagine an automotive service company called Carvelo which has many brick-and-mortar locations across the country which offers car maintenance service for a wide range of vehicles.

Carvelo marketing team is asked to leverage IoT / mobile apps data to propose proactive car service offers when a given vehicle is nearby a shop. Offers can be as simple as a discount on brake replacement if the car has not been serviced in the past 24 months or more complex such as an offer on winter tires when there’s a snow forecast in the Montreal area. Of course, such an offer should only be proposed if tires corresponding to the make and model of the car are available in the workshop.

Having said that, the customer would receive this personalized push notification:

Figure 1: Location-based offer using context data as decision criteria

How to decide if we should push this content to this customer at this time? Let’s look at what’s make this notification unique and the data we need to take the right decision:

  • Customer data: We need to know the make/model of the car to determine the right tire size.
  • Event data: Was our customer already targeted with this offer in the past? If yes, we should not propose it again
  • Spare part availability: Does the shop nearby has tires in stock that corresponds to our customer's car make and model?
  • Weather forecast: Is it the right time to push an offer for winter tire?

Like in any complex scenario, data come from multiple sources:

Figure 2: Data broken down by source

Customer and Event data are made available for immediate consumption in Adobe Experience Platform Real-time Customer Profile. Adobe Offer Decisioning has direct access and can lookup profile and behavioral data in real-time to determine if this winter tire offer is relevant for our customers. Shop location details are stored in the Point of Interest catalog, as part of the Places Services and collected as an experience event.

But what about spare part availability or weather condition in a given location? They represent a huge volume of data with a short time to live, and they should not be part of the real-time customer profile. Therefore we need to pass them as input parameters of the decision and we will use Journey Orchestration (JO) to manage the sequence of API calls required to build such a use case. Thanks to JO datasource, we can easily chain those requests together and apply condition based on their responses.

Looking at the overall architecture diagram, here is what’s happening

Figure 3: Overall architecture (click for full-size diagram)

1. IoT Devices or Mobile app collects location data, which is then ingestedAdobe through the data collection server as an API call. The payload itself is fully configurable according to XDM standard. In our case, it contains profile identifier, car details, and current location information such as garage name and address.

2. Data lands in Adobe pipeline, where Journey Orchestration listens to any new event matching a specific orchestration event id.

3. Once Journey Orchestration event captures the request, it triggers a journey. Shop name and car details are used to look up tire availability through an external data source.

4. Journey Orchestration also uses shop location (city name and country) to check weather forecast through Openweather map API, configured as an external data source. It sends back a weatherId code ranging from 200 (storm) to 800 (clear).

5. Journey Orchestration formats the offer decisioning request with responses from steps 3 and 4 and calls an runtime action as a data source.

6. The runtime endpoint acts as a façade and provides a simple interface to query offer decisioning engine with contextual data. It also manages authentication token to Offer Decisioning API.

7. Offer Decisioning Engine looks for the next best offer for a given decision scope and uses contextual data coming from the payload of the API call to execute the decision. The weatherId attribute corresponds to the weather condition, as returned by the Openweather map API

Figure 4: contextData in Offer Decisioning API call

At the eligibility rule level, the condition references the weatherId attribute using the Profile Query Language syntax to determine whether the offer should be eligible.

Figure 5: Screenshot of the eligibility rule using contextData parameter

8. Response from Offer Decisioning contains the next best offer content, represented as a JSON object, and is passed to a Journey Orchestration custom action in charge of contacting the mobile push notification system.

9. The corresponding Push Notification System (Apple or Android, based on customer device) is contacted to route the message back to the device.

Use contextual data to boost your decisioning strategy

That’s it! data flowed from one application to another seamlessly, without any data duplication thanks to Adobe Experience Platform and its open ecosystem of services. We easily coalesce data from the real-time customer profile with third-party ones into one single contextual stream.

We rely on Adobe Experience Platform and its application services to make interactive customer experiences that bring value to both our brand and our customers. For the brand, it is a great opportunity to drive more traffic to the shop and increase revenue through an online channel. For customers, they don’t have to call and book an appointment to get their car serviced, they know instantly if they can get their car ready.

Using contextual information such as location metadata, stock availability and weather forecast in the offer decisioning process unlocks powerful use cases and makes the customer happy through a smooth and positive online to offline experience.

If you want to learn more and become familiar with Adobe Experience Platform, the Experience League is a great place to start. It details its main components and provides hands-on exercise to become an experience maker!

Follow Adobe Developers on Twitter for the latest news and developer products. For exclusive posts on Adobe Experience Platform, follow Jaemi Bremner.


  1. Adobe Experience Platform
  2. Adobe Experience Platform Experience Data Model (XDM)
  3. Real-time Customer Profile Overview
  4. Places Service
  5. Journey Orchestration
  6. Adobe Offer Decisioning
  7. Runtime




News, updates, and thoughts related to Adobe, developers, and technology.

Recommended from Medium

Increase or Decrease the Size of Static Partition in Linux

Loading Cosmos DB Graph Data Using Jupyter Notebooks

Serverless Architecture

3 Spreadsheet Tools for Programmers

What is the STAC M3 Benchmark and Why Care? | Weka File System

Ruby on Rails(6+) Uploading and Cropping images with Shrine, and Cropper.js

SQL-Part 16 | by Kristina Paseru

CS371p Fall 2020: Audie Bethea

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Jaemi Bremner

Jaemi Bremner

Experience Technologist. Currently Director of Developer Content Engine for DataStax. Former Developer Advocate for Adobe Experience Platform. Twitter: @jaeness

More from Medium

From Data Geeks to Datanauts: Why we changed

Evolution of the data team at Motorway

To Realize True Transformation, Digitize and Orchestrate Business Processes

Work Teams With More Freedom Perform Better