Trigger the workflow from a Clay Audiences segment of qualified accounts. Find up to five security, compliance or technology leaders, rank them by title in a code step, and verify a work email. Write the message from the account's live signal, the inherited why-we-won and the buyer's title, record the company and buyer in HubSpot, then pass a conditional that requires a verified email, a campaign ID and send_to_lemlist = true. Everything else is held with a reason.
An Audiences segment trigger feeds a people search, a deterministic ranking step, email verification and a message code step, then HubSpot writeback and a three-condition conditional that either adds the lead to Lemlist or holds it with a reason.
Flow: Qualified segment -> Find up to 5 leaders -> Rank titles -> Verified email -> Write message -> HubSpot company + buyer link -> Gate (email, campaign ID, approval) -> Lemlist OR Hold with reason
Read the full walkthrough, with the runs and what went wrong: closed won signal led pipeline clay
What you need before you start
Set the inputs and ownership rules before you connect live systems.
Inputs
- qualified_segment_id (string, required) — Clay Audiences company segment of Qualified accounts (installer --set).
- signal_summary (string, required) — Buyer-safe signal sentence from the discovery workflow.
- signal_evidence_url (url, optional) — Official notice URL, stored for the rep.
- inherited_why_we_won (string, required) — Win reason carried from HubSpot.
Expected outputs
- delivery_status (string, required) — uploaded_to_lemlist, ready_for_paused_campaign, held_no_verified_email or held_campaign_not_configured.
- subject (string, required) — Draft subject.
- email_body (string, required) — Draft message for human review.
Step 1
Account enters the qualified segment
Activate only accounts the discovery Claygent qualified.
Configuration: {"trigger": "audience_segment", "entity": "ACCOUNT"}
Step 2
Find up to 5 security, compliance or technology leaders
Search for the buyer the win reason implies.
Configuration: {"action": "cpj-find-lists-of-people-v2", "limit": 5}
Step 3
Rank titles and pick one
Deterministic, arguable scoring instead of a model.
Configuration: {"scores": {"CISO": 120, "Director of information security": 115, "Information security manager": 110, "Data protection": 105, "Compliance": 90, "CTO": 80, "CIO": 75, "Risk": 65, "Junior/assistant": -70}}
Step 4
Find a verified work email
Hold rather than guess when nothing verified returns.
Configuration: {"action": "findymail-find-work-email-from-linkedin"}
Step 5
Write subject and message
Compose from the live signal, inherited win reason and buyer title.
Configuration: {"node": "code", "send_to_lemlist_default": false}
Step 6
Record the company and link the buyer in HubSpot
End the loop in the CRM, not only the sequencer.
Configuration: {"actions": ["hubspot-create-object", "hubspot-lookup-object", "hubspot-create-association"]}
Step 7
Gate before Lemlist
Require a verified email, a campaign ID and explicit approval.
Configuration: {"all_of": ["email not empty", "campaign_id not empty", "send_to_lemlist = true"]}
Step 8
Add approved lead to a paused Lemlist campaign
Hand off with subject, message, evidence URL and title as custom fields.
Configuration: {"action": "lemlist-add-lead-to-campaign-v2", "allowDuplicates": false}
How to test the Clay workflow
We built this in Clay and ran it against 2 real scenarios to confirm it behaves exactly as described. Here’s what we checked, and what it took to get there.
- Qualified account, public-sector award (NHS England supplier) — confirmed working as expected.
- Qualified account, public-sector award (SCAPE supplier) — confirmed working as expected.
We last ran this in Clay on 2026-09-23, and every scenario worked as expected. It cost nothing to test — zero Clay credits used.
What we had to fix along the way
- The demo build set the approval flag inside the message step because its campaign was paused; the bundle ships the flag false and the campaign ID blank.
- Lemlist connectivity was verified by adding leads to a paused campaign; nothing was sent.
Deploy it to Clay in one command
Not a click-a-button-in-the-browser deploy — one command in a terminal, using Clay’s own official CLI. Download both files below into the same folder, then run:
python3 install_clay_workflow.py.txt clay-qualified-account-gated-lemlist.clay-workflow.json --set qualified_segment_id=<your Audiences segment id>That rebuilds every step of this workflow inside your own Clay workspace, as an unpublished draft. Nothing goes live and nothing touches your CRM until you review it and turn it on yourself.
Before you run it: you need Clay’s official CLI (Terracotta) installed and signed in to your workspace, plus Python 3 on your machine. If that's not your thing, our fractional GTM engineering team can deploy it for you.
Guardrails and limitations
Guardrails
- The downloadable bundle ships with send_to_lemlist = False and a blank campaign ID.
- Keep the Lemlist campaign paused until a person has reviewed the copy.
- No verified email means the row is held, never sent to an unverified address.
- The tested build wrote HubSpot companies on reserved example.com domains; point the domain mapping at real records only when you intend to.
Current limitations
- HubSpot writeback nodes use demo_vanta_* property names; rename to your own.
- The message copy is a starting draft for a compliance-software seller; rewrite it for your offer.
- HubSpot and Lemlist must be connected in Clay before the draft can run.
Common questions
How do I stop Clay from emailing leads automatically?
Put a conditional before the Lemlist step that requires a verified email, a campaign ID and an explicit approval flag. Ship the flag as false and keep the campaign paused until a person has read the copy.
Why rank buyer titles in code instead of with AI?
It is cheap, repeatable and easy to argue with. When a rep disagrees with a pick, you change a number, not a prompt.

