HubSpot — Contacts, Deals & Tickets

Sync your store data to HubSpot CRM automatically with integration workflows.

Prerequisites

  1. A HubSpot account (any plan, including Free CRM)
  2. A HubSpot Private App API key with the following scopes:
    • crm.objects.contacts.write
    • crm.objects.deals.write
    • crm.objects.tickets.write

Getting your HubSpot API key

  1. Go to HubSpot → Settings → Integrations → Private Apps
  2. Click Create a private app
  3. Name it "LaunchStore" and set the scopes above
  4. Click Create app → copy the access token

Connect HubSpot

  1. Go to Settings → Integrations → HubSpot
  2. Paste your Private App access token
  3. 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 fieldEvent field
emailcustomer.email or order.email
firstnamecustomer.first_name
lastnamecustomer.last_name
phonecustomer.phone
Tip

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 fieldEvent field
dealname"Order " + order.display_id
amountorder.total / 100 (Medusa stores amounts in cents)
dealstageFixed value — e.g. "closedwon"
closedateorder.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 fieldEvent field
subject"Order " + order.display_id + " cancelled"
hs_ticket_priorityFixed value — e.g. "MEDIUM"
hs_pipeline_stageFixed 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)
  1. Create a new workflow named "Order → HubSpot"
  2. Add trigger: order.created
  3. Add action: HubSpot → Create Contact
    • Map email, firstname, lastname
  4. Add second action: HubSpot → Create Deal
    • Map dealname = "Order #" + order.display_id
    • Map amount = order.total / 100
    • Set dealstage = closedwon
  5. 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.

Next steps