Movable Ink Cloud Mode Integration

Send events to Movable Ink using RudderStack cloud mode.

After you have successfully instrumented Movable Ink as a destination in RudderStack, follow this guide to correctly send your events to Movable Ink in cloud mode.

Find the open source transformer code for this destination in the GitHub repository.

Create event mapping in Movable Ink

To send an event successfully to Movable Ink via RudderStack, you must set up its mapping in Movable Ink:

  1. Go to Customer Data Endpoints in the Movable Ink dashboard.
  2. Select the preferred endpoint and scroll to the Event Mappings section.
  3. Click New event mapping and fill the details:
Movable Ink public key
info
Refer to the identify and track sections to know about the Match criteria value.
  1. Click Create to create the event successfully.
  2. Click the created event, enter the JSON paths for the event properties (refer to the RudderStack JSON Path in the corresponding event’s mapping table in below sections) and click Save Fields:
Movable Ink public key
  1. Turn the event status as Activate.

Identify

You can use the identify call to create or update a user in Movable Ink.

RudderStack maps the identify call to Movable Ink’s Identify event. You must set up the identify event mapping in Movable Ink with the match criteria as .type == "identify". See Create event mapping in Movable Ink for more information.

A sample identify call is shown:

rudderanalytics.identify("1hKOmRA4GRlm", {
  name: "Alex Keener",
  email: "alex@example.com",
  logins: 2
})
info
You can send up to 1000 events in a batch with the batch request size not exceeding 1 MB.

Supported mappings

RudderStack maps the following identify event fields to the corresponding Movable Ink schema fields:

RudderStack property pathMovable Ink schema fieldData type
.userId
Required
UserIDString
.anonymousId
Required
AnonymousIdString
.timestamp
Required
TimestampNumber
.context.timezoneTimezoneString

Track

You can use a track call to send the ecommerce and custom events to Movable Ink. The match criteria for any track event in the Movable Ink dashboard is .event == "Event Name". See Create event mapping in Movable Ink for more information.

Movable Ink supports the following predefined event schemas (mentioned with their corresponding match criterias):

  • Product (Product Viewed)
  • Category (Category Viewed)
  • CartAdd (Product Added)
  • Search (Products Searched)
  • Conversion (Order Completed)
  • CartRemove (Product Removed)

You can also create custom event schemas by clicking New Schema in the Movable Ink dashboard.

Movable Ink supports upto 20 custom properties for the Product, CartAdd, and CartRemove events. You must provide the custom property’s name and JSON path by clicking the event and adding the values in the schema fields.

info
You can send up to 1000 events in a batch with the batch request size not exceeding 1MB.

Product

The match criteria for Product event in Movable Ink is .event == "Product Viewed".

A sample code is shown:

rudderanalytics.track("Product Viewed", {
  product_id: "622c6f5d5cf86a4c77358033",
  sku: "8472-998-0112",
  category: "Games",
  name: "Cones of Dunshire",
  brand: "Wyatt Games",
  variant: "expansion pack",
  price: 49.99,
  quantity: 5,
  coupon: "PREORDER15",
  currency: "USD",
  position: 1,
  url: "https://www.website.com/product/path",
  image_url: "https://www.website.com/product/path.webp",
})

RudderStack maps the following properties to Movable Ink schema fields for Product event:

RudderStack property pathMovable Ink schema fieldData typeNote
.properties.product_id
Required
IDString-
.timestamp
Required
TimestampString-
.userId
Required, if anonymousId is absent.
UserIDString-
.anonymousId
Required, if userId is absent.
AnonymousIDString-
.properties.categories[]CategoriesArrayYou can pass the category URL and ID under categories. For example, .url, .id.
.channelChannelString-
.properties.pricePriceNumber-
.context.timezoneTimezoneNumber-
.properties.nameTitleString-
.properties.urlURLString-

Category

RudderStack does not support any standard ecommerce event corresponding to the Category event but recommends to set the match criteria in Movable Ink as Category Viewed. However, you can configure any other event name and JSON path in the Movable Ink schema field and pass the same to RudderStack.

RudderStack maps the following properties to Movable Ink schema fields for Category event:

RudderStack property pathMovable Ink schema fieldData type
.properties.category_id
Required
CategoryIDString
.timestamp
Required
TimestampString
.userId
Required, if anonymousId is absent.
UserIDString
.anonymousId
Required, if userId is absent.
AnonymousIDString
.channelChannelString
.context.timezoneTimezoneNumber
.properties.nameTitleString
.properties.urlCategoryURLString

CartAdd

The match criteria for CartAdd event in Movable Ink is .event == "Product Added".

A sample code is shown:

