All integrations

Hightouch

Hightouch is a data pipeline tool that specializes in reverse ETL for extracting data from a variety of data warehouses and loading it into SaaS platforms.

Connect to Catalog & Interactions & Users

Introduction

Hightouch is a data pipeline tool that specializes in reverse ETL for extracting data from a variety of data warehouses and loading it into SaaS platforms. Using a webhook, Miso supports real-time integration with Hightouch so that first-party data, such as customer interactions, can be automatically pushed from your data warehouse to Miso’s Search and Recommendation engines.

What’s a webhook?

webhook is a type of API that allows web applications to communicate with each other in real-time. Unlike traditional APIs, webhooks are driven by events, rather than requests. The webhook provider (in this case, Hightouch) is supplied a URL of where to send data as it is generated. In contrast, a traditional API requires you to pull data on a frequent cadence, regardless of whether or not there is new data available.

Integration Steps

Set up the source data

  1. Log into Hightouch and select Sources from the left navigation bar of your workspace.

  2. Select Add source.

  3. Choose from one of the available sources and select Continue.

    Untitled

  4. Depending on the source, you will need to fill in the connection details, such as an API key or server address. Afterwards, select Continue.

  5. Provide a descriptive name for your source connection and select Finish.

Set up a data model

  1. Once you’ve set up the source data, let’s use it to create a data model to send to a destination. Select Models from the left navigation bar of your workspace.

  2. Select Add model.

  3. Select the source data connection that you created in the previous step and select Continue.

  4. Depending on the type of source data, you will need to specify the rows/columns that you want to send to Miso. For example, if you’re using a SQL-based source, you would see the following screen:

    Select SQL Editor.

  5. Write a SQL query inside the SQL editor that includes all of the rows/columns that you want to send to Miso. For example, if you have a table called interactions that contains customer interactions and want to send Miso everything from 2021 onwards, your query might look like:

    select *
    from interactions
    where created_at >= '2021-01-01 00:00:00'
    

    Select Continue when you’re done.

  6. Provide a descriptive name for your model and select Finish.

Set up the destination

  1. Once you’ve set up the data model, you’ll need to specify where to send the data. Select Destinations from the left navigation bar of your workspace.

    Untitled

  2. Select Add destination.

  3. From the destinations catalog, select Webhook under the Freeform catagory and select Continue.

  4. At the next screen, enter the webhook URL (including the webhook token provided by your Miso Support Team):

    https://webhook.askmiso.com/services/hightouch?token={webhook_token}
    

  5. Provide a descriptive name for your destination connection and select Finish.

Set up the data sync

  1. Once you’ve set up the source data, data model, and destination, the final step to bring it all together is to create a data sync. Select Syncs from the left navigation bar of your workspace.

  2. Select Add sync.

  3. Select the model you created previously and select Continue.

  4. Select the destination you created previously and select Continue.

  5. On the next page, you will be able to configure the data sync with several options.

    Here are Miso’s recommended settings:

    • Which columns would you like to sync to destination fields?

      • If the column names in the source data and/or data model are the same as the JSON fields in Miso’s Interaction, Product, or User API payload schemas, simply check “Sync all columns”. Otherwise, you will need to manually provide the mapping to Miso.
    • Which sync events should we trigger the webhook on?

      • Leave all events unchecked (default)
    • Skip first sync?

      • Leave unchecked (default)
    • Provide sync metadata

      • Leave unchecked (default)
    • Which request method would you like to use to send changed records?

      • POST
    • How should the request body be formatted?

      • JSON
    • Would you like to send a batch request or a single row?

      • Send a batch of rows per request
    • How many rows would you like to send per batch?

      • Please select a number no larger than 50.
  6. At this point, you can send a test row to Miso using the Test feature. If the response is successful, select Continue.

  7. Set a schedule that makes sense for your business and select Finish.

    With that, you’ve successfully set up your Hightouch integration with Miso!

