HubSpot - Create Object
↩ Part of the HubSpot integration.
Description
Section titled “Description”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.
Configuration
Section titled “Configuration”| Field | Type | Required | Description |
|---|---|---|---|
credentials_id | credentials | Yes | HubSpot credential |
object_type | text | Yes | Object type: contacts, companies, deals, tickets. Defaults to contacts if left empty |
properties | json | Yes | Flat 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.
Credentials
Section titled “Credentials”This module requires a HubSpot credential:
| Field | Description |
|---|---|
token | Private App token (starts with pat-), from HubSpot → Settings → Integrations → Private Apps |
Output
Section titled “Output”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 }Usage Example
Section titled “Usage Example”Contact from a form
Section titled “Contact from a form”{ "credentials_id": "hubspot_marketing", "object_type": "contacts", "properties": { "email": "{{data.email}}", "firstname": "{{data.name}}", "phone": "{{data.phone}}", "lifecyclestage": "lead" }}Company
Section titled “Company”{ "credentials_id": "hubspot_marketing", "object_type": "companies", "properties": { "name": "ACME S.A.", "domain": "acme.com", "industry": "MANUFACTURING", "city": "Madrid" }}Deal in a pipeline
Section titled “Deal in a pipeline”{ "credentials_id": "hubspot_sales", "object_type": "deals", "properties": { "dealname": "ACME — annual renewal", "amount": "12000", "pipeline": "default", "dealstage": "appointmentscheduled", "closedate": "2026-12-31" }}Support ticket
Section titled “Support ticket”{ "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, notFirst name). Find them in HubSpot → Settings → Properties. propertiesmust be a flat object. Nested objects and arrays are sent as-is and rejected by HubSpot.- If
propertiesis 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.
Related Nodes
Section titled “Related Nodes”- HubSpot: Get object — read back the record you just created.
- HubSpot: Update object — change its properties later.
- HubSpot: Search objects — check whether the contact exists before creating it.