---
name: moltsets-hubspot-signup-expansion
description: Use this skill to expand thin HubSpot form fills and product signups into full contact records with MoltSets, so lifecycle workflows have real data from message one.
---

# HubSpot Signup Expansion

Expand a thin new HubSpot contact into a full record at the point of creation. A form fill or product signup often arrives as just an email, or a name and a work domain. This skill takes whatever is present and fills in the name, title, LinkedIn URL, company, and firmographics through MoltSets, so lifecycle segmentation and onboarding workflows have complete data before the first message goes out.

## Triggers

"Enrich new signups in HubSpot into full contact records before the lifecycle workflow runs", "expand this form-fill contact with name, title, LinkedIn, and firmographics". Use when a newly created HubSpot contact needs enrichment before lifecycle automation runs.

## Requirements

- HubSpot remote MCP (mcp.hubspot.com) and the MoltSets MCP connected in the same client
- Custom objects are not reachable through HubSpot's remote MCP - write to standard contact properties

## Chain

```
New HubSpot contact (form fill / signup)
  -> hubspot/get-object                (read what exists: email, or name + domain)
  -> MoltSets:
       reverse_email_lookup            (email -> name, title, company, LinkedIn)
       search_business_profile_by_name (name + domain fallback -> title + firmographics)
  -> fill gaps: name, title, LinkedIn, company, firmographics
  -> hubspot/update-object             (write enriched fields for lifecycle workflows)
```

## Inputs

- **Trigger scope** - which new contacts to enrich (a specific form, a signup source, or all newly created contacts)
- **Starting data** - what the record arrives with (email only, or name plus company domain)
- **Fields to fill** - name, title, LinkedIn, company, industry, employee count, and any scoring inputs
- **Guardrails** - skip free-mail domains, or flag them for a lighter enrichment path
- **Acceptable risk scores** - which A-F deliverability grades to keep (recommended: A, B, C and F; D excluded)

## Risk scores - confirm before enriching

Every email MoltSets returns carries a deliverability risk score - a grade from A to F. Ask which grades to keep before running anything:

> "MoltSets grades email deliverability risk from A (best) to F (no data). Which grades should I keep? I'd recommend **A, B, C and F** - and dropping **D**, since D is a confirmed bounce, complaint or spam trap."

| Grade | Meaning | Best practice |
| --- | --- | --- |
| A | Strongest engagement signal available | Safe to send immediately |
| B | Solid | Fine in regular sends; on a new or warming domain, send a smaller batch before scaling |
| C | Deliverability can't be confirmed | Segment separately from A/B, warm at low volume, watch engagement, suppress non-responders after 1-2 attempts |
| D | Confirmed bounce, complaint or spam trap | Never send - fastest way to trip spam traps and damage sender reputation for the whole list |
| F | No data - unknown risk, not "safe" | Re-verify before sending, or treat like C |

Use whatever set the user confirms. Treat the grade as a filter, not a guarantee - it lowers risk, it doesn't remove it. Pair it with the user's own sending domain reputation and list hygiene.

## Steps

1. Read the newly created contact and check which fields are present.
2. When an email is on the record, run `reverse_email_lookup` to resolve name, title, company, and LinkedIn.
3. When only a name and company domain are present, run `search_business_profile_by_name` to return title and firmographics.
4. Fill the gaps on the contact record without overwriting anything the person supplied themselves.
5. Write the enriched fields back so lifecycle workflows and segmentation can branch on real data immediately.

Before any write-back, every found address is checked against the accepted grade set. Out-of-range grades are reported in the table with their true score and skipped - never written to the CRM.

## Output

| Email | Risk | Name | Title | Company | Industry | LinkedIn | Fields Filled | Action |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |

Show the risk score on every row that has an email, including grades outside the accepted set - flag those in `Action` (e.g. "held - grade D") rather than dropping them silently. Only emails inside the accepted set are written back to the CRM.

```
New contacts processed:  X
Enriched to full record: X/N (XX%)
Free-mail flagged:       X
MoltSets tokens used:    X

Email risk scores:
  A: X   B: X   C: X   D: X   F: X
  kept (accepted grades):  X
  filtered (excluded):     X
```

## Tips

- Never overwrite a value the person entered themselves; only fill blanks, so self-reported data stays intact.
- Free-mail domains (gmail.com, outlook.com) rarely resolve to firmographics, so route those to a lighter path.
- Enriching at creation gives your first lifecycle email something to personalise on, which lifts early engagement.
- For high signup volume, batch enrichment on a short interval rather than one call per contact to manage token flow.
