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.comorcohen.yonathan@hotmail.frOne 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/bulkAuto-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_nameExample: "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.countryExample: "France"
12. Person LinkedIn URL (Formula)
Extracts the LinkedIn profile URL.
Path:
data[0].profile.social_profiles.professional_network.urlExample: 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/searchAuto-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:
Drop one or more inbound emails into Column 1 of Table 1
Column 2 fires the reverse-lookup POST automatically
Column 3 extracts the enrichment ID, Column 4 polls the results every 30 seconds until ready
Columns 5 to 12 auto-extract the person and company fields using the seniority priority logic
Run Column 13 to fetch the buying committee (auto-runs when Company Domain is filled)
Column 14 routes the people array into Table 2 as new rows, one per executive
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).
