Skip to main content

Tracking event Workflow Tasks

Tracking event tasks are used to create, update, delete, and bulk import Tracking events.

Create Tracking event

task: "TrackingEvent/Create@1"
name: createTrackingEvent
inputs:
values:
customValues: "{{ customValues }}"
description: "{{ description }}"
eventDate: "{{ eventDate }}"
eventDefinitionId: "{{ eventDefinitionId }}"
includeInTracking: "{{ includeInTracking }}"
isInactive: "{{ isInactive }}"
location: "{{ location }}"
sendEmail: "{{ sendEmail }}"
outputs:
- name: trackingEvent
mapping: "trackingEvent"

Get Tracking event

task: "TrackingEvent/Get@1"
name: getTrackingEvent
inputs:
trackingEventId: "123"

outputs:
- name: trackingEvent
mapping: "trackingEvent"

Update Tracking event

task: "TrackingEvent/Update@1"
name: updateTrackingEvent
inputs:
trackingEventId: "123"
values:
customValues: "{{ customValues }}"
description: "{{ description }}"
eventDate: "{{ eventDate }}"
eventDefinitionId: "{{ eventDefinitionId }}"
includeInTracking: "{{ includeInTracking }}"
isInactive: "{{ isInactive }}"
location: "{{ location }}"
sendEmail: "{{ sendEmail }}"

Delete Tracking event

task: "TrackingEvent/Delete@1"
name: deleteTrackingEvent
inputs:
trackingEventId: "123"

Import Tracking Events

Bulk import tracking events for an order with duplicate detection and automatic event definition creation.

task: "TrackingEvent/Import@1"
name: importTrackingEvents
inputs:
orderId: "{{ orderId }}"
events: "{{ events }}"
matchByFields:
- "eventDefinitionName"
- "eventDate"
skipIfExists: true
createEventDefinitions: true
eventDefinitionDefaults:
includeInTracking: true
sendEmail: false
outputs:
- name: importResult
mapping: "result"

Parameters

ParameterTypeRequiredDefaultDescription
orderIdintYes-The order ID to import tracking events for
eventsListYes-Array of event objects to import
matchByFieldsList<string>No["eventDefinitionName", "eventDate"]Fields to match existing events for duplicate detection
skipIfExistsboolNotrueSkip importing if a matching event already exists
createEventDefinitionsboolNotrueAuto-create missing event definitions
eventDefinitionDefaultsobjectNonullDefault values for auto-created event definitions
matchByEventDefinitionList<string>NonullFields to match EventDefinition by CustomValues instead of EventName

Event Object Properties

Each event in the events array can have the following properties:

PropertyTypeRequiredDescription
eventDefinitionNamestringYesName of the event definition
eventDateDateTimeNoDate/time of the event
descriptionstringNoEvent description
locationstringNoEvent location
includeInTrackingboolNoInclude in tracking display
sendEmailboolNoSend email notification
customValuesobjectNoCustom key-value pairs

Output Result

{
"result": {
"added": 5,
"updated": 0,
"skipped": 2,
"failed": 0,
"total": 5,
"errors": []
}
}

Using matchByEventDefinition

The matchByEventDefinition parameter enables matching EventDefinitions by CustomValues fields instead of EventName. This is useful for carrier event translation tables.

task: "TrackingEvent/Import@1"
name: importCarrierEvents
inputs:
orderId: "{{ orderId }}"
events:
- eventDefinitionName: "Carrier Event"
eventDate: "{{ eventDate }}"
customValues:
carrierId: 123
carrierEventCode: "D"
carrierDescription: "DELIVERED"
matchByEventDefinition:
- "customValues.carrierId"
- "customValues.carrierEventCode"
matchByFields:
- "customValues.carrierId"
- "customValues.carrierEventCode"
- "eventDate"
createEventDefinitions: true
eventDefinitionDefaults:
eventName: "Unknown"
includeInTracking: true
outputs:
- name: importResult
mapping: "result"

