Configuring a connection to Movable Ink

Important: This integration is only available under controlled availability with Movable Ink. Please reach out to Movable Ink to check eligibility.

Tip: Need support? An engagement with the Oracle Consulting Services can support you with completing the Movable Ink configuration. Please reach out to your Oracle representative for more details.

The following topic will provide you with step-by-step instructions on how to configure Oracle Infinity to pass key behavioral events to Movable Ink.

Prerequisites

  • Movable Ink Stories Product: You must have access to the Movable Ink Stories product. Please reach out to Movable Ink, and they can guide you through the process of ensuring you have access to this.
  • Movable Ink API Credentials: Your Movable Ink representative will provide you with your endpoint URL and basic authentication API credentials, which you will need to enable this integration. Movable Ink needs to review sample event payloads in order to share these credentials – please work with your Oracle Infinity team to provide these. Here is the sample payload for Product Viewed.
  • Choose your Customer ID: Discuss with Movable Ink what Customer ID you'd like to use for the integration (see How do I declare my customers).
  • Website/App Tagging per Event: For each Movable Ink event you wish to support (for example, Product Viewed, Add to Cart, and so on), you must have Oracle Infinity tagging in place collecting this data with a minimum set of parameters (for example, product URL, product price, and so on). In the Step-by-Step integration topic, part of the process will be checking your tagging for each desired event.
  • (Mobile Apps only) Ensure minimum Mobile Parameters Tracked: If using mobile apps for the integration, you must ensure that either:
    • You are using the Oracle CX Mobile SDK (or legacy equivalent) .

    • If you're not using the SDK (for example, you are using the Data Collection API), then you will need to ensure you are collecting the mobile App Name (as wt.a_nm==MYAPPNAME) and App Version (as wt.av=MYAPPVERSION) for all mobile app events.

Setting up the Movable Ink integration requires 7 steps:

Step 1: Choosing your desired events

To begin, you'll need to choose which Movable Ink standard events you would like to support. Below is a list of the Movable Ink events along with the minimum required data points you need to be capturing in Infinity per event. Movable Ink also supports custom events.

Tip: Unsure what events you wish to support? Your Movable Ink representative will be able to explain what each given event would enable you to do in Movable Ink.

Event name

Description

Required

parameters

Notes

Product Viewed

Upon view of a product within your website/mobile app.

Product Viewed

Cart Add

Adding a product to your cart within your website/mobile app.

Cart Add

Conversion

Completing an order within your website/mobile app.

Conversion

Identify

Declaring their customer ID at any point during a session (for

example, login or order complete).

Identify

See Declaring Your Customers

Search

Performing a search on your website.

Search

Category View

Viewing a page listing products for a given category.

Category View

Custom Event

Any events on your website/mobile app.

Custom Event

Step 2: Audit tagging

In order to support your chosen Movable Ink events, you must have minimum data collection in place. To validate whether you are collecting this, you must perform a tag audit to see whether the minimum parameters required per event are available as per Required Parameters Per Event below.

Tip: Not confident with auditing your tagging? An engagement with the Oracle Consulting Services can support you with completing all of the auditing of your data and full Movable Ink configuration. Please reach out to your Oracle representative for more details.

For example, the Product Viewed event requires the following parameters:

Movable Ink Parameter

Required

Recommended Infinity parameter

Description

Sample value

Notes

timestamp

Yes

datetime_utc

The time when the event occurred (Unix Time)

2023-10-05T10:02:35.738Z

 

user_id or anonymous_id

Yes

wt.dcsvid

The unique identifier of the profile / anonymous profile that triggered this event.

wt.dcsvid=customerid14323

Please speak to Movable Ink for suggestions on what identifier to use per customer.

properties.id

Yes

wt.pn_sku

or 

wt.pn_id

The unique identifier of the product.

wt.pn_sku=56544-abc

wt.pn_id=56544

 

Only one is required.

timezone

No

ext.geo.tzname

the time zone of where the event took place (TZ database name in the IANA Time Zone Database)

ext.geo.tzname = 'asia/kolkata'

 

properties.title

No

wt.product_name

The title or name of the product.

wt.product_name=All-Purpose Cleaning Wipes

 

properties.price

No

wt.product_price

The product price

wt.product_price=14.99

Must be in decimal form (that is, no currency symbol).

properties.url

No

wt.es

The URL of the product.

wt.es=https://mysite.com/product/56544

If tracking mobile app, the URL must point to your product page on your website (so that Movable Ink can visit the page to grab information about the page).

properties.categories

No

wt.cg_n

An array of Categories with which this product is associated

wt.cg_n=bathroom

If using Category View event, then this value must match list_id within that event.

properties.category[i].id

No

data.wt.cg_n

For each Category, the unique identifier of the Category.

wt.cg_n = 'collections'

 

properties.category[i].url

No

 

For each Category, the URL of the Category.

 

 

properties.meta

No

 

