- Get full details for a contact after searching
- Look up a deal triggered by a webhook
- Find a contact by their email address
- Fetch company information by domain
- Retrieve specific record properties
hubspot.v2.lookup_object
What This Does (The Simple Version)
Think of this like looking up someone in a phone book. If you know their name (or in our case, their email, domain, or ID), you can find their full listing with all their details. Real-world example: Your website has a “Check your deal status” form. A customer enters their email. You use this action to look up their contact record in HubSpot by that email, then show them information about their deals. Another example: Someone fills out a contact form and you get their email address. Instead of creating a duplicate contact, you look them up by email first. If they exist, you update their info. If not, you create a new contact. The key difference from Search:- Search is like asking “Show me all contacts who work at Acme Corp” (might get many results)
- Lookup is like asking “Show me the contact with email [email protected]” (gets one specific record)
How It Works
This action retrieves a single HubSpot record using a unique identifier. Depending on the object type, you can look up records in different ways:- Contacts: By Object ID or Email address
- Companies: By Object ID or Domain name
- All other objects (Deals, Tickets, etc.): By Object ID only
- For contacts, email is unique - every contact has one email
- For companies, domain is unique - every company has one website domain
- For deals/tickets/etc., you need the HubSpot ID since they don’t have unique external identifiers
When to Use Lookup vs. Search
Use Lookup when:- You have a specific unique identifier (ID, email, or domain)
- You need exactly one record
- A webhook sent you an email or ID
- You know exactly which record you want
- You don’t have a unique identifier
- You need to find records matching criteria (like “all deals in this stage”)
- You might get multiple results
- You’re filtering by properties other than ID/email/domain
Setting It Up
Step 1: Choose Object Type
When you add the Look up HubSpot Object action, you’ll see clickable cards for each object type:- Contacts - Person records (can lookup by ID or Email)
- Companies - Organization records (can lookup by ID or Domain)
- Deals - Sales opportunities (lookup by ID only)
- Tickets - Support tickets (lookup by ID only)
- Calls - Call engagement records (lookup by ID only)
- Emails - Email engagement records (lookup by ID only)
- Meetings - Meeting records (lookup by ID only)
- Notes - Note records (lookup by ID only)
- Tasks - Task records (lookup by ID only)
Step 2: Choose Lookup Method (Contacts & Companies Only)
For Contacts, you’ll see a dropdown to choose:- Lookup by Object ID - Use the HubSpot record ID (e.g., “12345”)
- Lookup by Email - Use the contact’s email address (e.g., “[email protected]”)
- Lookup by Object ID - Use the HubSpot record ID (e.g., “67890”)
- Lookup by Domain - Use the company’s domain (e.g., “acme.com”)
- Only Object ID is available (no dropdown shown)
- You got the ID from a search result
- You’re looping through search results
- A webhook sent you the specific HubSpot record ID
- You have the ID from a previous action
- You have the contact’s email but not their ID
- A form submission sends the email address
- You’re enriching data from an external source that only has emails
- Example: “Look up the contact who just submitted our form using email [email protected]”
- You have the company website but not the HubSpot ID
- You’re enriching company data from external sources
- A form captures the company website
- Example: “Look up the company with domain acme.com”
Step 3: Enter the Lookup Value
In the lookup field (labeled based on your method selection), provide the identifier. If looking up by Object ID: Click into the field—the{} insert variable icon appears. Click it to select:
- From a webhook: The ID variable sent by the trigger (e.g.,
contact_id,deal_id) - From a search/loop:
current_contact→hs_object_id - From a previous action: The output variable →
hs_object_id
deal_id → Click {} → select deal_id
If looking up by Email (Contacts only):
Click into the field and use the {} button to select:
- From a webhook: The email variable (e.g.,
email,submitted_email) - From a form: The form submission email field
- From a search/loop:
current_contact→email
submitted_email with value “[email protected]” → Click {} → select submitted_email
If looking up by Domain (Companies only):
Click into the field and use the {} button to select:
- From a webhook: The domain variable
- From a form: The company website/domain field
- From enrichment data: External data source with domain
company_website with value “acme.com” → Click {} → select company_website
Important for domains: Use just the domain without “www” or “https://”
- ✅ Good:
acme.com - ❌ Bad:
www.acme.comorhttps://acme.com
- Object ID:
12345 - Email:
[email protected] - Domain:
acme.com
Step 4: Choose Properties to Retrieve (Optional)
Click the ”+ Add Property” button to select which HubSpot properties you want to get back. This opens the property picker modal:- Search bar at the top to find properties quickly
- List of all available properties for that object type
- Click properties to select them (checkmark appears)
- Click Done when finished
- Only select properties you’ll actually use
- Use the search bar to quickly find specific properties
- Always include
hs_object_idif you’ll reference or update the record later
firstnamelastnameemailphonecompanylifecyclestagehs_object_id
namedomainindustrycitystatenumberofemployeeshs_object_id
dealnamedealstageamountclosedatepipelinehubspot_owner_idhs_object_id
Step 5: Get Associated Objects (Optional)
Want to also retrieve IDs of related records? Type the object types in the “Associated Object Types” field, separated by commas. Examples:Step 6: Name Your Output Variable
In the “Output Variable Name” field, give this record a descriptive name. Good names:contact_detailsdeal_infocompany_dataretrieved_ticketfound_contact
What You Get Back
You get a single object containing the properties you selected. Example 1: Looking up a contact by email with propertiesfirstname, lastname, email
Output saved to contact_details:
name, domain, industry
Output saved to company_info:
deals:
Using the Retrieved Data
Access Properties in Next Actions
For any field that needs a value, click the{} insert variable icon:
- Select your output variable (e.g.,
contact_details) - Select the property you want (e.g.,
email,firstname)
- To: Click
{}→ selectcontact_details→ selectemail - Subject: Type “Hi ” then click
{}→ selectcontact_details→ selectfirstname
Check If Property Has a Value
Some properties might be empty in HubSpot. Use an If Condition action to check first:- Add If Condition after the lookup
- Condition: Check if
contact_details→phoneexists or is not empty - If true: Do something with the phone number
- If false: Handle the missing data differently
Use Associated Object IDs
If you retrieved associations, you can loop through them:- Add For Loop action
- Loop through: Click to select
contact_details→associations→companies - Current item: Name it
company_id - Inside the loop, look up each company using that ID
Common Workflows
Form Submission → Lookup Contact by Email
Goal: When someone submits a form, find their existing contact record using their email. Real-world scenario: You have a “Request a Demo” form. When Sarah fills it out, you want to check if she’s already in your CRM before creating a new contact. Trigger: Webhook receivesemail variable from form
-
Look up HubSpot Object (V2)
- Object Type: Contacts
- Lookup Method: Lookup by Email
- Email: Click
{}→ selectemail - Add Properties: Select
firstname,lastname,email,company,hs_object_id - Output Variable:
found_contact
-
If Condition - Check if contact was found
- If found: Update their info using
found_contact→hs_object_id - If not found: Create new contact
- If found: Update their info using
-
Send confirmation email
- To:
found_contact→email - Subject: “Hi ” +
found_contact→firstname+ ”, thanks for your interest!”
- To:
Enrich Company Data by Domain
Goal: External tool sends you a company domain, and you want to enrich it with HubSpot data. Real-world scenario: Your sales team uses a Chrome extension that captures company domains from LinkedIn. You want to look up those companies in HubSpot to see if you already have them. Trigger: Webhook withcompany_domain variable
-
Look up HubSpot Object (V2)
- Object Type: Companies
- Lookup Method: Lookup by Domain
- Domain: Click
{}→ selectcompany_domain - Add Properties: Select
name,industry,numberofemployees,city,hs_object_id - Output Variable:
company_info
-
If Condition - Check if company exists
- If found: Display
company_info→nameandcompany_info→industry - If not found: Create new company with that domain
- If found: Display
Webhook → Lookup Deal by ID → Send Update
Goal: When a deal reaches a certain stage in HubSpot, send an email to the deal owner. Real-world scenario: Your HubSpot workflow triggers when deals move to “Contract Sent” stage. You want to email the owner with deal details. Trigger: HubSpot workflow sends webhook withdeal_id
-
Look up HubSpot Object (V2)
- Object Type: Deals
- Object ID: Click
{}→ selectdeal_id - Add Properties: Select
dealname,amount,dealstage,closedate,hubspot_owner_id - Output Variable:
deal_details
-
Send Email
- To: Look up owner email using
deal_details→hubspot_owner_id - Subject: “Contract sent for ” +
deal_details→dealname - Body: Include
deal_details→amountanddeal_details→closedate
- To: Look up owner email using
Search → Loop → Lookup Pattern
Goal: Find all contacts in a certain lifecycle stage, then get complete details for each. Real-world scenario: You want to find all “Lead” contacts and send them a nurture email with personalized details.-
Search HubSpot (V2)
- Object Type: Contacts
- Filters:
lifecyclestage=lead - Properties: Just get
hs_object_id(basic info) - Output:
lead_contacts
-
For Loop
- Loop through:
lead_contacts - Current item:
current_contact
- Loop through:
-
Look up HubSpot Object (V2) - inside loop
- Object Type: Contacts
- Lookup Method: Lookup by Object ID
- Object ID: Click
{}→ selectcurrent_contact→hs_object_id - Add Properties: Select all the properties you need for the email
- Output Variable:
full_contact
-
Send Email - inside loop
- To:
full_contact→email - Personalized with their data
- To:
- End Loop
Real Examples
Example 1: Form Submission with Email
Scenario: “Contact Us” form sends email address. Look up the contact to personalize the response. Webhook receives:submitted_email = “[email protected]”
Configuration:
- Object Type: Contacts
- Lookup Method: Lookup by Email
- Email: Click
{}→ selectsubmitted_email - Properties: Click ”+ Add Property” and select:
firstnamelastnameemailcompanylifecyclestagehs_object_id
- Output Variable:
contact_info
- Action finds Sarah’s contact record
- Returns:
{"firstname": "Sarah", "lastname": "Johnson", "email": "[email protected]", ...}
Example 2: Company Enrichment
Scenario: Sales rep enters a company domain in your tool. Get HubSpot company data. Variable:company_domain = “acme.com”
Configuration:
- Object Type: Companies
- Lookup Method: Lookup by Domain
- Domain: Click
{}→ selectcompany_domain - Properties: Select
name,industry,numberofemployees,city,state,hs_object_id - Associated Object Types:
contacts(get contact IDs at this company) - Output Variable:
company_data
- Action finds Acme Corp company record
- Returns company details plus IDs of contacts at that company
company_data→associations→contacts= [“123”, “456”, “789”]
Example 3: Deal Update Notification
Scenario: HubSpot workflow fires when deal stage changes to “Closed Won”. Send celebration email to owner. Webhook receives:deal_id = “12345”
Configuration:
- Object Type: Deals
- Object ID: Click
{}→ selectdeal_id - Properties: Select
dealname,dealstage,amount,closedate,hubspot_owner_id - Output Variable:
won_deal
- Retrieves:
{"dealname": "Acme Corp - Enterprise", "amount": "50000", ...}
- Email owner: “Congrats! ” +
won_deal→dealname+ ” closed for $” +won_deal→amount
Troubleshooting
”Object not found” Error
The record doesn’t exist with that identifier Possible causes:- Wrong ID, email, or domain was provided
- Record was deleted from HubSpot
- Email/domain doesn’t match exactly
- Variable is empty or undefined
- Check the execution log - See exactly what value was sent to the action
- Verify in HubSpot - Does a record with that ID/email/domain actually exist?
- For email lookups: Check for typos, extra spaces, or wrong capitalization
- For domain lookups: Make sure it’s just the domain (e.g., “acme.com” not “https://www.acme.com”)
- Add safety check: Use an If Condition before the lookup to verify the variable has a value
No Record Found by Email
Looked up contact by email but got “not found” Possible causes:- Contact doesn’t exist in HubSpot with that email
- Email has typo or formatting issue
- Email has extra whitespace
- Search HubSpot manually - Does a contact with that email exist?
- Trim whitespace - Strip spaces before/after the email
- Check format - Emails should be lowercase typically
- Create if not found - Use If Condition to create contact if lookup fails
No Company Found by Domain
Looked up company by domain but got “not found” Possible causes:- Domain format is incorrect
- Company doesn’t exist in HubSpot
- Domain includes “www” or “https://” prefix
- Domain has path or query parameters
- Use clean domain only: Just
acme.com(notwww.acme.comorhttps://acme.com/about) - Strip prefixes: Remove “www.”, “http://”, “https://”
- Remove paths: Remove everything after the domain (“/about”, “?page=1”)
- Check HubSpot - Verify the company exists with that exact domain
https://www.acme.com/products
- Strip to just:
acme.com - Then do the lookup
Properties Are Empty Even Though Record Found
Record was found but specific properties are blank Possible causes:- Those properties are actually empty in HubSpot (not filled out)
- Property names don’t match exactly
- Didn’t select those properties in the property picker
- Check HubSpot record - Open the actual record in HubSpot and see if those fields have values
- Use property picker - Don’t type property names, use the ”+ Add Property” button
- Handle empty values - Use If Condition to check if property has a value before using it
“Missing OAuth Scope” Error
Don’t have permission to access that object type How to fix:- Go to Settings → Integrations
- Find HubSpot and click “Reconnect”
- Make sure you check the box for that object type’s read permission
- Save and try the workflow again
- Contacts: “Read Contacts”
- Companies: “Read Companies”
- Deals: “Read Deals”
- Tickets: “Read Tickets”
Tips & Best Practices
✅ Do:- Use Lookup by Email for contacts when you only have the email (super common with forms!)
- Use Lookup by Domain for companies when enriching external data
- Use the
{}button to insert variables instead of typing - Always handle “not found” - Use If Condition to check if the lookup succeeded
- Clean domains - Strip “www” and “https://” before looking up by domain
- Use descriptive variable names -
found_contactis better thanc - Include
hs_object_idin properties if you’ll update/reference the record later
- Hard-code specific IDs, emails, or domains (they change between portals)
- Assume the record exists - always handle the not-found case
- Include URL prefixes in domain lookups (“https://acme.com” won’t work)
- Forget to select properties - you’ll only get defaults
- Use the wrong lookup method (can’t look up deals by email!)
- Lookups are very fast - don’t worry about using them in loops
- Lookup by email/domain is just as fast as by ID
- Only select properties you need (though lookup is fast regardless)
- If you’re looking up many records, Search might be more efficient than individual lookups
Lookup Methods Quick Reference
| Object Type | Can Lookup By |
|---|---|
| Contacts | Object ID, Email |
| Companies | Object ID, Domain |
| Deals | Object ID only |
| Tickets | Object ID only |
| Calls | Object ID only |
| Emails | Object ID only |
| Meetings | Object ID only |
| Notes | Object ID only |
| Tasks | Object ID only |
Related Actions
Use with Lookup:- Search HubSpot (V2) - Find records before looking them up
- Update HubSpot Object (V2) - Update the record after looking it up
- Create HubSpot Object (V2) - Create record if lookup fails (common pattern!)
- If Condition - Check if lookup succeeded
- For Loop - Loop through associated record IDs
- Variable System - Using retrieved data in actions
- Webhook Triggers (HubSpot) - Getting IDs/emails from HubSpot workflows
Last Updated: 2025-10-01

