All workflows

Turn a hiring signal into a worked LinkedIn lead

Shortlists your ICP in Clay, watches for a matching job posting, logs the lead in Salesforce, and queues a LinkedIn opener in HeyReach.

Outcome

  • A shortlist of companies in Clay with a live watch for job postings matching the roles you're targeting.

  • The buyer at each company that gets a hit, with their work email and LinkedIn profile.

  • A Salesforce lead logged for each buyer, and an approved LinkedIn opener queued in HeyReach.

How it works

  1. 1

    Shortlist the ICP

    Clay

    Query Clay's company database for target_segment, up to max_companies. Keep each company's name and domain.

  2. 2

    Watch for a job posting

    Clay

    Create a signal on the shortlist that fires on a job posting matching job_titles.

  3. 3

    Find the buyer

    Clay

    At each company whose signal fires, search people matching buyer_titles, most senior first. Keep their name, title and LinkedIn profile URL.

  4. 4

    Get their work email

    Clay

    Run the Work Email routine with their name, company name and domain. Keep the email it returns.

  5. 5

    Write the opener

    Your agent

    Draft one sentence that names the role the company is hiring for and the problem it hints at, with no pitch. Show the drafts to the user.

  6. 6

    Log the lead

    Salesforce

    Create a Lead for each buyer whose draft the user approved, with the job posting noted.

  7. 7

    Queue the LinkedIn message

    HeyReach

    Add each approved buyer, by their LinkedIn profile URL, to a HeyReach campaign set up with the opener as its first-touch copy.

You'll be asked for

  • The kind of company to shortlist

    e.g. Series A-B B2B SaaS in the US

  • The roles whose posting signals a need for your product

    e.g. Head of Sales, SDR, Sales Ops

  • Who to reach at each company once its posting hits

    e.g. VP Sales, Head of Revenue Operations

  • The most companies to shortlist in one run, since each result costs credits

    e.g. 100

The file your agent runs

job-posting-lead-lists.md

Turn a hiring signal into a worked LinkedIn lead

Shortlists your ICP in Clay, watches for a matching job posting, logs the lead in Salesforce, and queues a LinkedIn opener in HeyReach.

Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.

Outcome

  • A shortlist of companies in Clay with a live watch for job postings matching the roles you're targeting.
  • The buyer at each company that gets a hit, with their work email and LinkedIn profile.
  • A Salesforce lead logged for each buyer, and an approved LinkedIn opener queued in HeyReach.

Inputs

Ask the user for these before you start.

  • target_segment: the kind of company to shortlist, e.g. Series A-B B2B SaaS in the US
  • job_titles: the roles whose posting signals a need for your product, e.g. Head of Sales, SDR, Sales Ops
  • buyer_titles: who to reach at each company once its posting hits, e.g. VP Sales, Head of Revenue Operations
  • max_companies: the most companies to shortlist in one run, since each result costs credits, e.g. 100

Set up

Clay (tool:clay/search-people-and-companies, tool:clay/create-signal, tool:clay/run-routine)

For each call, use the first option your agent supports that lists it.

Notes:

  • Search people and companies: Read the query reference first (GET /search/query-mode/reference), then page with POST /search/query-mode/{search_id}/run while has_more is true. Results per search and per 30 days are capped by plan.
  • Create a signal: Custom and web intent signals can't be created here: they are set up in the Clay app. Run clay signals create --help for the supported types and each one's input shape.
  • Run a routine: List routines first for the id and input schema; the managed Work Email routine needs a full name, company name and company domain. Poll GET /routines/run/{routine_run_id}/results until the run is complete.
CLI (official)

Install the command and sign in with it, then confirm it runs.

npm install --global @clay-run/cli
clay --version
  • Search people and companies: run clay searches query-mode create
  • Create a signal: run clay signals create
  • Run a routine: run clay routines runs start
API (official)

Create a record (Salesforce, tool:salesforce/create-record)

Use the first option your agent supports.

MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

{ "mcpServers": { "salesforce": { "url": "https://api.salesforce.com/platform/mcp/v1/platform/sobject-mutations" } } }

Call the MCP tool createSobjectRecord.

Note: An admin creates an External Client App and activates the server first. It never deletes records.

CLI (official)

Install the command and sign in with it, then confirm it runs.

npm install @salesforce/cli --global
sf --version

Run sf data create record.

Note: Sign in with sf org login web; sf org display then prints the instance URL and API version.

Add leads to a campaign (HeyReach, tool:heyreach/add-leads-to-campaign)

Use the API.

  • Base URL: https://api.heyreach.io
  • Endpoint: POST /api/public/campaign/AddLeadsToCampaignV2
  • Auth: send the header X-API-KEY: $HEYREACH_API_KEY

Note: Create the key in the HeyReach app under Settings, API keys. Every request counts toward one workspace limit of 300 requests per minute, and read endpoints use POST with a JSON body of filters.

Note: The campaign must exist and have LinkedIn sender accounts assigned before leads go in. Each lead needs a LinkedIn profile URL; the response counts added, updated and failed leads.

Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.

Steps

  1. Shortlist the ICP with Search people and companies (Clay). Query Clay's company database for target_segment, up to max_companies. Keep each company's name and domain.
  2. Watch for a job posting with Create a signal (Clay). Create a signal on the shortlist that fires on a job posting matching job_titles.
  3. Find the buyer with Search people and companies (Clay). At each company whose signal fires, search people matching buyer_titles, most senior first. Keep their name, title and LinkedIn profile URL.
  4. Get their work email with Run a routine (Clay). Run the Work Email routine with their name, company name and domain. Keep the email it returns.
  5. Write the opener yourself. Draft one sentence that names the role the company is hiring for and the problem it hints at, with no pitch. Show the drafts to the user.
  6. Log the lead with Create a record (Salesforce). Create a Lead for each buyer whose draft the user approved, with the job posting noted.
  7. Queue the LinkedIn message with Add leads to a campaign (HeyReach). Add each approved buyer, by their LinkedIn profile URL, to a HeyReach campaign set up with the opener as its first-touch copy.

Notes

Step 7 needs a HeyReach campaign already built with LinkedIn sender accounts assigned; point every approved lead at it rather than one campaign per run.

Steps 1 and 2 can run on sumble/search-organizations and sumble/search-jobs, or on coresignal/search-companies and coresignal/search-jobs, instead of Clay — the guide names both as job-posting data sources with the same shape.

Adapted from ShipGTM's signal-based lead list guide, which builds this on Clay, Salesforce and LinkedIn, and names Sumble and CoreSignal as alternative data sources.

Rules

  • Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
  • Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
  • Never print API keys.