Step 1 - Create your action source

Before you can start creating dynamic actions, you must create your action source. This provides MXO with all the relevant information about the external actions to consider displaying to customers on your touchpoints.

Action source schema

In order to co-exist with existing MXO actions, dynamic action sources are expected to implement a standard schema. The following attributes represent the base data schema representing possible action and asset combinations.

AttributeTypeRequiredDescription
action_idTEXTRequired

Unique identifier of the action.

This must be identical to the value provided for the action_name attribute.

action_nameTEXTRequired

Readable name of the action.

This must be identical to the value provided for the action_id attribute.

action_propositionTEXTOptional

Proposition code associated with the action.

If provided, the action_proposition value must match the code of the proposition as it exists in your configuration.

action_priorityNUMERICOptionalValue between -100 and +100, representing the internal marketing priority of the action.
action_start_dateDATE-TIMEOptionalGMT timestamp representing the first date the action is valid.
action_end_dateDATE-TIMEOptionalGMT timestamp representing the last date the action is valid.
action_campaign_codeTEXTOptionalCampaign code associated with the action.
asset_idTEXTRequiredUnique identifier of the asset associated with the action.
asset_link_idTEXTOptionalUnique identifier used to link a dynamic action to an MXO asset. To obtain this ID, go into the asset URL and pull the base64 encoded asset ID, then paste it into the dynamic action schema.
asset_mimetypeTEXTRequiredMedia type of the asset associated with the action.
asset_viewpointTEXTOptional

Viewpoint associated with the asset.

Specify either a single viewpoint value OR multiple viewpoint values as a pipe-delimited list, for example, home banner|mobile mini|agent.

The asset_viewpoint value must be an exact, case-sensitive, match for the name of the viewpoint as it exists in your configuration.

asset_contentLARGE_TEXTOptionalFull-content object based on the associated media type of the asset.
positive_response_labelTEXTOptionalReadable label for a positive response.
positive_response_target_typeTEXTRequired if a positive label is provided.

Enumerated directive representing the navigation type when a positive response is selected. One of:

  • IN_APP
  • ONE
  • EXTERNAL_WEB
  • EXTERNAL_NON_WEB
negative_response_labelTEXTOptionalReadable label for a negative response.
negative_response_target_typeTEXTRequired if a negative label is provided.

Enumerated directive representing the navigation type when a negative response is selected. One of:

  • IN_APP
  • ONE
  • EXTERNAL_WEB
  • EXTERNAL_NON_WEB
neutral_response_labelTEXTOptionalReadable label for a neutral response.
neutral_response_target_typeTEXTRequired if a neutral label is provided.

Enumerated directive representing the navigation type when a neutral response is selected. One of:

  • IN_APP
  • ONE
  • EXTERNAL_WEB
  • EXTERNAL_NON_WEB

Example datastore configuration

{ "name": "Dynamic Actions Source", "apiName": "dynamic_actions_source", "primaryKey": "primary_key", "secondaryKey": "action_id", "definitions": [ { "name": "primary_key", "type": "TEXT" }, { "name": "action_id", "type": "TEXT" }, { "name": "action_name", "type": "TEXT" }, { "name": "action_proposition", "type": "TEXT" }, { "name": "action_priority", "type": "NUMERIC" }, { "name": "action_start_date", "type": "DATETIME" }, { "name": "action_end_date", "type": "DATETIME" }, { "name": "action_campaign_code", "type": "TEXT" }, { "name": "asset_id", "type": "TEXT" }, { "name": "asset_mimetype", "type": "TEXT" }, { "name": "asset_viewpoint", "type": "TEXT" }, { "name": "asset_content", "type": "LARGE_TEXT" }, { "name": "positive_response_label", "type": "TEXT" }, { "name": "positive_response_target_type", "type": "TEXT" }, { "name": "positive_response_target_url", "type": "TEXT" }, { "name": "negative_response_label", "type": "TEXT" }, { "name": "negative_response_target_type", "type": "TEXT" }, { "name": "negative_response_target_url", "type": "TEXT" }, { "name": "neutral_response_label", "type": "TEXT" }, { "name": "neutral_response_target_type", "type": "TEXT" }, { "name": "neutral_response_target_url", "type": "TEXT" } ] } 

Supported datastore definition types

The supported datastore definition types are:

  • BOOLEAN
  • DATETIME
  • NUMERIC
  • TEXT
  • LARGE_TEXT
  • TEXT_LIST

Example datastore entry

{ "action_id": "UC19 - Top Game - Masters of Valhalla", "action_name": "UC19 - Top Game - Masters of Valhalla", "action_proposition": "10001", "action_priority": 0, "asset_id": "8764a599-8e34-4d26-a3ba-8a0cc4fb6cbb", "asset_content": "{\"type\":\"topgame\",\"templateID\":\"10001\"}", "asset_viewpoint": "Lobby Hero Banner", "asset_mimetype": "application/json", "primary_key": "ActionUC19" } 

Extending the schema

Dynamic actions provides the ability to extend the base schema with additional attributes, allowing each brand to create a unique set of information related to each action. Extended attributes are used in both context-filtering and orchestration to drive more relevant and individualized conversations.

Example

A brand wants to drive its saturation strategy using eligibility rules based on data. In addition to the base schema, the following attributes are added:

AttributeTypeDescription
saturation_thresholdNUMERICThe maximum number of times an action can be shown to a user without a response.
min_negative_monthsNUMERICThe minimum number of months since the last negative response before the action may be considered for display again.

The brand now incorporates the new attributes into an eligibility rule, as follows:

Eligibility rule example