Docs · Recipes
Check leads in Clay before they reach your sequencer
One HTTP API column checks each row with Precleared. Clay then pushes only the rows that come back ok_to_email to Instantly, Smartlead, lemlist or Apollo.
1. Save your key in Clay
In Clay, go to Settings → Connections, click Create and choose HTTP API (Headers). Add this header, name the account Precleared and save.
| Key | Value |
|---|---|
| Authorization | Bearer pc_live_... |
A saved account is encrypted and can be reused across your workspace. A key typed straight into a column's header field is visible to anyone who can open the table. No key yet? Get a free key.
2. Set up the table
Your table needs these columns. Use your validated work email column for Email.
| Column | What goes in it |
|---|---|
| The address you'll send to | |
| First Name, Last Name, Company | For the hand-off to your sequencer |
| Address Source | published, bought, scraped, given or unknown |
| Company Number, Recipient Country | Optional. A UK company number, and a two-letter country code such as GB or DE |
Starting fresh? Download the starter CSV and import it. If every row comes from the same place, Address Source can be a formula column holding that one word.
3. Add the check
Click Add column, choose Add enrichment, search for HTTP API and pick the one by Clay. Open the Configure tab and fill it in.
| Setting | Value |
|---|---|
| Account | Precleared |
| Method | POST |
| Endpoint | https://precleared.dev/api/v1/check |
| Response values to return | verdict, next_step, footer_text, receipt.id, confidence, facts.legal_form, facts.company_name. Type each one and press Enter |
| Remove empty values | Off |
| Custom rate limit, under Run settings | Request Limit 1, Duration (in ms) 1000 |
Body. Type / to open the list of columns and pick one, and keep the quotes around each one.
{
"recipient_email": "/Email",
"address_source": "/Address Source",
"sender_country": "GB",
"pitch": "route-planning software for delivery firms",
"company_number": "/Company Number",
"recipient_country": "/Recipient Country"
}Each column you insert has a Required to run switch, and it starts on. Leave it on for Email, so rows without an email are skipped. Turn it off for Address Source, Company Number and Recipient Country, or Clay skips every row where one of them is blank.
Change sender_country to US if your business is based in the US, and pitch to what you offer. Leave Remove empty values off, so blank optional columns are passed as blank and ignored. A blank or missing Address Source counts as unknown either way.
Name the column Precleared check: open the column's header menu and choose Rename column. Click Save, then Save and don't run to try one row first (run it from that row's cell), or Save and run for every row in the view. Each row uses one check from your allowance. To check a row again, for example after adding a company number to an unknown row, rerun the column on that row.
4. Show the verdict in its own column
Click Add column and choose Formula. Open the Formula box, paste this, click Save column and rename the column Verdict.
{{Precleared check}}?.verdictAdd a second formula column called Receipt the same way. Each row then links to its signed receipt.
"https://precleared.dev/r/" + {{Precleared check}}?.receipt?.id5. Push only cleared rows
Instantly, Smartlead or lemlist
- Create the campaign in your sequencer first.
- Click Add column, choose Add enrichment, search for your sequencer and choose Add Lead to Campaign.
- Connect your account with the sequencer's API key and pick the campaign.
- Map Email, First Name, Last Name and Company. If the action offers custom variables, add
precleared_receiptand map it to the Receipt column. - Under Run settings, turn on Add run condition and enter
{{Verdict}} == "ok_to_email", so only cleared rows are added.
Apollo
For Apollo, add two more HTTP API columns. Both use a header account named Apollo with the header x-api-key set to your Apollo master API key, and both get the run condition {{Verdict}} == "ok_to_email". Adding contacts to a sequence needs a master key.
Create the contact: POST https://api.apollo.io/api/v1/contacts, with contact.id as the response value to return. Name the column Apollo contact.
{
"email": "/Email",
"first_name": "/First Name",
"last_name": "/Last Name",
"organization_name": "/Company",
"run_dedupe": true
}Add a formula column called Contact ID with {{Apollo contact}}?.contact?.id.
Add it to the sequence: POST https://api.apollo.io/api/v1/emailer_campaigns/YOUR_SEQUENCE_ID/add_contact_ids. Insert the Contact ID column and leave its Required to run switch on, so the row only runs once the contact exists.
{
"emailer_campaign_id": "YOUR_SEQUENCE_ID",
"contact_ids": ["/Contact ID"],
"send_email_from_email_account_id": "YOUR_MAILBOX_ID"
}Your sequence id is in the sequence's URL in Apollo. To find your mailbox id, call GET https://api.apollo.io/api/v1/email_accounts with the same header. Apollo starts sending as soon as a contact joins an active sequence, so test with a paused one first.
6. Work the rest
Filter the table to rows where the Verdict isn't ok_to_email. next_step says what to do. For consent_needed, that's usually asking for consent through their contact form or a call. For unknown, add a company number or recipient country, or wait a few minutes if Companies House was busy, then rerun the check on that row.
See footers and receipts, which work the same way in every recipe.
Decision support with sources, not legal advice.