Inbound Emails → Account Intel

Clay

Turns a single inbound email (demo request, trial signup, support ticket) into a full buying-committee map. Phase by phase: reverse-lookup the sender via FullEnrich, extract their most senior current role (with priority logic), then search the same company for other VP-plus executives and route them into a linked table. End to end in about 60 seconds.

Inbound email

Reverse lookup

Priority role

Buying committee

Table 1: Inbound Emails

Receives each inbound email and runs the full identification and account-expansion pipeline.

1. Inbound Email (Text input)

Entry point of the workflow. A text field that holds the email address to process. Filled manually, pasted from Slack, or pushed in via Zapier/Make when a new inbound hits your CRM, your form, or your shared inbox.

  • Example: benjamin@fullenrich.com or cohen.yonathan@hotmail.fr

  • One email per row

2. FullEnrich Reverse Email Lookup (HTTP API POST)

Kicks off FullEnrich's reverse-email-lookup async job. The API responds immediately with an enrichment ID that subsequent columns use to poll for results.

  • Method: POST

  • Endpoint: https://app.fullenrich.com/api/v2/contact/reverse/email/bulk

  • Auto-run: ON when Inbound Email is not empty

{
  "name": "Reverse Lookup - {{Inbound Email}}",
  "data": [
    {
      "email": "{{Inbound Email}}",
      "custom": { "source": "clay_template" }
    }
  ]
}

Output: { "enrichment_id": "3c90c3cc-0d44-..." }

3. Enrichment ID (Formula)

Extracts the UUID from the POST response so the next column can use it to poll the results endpoint.

  • Formula: {{FullEnrich Reverse Email Lookup.enrichment_id}}

  • Output: clean UUID string, e.g. 3c90c3cc-0d44-4b50-8888-8dd25736052a

4. FullEnrich Results (HTTP API GET)

Polls the results endpoint with the enrichment ID until FullEnrich returns the full profile.

  • Method: GET

  • Endpoint: https://app.fullenrich.com/api/v2/contact/reverse/email/bulk/{{Enrichment ID}}

  • Auto-run: ON when Enrichment ID is not empty

  • Delay: 30 seconds before the first call (allows processing time)

  • Retries: up to 3, on status codes 404, 425, 500, 502, 503

The response carries the full enriched profile: full name, current and historical jobs (in employment.all[]), location, LinkedIn URL.

5. Person Full Name (Formula)

Extracts the contact's full name straight from the enrichment response.

  • Path: data[0].profile.full_name

  • Example: "Yonathan Cohen"

6. Person Title (Formula with Priority Logic)

The enrichment response includes every current and past job in employment.all[]. This formula picks the most relevant current title using a seniority priority ranking:

Founder > C-Level (CEO/CTO/CFO/CRO/CMO/COO) > VP > Director > Head > Partner > Senior > Manager > Lead > any other non-Unknown

It filters employment.all for current jobs with defined seniority, ranks them by the list above, and returns the .title of the highest-priority match. Falls back to employment.current.title if no match.

  • Example: "Founder", not "Template Builder" when both roles are listed as current

7. Person Seniority (Formula with Priority Logic)

Same priority logic as Step 6, but returns the .seniority field of the highest-priority current role.

  • Example: "Founder"

8. Company Name (Formula with Priority Logic)

Extracts .company.name from the highest-priority current role.

  • Example: "Tool Monsters"

9. Company Domain (Formula with Priority Logic)

Extracts .company.domain from the highest-priority current role. Critical field: used in Step 13 to search the rest of the buying committee.

  • Example: "toolmonsters.com"

10. Company Industry (Formula with Priority Logic)

Extracts .company.industry.main_industry from the highest-priority current role.

  • Example: "Technology, Information and Internet"

11. Country (Formula)

Extracts the contact's country directly from the profile location.

  • Path: data[0].profile.location.country

  • Example: "France"

12. Person LinkedIn URL (Formula)

Extracts the LinkedIn profile URL.

  • Path: data[0].profile.social_profiles.professional_network.url

  • Example: https://www.linkedin.com/in/yonathan-cohen

13. FullEnrich Search (HTTP API POST)

The core value of the template. Uses the Company Domain from Step 9 to find 5 to 10 other decision makers with VP-plus seniority at the same company.

  • Method: POST

  • Endpoint: https://app.fullenrich.com/api/v2/people/search

  • Auto-run: ON when Company Domain is not empty

