> ## 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.

# Sailthru

> Run better marketing campaigns on Sailthru with up-to-date customer data from your data warehouse

## Supported syncing

| Type | Description | Supported Sync Modes | API Reference |
| - | - | - | - |
| **Users** | Sync data from any source to Sailthru users | Upsert, Update | [Users docs](https://getstarted.meetmarigold.com/engagebysailthru/Content/developers/api/user.html?tocpath=Technical%20Documents%7CFor%20Developers%7CAPI%20Endpoints%7C_____21#POSTtocreateorupdateuser) |
| **Custom events** | Sync data from any source to Sailthru custom events | Insert | [Custom events docs](https://getstarted.meetmarigold.com/engagebysailthru/Content/developers/api/event.html?tocpath=Technical%20Documents%7CFor%20Developers%7CAPI%20Endpoints%7C_____5#POST) |
| **Purchases** | Sync data from any source to Sailthru purchase events | Insert | [Purchases docs](https://getstarted.meetmarigold.com/engagebysailthru/Content/developers/api/purchase.html?tocpath=Technical%20Documents%7CFor%20Developers%7CAPI%20Endpoints%7C_____14#POSTapurchase) |
| **Returns** | Sync data from any source to Sailthru return events | Insert | [Returns docs](https://getstarted.meetmarigold.com/engagebysailthru/Content/developers/api/return.html?tocpath=Technical%20Documents%7CFor%20Developers%7CAPI%20Endpoints%7C_____15#POSTareturn) |

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 Sailthru

Go to the [**Destinations** overview page](https://app.hightouch.com/destinations?from=docs) and click the **Add destination** button. Select **Sailthru** and click **Continue**. You can then authenticate Hightouch to **Sailthru**.

Enter the following fields into Hightouch:

* **API Key**
* **API Secret**

To find your API key, navigate to the [Sailthru API Settings](https://my.sailthru.com/settings/api_postbacks).

## Sync configuration

Once you've set up your Sailthru destination and have a [model](https://docs.hightouch.com/getting-started/concepts.md#models) to pull data from, you can set up your sync configuration to begin syncing data. Go to the [**Syncs** overview page](https://app.hightouch.com/syncs?from=docs) and click the **Add sync** button to begin. Then, select the relevant model and the Sailthru destination you want to sync to.

### Syncing users

Sync data from any source to Sailthru users.

#### Record matching

To match rows from your model to users in Sailthru, you need to select a model column and corresponding Sailthru field. The available matching fields depend on your [sync mode](https://docs.hightouch.com/syncs/types-and-modes.md#sync-modes):

* **Email** works in both update and upsert modes.
* **Sailthru ID** works in update mode only.

#### List mapping

Hightouch supports syncing users to a single list. You can input the name of your list on the sync configuration page. If the list doesn't exist yet, Hightouch will create the list automatically in Sailthru.

#### Field mapping

Hightouch lets you sync user fields via [field mapping](https://docs.hightouch.com/syncs/mapping-data.md).
You can map data from any of your model columns to default and custom user fields.
If you send data for a custom field that doesn't exist, Hightouch adds the field.
Ensure your model's columns have the same data types as the fields you want to sync to.

#### Delete behavior

The [delete behavior](https://docs.hightouch.com/syncs/overview.md#delete-behavior) you select dictates what to do when a row no longer appears in your model's query results. You have the following options:

| Behavior | Description |
| - | - |
| **Do nothing** | Keep the user in Sailthru with all its synced fields |
| **Clear** | Clear all the mapped fields, but keep the user in Sailthru |
| **Delete** | Delete the synced users from Sailthru |

#### Choose bulk or real-time

Upsert syncs send users to Sailthru in one of two ways. Choose the method in the sync's **Advanced** settings under **How should Hightouch send users to Sailthru?**

* **Bulk** (default) uploads users in bulk jobs. Use it for large audiences when list additions don't need to start Lifecycle Optimizer flows.
* **Real-time** sends each user with Sailthru's [User API](https://products.zetaglobal.com/sailthru/Content/developers/api/user.html#POSTtocreateorupdateuser). Use it when adding users to a list should start a Lifecycle Optimizer flow with a [**List Joined** entry](https://products.zetaglobal.com/sailthru/Content/lo/lo-step-glossary/entries.html#ListJoined). Sailthru lists User API calls, not bulk jobs, among the ways a user joins a list for that entry.

Real-time syncs count against Sailthru's [rate limit](https://products.zetaglobal.com/sailthru/Content/developers/api-basics/technical.html#RateLimiting) for the User API, which defaults to 18,000 requests per minute per account. Other integrations that call the User API on the same account share that limit. Large audiences can take longer to sync in real time because each user is a separate request. Sailthru can raise the limit for your account on request.

Update syncs always send each user with the User API, so this setting only appears for upsert syncs.

#### Rows per batch

For upsert syncs set to **Bulk**, Hightouch sends users to Sailthru in batches. The default is 100,000 rows per batch. You can change this in the sync's **Advanced** settings under **Rows per batch**.

Lower the value if a sync runs out of memory on wide user records. Sailthru builds each batch in memory, so a smaller batch reduces peak memory use roughly in proportion.

### Syncing custom events

Sync data from any source to Sailthru custom events.

> [!WARNING]
>
> To ensure syncs send each event, your event model must use a truly unique [primary key](https://docs.hightouch.com/getting-started/concepts.md#unique-primary-key-requirement). See the [events syncs](https://docs.hightouch.com/syncs/types-and-modes.md#event-syncs) documentation for more information.

#### Record matching

You can match rows from your model to custom events in Sailthru on any column in your model and any field in Sailthru. Ensure the data types of the model column and Sailthru field you select match.
Refer to the [record matching docs](https://docs.hightouch.com/syncs/record-matching.md) for more information.

#### Field mapping

Hightouch lets you sync event properties via field mapping.

### Syncing purchases

Sync data from any source to Sailthru purchase events.

> [!WARNING]
>
> To ensure syncs send each event, your event model must use a truly unique [primary key](https://docs.hightouch.com/getting-started/concepts.md#unique-primary-key-requirement). See the [events syncs](https://docs.hightouch.com/syncs/types-and-modes.md#event-syncs) documentation for more information.

#### Record matching

You can match rows from your model to purchases in Sailthru on any column in your model and any field in Sailthru. Ensure the data types of the model column and Sailthru field you select match.
Refer to the [record matching docs](https://docs.hightouch.com/syncs/record-matching.md) for more information.

#### Field mapping

Hightouch lets you sync event properties via field mapping.

### Syncing returns

Sync data from any source to Sailthru return events.

> [!WARNING]
>
> To ensure syncs send each event, your event model must use a truly unique [primary key](https://docs.hightouch.com/getting-started/concepts.md#unique-primary-key-requirement). See the [events syncs](https://docs.hightouch.com/syncs/types-and-modes.md#event-syncs) documentation for more information.

#### Record matching

You can match rows from your model to returns in Sailthru on any column in your model and any field in Sailthru. Ensure the data types of the model column and Sailthru field you select match.
Refer to the [record matching docs](https://docs.hightouch.com/syncs/record-matching.md) for more information.

#### Field mapping

Hightouch lets you sync event properties via field mapping.

## 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).
