Back to Docs

Hightouch

On This Page

Hightouch is a Reverse ETL tool that allows you to sync data from your Data Warehouse (Snowflake, BigQuery, etc.) out to other SaaS tools. We support syncing data from Hightouch using their Webhook destination.

Setting Up Your Webhook in Variance

You need to start by setting up an Inbound Webhook in Variance. You can find that on your Integrations page. You'll click Add Connection and then give your connection a name and choose whether it will be for Accounts, Contacts, or Events.

Name your webhook and choose the type

From there you'll get a page with some options, as well as the details you'll need to put into Hightouch.

To quickly take you through the page from top to bottom:

  • Name: whatever you're calling this connection
  • Behavior: Do you want to create new accounts or contacts if they don't exist and update existing ones (upsert), or do you just want to update? 
  • Enable: toggle this on when all the data has been mapped and you're ready to go. (Once you've mapped your data, we will toggle this on for you.)
  • Webhook URL: this will be added to Hightouch to send data to Variance
  • Authorization header value: this will also be added to Hightouch as an additional layer of security
  • Enforce authorization header: this toggles on or off whether we enforce the auth header, since Hightouch supports it, it's our recommendation that you leave this turned on.
  • Latest payload: this will show data as soon as you send some
  • Data mapping: this is where you configure the way we deal with the data (it will be disabled until you send some)

Ok, so now let's go into Hightouch.

Setting Up Your Webhook in Hightouch

In Hightouch go to Destinations > Add Destination and search for Webhook.

From here choose Webhook and hit Continue and you'll be asked for a Webhook URL and headers.

For Webhook URL, you will want to copy the Webhook URL from your Variance inbound webhook settings and for Headers, you'll type `Authorization` and then hit Add key, which will allow you to copy the Authorization header value from Variance. Finally hit Continue and you'll be asked for a name for your webhook and a slug. Once you do that, hit Continue again to save.

Great. Now the Destination should be set up and we just need to configure it as part of a Sync.

  1. Go to Syncs > Add Sync
  2. Choose the Model you will be syncing to Variance and hit Continue
  3. Choose the Webhook destination we just created and hit Continue

Now you'll have lots of options to choose from. These will really depend on how you intend to use Variance with this data, so we can't tell you exactly what to configure. If you have questions or need help, you can always reach out.

But no matter what the options are, we're going to want to start by running a test so you can configure everything in Variance. Remember: your Webhook is not currently writing data in Variance, so you don't need to worry about syncing bad data. To run a test hit Test on your sync in Hightouch. This will bring up the test screen.

Hit Sync as added row and you should see a response like this:

Configuring Field Mapping in Variance

From there we are going to hop back over to Variance, where we should now see that test data under Latest Payload.

Assuming that looks good, you'll want to hit the big Finish Setup button. This is where you are going to tell Variance how you want to associate accounts from Hightouch with accounts in Variance, same for contacts, and events.

Account Mapping

For accounts it looks like this:

There are 4 options to configure here:

  1. Data wrapper path: you generally won't have to worry about this, but this is how we will figure out where your data is in the JSON we are sent from Hightouch.
  2. Account ID: if you want to match Accounts using their ID, you simply have to tell us which Webhook property from Hightouch to use for that
  3. Account Name: alternatively, if you're matching on name, you can tell us that.
  4. Custom Account matching: Finally, if you don't want to use either of those, you can match on any other property in Variance. This will only work for updates, not upserts.

If you set up both ID and name, we will try ID first and fall back to name. Once you hit Save the Webhook will be toggled on, meaning data we receive will be written to Variance.

Contact Mapping

Since mapping Contacts includes some other options, let's quickly go through those as well:

Just like Accounts, you can match on ID and custom property, but you can also match on email for contacts.

The extra complication is that for contacts you may also map them to accounts, which requires using the same fields as we would see in a regular account sync.

Event Mapping

Since Events are fundamentally different than contacts and accounts, you'll need to do a few more things to make them work properly. Here's the Event mapping config:

Let's run through the fields:

  • Event type (required): you have to give us a name to call the event. These would map to the Event Types in Variance. This is typically something like `User Created` or `Integration Connected` and the like.
  • Account ID or Contact ID: each event must have one of these. If you map it to a Contact ID, it will automatically map to the Account of that contact as well, if you map it just to the Account, it will not belong to any specific contact. The latter is useful for info that isn't specific to a user.
  • Event Timestamp: just a regular timestamp you want associated with the event. If you leave this blank it will default to when it entered Variance. We require ISO 8601 format for dates.
  • Event ID: another optional field, but it's good to include to ensure that data isn't duplicated. If you are importing data from your DB, for instance, this might be the UUID for the row.

Turning On Your Hightouch Sync

Now that everything is configured in Variance, all that's left is to turn on your Hightouch sync. Once you have everything set up there, you'll hit Continue and then choose the frequency to sync. Hit Continue to save your choice and everything should be good to go.

Last Updated: 
July 29, 2022