Skip to content

HubSpot - Create Object

↩ Part of the HubSpot integration.

Creates a record in the HubSpot CRM (POST /crm/v3/objects/{object_type}). You choose the object type and pass the properties as a flat JSON map; the node returns the object HubSpot created, including its id.

This is the node you put right after a form, a webhook or an order to turn an incoming lead into a real CRM record.

FieldTypeRequiredDescription
credentials_idcredentialsYesHubSpot credential
object_typetextYesObject type: contacts, companies, deals, tickets. Defaults to contacts if left empty
propertiesjsonYesFlat map of properties, e.g. {"email":"a@b.com","firstname":"Ana"}

Both object_type and properties accept dynamic variables. The properties string is resolved before it is parsed as JSON, so {"email":"{{data.email}}"} is valid.

This module requires a HubSpot credential:

FieldDescription
tokenPrivate App token (starts with pat-), from HubSpot → Settings → Integrations → Private Apps

data is the object HubSpot returns for the newly created record:

{
"id": "701",
"properties": {
"email": "ana@acme.com",
"firstname": "Ana",
"lastname": "Pérez",
"createdate": "2026-08-05T10:00:00.000Z",
"hs_object_id": "701"
},
"createdAt": "2026-08-05T10:00:00.000Z",
"updatedAt": "2026-08-05T10:00:00.000Z",
"archived": false
}

Along with it, _meta:

{ "moduleVersion": "1.0.0", "success": true, "id": "701", "objectType": "contacts", "totalMs": 240 }
{
"credentials_id": "hubspot_marketing",
"object_type": "contacts",
"properties": {
"email": "{{data.email}}",
"firstname": "{{data.name}}",
"phone": "{{data.phone}}",
"lifecyclestage": "lead"
}
}
{
"credentials_id": "hubspot_marketing",
"object_type": "companies",
"properties": {
"name": "ACME S.A.",
"domain": "acme.com",
"industry": "MANUFACTURING",
"city": "Madrid"
}
}
{
"credentials_id": "hubspot_sales",
"object_type": "deals",
"properties": {
"dealname": "ACME — annual renewal",
"amount": "12000",
"pipeline": "default",
"dealstage": "appointmentscheduled",
"closedate": "2026-12-31"
}
}
{
"credentials_id": "hubspot_service",
"object_type": "tickets",
"properties": {
"subject": "{{data.subject}}",
"content": "{{data.message}}",
"hs_pipeline": "0",
"hs_pipeline_stage": "1"
}
}
  • Property keys are HubSpot’s internal names, not the labels in the UI (firstname, not First name). Find them in HubSpot → Settings → Properties.
  • properties must be a flat object. Nested objects and arrays are sent as-is and rejected by HubSpot.
  • If properties is empty or the JSON does not parse, the node stops with a validation error before calling HubSpot.
  • Creating a contact with an email that already exists returns 409 Conflict. This is not retried — read the existing contact with Search objects and update it instead.
  • This node does not create associations (contact ↔ company, deal ↔ contact). Use the HTTP node against the associations endpoint for that.