Tips and Tricks

  • How does Miso detect the data type?

    • If the payload contains the type field, Miso will detect it as an interaction data type.
    • If the payload contains the user_id field, Miso will detect it as a user data type.
    • If the payload contains the product_id field, Miso will detect it as a product data type.
  • What are the various status codes and what do they mean?

    • 201 - Miso’s server successfully created the record.
    • 202 - Miso’s server successfully deleted the record.
    • 204 - Miso’s server did not create, update, or delete any records.
    • 401 - The webhook token is invalid.
    • 422 - The payload doesn’t contain either a type, user_id, or product_id. You may also see this error if you are sending invalid type of interaction record. Please refer to the API documentation for supported interaction types.
    • 500 - All other errors. Please contact your Miso Support Team for troubleshooting assistance.
  • How can I send nested fields in the payload, such as for custom_attributes and interaction context?

    • Use double underscores (__) in the field title to indicate a parent/child relationship. For example, sending context__custom_context__user__phone = "1234567890" will convert to JSON like this:

      {
          "context": {
              "custom_context": {
                  "user": {
                      "phone": "1234567890"
                  }
              }
          }
      }
      
  • How can I rename fields from my source data so that they match Miso’s upload schema?

    • Aside from mapping the fields manually within the data sync configuration, you can also rename fields within the SQL editor (when applicable). For example:

      select id as user_id, email, name, is_active, created as created_at 
      from users;
      

      This SQL will convert the payload to the following JSON format and send it to the webhook server:

      [
          {
              "user_id": "53f1eb36-b15f-4e5d-b7d5-a0bb7ad2b89a",
              "email": "xwang@askmiso.com",
              "name": "xtest",
              "is_active": True,
              "created_at": "2020-08-21T04:41:47.000Z",
          }
      ]
      

Additional Resources

For more information on Miso’s API, check out the official API Documentation.

For more Integrations like this, visit the Integrations page on our Docs site.

Published Date: April 25th, 2022

Icon/Activity Icon/Add Icon/API Icon/Arrow/Down Icon/Arrow/Left Icon/Arrow/Right Icon/Arrow/TopRight Icon/Arrow/Up Icon/Bento Icon/Billing Icon/Bin Icon/Book Icon/Bookmark/Default Icon/Bookmark/Filled Icon/Calendar Icon/Caret/Down Icon/Caret/Up Icon/Chavron/DownIcon/Chavron/LeftIcon/Chavron/RightIcon/Chavron/UpIcon/Checknox/CheckedIcon/Checknox/Unchecked Icon/Checklist Icon/Chip Icon/Clipboard / Copied Icon/Clipboard/Default Icon/Clock/Stopwatch Icon/CMD Icon/Data/Catalog Icon/Data/Engine Icon/Data/Group Icon/Data/Interact Icon/Data/Users Icon/Dive Icon/Docs/Key Icon/Dojo Icon/Email Icon/Env/Development Icon/Env/Playground Icon/Env/Prod Icon/Folder Icon/Fullscreen/Collapse Icon/Fullscreen/Expand Icon/Guides/Multiple Icon/Guides/Single Icon/Hashtag Icon/Heart/Outline Icon/Heart/Solid Icon / Cart z Icon / Click Icon / Clock Icon / Data Icon / Doc Icon / EmptyCart z Icon/Social/Facebook Icon / Genome Incognito Icon / Money Icon/Social/ProductHunt Icon / Search Icon/Social/Twitter Icon / User Icon/Info/Error Icon/Info/Info Icon/Info/Question Icon/Info/Warning Icon/Interact/Download Icon/Interact/Edit Icon/Interact/External v2 Icon/Interact/External Icon/Interact/Filter Icon/Interact/Logout Icon/Interact/Options Icon/Interact/Re-order Icon/Interact/Reload Icon/Interact/Remove Icon/Interact/Replace Icon/Interact/Search Icon/Interact/Shuffle Icon/Interact/Undo Icon/Interact/Upload Icon/Interact/Video Icon/Invoice Icon/Loading Icon/Loading Icon/Lock/Locked Icon/Lock/Unlocked Icon/Lock Icon/Mapping Menu Icon/Notification Icon/Overview Icon/Person/Team Icon/Person/User Icon/Plan/Enterprise Icon/Plan/Growth Icon/Plan/Startup Icon/Plan/Trial Icon/Recipe Icon/Rocket Icon/Settings/App Icon/Settings/User Icon/Settings Icon/Shrine Icon/Sidebar/Close Icon/Sidebar/Open Icon/Slideout Icon/Sort/Ascending Icon/Sort/Default Icon/Sort/Descending Icon/Star/Filled Icon/Star/Outlined Stopwatch Icon/Support Icon/Tag Icon/Interact/Thumb/Dislike Icon/Interact/Thumb/Like Icon/Tick Icon/Trend/New Icon/Trend/Trending Icon/Tutorial Icon/Lock/Unlocked Icon/View/Grid Icon/View/List Icon/Watchlist/Add