Skip to main content
Julian connects to HubSpot through Ampersand. It reads contact records, watches for changes to your chosen Agent Identifier property, and can write call results back to HubSpot. This guide covers the HubSpot setup. For field mapping and workflows in Julian, see the CRM overview.

Before you start

Use a HubSpot Super Admin to connect the integration and create the private app for contact subscriptions. HubSpot requires this role to install an app and access private apps. You do not need to assign a separate set of user permissions for this setup. Julian’s HubSpot subscription watches Contacts. Ampersand lists a Sales Hub seat as an additional requirement only when an integration accesses HubSpot Leads. That requirement does not apply to this contact subscription. Create a contact property for the Agent Identifier. Julian uses its value to choose the agent and workflow for a contact. The property also drives the HubSpot subscription that notifies Julian when its value changes. Select the same contact property in both places. The mapping in Julian tells Julian where to read the Agent Identifier. The subscription in HubSpot tells HubSpot which property change to send to Julian. Both settings must refer to the same property for this trigger to work.

Connect HubSpot in Julian

  1. Open Integrations in Julian. Select Connect beside HubSpot.
  2. Sign in to the correct HubSpot account as a Super Admin. Complete the authorization screen.
  3. Open the connected HubSpot integration in Julian.
  4. Under Schedule, map the HubSpot contact property that contains the Agent Identifier.
  5. Under Push, enable writing if your workflows will update HubSpot records or log call results.
Actual Julian HubSpot settings with Contacts mapped to an Agent Identifier property The connection applies to your organization. Complete the subscription below if changes in HubSpot should start calls.

Subscribe to contact changes

Create the private app

  1. In HubSpot, open Settings → Integrations → Private Apps. Select Create a private app.
  2. Name the app for Julian. Under Scopes, select crm.objects.contacts.read.
HubSpot Private apps page with Create a private app button Basic info for a Julian private app in HubSpot Select the contact read scope for the HubSpot private app The contact read scope listed in the private app

Set the webhook target

  1. In Julian, open the connected HubSpot integration. Copy the Webhook URL from Configuring HubSpot Subscriptions.
  2. In the HubSpot private app, open Webhooks. Paste the URL into the Target URL field.
Julian's HubSpot subscription panel showing the webhook URL field and Copy button, with the URL redacted The HubSpot private app Webhooks tab with its Target URL field

Watch the Agent Identifier property

  1. Create a Contact property changed subscription in the private app.
  2. Select the same Agent Identifier contact property that you mapped under Schedule in Julian.
  3. Save the private app and activate the subscription.
Create a HubSpot subscription for changes to the mapped Agent Identifier property Active HubSpot contact property change subscription
The contact-read scope belongs to the HubSpot private app that sends webhook events. It is separate from the Super Admin role used to connect and configure the integration. Do not paste a private app token into Julian.
When the Agent Identifier changes, HubSpot sends an event to Julian. Julian checks the contact and schedules a call only when the agent’s workflow rules allow it. This event-based setup avoids repeated requests to poll HubSpot.

Check the connection

  1. Use a test contact with a phone number. Set its Agent Identifier property to a value used by an agent’s pre-sequence workflow.
  2. Check Integrations → Scheduling Request Logs in Julian. Confirm that Julian received the contact event and review any rejection reason.
  3. Check the private app’s webhook event logs in HubSpot. Confirm that HubSpot sent the event to the URL from Julian.
  4. Check the agent’s workflow run history in Julian to confirm whether the contact entered a sequence.
HubSpot webhook logs showing contact property change events HubSpot subscription with errors and a paused status If HubSpot shows a delivered event but Julian rejects the contact, compare the Agent Identifier value, phone mapping, and workflow rules. If HubSpot shows no event, check the subscription’s property and target URL. A paused subscription or an error count in HubSpot needs attention before new events can reach Julian.