Get started with custom channels gs-custom-channel

Adobe Campaign allows you to create custom external or API channels integrated with third-parties. You can then orchestrate and execute deliveries based on these channels.

The delivery creation and sending can be performed both in the Client Console and in the Web UI. However, the custom channel configuration is only performed in the Client Console.

To learn how to create and send a delivery based on a custom channel, refer to this page.

Here are the steps to configure a new custom channel in the Client Console. These steps are common to custom external and API channels:

  1. Configure the schema, read more
  2. Create a new external account, read more
  3. Create a new delivery template, read more

Custom API channels require additional configuration. Read more

Configure the schema configure-schema

First, you need to configure the schema to add the new channel to the list of available channels.

  1. From Campaign Explorer, select Administration > Configuration > Data schemas.

  2. Create a schema extension to extend the messageType enumeration with the new channel.

    For example:

    code language-none
    <enumeration basetype="byte" default="mail" label="Channel" name="messageType">
    <value desc="My Webpush" img="ncm:channels.png" label="My Webpush" name="webpush"
           value="122"/>
    </enumeration>
    

    {modal="regular"}

Create a new external account create-ext-account

Then, you need to create a new routing external account.

  1. From Campaign Explorer, select Administration > Platform > External accounts.

  2. Create a new external account.

  3. Select the channel and change the delivery mode. Choose External for custom external channels, and Bulk for custom API channels.

    {modal="regular"}

Create a new delivery template create-template

Now, let’s create the new template associated to the new channel.

  1. From Campaign Explorer, select Resources > Templates > Delivery templates.

  2. Create a new template.

  3. Click on Properties and select the right folder and routing.

    {modal="regular"}

The new channel is now available. You can create and execute deliveries based on this channel.

Custom API additional configuration api-additional

Here are the main additional steps to configure custom API channels.

Extend the schema api-additional-schema

From the Client Console, extend the Delivery schema with all additional properties required for the custom channel.

For more information on schema extension, refer to this page.

Set up the custom screen definition api-additional-screen

From the Campaign Web UI, set up the custom screen definition:

  1. Open the Delivery schema and click Screen edition.

    {modal="regular"}

  2. Select the tab that corresponds to your channel and define how the fields will be displayed in the content screen of the delivery. For more information on screen edition, refer to this page.

    {modal="regular"}

  3. In the Preview for simulate content section, select the dedicated JSPP. This is optional. This will activate the preview in the delivery simulation screen. Read more

Configure the preview api-additional-preview

This configuration is optional. If you want to activate the preview in the Web UI, in the delivery simulation screen, you need to configure a dedicated JSSP in the Client Console.

When you click on Open preview in the delivery simulation screen in the Web UI, the following parameters are passed in the URL:

https://adobe.campaign.adobe.com/cus/webPushMessagePreview.jssp?deliveryId=%40ToPzTurO9aGzQxYcMArBbA%3D%3D&id=%40oF8Fi17txuLmtiOFj4OIjQ%3D%3D

  • deliveryId: the delivery identifier
  • id: the profile identifier

In the Client Console, select Administration > Configuration > Dynamic JavaScript pages and create a new JSSP. Here is an example with the parameters that need to be retrieved.

<%@ page import="xtk:shared/nl.js"
%><%
  NL.require("/nl/core/shared/core.js")
    .require('/nl/core/jsspcontext.js')
    .require('/nl/core/shared/dataTypes.js')
    .require('/nl/core/schema.js');

  //response.setContentType("text/plain");
  var parameters = request.parameters;
  var deliveryId = decryptString(parameters.deliveryId);
  var oldUserContext = logonEscalation("neolane")

   var delivery = xtk.queryDef.create(<queryDef schema="nms:delivery" operation="getIfExists">
                                         <select>
                                           <node expr="[WebpushParameters/@richMediaOptions]" alias="@richMediaOptions"/>
                                           <node expr="[WebpushParameters/@mediaUrlInfo]" alias="@mediaUrlInfo"/>
                                           <node expr="[WebpushParameters/@WebpushMessageType]"/>
                                         </select>
                                         <where>
                                           <condition expr={"@id = " + NL.XTK.toXTKString(deliveryId)}/>
                                         </where>
                                       </queryDef>).ExecuteQuery();

  // Restore previous context
  logonWithContext(oldUserContext)
%>

<!DOCTYPE html ...

Technical implementation api-additional-technical

Depending on your custom channel, you will need to configure other parts of the application, such as: external accounts, target mapping, Javascript code for API, etc.

recommendation-more-help
35662671-8e3d-4f04-a092-029a056c566b