---
name: moltsets-attio-personal-to-business-email-upgrade
description: Find Attio person records held below your SQL threshold by a personal email address, resolve a business email and title through MoltSets, and re-trigger lead scoring.
---

# Attio Personal-to-Business Email Upgrade

## Triggers

- "Find contacts stuck as MQL because they signed up with a personal email and upgrade them"
- "Resolve business emails for Attio records on gmail.com and re-run lead scoring"

## What this skill does

Targets the specific records a personal email address is holding back. When someone signs up with a gmail.com or outlook.com address, most lead scoring models cannot credit the firmographic signal that would push them from MQL to SQL. This skill finds those records, resolves a business email and title through MoltSets using whatever else is on file, and re-triggers scoring once the upgrade lands.

## Chain

```
Attio person records on a free-mail domain, below SQL threshold
  to attio/query-records                (email domain in free-mail list, lifecycle stage below SQL)
  to resolve identifier per record      (name + inferred/known employer, or LinkedIn URL if present)
  to MoltSets:
      search_business_email_by_name     (name + company domain -> business email)
      search_business_profile_by_name   (fallback -> title, firmographics, in case company is unknown)
  to validate the returned business email
  to attio/update-record                (add business email, keep personal email as secondary, re-trigger scoring)
```

## Inputs

- **Free-mail domain list** - which personal email domains to target (gmail.com, outlook.com, yahoo.com, and so on)
- **Lifecycle scope** - which stage or score threshold defines "held back" for your model
- **Employer signal** - what you already have to identify the employer (a company attribute, form data, or nothing at all)
- **Write-back behaviour** - replace the primary email, or add a business email as a separate attribute and keep the personal one

## How it works

1. Pulls person records on a free-mail domain sitting below your SQL threshold or target lifecycle stage
2. For each, checks what employer signal already exists on the record (a company name, a domain from form data, or an inferred one)
3. Runs `search_business_email_by_name` where an employer is known, to resolve a business email
4. Falls back to `search_business_profile_by_name` when the employer itself is unknown, to establish company and title first
5. Validates the returned business email before writing
6. Writes the business email to the record (as primary or as a separate attribute per your policy) and re-triggers lead scoring so the record can move past the personal-email gate

## Output

| Name | Personal Email | Company | Business Email Found | Title | Score Before | Score After | Action |
| --- | --- | --- | --- | --- | --- | --- | --- |

```
Records scanned:             X
Employer known:              X
Business emails found:       X/N (XX%)
Lifecycle stage upgraded:    X
MoltSets tokens used:        X
```

## Tips

- Requires the Attio MCP (mcp.attio.com) and the MoltSets MCP connected in the same client
- Decide up front whether the business email replaces the primary email attribute or sits alongside it, this affects every downstream workflow keyed on email
- Records with no employer signal at all are the hardest match, consider routing those to the signup expansion skill instead, which resolves from name plus domain more broadly
- Re-triggering scoring only helps if your scoring model actually reads the newly filled attributes, confirm that mapping before running this at volume
- If your scoring logic lives in an Attio automation, updating the email attribute alone may be enough to fire the workflow without a separate re-trigger step
