> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hightouch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MovableInk

> The Magic Behind Your Marketing Movable Ink activates data into personalized content in any customer touchpoint.

## Supported syncing

| Sync type | Description | Supported sync modes | API reference |
| - | - | - | - |
| [**Event**](#sync-events) | Send behavioral events to Movable Ink's Customer Data API. | Insert | [Customer Data API](https://learning.movableink.com/) |

For more information about sync modes, refer to the [sync modes](https://docs.hightouch.com/syncs/types-and-modes.md#sync-modes) docs.

## Connect to Movable Ink

To connect Movable Ink to Hightouch you need an endpoint URL, an access key, and an access secret. Movable Ink's Client Experience team provisions all three. Hightouch authenticates each request with HTTP Basic auth.

1. Go to the [Destinations overview](https://app.hightouch.com/destinations) page and select **Add destination**.
2. Select **Movable Ink** from the destination catalog.
3. Enter the following credentials, then select **Continue**:

   * **Endpoint URL**: the Customer Data API endpoint provided by Movable Ink. The shape is `https://collector.micpn.com/behavioral/<key>` for US accounts or `https://collector.micpn-eu.com/behavioral/<key>` for EU accounts, where `<key>` is your account-specific path segment.
   * **Access key**: the username portion of HTTP Basic auth.
   * **Access secret**: the password portion of HTTP Basic auth.

> [!NOTE]
>
> Contact your Movable Ink Client Experience team if you don't have an endpoint
> URL or credentials yet. Movable Ink's developer reference
> (`learning.movableink.com`) requires a customer login.

## Sync configuration

### Sync events

Send behavioral events to Movable Ink. Hightouch inserts one event per row in the model's query results each time the sync runs.

#### Event type

Select the Movable Ink event type for this sync:

| Event type | Description |
| - | - |
| **Page View (Product Viewed)** | A user viewed a product page. |
| **Add to Cart (Product Added)** | A user added a product to their cart. |
| **Remove from Cart (Product Removed)** | A user removed a product from their cart. |
| **Search Completed** | A user submitted a search query. |
| **Category Viewed** | A user viewed a category page. |
| **Order Completed (Conversion)** | A user completed a purchase. |
| **Identify** | An identity event, used to associate a user with timezone or other profile data. |
| **Custom** | A custom event. You provide the `event_type` name and any additional fields. |

#### Identifiers

Map at least one identifier per event:

| Destination field | Notes |
| - | - |
| **User ID** | Must match the `mi_u` value in your Movable Ink Studio account. |
| **Anonymous ID** | Used when no user ID is available. |

Rows with neither a User ID nor an Anonymous ID are rejected without aborting the sync. You can review rejected rows in the [Live debugger](https://docs.hightouch.com/syncs/debugger.md).

#### Event timestamp

Map a model column to the event timestamp. If left unmapped, Hightouch defaults to the time the sync sent the event. Hightouch validates that the timestamp is no more than 30 days in the past and no more than 1 day in the future. Events outside that window are rejected.

#### Field mapping

The mappable fields depend on the event type:

| Event type | Required fields | Optional fields |
| - | - | - |
| **Page View / Add to Cart / Remove from Cart** | Product ID | Title, Price, URL, Image URL, Categories, Channel, Timezone |
| **Search Completed** | Query | URL, Channel, Timezone |
| **Category Viewed** | Category ID | Category URL, Channel, Timezone |
| **Order Completed** | Products | Order ID, Revenue, Discount, Coupon Code, Channel, Timezone |
| **Identify** | — | Timezone |
| **Custom** | Event name (`event_type`) | Any additional fields you map |

For **Order Completed**, the **Products** field expects an array of product objects. Use Hightouch's [inline mapper](https://docs.hightouch.com/syncs/mapping-data.md#inline-mapping) or an [array column](https://docs.hightouch.com/syncs/mapping-data.md#create-an-array) from your model.

For **Custom** events, Movable Ink supports up to 10 unique custom event names per account by default. Contact your Movable Ink rep if you need more.

#### Payload limits

Movable Ink rejects events that exceed its payload limits. Hightouch checks these before sending and rejects offending rows:

* Any string field longer than 256 characters.
* A total event payload larger than 32 KB.

Rejected rows are surfaced in the [Live debugger](https://docs.hightouch.com/syncs/debugger.md).

## Tips and troubleshooting

To see the exact API requests and responses from each sync run, use the [live debugger](https://docs.hightouch.com/syncs/debugger.md). To get notified by Slack, PagerDuty, SMS, or email when a sync fails, set up [sync alerts](https://docs.hightouch.com/syncs/alerting.md). If you run into an issue this page doesn't cover, [contact support](#pylon-chat).

### Validate your setup

After your first sync completes, confirm the events landed in Movable Ink:

* Ask your Movable Ink Client Experience team to confirm events are arriving on the configured endpoint. Movable Ink's developer site (`learning.movableink.com`) is customer-login-gated, so direct verification from Hightouch's side ends at a successful HTTP 2xx response from the Customer Data API.
* Check the [Live debugger](https://docs.hightouch.com/syncs/debugger.md) for rejected rows. The most common rejections are missing identifiers, missing event names on custom events, out-of-window timestamps, oversized string fields, and oversized payloads.
