Auto-enrich new HubSpot contacts with UpLead firmographics
Every new HubSpot contact lands fully filled in. Job title, seniority, company size, industry, LinkedIn, and phone, with a recap note on the record.
Integrations
HubSpot
UpLead
Type
Categories
- Sales
- Operations
Build me an agent workflow that automatically enriches every new HubSpot contact with firmographic and personal context, so my reps never have to research a lead manually.
Trigger: HubSpot webhook for contact.creation. The moment a new contact is created in our HubSpot CRM, fire the workflow with the new contact's ID and email.
Step 1. Call HubSpot Get Contact using the contact ID from the webhook. Read the email plus these properties: jobtitle, hs_seniority, numberofemployees, industry, hs_linkedin_url, phone. Also read firstname, lastname, and company so I can pass them to UpLead if needed.
Step 2. Decide whether to enrich at all. Skip the workflow and exit cleanly if either of these is true:
• The email is on a free-email domain (gmail.com, yahoo.com, outlook.com, hotmail.com, icloud.com, aol.com, proton.me, protonmail.com, gmx.com, live.com, msn.com). UpLead lookups on these almost never resolve and waste credits.
• All six target properties (jobtitle, hs_seniority, numberofemployees, industry, hs_linkedin_url, phone) are already populated. No enrichment needed.
Step 3. Call UpLead Search Combined (Person + Company) with the contact's email. This returns the person and their full company profile in one request. If UpLead returns no match, or email_status is "invalid" or "unknown", log it and exit without writing anything to HubSpot.
Step 4. Map UpLead fields to the missing HubSpot properties. Use the agent's judgment to fill only the gaps:
• jobtitle ← UpLead title (capitalize: UpLead returns lowercase)
• hs_seniority ← UpLead management_level
• numberofemployees ← UpLead company employees
• industry ← UpLead company industry
• hs_linkedin_url ← UpLead linkedin_url (person)
• phone ← UpLead phone or mobile_phone
Important: never overwrite a HubSpot value that is already non-empty. The agent only fills blanks.
Step 5. Call HubSpot Update Contact using the contact ID, sending only the properties you are filling in. If nothing needs filling after the gap check, skip the update.
Step 6. Call HubSpot Create Note associated with the contact. Write a short, human-readable summary that includes:
• Which HubSpot properties were enriched and the new values.
• Notable signals from UpLead worth flagging to a rep: recent funding stage and amount, employee growth rate, technologies in their stack, headquarters location.
• A one-line opener the rep can lift into outbound.
Keep the note under 200 words. Lead with the enrichment summary, then signals.
Style: be concise and factual in the note. No emoji, no marketing fluff, no em dashes. If UpLead is missing a field, just leave it out of the note rather than saying "unknown".
What it does
- Listens for new contacts created in HubSpot and runs the moment one lands.
- Looks up the person and their company in UpLead and writes the missing details back to the HubSpot contact.
- Drops a short note on the contact summarizing what was added, plus signals like recent funding or tech stack.
- Skips free email addresses and already-complete records so you don't waste UpLead credits.
What you’ll need
- A HubSpot account with permission to read and update contacts and create notes.
- An UpLead account with API access. Each enrichment uses one or two UpLead credits.
- A short list of which HubSpot contact fields you want filled in (defaults are job title, seniority, employee count, industry, LinkedIn URL, and phone).
How to customize it
- Adjust the list of fields to enrich, for example add revenue range, headquarters city, or technology stack.
- Change the skip rules. Tighten or loosen the free-email-domain list, or always run on contacts from a specific source.
- Edit what the recap note says. Lead with funding stage, hiring signals, or buying intent depending on what your reps care about most.
Use cases
- Lead Enrichment
- Data Sync