Movable Ink integration FAQs

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

Movable Ink is a content personalization solution which leverages data to generate personalized creative tags at scale. These FAQs are in reference to a) appending or declaring a user ID, aka the mi_u parameter, to all email links and events, and b) streaming event data to Movable Ink via webhook to personalize content based on user behavior.

How do I declare my customers?

To work with Movable Ink, you need to declare an identifier per customer to allow personalization per customer. There are two options for doing this:

Note: You may use both of these methods at the same time. You must ensure that both are using the same kind of ID as a customer identifier (for example, both could use SHA-256 hashed email as an identifier, but you could not declare SHA-256 as an mi_u query string and then customer ID as wt.dcsvid). The value / field used for the mi_u in an Infinity Query Language use case should be consistent with what you are using in the emails.

What kind of identifier can I use for my customers?

This would need to be agreed to with Movable Ink (and would typically be determined by identifiers supported by your email platform). Common examples include SHA-256 hashed email address, MD5- hashed email address, or your own Customer ID (for example, "abc123").

How often should I declare my customer IDs to Infinity?

This would need to be ideally sent through with every desired event (for example, Product Viewed), but at least once per session is recommended.

Declaring Customer ID as parameter via Infinity Tag

Ensure your chosen customer identifier is declared to Infinity on your websites or applications as a parameter (for example, wt.dcsvid=YOURID is recommended, but you can use another parameter as long as you customize your queries per event).

Declaring Customer ID as mi_u in your clickthrough URLS