Behavior when matchByEventDefinition is provided:

  1. Extracts specified field values from input event's customValues
  2. Finds EventDefinition where CustomValues matches on all specified fields
  3. If not found and createEventDefinitions=true:
    • Creates EventDefinition with EventName from eventDefinitionDefaults.eventName
    • Copies only the matched fields to EventDefinition.CustomValues

Note: The matchByFields parameter also supports customValues.* fields for TrackingEvent duplicate detection.

Example Tracking event Workflow

workflow:
name: "Tracking event / Create TrackingEvent Example Workflow"
description: "Create Tracking event Example Workflow"
version: "1.0"
executionMode: "Sync"

inputs:
- name: "customValues"
type: "string,Object"
displayName: "Custom values"
description: "Custom values"
multiple: false
required: false
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.customValues"
- name: "description"
type: "string"
displayName: "Description"
description: "Description"
multiple: false
required: false
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.description"
- name: "eventDate"
type: "Date"
displayName: "Event date"
description: "Event date"
multiple: false
required: false
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.eventDate"
- name: "eventDefinitionId"
type: "EventDefinition"
displayName: "Event definition id"
description: "Event definition id"
multiple: false
required: true
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.eventDefinitionId"
- name: "includeInTracking"
type: "boolean"
displayName: "Include in tracking"
description: "Include in tracking"
multiple: false
required: true
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.includeInTracking"
- name: "isInactive"
type: "boolean"
displayName: "Is inactive"
description: "Is inactive"
multiple: false
required: true
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.isInactive"
- name: "location"
type: "string"
displayName: "Location"
description: "Location"
multiple: false
required: false
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.location"
- name: "sendEmail"
type: "boolean"
displayName: "Send email"
description: "Send email"
multiple: false
required: true
defaultValue: ""
additionalProperties:
visible: true
mapping: "trackingEvent.sendEmail"

outputs:
- name: trackingEvent
mapping: "createTrackingEventActivity.createTrackingEvent.trackingEvent"

activities:
- name: "createTrackingEventActivity"
description: "Create Tracking event"
steps:
- task: "TrackingEvent/Create@1"
name: createTrackingEvent
inputs:
trackingEvent:
customValues: "{{ customValues }}"
description: "{{ description }}"
eventDate: "{{ eventDate }}"
eventDefinitionId: "{{ eventDefinitionId }}"
includeInTracking: "{{ includeInTracking }}"
isInactive: "{{ isInactive }}"
location: "{{ location }}"
sendEmail: "{{ sendEmail }}"
outputs:
- name: trackingEvent
mapping: "trackingEvent"
- name: "getTrackingEventActivity"
description: "Get TrackingEvent"
steps:
- task: "TrackingEvent/Get@1"
name: getTrackingEvent
inputs:
trackingEventId: "{{ createTrackingEventActivity.createTrackingEvent.trackingEvent.trackingEventId }}"
outputs:
- name: trackingEventFromGet
mapping: "trackingEvent"
- name: "updateTrackingEventActivity"
description: "Update TrackingEvent"
steps:
- task: "TrackingEvent/Update@1"
name: updateTrackingEvent
inputs:
trackingEventId: "{{ getTrackingEventActivity.getTrackingEvent.trackingEvent.trackingEventId }}"
trackingEvent:
customValues: "{{ customValues }}"
description: "{{ description }}"
eventDate: "{{ eventDate }}"
eventDefinitionId: "{{ eventDefinitionId }}"
includeInTracking: "{{ includeInTracking }}"
isInactive: "{{ isInactive }}"
location: "{{ location }}"
sendEmail: "{{ sendEmail }}"
- name: "deleteTrackingEventActivity"
description: "Delete TrackingEvent"
steps:
- task: "TrackingEvent/Delete@1"
name: deleteTrackingEvent
inputs:
trackingEventId: "{{ getTrackingEventActivity.getTrackingEvent.trackingEvent.trackingEventId }}"