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.
| Attribute | Type | Required | Description |
|---|---|---|---|
| action_id | TEXT | Required |
Unique identifier of the action. This must be identical to the value provided for the action_name attribute. |
| action_name | TEXT | Required |
Readable name of the action. This must be identical to the value provided for the action_id attribute. |
| action_proposition | TEXT | Optional |
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_priority | NUMERIC | Optional | Value between -100 and +100, representing the internal marketing priority of the action. |
| action_start_date | DATE-TIME | Optional | GMT timestamp representing the first date the action is valid. |
| action_end_date | DATE-TIME | Optional | GMT timestamp representing the last date the action is valid. |
| action_campaign_code | TEXT | Optional | Campaign code associated with the action. |
| asset_id | TEXT | Required | Unique identifier of the asset associated with the action. |
| asset_link_id | TEXT | Optional | Unique 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_mimetype | TEXT | Required | Media type of the asset associated with the action. |
| asset_viewpoint | TEXT | Optional |
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_content | LARGE_TEXT | Optional | Full-content object based on the associated media type of the asset. |
| positive_response_label | TEXT | Optional | Readable label for a positive response. |
| positive_response_target_type | TEXT | Required if a positive label is provided. |
Enumerated directive representing the navigation type when a positive response is selected. One of:
|
| negative_response_label | TEXT | Optional | Readable label for a negative response. |
| negative_response_target_type | TEXT | Required if a negative label is provided. |
Enumerated directive representing the navigation type when a negative response is selected. One of:
|
| neutral_response_label | TEXT | Optional | Readable label for a neutral response. |
| neutral_response_target_type | TEXT | Required if a neutral label is provided. |
Enumerated directive representing the navigation type when a neutral response is selected. One of:
|
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:
| Attribute | Type | Description |
|---|---|---|
| saturation_threshold | NUMERIC | The maximum number of times an action can be shown to a user without a response. |
| min_negative_months | NUMERIC | The 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:
