Client Hints and the Adobe Target Delivery API
- Topics:
- APIs/SDKs
CREATED FOR:
- Developer
Client Hints must be sent to Adobe Target on the offers request.
Generally, it is recommended to send all available Client Hints to Target. For more information, see User-agent and Client Hints in the Client-side Implementation section.
Delivery API direct calls
From the browser
In this case, the browser will send low-entropy Client Hints to Target automatically via request headers. But there are a couple browser-level limitations with this implementation. First - no Client Hints headers will be sent from the browser unless the request is being made over https. Second - Client Hints will not be sent on the first request to Target on the page. Client Hints headers will only be sent on the second request and all requests thereafter. This means that audience segmentation and personalization cannot be performed by Target on the first page visit. In order to get around both of these limitations, we strongly recommend using the User Agent Client Hints API in the browser to collect the Client Hints directly, and send them on the request payload.
From a server
In this case the Client Hints must be manually forwarded from the browser to Target on the Delivery API request.
curl -X POST 'http://mboxedge28.tt.omtrdc.net/rest/v1/delivery?client=myClientCode&sessionId=abcdefghijkl00014' -d '{
"context": {
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36",
"clientHints": {
"Sec-CH-UA-Model": "iPhone",
"Sec-CH-UA-Mobile": true,
"Sec-CH-UA-Platform": "iOS",
"Sec-CH-UA": "[ { \"brand\": \"Chromium\", \"version\": \"91\" }, { \"brand\": \" Not;A Brand\", \"version\": \"99\" } ]",
"Sec-CH-UA-Full-Version-List": "[ { \"brand\": \"Chromium\", \"version\": \"91.1.1.1\" }, { \"brand\": \" Not;A Brand\", \"version\": \"99.1.1.1\" } ]",
"Sec-CH-UA-Platform-Version": "10.0.0",
"Sec-CH-UA-Arch": "x86",
"Sec-CH-UA-Bitness": "64"
}
},
"execute": {
"mboxes": [{
"name": "home",
"index": 1
}]
}
}'
Formatting
Client Hints headers Sec-CH-UA and Sec-CH-UA-Full-Version-List have a different format than the results from the Client Hints browser API (navigator.userAgentData.brands/navigator.userAgentData.getHighEntropyValues). Both of these formats are accepted by Delivery API. The Delivery API will normalize the values into the format used in the request headers, which is important to keep in mind if accessing Client Hints in profile scripts.
Target
- Adobe Target Developer Guide
- Getting started
- Before you implement
- Privacy and security
- Privacy overview
- Privacy and data protection regulations
- Target cookies
- Delete the Target cookie
- The impact of third-party cookie deprecation on Target (at.js)
- Google Chrome SameSite cookie policies
- Apple Intelligent Tracking Prevention (ITP) 2.x
- Content Security Policy (CSP) directives
- Allowlist Target edge nodes
- Methods to get data into Target
- Target security overview
- Supported browsers
- TLS (Transport Layer Security) encryption changes
- CNAME and Adobe Target
- Client-side implementation
- Overview: implement Target for client-side web
- Adobe Experience Platform Web SDK implementation overview
- at.js implementation
- at.js overview
- How at.js works
- How to deploy at.js
- On-device decisioning
- at.js functions
- at.js functions overview
- adobe.target.getOffer()
- adobe.target.getOffers() - at.js 2.x
- adobe.target.applyOffer()
- adobe.target.applyOffers() - at.js 2.x
- adobe.target.triggerView() - at.js 2.x
- adobe.target.trackEvent()
- mboxCreate() - at.js 1.x
- targetGlobalSettings()
- mboxDefine() and mboxUpdate() - at.js 1.x
- targetPageParams()
- targetPageParamsAll()
- registerExtension() - at.js 1.x
- sendNotifications() - at.js 2.1
- at.js custom events
- Debug at.js using the Adobe Experience Cloud Debugger
- Use cloud-based instances with Target
- at.js FAQs
- at.js version details
- Upgrading from at.js 1.x to at.js 2.x
- at.js cookies
- User-agent and client hints
- Understand the Global mbox
- Server Side implementation
- Server Side: implement Target overview
- Getting started with Target SDKs
- Sample apps
- Transition from Target legacy APIs to Adobe I/O
- Core principles
- Integration
- On-Device Decisioning
- Node.js SDK Reference
- Java SDK Reference
- .NET SDK Reference
- Python SDK Reference
- Hybrid implementation
- Recommendations implementation
- Mobile app implementation
- Email implementation
- API guides
- Implementation patterns