Weekday Clay signal alerts into Instantly outbound at 7am
Every weekday at 7am, pull fresh funding, hiring, and job-post signals from your Clay table, draft a personalized opener, and load hot leads into Instantly with a Slack recap.
Every weekday at 7am in my local timezone, turn fresh account signals from my Clay signal-monitoring table into personalized outbound in Instantly, and post a summary to Slack. Trigger is a cron schedule.
Step 1. Read fresh signals from Clay. Use Clay's Query Tables operation against my signal-monitoring table. I already track target accounts in that table with rows for funding rounds, exec hires, and new job posts, and each row has a champion email column, a signal-type column (funding | exec_hire | job_post or similar), a signal-summary column, and a created-at column. The Clay table ID is not discoverable via the API, so accept it as a required workflow input at build time and store it in the workflow settings. Pull only rows added in the last 24 hours (based on the created-at column) that have a non-empty, syntactically valid champion email. Cursor-paginate through Query Tables until there are no more rows.
Step 2. Dedupe against my Instantly campaign. Accept the target Instantly campaign as a required workflow input (campaign UUID). For each Clay row's champion email, either call Instantly's Search Campaigns by Lead Email operation or List Leads filtered by that campaign and email, and drop any email that already exists in that campaign. Skip silently, do not treat as an error.
Step 3. Draft a personalized opener. For each remaining hot row, draft a two-sentence intro line that references the specific signal from that row. Example voice: "Saw the Series B and the new VP Eng last week. Figured the timing was right to reach out about how we help post-Series-B eng teams onboard faster." Keep it tight (1 to 2 sentences, roughly 200 to 320 characters) so it slots cleanly into an email template's personalization variable. Do not repeat the recipient's name or company inside the opener since the surrounding template already handles that.
Step 4. Push the batch into Instantly. Use Instantly's Add Leads in Bulk operation to add the deduped leads into the campaign in a single call (batch up to 1000 per request, page if needed). Map the drafted opener into a custom personalization variable on the lead (default name: personalization; make the variable name a workflow setting so users can match their existing email template). Also map first name, last name, company, and title from the Clay row when present.
Step 5. Post a Slack digest. Use the Slack Bot Send a Message operation to post to a channel that the user configures (workflow setting: slack_channel_id). The message should list how many leads were added in total this morning and a breakdown grouped by signal type, plus how many were skipped because they were already in the campaign. Keep it terse and scannable, mrkdwn formatting, one line per signal group. If zero leads were added, still post a short "no fresh signals this morning" note so the team knows the run happened.
Required workflow inputs to expose in settings: clay_table_id (string, required), instantly_campaign_id (UUID, required), instantly_personalization_variable_name (string, default "personalization"), slack_channel_id (string, required), run_timezone (string, default the user's timezone). Credentials required: Clay API key, Instantly API v2 key, Slack Bot workspace connection.
Behavior notes for the agent: honor Clay and Instantly Retry-After headers on 429s with exponential backoff. Treat any single lead that fails to add as a soft error, log it, and continue the batch rather than aborting the run. The Slack digest is the run's success signal for the operator, so always post it (including a note if the workflow errored partway).
Additional information
What does this prompt do?
- Pulls the accounts your Clay signal table added in the last 24 hours, keeping only rows with a valid champion email.
- Writes a short, two-sentence personalized opener for each lead that references the exact signal that fired (a new funding round, a key hire, or a new job post).
- Loads the batch into your chosen Instantly cadence and drops the opener into a custom personalization field so your first email uses it word for word.
- Skips anyone already sitting in the campaign, so you never double-send to the same prospect.
- Posts a morning digest to Slack with how many leads were added, grouped by which signal triggered them.
What do I need to use this?
- A Clay account with a signal-monitoring table that tracks target accounts with fields for the champion email, the signal type, and the date the row was added.
- The Clay table ID for that signal table, which you can copy from the Clay workspace URL when you open the table.
- An Instantly account on the Growth plan or higher with the campaign you want new leads added to.
- A Slack workspace and a channel where the morning outbound digest should be posted.
How can I customize it?
- Change the run time. 7am on weekdays is the default, but any daily or weekday cadence works.
- Point it at a different Instantly campaign, or split leads across campaigns by signal type (funding into one, hiring into another).
- Adjust the opener style. Keep it factual, make it warmer, or lengthen it if your template gives more room for personalization.
- Filter which signals count. Only run on Series B or later, only on VP or C-level hires, only on engineering job posts, whatever fits your ICP.
- Change the Slack channel, the digest format, or add a mention of the account owner so the right rep sees their new leads first.
Frequently asked questions
Do I need a Clay signal table already set up?
How does it avoid re-adding leads that are already in my campaign?
Where does the personalized opener show up in my email?
What if the opener sounds off for a particular lead?
Can I run this on a schedule other than weekday 7am?
Related templates
Signals go stale fast. Reach out the morning they land.
Connect Clay, Instantly, and Slack once, and every weekday at 7am your freshest account signals turn into personalized outbound while the news is still warm.