Cornersight → Clay → PlusVibe. A cold email campaign that refills itself every day.
What you'll have at the end
One cold email campaign that never runs dry. Every day, new people who just liked, commented on or posted about your topic on LinkedIn get:
- captured by Cornersight,
- filtered to your ICP and given a work email in Clay,
- added to one PlusVibe campaign.
You set it up once. Then you only check replies.
Why this beats a list
- A list is a photo. People change jobs and priorities. The list stays the same.
- Company signals tell you where, not who. "Acme is hiring" doesn't say which of its 200 people has the problem.
- Social signals name the person and the moment. They engaged with the topic this week, in public.
What you need
| Tool | Used for |
|---|---|
| Cornersight | Capturing people who engage on LinkedIn, ICP filter, webhook |
| Clay | Receiving leads by webhook, finding work email (Cornersight gives emails only if you connect your own email finder), final ICP check |
| PlusVibe | Sending the evergreen sequence |
Step 1: Choose where to listen (Cornersight)
Pick 2–4 sources. Start small so credits go to the right people.
- Competitors' profiles. People engaging with them are already shopping in your category.
- Creators your buyers follow. Use Cornersight's Discover Influencers search for your topic. Pick creators whose commenters look like your buyers. Follower count doesn't matter.
- Your own posts. Already warm.
- Keywords. Every LinkedIn post that mentions your problem. Add an AI filtering prompt to drop noisy posts (uses your own AI key). For example: "Only posts about using data for outbound, not job announcements."
Tracking a profile gives you a continuous daily feed. Tracking a single post is a one-off that keeps syncing while the post grows.
Tip: if a source is noisy, pause its sync. You keep the data and stop spending credits.
Step 2: Filter for your ICP (Cornersight)
Set filters before anything leaves Cornersight: job title, company size, industry, country. Set up an ICP filter on the source first. Then, in the source's webhook settings under "Select the leads to push", choose ICP only so only matches get pushed. (It stays greyed out until the source has an ICP filter.)
Step 3: Catch the leads (Clay)
- In Clay: + Create New → Other → Import data from Webhook.
- Copy the webhook URL Clay gives you.
- Optional but recommended: add an auth token. It goes in header
x-clay-webhook-auth, and Clay only shows it once. - Back in Cornersight, paste the URL into the webhook settings of each source, with ICP only selected under "Select the leads to push".
Each new lead now lands as a row in Clay on every sync. Clay limits: 10 records/second per workspace, 100KB per payload (Clay docs).
Step 4: Enrich (Clay)
Add columns:
- Work email: a waterfall of email finders, keeping only verified results.
- Company data, if Cornersight didn't already send it.
- Final ICP check: a formula or AI column that returns yes/no. Run step 5 only when this says yes and an email was found.
- First line (optional): an AI column that writes one sentence about the topic they engaged with, not the fact that they engaged. See the copy rules below.
Step 5: Send to PlusVibe
Clay has no native PlusVibe action, so use Clay's HTTP API column. (Clay's integrations directory lists Instantly, Smartlead and Lemlist but not PlusVibe; PlusVibe's help centre mentions Clay only as a data source. Checked 2026-10-20.)
Set up the column like this (PlusVibe API: Add leads to a campaign, checked 2026-10-20):
- Method:
POST - URL:
https://api.plusvibe.ai/api/v1/lead/add - Headers:
x-api-key: YOUR_PLUSVIBE_API_KEYandContent-Type: application/json. Get the key at PlusVibe → Settings → API access (app.plusvibe.ai/v2/settings/api-access). The key needs PlusVibe's Business plan (Getting Started, checked 2026-10-20). - Required body fields:
workspace_id,campaign_id(note:campaign_id, notcamp_id), andleads(an array of lead objects). - Lead fields:
email, plus any offirst_name,last_name,company_name,company_website,linkedin_person_url,linkedin_company_url,city,country,country_code,phone_number,notes. Anything else (such as your AI first line) goes insidecustom_variables. - Optional flags:
skip_if_in_workspace,skip_lead_in_active_pause_camp,skip_lead_for_active_only_camp,resume_camp_if_completed,hubspot_sync,is_overwrite(all true/false).
Example body. Swap the {{...}} placeholders for your Clay columns:
{
"workspace_id": "YOUR_WORKSPACE_ID",
"campaign_id": "YOUR_CAMPAIGN_ID",
"skip_if_in_workspace": true,
"resume_camp_if_completed": true,
"leads": [
{
"email": "{{Work Email}}",
"first_name": "{{First Name}}",
"last_name": "{{Last Name}}",
"company_name": "{{Company Name}}",
"company_website": "{{Company Domain}}",
"linkedin_person_url": "{{LinkedIn URL}}",
"custom_variables": {
"first_line": "{{First Line}}"
}
}
]
}
skip_if_in_workspace: trueskips anyone already in your PlusVibe workspace, so nobody gets the sequence twice.resume_camp_if_completed: truerestarts the campaign if it has finished, which is what you want for an always-on campaign.- To use
{{first_line}}in your PlusVibe copy, the custom variable name has to match. - Find your
workspace_idwithGET /authenticate(it lists the workspaces your key can access) and yourcampaign_idwithGET /campaign/list-all?workspace_id=...(both are in the same API docs). - PlusVibe allows 5 requests per second (Getting Started, checked 2026-10-20), so throttle the Clay column to match.
- A good response returns
"status": "success"withleads_uploaded,already_in_campaignandskippedcounts.
Run condition: ICP = yes AND email found AND not already sent.
Step 6: The evergreen sequence (PlusVibe)
One campaign, always on. New leads start at step 1 the day they arrive.
| Step | Day | Job |
|---|---|---|
| 1 | 0 | Their problem, in their words. One question. |
| 2 | 3 | One useful idea or resource. No ask. |
| 3 | 7 | Short bump with a soft call to action. |
The table above is a template. Write your own copy for each step and test it on a small batch first.
Copy rules: relevant, not creepy
Full first lines and sequences per signal: see OUTBOUND_COPY_BY_SIGNAL.md in this library.
- Talk about the topic, not the click. Not "I saw you liked Jane's post." Instead: "Lots of sales leaders are saying bought lists feel stale right now."
- One idea, one question. Under 80 words.
- No fake familiarity. You haven't met. Don't pretend.
- Use their words. If they commented "our lists are dead", the email is about lists going stale.
Example (illustrative)
Generic: "Hi Sarah, we help growth teams book more meetings with AI-powered outbound. Open to a call?"
Signal-led: "Hi Sarah, a lot of growth leads are saying bought lists go stale within weeks. Are you seeing that at Northwind too, or have you found a way around it?"
Keep it healthy (weekly, 10 minutes)
- Sources: pause any that bring mostly non-ICP people.
- ICP hit rate in Clay: if it's low, tighten the Cornersight filters, not the Clay ones. That saves credits upstream.
- Replies: check whether one source produces more positive replies than the others. Move credits to it.
- Deliverability: keep daily volume per inbox inside your sender's limits.
Get the setup
Start a Cornersight trial: https://app.cornersight.io/signup?utm_source=resource&utm_medium=library&utm_campaign=evergreen_playbook
Sources: Cornersight product walkthroughs on YouTube (webhooks, ICP filter, pause sync, keyword AI filter); Clay webhook docs; PlusVibe API docs (checked 2026-10-20).