- Create contacts from form submissions
- Generate deals when opportunities arise
- Add companies from enrichment data
- Create tickets from customer requests
hubspot.v2.create_object
What This Does (The Simple Version)
Think of this like adding a new contact to your phone. You choose what type of record to create (contact, company, deal, etc.), fill in the details, and save it to HubSpot. Real-world example: Someone fills out a “Request Demo” form on your website. You use this action to create a new contact in HubSpot with their name, email, company, and set their lifecycle stage to “Lead”. You can even link them to an existing company record.How It Works
This action creates a brand new record in your HubSpot CRM. You choose:- What type of record to create (contact, deal, company, etc.)
- Which properties to set
- What values to use (typed values or variables from previous actions)
Setting It Up
Step 1: Choose Object Type
When you add the Create HubSpot Object action, you’ll see clickable cards for each object type:- Contacts - People in your CRM
- Companies - Organizations
- Deals - Sales opportunities
- Tickets - Support tickets
- Calls - Call records
- Emails - Email engagement records
- Meetings - Meeting records
- Notes - Notes attached to records
- Tasks - Tasks in HubSpot
Step 2: Add Properties
In the “Contacts Object Properties” section (or “Deals Object Properties”, etc.), click the ”+ Add Property” button to select which properties you want to set on the new record. This opens a property picker modal showing:- Search bar at the top
- List of all available properties for that object type
- Click properties to select them (they’ll show a checkmark)
- Click Done when finished
- The field is labeled with the property name (e.g., “First Name”, “Email”, “Company Name”)
- Type the value directly, OR
- Hover over the field to see the
{}
button, then click it to insert a variable
- Click ”+ Add Property”
- Select
firstname
,lastname
,email
,company
,lifecycle_stage
- Click Done
- Now you see five fields:
- First Name: Click
{}
→ selectfirst_name
(from webhook) - Last Name: Click
{}
→ selectlast_name
(from webhook) - Email: Click
{}
→ selectemail
(from webhook) - Company: Click
{}
→ selectcompany_name
(from webhook) - Lifecycle Stage: Type “lead”
- First Name: Click
- Contacts: Usually just
email
(but best to includefirstname
andlastname
too) - Companies: Usually just
name
ordomain
- Deals: Usually
dealname
andpipeline
anddealstage
- Tickets: Usually
subject
andhs_pipeline
andhs_pipeline_stage
- Use the property picker to see all available properties and avoid typos
- Click
{}
to insert variables from triggers or previous actions - HubSpot will use default values for properties you don’t set
Step 3: Name Your Output Variable
Give the created record a descriptive name in the “Output Variable Name” field. Good names:created_contact
new_deal
new_ticket
contact_record
What You Get Back
The action returns the complete created object with all its properties, including the HubSpot-generated ID. Example: If you created a contact withfirstname
, lastname
, email
:
Output saved to created_contact
:
id
field is the HubSpot Object ID - save this if you need to update or reference this record later.
Using the Results
Access the New Record’s ID
The most common use is getting the HubSpot ID to use in later actions: In any field that accepts variables:- Click the Insert Variable button (
{}
icon) - Navigate to your output variable (e.g.,
created_contact
) - Select
id
orproperties
→hs_object_id
(they’re the same)
- Create HubSpot Object (V2) - Create contact, output:
created_contact
- Create HubSpot Object (V2) - Create deal:
- Set deal properties (dealname, dealstage, etc.)
- In associations field: Type
contact:
then click{}
→created_contact
→id
Access Other Properties
You can access any property from the created record:- Click
{}
→created_contact
→properties
→email
- Click
{}
→created_contact
→properties
→createdate
Check If Creation Succeeded
The creation either succeeds (returns the full record) or throws an error. If required properties are missing or credentials are wrong, the workflow stops with an error message.Common Workflows
Create Contact from Form
Goal: When someone submits a form, create a contact in HubSpot Trigger: Webhook from website form Webhook receives:first_name
, last_name
, email
, company
variables
-
Create HubSpot Object (V2)
- Object Type: Contacts
- Properties: Click ”+ Add Property” and select:
firstname
: Click{}
→ selectfirst_name
lastname
: Click{}
→ selectlast_name
email
: Click{}
→ selectemail
company
: Click{}
→ selectcompany
lifecycle_stage
: Type “lead”
- Output Variable:
created_contact
-
Send confirmation email using
created_contact
data…
Create Deal for New Contact
Goal: After creating a contact, automatically create a deal for them-
Create HubSpot Object (V2) - Create contact
- Object Type: Contacts
- Properties: Set
firstname
,lastname
,email
- Output Variable:
new_contact
-
Create HubSpot Object (V2) - Create deal
- Object Type: Deals
- Properties: Click ”+ Add Property” and select:
dealname
: Type “New Opportunity - ” then click{}
→new_contact
→properties
→firstname
dealstage
: Type “appointmentscheduled”pipeline
: Type “default”amount
: Type “5000”
- Output Variable:
new_deal
- Associate them (if needed) using Update or Association action…
Create Company from Enrichment
Goal: Look up company data and create a company record Trigger: Manual or webhook with company domain-
Enrich Company Data (external API action)
- Domain:
acme.com
- Output Variable:
company_data
- Domain:
-
Create HubSpot Object (V2)
- Object Type: Companies
- Properties: Click ”+ Add Property” and select:
name
: Click{}
→company_data
→name
domain
: Click{}
→company_data
→domain
industry
: Click{}
→company_data
→industry
numberofemployees
: Click{}
→company_data
→employee_count
- Output Variable:
created_company
Real Examples
Lead Capture Workflow
Scenario: Website visitor submits “Download Whitepaper” form, create contact and mark as MQL. Webhook receives:email
, first_name
, last_name
, phone
variables
Create Configuration:
- Object Type: Contacts
- Properties: Click ”+ Add Property” and select:
email
: Click{}
→ selectemail
firstname
: Click{}
→ selectfirst_name
lastname
: Click{}
→ selectlast_name
phone
: Click{}
→ selectphone
lifecycle_stage
: “marketingqualifiedlead”lead_source
: “Whitepaper Download”
- Output Variable:
new_lead
new_lead.properties.email
.
New Deal from Opportunity
Scenario: Sales rep fills out “New Opportunity” form, create deal with their info. Webhook receives:deal_name
, contact_email
, amount
, close_date
variables
Create Configuration:
- Object Type: Deals
- Properties: Click ”+ Add Property” and select:
dealname
: Click{}
→ selectdeal_name
amount
: Click{}
→ selectamount
closedate
: Click{}
→ selectclose_date
dealstage
: “qualifiedtobuy”pipeline
: “default”deal_source
: “Sales Generated”
- Output Variable:
new_deal
contact_email
and associate with new_deal
.
Troubleshooting
”Missing Required Property” Error
Error: “Property ‘email’ is required” or similar Possible causes:- Required property not selected in property picker
- Required property field left empty
- Variable inserted but it has no value
- Click ”+ Add Property” and select all required properties for that object type
- Fill in values for all required fields
- Check that variables you inserted actually have values (check execution log)
- For contacts: always include
email
- For companies: always include
name
ordomain
- For deals: always include
dealname
,pipeline
,dealstage
”Property Does Not Exist” Error
Error: “Property ‘custom_field’ does not exist” Possible causes:- Property name is misspelled
- Property doesn’t exist in your HubSpot account
- Property exists but not for that object type
- Always use the ”+ Add Property” button (shows only valid properties)
- Go to HubSpot → Settings → Properties to verify the property exists
- Make sure you’re creating the right object type for that property
- Custom properties must be created in HubSpot first
”Missing OAuth Scope” Error
You don’t have permission to create that object type How to fix:- Go to Settings → Integrations
- Click “Reconnect” on HubSpot
- Make sure you check the box to authorize WRITE access to that object type
- Save and try creating again
- Contacts: “Write Contacts”
- Companies: “Write Companies”
- Deals: “Write Deals”
- Tickets: “Write Tickets”
Duplicate Records Created
Multiple records created instead of one Possible causes:- Workflow running multiple times
- No duplicate checking (HubSpot allows duplicate emails if not prevented)
- Check trigger settings - is it triggering multiple times?
- Before creating, use Search HubSpot (V2) to check if record exists:
- Search by email (for contacts) or domain (for companies)
- Use If Condition to only create if search returns empty
- Enable duplicate prevention in HubSpot settings (contacts only)
Tips & Best Practices
✅ Do:- Always use the ”+ Add Property” button to select from actual HubSpot properties
- Include all required properties for that object type
- Use descriptive
dealname
,firstname
/lastname
, orname
values - Set
lifecycle_stage
for contacts to track their journey - Save the output variable to use the HubSpot ID later
- Test with one record before running in a loop
- Create contacts without email addresses (HubSpot requires it)
- Forget to set
pipeline
anddealstage
for deals (required) - Create duplicate records - search first if unsure
- Forget to check permissions (need WRITE access, not just READ)
- Set properties that don’t exist in your HubSpot account
- Creating records is fast (usually under 1 second)
- If creating many records in a loop, consider batching (100-500 at a time)
- Use variables from previous actions instead of hardcoded values
Related Actions
What to do next:- Update HubSpot Object (V2) - Update records you created
- Search HubSpot (V2) - Check if record exists before creating
- Lookup HubSpot Object (V2) - Get full details on created record
- If Condition - Only create if certain conditions are met
- Variable System - Using variables in property values
- HubSpot Setup - Getting write permissions
Last Updated: 2025-10-01