A map of meta data to provide additional context about the event.

 

 

Note: Movable Ink does not require that event data sent use the exact same parameter names outlined here. For example, if the parameters in the event payload is originally “wt.product_price”, it can be sent to Movable Ink with the label “wt.product_price” and does not have to be updated to use the label ‘Price’.

Similarly, a custom event, requires the following parameters:

Movable Ink Parameter

Required

Recommended Infinity parameter

Description

Sample value

Notes

timestamp

Yes

datetime_utc

The time when the event occurred (Unix Time)

2023-10-05T10:02:35.738Z

 

user_id or anonymous_id

Yes

wt.dcsvid

The unique identifier of the profile / anonymous profile that triggered this event.

wt.dcsvid=customerid14323

Please speak to Movable Ink for suggestions on what identifier to use per customer.

timezone

No

ext.geo.tzname

The time zone of where the event took place (TZ database name in the IANA Time Zone Database)

ext.geo.tzname = 'asia/kolkata'

 

properties.meta

No

 

A map of meta data to provide additional context about the event.

 

 

This means that you must be collecting all of the required parameters in your Infinity tag when someone views a product on your website. You can use different parameter names other than the Recommended Infinity Parameter supplied, but if you do you will need to know how to Customize your query to account for the different parameter names or logic.

Tip: How do I check my available parameters? Please see How do I Audit my Data.

Step 3: Creating your query

Entering query template

Once you are confident you have the required parameters for your given events, you can begin building out your queries using the supplied query templates. For example, here is the query template for the Product Viewed event:

Select data.wt.dcsvid AS 'user_id', data.wt.pn_id AS 'product_id', data.wt.product_price AS 'product_price', data.wt.product_name AS 'product_name', data.wt.es AS 'page_url', data.wt.cg_n AS 'product_category', ext.geo.tzname AS 'time_zone', data.wt.a_nm AS 'app_name', data.wt.av AS 'app_version', data.wt.co_f AS 'anonymous_id', datetime_utc AS 'timestamp', LATEST(data.mi_u) AS 'user_id_qsp' WHERE session.closed='false' AND data.wt.tx_e='v' AND (EXISTS(data.wt.pn_id) OR EXISTS(data.wt.pn_sku)) AND EXISTS(data.wt.es)

Here is the query template for a custom event:

Select data.wt.dcsvid AS 'user_id', data.wt.es AS 'page_url', ext.geo.tzname AS 'time_zone', data.wt.a_nm AS 'app_name', data.wt.av AS 'app_version', datetime_utc AS 'timestamp'

Note: Make sure you have customized your query template if required. The parameter display names need not match exactly as per the event schema (for example, Timestamp vs time vs time_stamp can be used for time stamp). However, the parameter’s original name as per Required Parameters Per Event, should be used to ensure it is capturing the correct information (datetime_utc for Time stamp). See Customizing your query in the FAQ for instructions

You'll need to copy your query (which you may have customized) and then paste into the IQL Explorer user interface (which is available in navigation menu).

To create the query for the Product Viewed event:

  1. Navigate to IQL Explorer in the Infinity user interface.

  2. Copy your query (which may have been customized), then paste it in the query box.

  3. Click Validate to check for errors.

  4. Click Execute to capture the parameters with the values.

Fire sample requests

For users to select their required parameters, they need them to show in the IQL Explorer interface. To do this, users can fire a sample request to ensure the parameters show in the IQL Explorer interface so that they can ensure the parameters are going to be made available to the integration. You can find the sample requests per Events in the query templates section.

To fire your sample request:

  1. Take the sample request for your desired parameter from the query templates section. For example:

    https://dc.oracleinfinity.io/{ENTERACCOUNTGUID}/dcs.gif?wt.tx_e=v &wt.pn_id=sample_product_id&wt.es=sample_url&wt.product_price=14.99&wt.dcsvid=sample_customer_id&wt.cg_n=sample_category&wt.product_name=sample_product_name&wt.a_nm=sample_app_name&wt.av=sample_app_version&mi_ecmp=sample_campaign_name&mi_u=sample_mi_id&wt.co_f=sample_anonymous_id

    Tip: How do I fire the correct request for my event? Please see How do I Fire the Correct Sample Request in the FAQs to ensure you are firing the correct sample request.

  2. Once you are sure your sample request is correct, open the request in a window in your browser and press Enter.

  3. In the IQL Explorer page (if Execute is already clicked), you should now see the parameters with the values from the sample request.

    Important: If you can't see any data showing, then check the following items:
    Have you clicked Execute in IQL Explorer? Are you sure you have updated your query correctly? See Customizing your query.
    Is your sample request correctly formed? See How do I Fire the Correct Sample Request?

  4. Repeat steps 1-3 for each event.

Step 4: Building connections and destinations

Building your connection