To ensure maximum declaration of Customer IDs, it is recommended that your emails all contain your chosen identifier as a query string parameter of mi_u on your clickthrough URLs. This can typically be added automatically to every link present in your emails (please speak to your email platform provider for support in how to do this). This will ensure everyone who clicks through on your email has their identifier declared to Infinity (for example, http://www.mysite.com?mi_u=customerId123). The Infinity tag on your websites will automatically collect this as a parameter for use in the Movable Ink integration.

How do I audit my available data?

There are two primary methods to audit your incoming data from Infinity:

  • Check your website tagging : You can use your browser to check the available parameters being sent to Infinity
  • Query : You can use queries to view available parameters in your incoming data

In reality, you will likely use a mixture of both:

  • Check your website tagging

    Per event, you may visit the page which triggers the event (for example, a product page which would which trigger a Product Viewed event). Please follow these steps to audit the available parameters:

    1. Visit your product page.
    2. Open your Developer Console (for example, Google Chrome DevTools).
    3. Inspect the Network Activity (for example, Google Chrome Network Panel).
    4. Refresh the page.
    5. You may view your dcs.gif requests to view the available parameters per event.

  • Infinity Query Language (IQL)

    You may wish to use IQL (IQL Explorer in the menu) to view the available data as it comes in to your Infinity account. For example, you may wish to use the suggested query templates to validate the available data per event, or you may wish to run your own queries to show all available fields. For example, the following query could be used to show all available fields, assuming your product pages have a URL containing product.php (for example, https://www.mywebsite.com/clothing/skirt/product.php):

    * WHERE data.wt.es LIKE '*product.php*'

How do I customize my queries?

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.

If the query template for your chosen event is not correct for your site (for example, you are using different parameter names or values, or you need additional customization for any other reason), then you will need to update your queries. Below is an example of where a Product Viewed event needs to be customized:

Movable Ink Parameter Recommended Infinity parameter Parameter being used
Event wt.tx_e=v wt.event=product_view

Product SKU

or

Product ID

wt.pn_sku

or 

wt.pn_id

wt.product_sku
Product URL wt.es wt.es
Price wt.product_price wt.product_price
User ID wt.dcsvid wt.customer_id
Category wt.cg_n wt.product_category
Name wt.product_name wt.product_name

The query would need to be customized to replace the parameter names with the correct ones based on the parameters being used on your website (as per the above table).

Note: Movable Ink’s Customer Data API is flexible. 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’.

Query Template - Product Viewed

1 Select 2 data.wt.dcsvid AS 'user_id', 3 data.wt.co_f AS 'anonymous_id', 4 datetime_utc AS 'timestamp', 5 data.wt.pn_id AS 'product_id', 6 data.wt.product_price AS 'product_price', 7 data.wt.pn_sku AS 'product_sku', 8 data.wt.product_name AS 'product_name', 9 data.wt.es AS 'page_url', 10 data.wt.cg_n AS 'product_category', 11 ext.geo.tzname AS 'time_zone', 12 data.wt.a_nm AS 'app_name', 13 data.wt.av AS 'app_version', 14 LATEST(data.mi_ecmp) AS 'campaign_name', 15 LATEST(data.mi_u) AS 'user_id_qsp' 16 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)

Customized Query - Product Viewed

1 Select 2 data.wt.customer_id AS 'uid', 3 data.wt.co_f AS 'aid', 4 datetime_utc AS 'ts', 5 data.wt.pn_id AS 'pid', 6 data.wt.product_price AS 'pp', 7 data.wt.product_sku AS 'psku', 8 data.wt.product_name AS 'pn', 9 data.wt.es AS 'url', 10 data.wt.product_category AS 'pc', 11 ext.geo.tzname AS 'tz', 12 data.wt.a_nm AS 'an', 13 data.wt.av AS 'av', 14 LATEST(data.mi_ecmp) AS 'cn', 15 LATEST(data.mi_u) AS 'user_id_qsp' 16 WHERE 17 session.closed = 'false' 18 AND data.wt.event='product_view' 19 AND ( 20 EXISTS(data.wt.pn_id) 21 OR EXISTS(data.wt.product_sku) 22 ) 23 AND EXISTS(data.wt.es)

Tip: See IQL Syntax for available query syntax.

How do I fire the correct sample request?

To fire the correct sample request, you need to perform the following actions:

  1. Replace the {ENTERACCOUNTGUID} with your Infinity Account GUID.

    Replace {ENTERACCOUNTGUID} within your request with your account GUID. This is available in the Infinity user interface in the top-right hand corner under the user menu.

  2. Replace Infinity parameter names if not using standard or recommended parameters.

    Note: If you are using the recommended Infinity parameter names for your events (for example, wt.tx_e=v, not something like wt.event_name=product_name), then you do not need to change the parameters in your sample request, and you can skip this step.

    If you're not using the standard parameter names as per Required Parameters Per Movable Ink Event, then you should have customized your queries when creating your queries. You will therefore need to update the parameters you are sending in your sample request. Below is an example of a Product Viewed event where you are using parameters other than the required parameters:

    Movable Ink ParameterRecommended Infinity parameterParameter being used
    Eventwt.tx_e=vwt.event=product_view

    Product SKU

    or

    Product ID

    wt.pn_sku

    or 

    wt.pn_id

    wt.product_sku
    Product URLwt.eswt.es
    Pricewt.product_pricewt.product_price
    User IDwt.dcsvidwt.customer_id
    Categorywt.cg_nwt.product_category
    Namewt.product_namewt.product_name

    Note: Movable Ink’s Customer Data API is flexible. 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’.

    The query would need to be customized (see How do I Customize my Queries?) for the Product Viewed event as follows:

    Query Template - Product Viewed

    Select data.wt.dcsvid AS 'user_id', data.wt.co_f AS 'anonymous_id', datetime_utc AS 'timestamp', data.wt.pn_id AS 'product_id', data.wt.product_price AS 'product_price', data.wt.pn_sku AS 'product_sku', 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', LATEST(data.mi_ecmp) AS 'campaign_name', 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)

    Customized Query - Product Viewed

    Select data.wt.customer_id AS 'uid', data.wt.co_f AS 'aid', datetime_utc AS 'ts', data.wt.pn_id AS 'pid', data.wt.product_price AS 'pp', data.wt.product_sku AS 'psku', data.wt.product_name AS 'pn', data.wt.es AS 'url', data.wt.product_category AS 'pc', ext.geo.tzname AS 'tz', data.wt.a_nm AS 'an', data.wt.av AS 'av', LATEST(data.mi_ecmp) AS 'cn', LATEST(data.mi_u) AS 'user_id_qsp' WHERE session.closed = 'false' AND data.wt.event='product_view' AND ( EXISTS(data.wt.pn_id) OR EXISTS(data.wt.product_sku) ) AND EXISTS(data.wt.es)

    Our sample request template will also need to be customized:

    Sample Request Template - Product Viewed

    https://dc.oracleinfinity.io/{ENTERACCOUNTGUID}/dcs.gif?wt.tx_e=v&wt.pn_sku=sample_sku&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

    Customized Request Template - Product Viewed

    https://dc.oracleinfinity.io/{ENTERACCOUNTGUID}/dcs.gif?wt.event=product_view&wt.product_sku=sample_sku&wt.pn_id=sample_product_id&wt.es=sample_url&wt.product_price=14.99&wt.customer_id=sample_customer_id&wt.product_category=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

  3. Fire your sample request in your browser.
    1. Take your sample request and open it in your browser to fire the request to Infinity.

    2. Your request will now have been sent to Infinity and will be available to use.

Passing product URLs for Cart Add event

If you wish to trigger the Cart Add event on pages other than a product page, then you cannot use wt.es (the current page URL collected by default) as Product URL. This is because Movable Ink are expecting the URL of the product to be passed in this event, not the URL of the page the user is on (for example, if the user adds an item to their basket from a https://mysite.com/basket.php page, then the default query would pass in wt.es (https://mysite.com/basket.php) as the Product URL). This would corrupt Movable Ink's handling of product URLs and must be avoided.

Therefore, if you wish to support add to basket on pages other than the product page, you must:

  • Declare wt.product_url—Ensure you declare the product URL as a parameter in your add to basket events (for example, wt.product_url):
    Movable Ink ParameterRecommended Infinity parameter**DescriptionSample value
    Categorywt.cg_nCategory name which the product resides inwt.cg_n=bathroom
    Eventwt.tx_e=aYou must be able to isolate the add to basket eventwt.tx_e=a
    Namewt.product_nameName of productwt.product_name=All-Purpose Cleaning Wipes
    Pricewt.product_pricePrice of productwt.product_price=14.99

    Product SKU

    or

    Product ID

    wt.pn_sku

    or 

    wt.pn_id

    SKU or ID of the product

    wt.pn_sku=56544-abc

    wt.pn_id=56544

    Product URLwt.product_urlURL of the product page on your websitewt.product_url=https://mysite.com/product/56544
    User IDwt.dcsvidYour ID for a logged in customerwt.dcsvid=customerid14323

    Note: Movable Ink’s Customer Data API is flexible. 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’.

  • Customize your Query- Your will need to be updated to select data.wt.product_url as 'url'. For example:

    Cart Add - using wt.product_url

    Select data.wt.customer_id AS 'uid', data.wt.co_f AS 'aid', datetime_utc AS 'ts', data.wt.pn_id AS 'pid', data.wt.product_price AS 'pp', data.wt.product_sku AS 'psku', data.wt.product_name AS 'pn', data.wt.product_url AS 'url', data.wt.product_category AS 'pc', ext.geo.tzname AS 'tz', data.wt.a_nm AS 'an', data.wt.av AS 'av', LATEST(data.mi_ecmp) AS 'cn', LATEST(data.mi_u) AS 'user_id_qsp' WHERE session.closed = 'false' AND data.wt.event='product_view' AND ( EXISTS(data.wt.pn_id) OR EXISTS(data.wt.product_sku) ) AND EXISTS(data.wt.product_url)

Why have my actions turned off?

  • Template is incorrect: There may be errors in the template you are using. The error message should detail any syntax errors.

  • Configuration for Movable Ink connection: Is your Movable Ink Connection using the correct configuration (for example, username/password)?

  • Movable Ink reporting failures: If Movable Ink reports back a 401 code to Infinity, the action will immediately turn off (this code tells Oracle there is a major issue which means no further data should be sent). Please reach out to Movable Ink for support on this before turning your action back on.

Learn more

Movable Ink integration overview