Server Side: implement Target
Information about Adobe Target Server Side delivery APIs, Server Side Batch Delivery APIs, NodeJS SDK, Target Recommendations APIs, and Target Classic APIs (decommissioned).
The following process occurs in a server-side implementation of Target:
- A client device makes a request for an experience through your server.
- Your server sends that request to Target.
- Target sends the response back to your server.
- Your server makes the decision on what experience to deliver to the client device for it to render.
The experience does not need to display in a browser; it can display in an email or kiosk, via a voice assistant, or through some other non-visual experience or non-browser-based device. Because your server sits between the client and Target, this type of implementation is also ideal if you need greater control and security or have complex backend processes that you want to run on your server.
The following section lists the various APIs and the NodeJS SDK and provides additional information:
Server Side Delivery APIs
Target lets your application make mbox calls from any browser, mobile device, or even another server. The Server Side delivery API is specifically designed to integrate Target with any server-side platform that makes HTTP/HTTPS calls.
You can use the API to integrate your custom application with Target. This is especially valuable for organizations that want to deliver targeting to a non-browser based IoT device, such as a connected TV, kiosk, or in-store digital screen.
This endpoint can return offers for ordinary mboxes only. You can also fetch content for a single mbox only.
This API implements existing mbox features in a RESTful manner.
This API does not process cookies or redirect calls.
Server Side Batch Delivery APIs
The Batch Delivery API lets your application request content for multiple mboxes in a single call. It also has a prefetch mode that enables clients like mobile apps, servers, and so forth to fetch content for multiple mboxes in one request, cache it locally, and later notify Target when the user visits those mboxes.
This endpoint can return offers for ordinary mboxes only. Because you can fetch content for multiple mboxes, for performance, it makes more sense to use batch the mbox API. It lets you avoid executing multiple HTTP requests, which can be expensive.
Link: NodeJS SDK
In terms of SDKs, currently we have just one SDK, the NodeJS SDK.
The NodeJS SDK is a thin wrapper around the NodeJS core HTTP/HTTPS module. Behind the scenes, the NodeJS SDK APIs use the same Server Side Delivery APIs.
Here is the mapping:
- MarketingCloudClient.getOffer() *- invokes */res/v1/mbox endpoint
- MarketingCloudClient.getOffers() *- invokes */res/v2/batchmbox endpoint
Target Recommendations APIs
The Recommendations APIs enable you to programmatically interact with Target's recommendations servers. These APIs can be integrated with a range of application stacks to perform functions that you would typically do via the user interface.
Target Classic APIs
The Target Classic UI and APIs have been decommissioned. For information about switching to Target’s modern APIs, see Transitioning from Target Legacy APIs to Adobe I/O .
Authoring APIs (in which you create activities, offers, audiences, and so forth) do not support Cross Origin Resource Sharing (CORS).
Differences Between Server Side Delivery APIs and the NodeJS SDK
Many customers are confused about the differences between the Server Side delivery APIs and the NodeJS SDK. This is especially true when it comes to performance.
The following FAQs should help you decide which to use:
When should you use "raw" Server Side APIs versus the NodeJS SDK?
Ideally if you are using NodeJS as your backend technology, NodeJS SDK is a natural choice. The SDK handles a lot of details, such as cookies, headers, payload, and so forth. This lets you focus on the core of your application.
Should I gain any performance improvements by using the NodeJS SDK?
Unfortunately, we don't have any performance numbers. However, in general, the NodeJS SDK should good performance, thanks to the NodeJS event-driven architecture. Be aware that most of the time is spent on the Target backend. The NodeJS SDK does very little processing. The SDK is basically responsible for packaging a Target request and parsing a Target response.