External Actions Documentation

This document provides a comprehensive overview of the data flow for the Adobe External Actions API.

Overview

The Adobe External Actions API enables external services to integrate with Adobe Journey Optimizer B2B Edition through custom journey actions.

The integration flow consists of:

  1. Service Definition: External service declares capabilities via /getServiceDefinition
  2. Execution Request: Adobe sends entity data to service via /submitAsyncAction
  3. Async Processing: Service processes data
  4. Callback Response: Service returns results to Adobe

Prerequisites

Before integrating, your service must provide an OpenAPI 3.0.x compliant specification that includes:

See OpenAPI Spec Requirements for details on creating your specification.

Service Definition Flow

Prerequisites: Create OpenAPI Specification

The first step is creating your OpenAPI 3.0.x specification with the required endpoints and security schemes. See OpenAPI Spec Requirements.

Service Provider Exposes /getServiceDefinition Endpoint

The service provider must expose a service definition endpoint that declares:

Key Properties:

Conditional Requirements (enforced at ServiceDefinition level):

See the Service Definition Guide for details.

Payload Definition Structure

InvocationPayloadDef

Defines the structure of data that is sent from Adobe to the external service.

Key Properties:

CallbackPayloadDef

Defines the structure of data that can be sent BACK from the external service.

Key Properties:

Execution Request Flow

See Execution Request Documentation for complete details on the request structure, including:

Callback Response Flow

See Callback Response Documentation for complete details on the callback structure, including:

Field Mapping Lifecycle

Service Definition Phase

The service provider declares fields in the service definition:

callbackPayloadDef: 
  fields: 
    - serviceAttribute: "email" 
      dataType: "email" 
      required: false 
      description: "Person email address" 

Admin Configuration Phase

The admin maps service fields to Adobe fields:

Execution Phase

Adobe sends mapped data to the service:

{ 
  "leadData": { 
    "email": "john@example.com" 
  } 
} 

Callback Phase

The service returns updated data:

{ 
  "leadData": { 
    "id": 12345, 
    "email": "updated@example.com" 
  } 
} 

Update Phase

Adobe updates records with the returned data.

Path Condition Accessors

Path condition accessors enable external services to influence journey routing decisions. See Path Condition Accessors for details.

Key Points:

Error Handling

See Error Handling Documentation for details on:

Complete End-to-End Example

Service Definition

supportedEntityType: lead 
enableSplitPaths: true 
invocationPayloadDef: 
  fields: 
    - serviceAttribute: email 
      dataType: email 
    - serviceAttribute: company 
      dataType: string 
  accessorsMetadata: 
    - accessorName: enrichmentScore 
      dataType: integer 
callbackPayloadDef: 
  fields: 
    - serviceAttribute: email 
      dataType: email 
    - serviceAttribute: enrichedData 
      dataType: string 

Execution Request

{ 
  "token": "abc123", 
  "callbackUrl": "https://adobe.com/callback", 
  "objectData": { 
    "objectType": "lead", 
    "objectContext": { 
      "leadId": "12345", 
      "leadData": { 
        "email": "john@example.com", 
        "company": "Acme Corp" 
      } 
    } 
  }, 
  "actionConfig": { 
    "pathConfig": [ 
      { 
        "pathId": "highValue", 
        "pathDefinition": [ 
          { 
            "accessor": "enrichmentScore", 
            "operator": "greaterThanOrEqual", 
            "values": ["80"] 
          } 
        ] 
      } 
    ] 
  } 
} 

Callback Response

{ 
  "token": "abc123", 
  "objectData": [ 
    { 
      "activityData": { 
        "success": true 
      }, 
      "leadData": { 
        "id": 12345, 
        "email": "john@example.com", 
        "enrichedData": "Premium customer - Tech industry", 
        "accessorValues": { 
          "enrichmentScore": 92 
        } 
      } 
    } 
  ] 
} 

Journey Routing

Based on accessorValues.enrichmentScore = 92: