Viant Conversions
Use warehouse conversion events for Viant campaign attribution and optimization.
Connect this destination to send warehouse conversion events, such as purchases, add-to-carts, and leads, to Viant for campaign attribution and optimization. You do not need an audience.
This destination writes to your Viant account and is a good fit when you want to:
- Attribute online or offline conversions to your Viant DSP campaigns
- Use a warehouse table that has one row per conversion with a transaction ID and timestamp
- Match conversions on email, physical address, IP, mobile ID, cookie ID, or Viant click and impression IDs
This maps to GrowthLoop Syncs:
| Use it for | Syncs |
|---|---|
| Sending conversion events for attribution and optimization | ✓ |
Do not use this workflow to add contacts to a targeting segment. To activate customers for targeting, use Viant.
Prerequisites
Make sure you have:
- A Viant DSP account. See Viant if you need one.
- Username and Password partner credentials for GrowthLoop. Ask your Viant representative. These are not your regular Viant login.
- Your numeric Viant Account ID and one or more numeric Advertiser IDs. Ask your Viant representative if you do not have them.
- A warehouse table with your conversion events. Each row needs a transaction ID, an event type, a timestamp, and at least one customer identifier.
Set up Viant Conversions as a destination
- In GrowthLoop, click the Destinations tab on the left sidebar.
- Click New Destination in the top right corner.
- Search for Viant Conversions and click Add Viant Conversions.
- Enter the required information, then click Create.
| Field | Description |
|---|---|
| Destination Name | Name this destination in GrowthLoop. Use a name so your team recognizes its purpose, like "Viant Conversions". |
| Sync Frequency | Set the default sync frequency (for example, daily or weekly). You can override this setting for individual syncs. |
| Username | Partner username from your Viant representative. |
| Password | Partner password from your Viant representative. |
| Account ID | Your numeric Viant Data Platform account ID, such as 12345. GrowthLoop sends every conversion under this account. |
| Advertiser ID | One or more numeric Viant advertiser IDs, comma-separated, such as 111, 222. GrowthLoop attributes every conversion to these advertisers. |
WarningUse the GrowthLoop partner credentials your Viant representative provides. Do not paste a regular Viant user login.
GrowthLoop signs in to Viant and checks access to the Viant Conversion API without sending any data. Viant Conversions then appears in your list of connected destinations.
NoteYou can reuse the same Username and Password for a Viant audience destination and a Viant Conversions destination.
Create a sync in GrowthLoop
Create a sync from a warehouse table to send conversion events to Viant. See Syncs for information on how to complete those steps.
Select an Object Type:
| Object | Use it for | Recommended update rule |
|---|---|---|
| Conversions | Online and offline conversion events for attribution | Insert only |
When you configure the sync:
- Update Rule: Choose Insert only. Conversions are one-time events, and GrowthLoop does not update or remove conversions it already sent.
- Dataset/Table: Select the table that holds your conversion events. Use one row per conversion.
- Connection: Select your Viant Conversions destination.
- Object Type: Select Conversions.
- Match Field: Map one of the customer identifiers, such as Email.
GrowthLoop rejects the field mapping unless you map Transaction ID, Conversion Event Type, Conversion Timestamp, and at least one customer identifier.
Required event fields
| Destination field | Description |
|---|---|
| Transaction ID | A unique ID for this conversion, such as an order number. Viant uses it to identify each conversion. |
| Conversion Event Type | The customer action. Use one of Viant's standard events: PageView, LandingPage, ItemView, AddToCart, InitiateCheckout, AddPaymentInfo, Purchase, or Lead. GrowthLoop matches these regardless of case, spaces, underscores, or dashes, so add_to_cart becomes AddToCart. Other names are sent as custom events. |
| Conversion Timestamp | When the conversion happened. Use ISO 8601, such as 2026-10-28T14:30:00Z, or a Unix epoch in seconds, milliseconds, or microseconds. GrowthLoop treats times without a time zone as UTC. |
Customer identifiers
Map at least one of the following. A single row can include more than one identifier, and GrowthLoop sends every valid identifier on the row.
| Destination field | Description |
|---|---|
| Plain or already SHA-256 hashed. GrowthLoop trims and lowercases the email, then hashes it as SHA-256 | |
| Physical Address | Plain or already SHA-256 hashed. Use Viant's USPS address format, such as 1465 N Larrabee St #37a, Chicago, IL 60610, USA. GrowthLoop hashes it as SHA-256. Capitalization changes the hash, so match Viant's format exactly |
| IP | The customer's IPv4 address when the conversion happened |
| Mobile ID | Mobile advertising ID (Apple IDFA or Android AAID) |
| Cookie | Viant cookie ID |
| Viant Click ID | The Viant click ID captured from the ad click that led to this conversion |
| Viant Impression ID | The Viant impression ID of the ad associated with this conversion |
Optional conversion fields
| Destination field | Description |
|---|---|
| Amount | The total monetary value of the conversion, such as 75.00 |
| Currency | The three-letter currency code for Amount, such as USD |
| Store ID | The ID of the store or location where the conversion happened |
| Channel | Where the conversion happened, such as online or in-store |
| Country | The country where the conversion happened |
| State | The state or region where the conversion happened |
| City | The city where the conversion happened |
| Purchased Items | A JSON array of the products in the conversion. Each item needs item_id, price, and a whole-number quantity. product_name and product_category are optional |
| Custom | A JSON object with up to 10 extra key-value pairs, such as {"coupon": "FALL10"}. GrowthLoop sends every value as text |
Here is an example Purchased Items value:
[
{"item_id": "SKU-123", "price": 25.00, "quantity": 2, "product_name": "Running Shoe"},
{"item_id": "SKU-456", "price": 25.00, "quantity": 1}
]See Viant's Conversion API for field definitions.
Sync behavior
This is what GrowthLoop writes when you sync conversion events to Viant.
| Behavior | What happens |
|---|---|
| What GrowthLoop writes | Conversion events on your Viant account, attributed to the advertisers on the destination. Direction is GrowthLoop → Viant. |
| When it runs | GrowthLoop sends the sync as a batch on the next successful run. |
| Batching | GrowthLoop uploads up to 1,000 conversions per request, within Viant's 10 MB request limit. |
| Formatting | GrowthLoop converts timestamps to UTC, standard event names to Viant's spelling, amounts and prices to numbers, and currency codes to uppercase. It hashes email and physical address as SHA-256. |
| Invalid rows | GrowthLoop does not send rows missing a transaction ID, a valid timestamp, or a usable customer identifier. It counts them as rejected and reports the reason in the sync logs. |
| Rejected events | Viant rejects an entire upload when any event is invalid. GrowthLoop drops the events Viant names, resends the rest, and reports the dropped events as rejected with Viant's reason. |
| Retries | GrowthLoop retries when Viant is unavailable. It does not retry events Viant rejects. |
| Deletes | GrowthLoop does not update or delete conversions it already sent. |
Confirm the sync was successful
When the run finishes, confirm you can use the data in Viant.
- Conversion sync: Viant queues conversions and processes them asynchronously. Confirm the conversions in your Viant campaign reporting, or ask your Viant representative.
This workflow does not create a targeting segment.
In GrowthLoop, confirm the sync appears in the Syncs table. See Syncs for more information.
Congrats on successfully syncing conversions to Viant!
Troubleshooting
These are the issues we see most often. You can always email us at [email protected] for help.
| Problem | Cause | Resolution |
|---|---|---|
| You cannot create the destination | A field is blank, the credentials are invalid, or an ID is not numeric | Paste the GrowthLoop partner credentials from your Viant representative. Enter one numeric Account ID and at least one numeric Advertiser ID, comma-separated |
| The destination will not validate because Viant is unreachable | Viant is temporarily unavailable | Wait a few minutes and try again |
| The field mapping will not save | A required field or customer identifier is unmapped | Map Transaction ID, Conversion Event Type, Conversion Timestamp, and at least one customer identifier |
| Rows are rejected for a missing identifier | Every mapped identifier is blank or invalid on those rows, such as an IPv6 address or an email without @ | Populate at least one valid identifier on every conversion |
| Rows are rejected for the timestamp | The value is not a valid date and time | Use ISO 8601 or a Unix epoch timestamp |
| Rows are rejected for Purchased Items | The value is not a JSON array, or an item is missing item_id, price, or a whole-number quantity | Fix the JSON in your source table |
| Rows are rejected for Custom | The value is not a JSON object or has more than 10 keys | Send a JSON object with at most 10 key-value pairs |
| Viant rejected some conversions | Viant found an invalid value in those events | Review Viant's reason in the sync logs and fix those values in your source data |
Updated about 7 hours ago
