Skip to main content

Part 1: Create a HubSpot Legacy App

1

Log in to HubSpot

Go to Development > Legacy Apps.
2

Create a Private Legacy App

Name it Architect and add these scopes:
  • crm.objects.contacts.write
  • crm.objects.contacts.read
3

Copy your Access Token

Open the Auth tab, click Show Token, and copy it. This is your Bearer Token.

Part 2: Set Up Clay

1

Create a table and add a Webhook

In Clay, create a new custom table. Add a column: Add Enrichment > Webhook. Copy the Webhook URL.
2

Connect Architect

In Architect, go to Settings > Webhooks, create a new webhook, and paste the Clay Webhook URL. Send a test to confirm it works.
3

Add an HTTP API column

Back in Clay, add a new column: Add Enrichment > HTTP API. Select HTTP API (Headers) and create a new account.
4

Configure the request

  • Method: POST
  • Endpoint: https://api.hubapi.com/crm/v3/objects/contacts
  • Body:
{
  "properties": {
    "email": "email",
    "firstname": "firstName",
    "lastname": "lastName",
    "company": "companyName",
    "hs_google_click_id": "gclid"
  }
}
Map each field to the matching property from the webhook data.
If your form only captures emails:
{
  "properties": {
    "email": "email"
  }
}
5

Set the headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer YOUR_ACCESS_TOKEN
Replace YOUR_ACCESS_TOKEN with the token from Part 1.
Architect webhooks also pass UTM parameters (such as utm_source, utm_medium, utm_campaign, and gclid) with each form submission, so you can map these to HubSpot contact properties for full attribution tracking.
Don’t have Clay? Reach out to the Architect team and we can set this up for you.