rudderanalytics.track("Product Added", {
  product_id: "622c6f5d5cf86a4c77358033",
  sku: "8472-998-0112",
  category: "Games",
  name: "Cones of Dunshire",
  brand: "Wyatt Games",
  variant: "expansion pack",
  price: 49.99,
  quantity: 5,
  coupon: "PREORDER15",
  position: 1,
  url: "https://www.website.com/product/path",
  image_url: "https://www.website.com/product/path.webp",
})

RudderStack maps the following properties to Movable Ink schema fields for CartAdd event:

RudderStack property pathMovable Ink schema fieldData typeNote
.properties.product_id
Required
IDString-
.timestamp
Required
TimestampString-
.userId
Required, if anonymousId is absent.
UserIDString-
.anonymousId
Required, if userId is absent.
AnonymousIDString-
.properties.categories[]CategoriesArrayYou can pass the category URL and ID under categories. For example, .url, .id.
.channelChannelString-
.properties.pricePriceNumber-
.context.timezoneTimezoneNumber-
.properties.nameTitleString-
.properties.urlURLString-

The match criteria for Search event in Movable Ink is .event == "Products Searched".

A sample code is shown:

rudderanalytics.track("Products Searched", {
  query: "HDMI cable",
})

RudderStack maps the following properties to Movable Ink schema fields for Search event:

RudderStack property pathMovable Ink schema fieldData type
.properties.query
Required
QueryString
.timestamp
Required
TimestampString
.userId
Required, if anonymousId is absent.
UserIDString
.anonymousId
Required, if userId is absent.
AnonymousIDString
.channelChannelString
.context.timezoneTimezoneNumber
.properties.urlURLString

Conversion

The match criteria for Conversion event in Movable Ink is .event == "Order Completed".

A sample code is shown:

rudderanalytics.track("Order Completed", {
  checkout_id: "70324a1f0eaf000000000000",
  order_id: "40684e8f0eaf000000000000",
  affiliation: "Vandelay Games",
  total: 52.0,
  subtotal: 45.0,
  revenue: 50.0,
  shipping: 4.0,
  tax: 3.0,
  discount: 5.0,
  coupon: "NEWCUST5",
  currency: "USD",
  products: [
    {
      product_id: "622c6f5d5cf86a4c77358033",
      sku: "8472-998-0112",
      name: "Cones of Dunshire",
      price: 40,
      position: 1,
      category: "Games",
      url: "https://www.website.com/product/path",
      image_url: "https://www.website.com/product/path.jpg",
    },
    {
      product_id: "577c6f5d5cf86a4c7735ba03",
      sku: "3309-483-2201",
      name: "Five Crowns",
      price: 5,
      position: 2,
      category: "Games",
    },
  ],
})

RudderStack maps the following properties to Movable Ink schema fields for Conversion event:

RudderStack property pathMovable Ink schema fieldData typeNote
.properties.products[]
Required
ProductsArray-
.product_id
Required
Products.IDStringPath inside the products array.
.timestamp
Required
TimestampString-
.userId
Required, if anonymousId is absent.
UserIDString-
.anonymousId
Required, if userId is absent.
AnonymousIDString-
.urlProducts.URLStringPath inside the products array.
.quantityProducts.QuantityNumberPath inside the products array.
.priceProducts.PriceNumberPath inside the products array.
.nameProducts.TitleStringPath inside the products array.
.channelChannelString-
.context.timezoneTimezoneNumber-
.properties.order_idIDString-
.properties.revenueRevenueNumber-

CartRemove

The match criteria for CartRemove event in Movable Ink is .event == "Product Removed".

A sample code is shown:

rudderanalytics.track("Product Removed", {
  product_id: "622c6f5d5cf86a4c77358033",
  sku: "8472-998-0112",
  category: "Games",
  name: "Cones of Dunshire",
  brand: "Wyatt Games",
  variant: "expansion pack",
  price: 49.99,
  quantity: 5,
  coupon: "PREORDER15",
  position: 1,
  url: "https://www.website.com/product/path",
  image_url: "https://www.website.com/product/path.webp",
})

RudderStack maps the following properties to Movable Ink schema fields for CartRemove event:

RudderStack property pathMovable Ink schema fieldData typeNote
.properties.product_id
Required
IDString-
.timestamp
Required
TimestampString-
.userId
Required, if anonymousId is absent.
UserIDString-
.anonymousId
Required, if userId is absent.
AnonymousIDString-
.properties.categories[]CategoriesArrayYou can pass category URL and ID under categories. For example, .url, .id.
.channelChannelString-
.properties.pricePriceNumber-
.context.timezoneTimezoneNumber-
.properties.nameTitleString-
.properties.urlURLString-

Custom Events

For any custom event, you must configure the following bare minimum schema fields:

RudderStack property pathMovable Ink schema fieldData type
.userId
Required, if anonymousId is absent.
UserIDString
.anonymousId
Required, if userId is absent.
AnonymousIdString
.timestamp
Required
TimestampNumber
.context.timezoneTimezoneString

Questions? Contact us by email or on Slack