POST https://app.fullenrich.com/api/v2/people/search
{
  "limit": 5,
  "current_company_domains": [
    { "value": "{{Domain}}", "exact_match": true }
  ],
  "current_position_seniority_level": [
    { "value": "VP" },
    { "value": "Director" },
    { "value": "Head" },
    { "value": "Founder" },
    { "value": "C-Level" }
  ]
}

Adjust the limit and the seniority filters to match your ICP (e.g. add Manager + Senior if you sell to IT, or remove Director + Head if you target the C-suite only).

14. Send table data (Send to Linked Table)

Clay's native Send Table Data action pushes every person from the search response into a new row in Table 2.

  • Array source: {{FullEnrich Search.people}}

  • Mode: one new row per person in the array

  • Destination: Account Decision Makers (Table 2)

  • Traceability: the inbound email, the original sender, and the company name from Table 1 are carried over to every row in Table 2 so each decision maker links back to its source

Table 2: Account Decision Makers

Auto-populated from Step 14. Each row is one VP-plus executive at the same company as the inbound sender, with all 11 columns mapped from the people array and the source context carried over from Table 1.

15. Decision Maker Full Name (Mapped)

Auto-filled from the search response.

  • Source: {{full_name}}

16. Decision Maker Title (Mapped)

Auto-filled with the executive's current job title.

  • Source: {{employment.current.title}}

17. Decision Maker Seniority (Mapped)

Auto-filled with the seniority of the current role.

  • Source: {{employment.current.seniority}}

18. Decision Maker Company Name (Mapped)

Auto-filled with the current company name. Should match the source person's company.

  • Source: {{employment.current.company.name}}

19. Decision Maker Company Domain (Mapped)

Auto-filled with the current company domain.

  • Source: {{employment.current.company.domain}}

20. Decision Maker LinkedIn URL (Mapped)

Auto-filled with the LinkedIn profile URL.

  • Source: {{social_profiles.professional_network.url}}

21. Decision Maker Country (Mapped)

Auto-filled with the executive's country.

  • Source: {{location.country}}

22. Decision Maker City (Mapped)

Auto-filled with the executive's city.

  • Source: {{location.city}}

23. Source Inbound Email (Carried Over)

The original inbound email from Table 1, carried over for traceability.

  • Source: {{Inbound Emails.Inbound Email}}

24. Source Person Name (Carried Over)

The original sender's name from Table 1, carried over for context.

  • Source: {{Inbound Emails.Person Full Name}}

25. Source Company (Carried Over)

The source company name from Table 1, carried over for context.

  • Source: {{Inbound Emails.Company Name}}

How to execute this workflow:

  1. Drop one or more inbound emails into Column 1 of Table 1

  2. Column 2 fires the reverse-lookup POST automatically

  3. Column 3 extracts the enrichment ID, Column 4 polls the results every 30 seconds until ready

  4. Columns 5 to 12 auto-extract the person and company fields using the seniority priority logic

  5. Run Column 13 to fetch the buying committee (auto-runs when Company Domain is filled)

  6. Column 14 routes the people array into Table 2 as new rows, one per executive

  7. Open Table 2 and export, push to CRM, or feed into your outreach workflow

When to use this template:

  • Sales receiving inbound demo requests or trial signups, wanting to multi-thread the account

  • RevOps building buying-committee maps from CRM email fields

  • Customer Success spotting expansion when support tickets come from new contacts at an existing customer

  • Partnerships mapping decision makers when interest comes from a junior employee

Not ideal for high-volume cold outbound (use a different template) or personal emails with no company affiliation (will return empty).

Troubleshooting

Troubleshooting

Reverse lookup returns no profile

Personal emails (gmail, hotmail, etc.) often have no enrichment data tied to them. The workflow returns empty profile fields and skips the company-search step.

Person Title comes back as "Unknown" or a junior role

The profile has no current role with mapped seniority. The priority logic falls back to employment.current when nothing matches. Pick the next person at the same company manually if needed.

Column 4 keeps failing on GET

FullEnrich's reverse-lookup is async. The 30-second delay plus retry on 404/425/500/502/503 handles most cases. If it still fails after 3 retries, the email is likely not indexed.

Column 13 returns zero decision makers

The domain is either too small (under 10 employees) or the seniority filters are too narrow. Add Manager + Senior to the search body, or drop the filter entirely to surface anyone at the company.

API returns 401

Check your FullEnrich API key in the Authorization header. It should be Bearer YOUR_KEY.

Want different ICP filters

Edit the seniority list in Column 13. To target IT, add Manager and Senior. To target the C-suite only, remove Director and Head.

If we can't find contact data, no one else can.

  • check
    50 free credits
  • check
    No credit card required
  • check
    GDPR & CCPA compliant