HubSpot — Contacts, Deals & Tickets
Sync your store data to HubSpot CRM automatically with integration workflows.
Prerequisites
- A HubSpot account (any plan, including Free CRM)
- A HubSpot Private App API key with the following scopes:
crm.objects.contacts.writecrm.objects.deals.writecrm.objects.tickets.write
Getting your HubSpot API key
- Go to HubSpot → Settings → Integrations → Private Apps
- Click Create a private app
- Name it "LaunchStore" and set the scopes above
- Click Create app → copy the access token
Connect HubSpot
- Go to Settings → Integrations → HubSpot
- Paste your Private App access token
- Click Save & Test — LaunchStore verifies the key by calling the HubSpot API
Available HubSpot actions
Create Contact
Creates a new contact in HubSpot CRM from a store event.
Recommended trigger: customer.created or order.created
Common field mappings:
| HubSpot field | Event field |
|---|---|
email | customer.email or order.email |
firstname | customer.first_name |
lastname | customer.last_name |
phone | customer.phone |
Use order.created if you want to capture contacts from guest checkout orders, where a customer account may not be created.
Create Deal
Creates a sales deal in HubSpot linked to a contact.
Recommended trigger: order.created
Common field mappings:
| HubSpot field | Event field |
|---|---|
dealname | "Order " + order.display_id |
amount | order.total / 100 (Medusa stores amounts in cents) |
dealstage | Fixed value — e.g. "closedwon" |
closedate | order.created_at |
Create Ticket
Creates a support ticket for post-order issues like refunds or cancellations.
Recommended trigger: order.canceled or order.refunded
Common field mappings:
| HubSpot field | Event field |
|---|---|
subject | "Order " + order.display_id + " cancelled" |
hs_ticket_priority | Fixed value — e.g. "MEDIUM" |
hs_pipeline_stage | Fixed value — e.g. "1" (new) |
Example workflow: order → HubSpot contact + deal
order.created
└─ HubSpot: Create Contact (email, name, phone)
└─ HubSpot: Create Deal (order total, closed-won)
- Create a new workflow named "Order → HubSpot"
- Add trigger:
order.created - Add action: HubSpot → Create Contact
- Map
email,firstname,lastname
- Map
- Add second action: HubSpot → Create Deal
- Map
dealname = "Order #" + order.display_id - Map
amount = order.total / 100 - Set
dealstage = closedwon
- Map
- Save and Activate
Deduplication
HubSpot deduplicates contacts by email address by default. If a contact with the same email already exists, HubSpot will update the existing record rather than creating a duplicate — safe to run on every order.
Checking execution results
Go to Integrations → Execution History to see whether each execution completed successfully. The n8n execution ID links directly to the n8n execution log for debugging.