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.

Agentic Task
HubSpotUpLeadSalesOperationsLead EnrichmentData Sync

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".

Additional information

What does this prompt do?
  • 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 do I need to use this?
  • 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 can I 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.

Frequently asked questions

When does the workflow run?
Every time a brand new contact is created in HubSpot. HubSpot pings General Input the moment the record appears, and the agent picks it up from there. You do not need to schedule anything.
Will it overwrite data my reps already entered?
No. The agent only fills fields that are empty. If a rep already wrote a job title or attached a LinkedIn URL, that value is left alone.
What happens with personal email addresses like Gmail or Yahoo?
Those contacts are skipped entirely so you don't burn UpLead credits on lookups that almost never resolve. You can edit the skip list to fit your business.
How much will this cost in UpLead credits?
About one credit per enriched contact in the standard setup. Contacts that get skipped (free emails, already complete records, or unverifiable matches) cost nothing.
Do I need a paid HubSpot plan?
Any HubSpot tier that supports the contacts API works, including HubSpot Free. You just need an account that can authorize the connection and let General Input read and update contacts.

Stop manually researching every new contact.

Connect HubSpot and UpLead once, and Geni backfills every new contact the moment it lands.