To build out your connection to Movable Ink:

  1. Open the navigation menu from the upper-left corner of your Infinity screen, and click Connections.
  2. From the Connections page, click to create a new connection.

  3. Click the Webhook Connection Type card.
  4. Enter the following details for the connection:
    • Connection Name: Movable Ink (or another user-friendly name)
    • Description: Description for how this connection may be used
    • Base URL: Movable Ink endpoint URL
    • Port: Optional and can be left blank
    • Authentication Type: Basic Auth
    • User Name: Your API Key (provided by Movable Ink – see Prerequisites)
    • Password: Your API Secret (provided by Movable Ink – see Prerequisites)
  5. Confirm the details and click Save and Continue.

    Your connection is now ready for you to add destinations per event.

Building your destinations

For each of the events you would like to use, you will need to build a destination.

To build a destination:

  1. Within your new connection that you've just made, click on the connection to expand it, then click to create a new destination.

  2. Add the following details:
    • Destination Name: Insert a user-friendly event name (for example, "Product Viewed")

    • Description: Enter a description to identify the destination

    • Select a request method: POST

    • Content Type: application/json

    • Endpoint Path: /oracle-infinity (if necessary)

    • Template: Enter the events javascript template that will format the data before it is sent. For example: {{! Return JSON.stringify(it.data[0]); }}

    • Status: Set the status as Enabled.

  3. Click Save.

  4. Repeat steps 1-3 for each event you have chosen.

    Note: If you use all of the Movable Ink supported, then you will see multiple destinations against your Connection. For example:

Step 5: Building actions

The final configuration step is to create actions and connect your destinations per event. This can be achieved by using actions. Please follow the following steps per event.

To create a new action per event:

  1. Open the navigation menu from the upper-left corner of your Infinity screen, and click Actions.

  2. From the Actions page, click Create Action,

  3. On the Basic Details screen, enter the following details:

    • Name: Enter a user-friendly name for your action (for example, "Movable Ink : Product Viewed").

    • Description: Optional description for your action.

  4. Click Continue to Rules screen where you can define the required scenario using the query and click Switch the Developer Mode.

  5. Click Use Developer Mode to proceed and select Custom Scenario from the Select Scenario to view the text are to enter your query.

  6. Paste the query that you’ve already created and click Validate.

  7. After validating the query, click Continue to go to Sources step (optional) and proceed to Destinations step.

  8. Select your Webhook connection, its destination type and the destination for the desired event.

  9. Click Save and you are redirected to the View Actions screen. When an action is saved, by default it is disabled.

  10. From the View Actions screen, locate and click into the action you want to enable.

  11. The action's current status should appear as Disabled. In the upper-right corner of the screen, click Enable and confirm the status change to ensure your action is enabled and that your event is now being passed through from your website or app to Movable Ink.

Step 6: Validating data in Movable Ink

Validating that the integration is working should be tested on three levels:

Validating with sample requests

To validate the integration can send data to Movable Ink, you can send sample requests to Infinity, which should result in data being sent to Movable Ink. This first test isolates any issues with tagging or data collection on your site from the integration pipeline you have just built.

To test this, perform the following test per event:

  1. Fire at least one sample request as you fired previously when building your Action. (see How do I Fire the Correct Sample Request?. For example (Sample Request Template - Product Viewed):

    https://dc.oracleinfinity.io/{ENTERACCOUNTGUID}/dcs.gif?wt.tx_e=v&wt.pn_id=sample_product_id&wt.es=sample_url&wt.product_price=14.99&wt.dcsvid=sample_customer_id&wt.cg_n=sample_category&wt.product_name=sample_product_name&wt.a_nm=sample_app_name&wt.av=sample_app_version&mi_ecmp=sample_campaign_name&mi_u=sample_mi_id&wt.co_f=sample_anonymous_id

    Tip: See How do I Fire the Correct Sample Request? and Query Templates for how to ensure you fire the correct sample requests.

Checking that your actions are still running

Note: Additionally, you should check to see whether the number of executions (the number on the right-hand side) has incremented. If it is a common action, you should see high numbers within a few hours.

If there are major problems with your Actions, then they are disabled and marked as “Error” and you will see this in the Infinity user interface. You can open the error ones to check for the error messages to resolve any issues.

If you spot any that are marked as “Error”, click on the action and click on “History” tab and then review the red error message (see Why are my Actions showing Error? for common failures).

Asking Movable Ink to validate incoming data

Movable Ink should be receiving both your sample requests so you can begin using the integration.

Note: Movable Ink's Solutions team will need to map event data based on a sample payload. You may see an error if this mapping has not been completed yet or if the event payload does not match the schema of the payload that was initially provided. Please reach out to your Movable Ink Client Experience team with the sample payload and user ID value that you are testing with if you are seeing mapping errors when configuring the integration.

Step 7: Running your first campaign

Data will now be flowing to Movable Ink from Infinity so that the integration is now ready for you to use. Please reach out to Movable Ink if you need support on how to leverage the integration.

Learn more

Movable Ink integration overview