Sequencer Lead Push Instantly Smartlead Clay Outbound
Pricing
from $8.50 / 1,000 lead pushed to sequencers
Sequencer Lead Push Instantly Smartlead Clay Outbound
Pushes Clay-enriched leads into an Instantly or Smartlead campaign. Maps Clay column names to sequencer fields, gates on ICP score, deduplicates against the campaign, and batches the push. Dry run returns the exact payload without sending. Instantly API v2 and Smartlead API v1.
Pricing
from $8.50 / 1,000 lead pushed to sequencers
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
โฉ What can Sequencer Lead Push do?
Give it enriched lead rows and it pushes them straight into an Instantly, Smartlead or HeyReach campaign, with ICP score gating and deduplication built in. One summary row back, with every count reconciled.
It takes either a list of lead rows or the dataset ID of an upstream Apify run, maps your Clay column names to the sequencer's field names, drops anything below your score threshold, drops anything already in the campaign, and pushes the rest in batches.
| ๐ฆ What you get | โ๏ธ Features and integrations |
|---|---|
| ๐ Leads created in your campaign, counted and confirmed ๐ฏ ICP score gate before anything is sent ๐งน Deduplication against the live campaign ๐งพ 18 reconciled counters, nothing disappears quietly | ๐จ Instantly v2, Smartlead v1 and HeyReach ๐ Field mapping you can override per column ๐งช Dry run that publishes the exact payload โฌ๏ธ Export to JSON, CSV, Excel, HTML or XML |
Bought by Clay users whose plan tier does not include the native sequencer integration, by Apify-native pipelines with no Clay subscription, and by agencies that want an API-triggered push step instead of a manual CSV import.
๐ซ If you already have Clay's own sequencer push, use that instead. It is native, it has a UI, and on an eligible plan it costs you nothing extra. This actor does not beat Clay's integration. It reaches the cases Clay's integration does not.
๐ก Why use Sequencer Lead Push?
| If you want | Read these fields |
|---|---|
| What actually landed in the campaign | leads_pushed |
| Why a lead did not | leads_invalid, leads_below_min_score, leads_deduplicated |
| What the vendor refused | leads_skipped_by_sequencer, leads_failed, failed_emails |
| Whether the dedupe check was complete | dedupe_complete |
| What a live run would send | dry_run_payload |
๐งฎ The counts always add up, in both directions
total_leads_received = leads_invalid + leads_below_min_score + leads_deduplicated + leads_eligibleleads_eligible = leads_pushed + leads_skipped_by_sequencer + leads_failed
If a lead does not arrive in your campaign, one of those counters says why. Nothing disappears quietly, and nothing is dropped silently.
| Sequencer | API | Notes |
|---|---|---|
| Instantly | v2 | Needs a v2 API key. Keys from v1 do not work: Instantly deprecated v1 on January 19, 2026. |
| Smartlead | v1 | Current. Smartlead has no v2. |
๐ What data can Sequencer Lead Push return?
18 fields, one row per run.
| Field | What it holds |
|---|---|
total_leads_received | Rows read from the input |
leads_invalid | Rows dropped for having no usable email |
leads_below_min_score | Rows dropped by the ICP gate |
leads_deduplicated | Rows dropped as duplicates |
leads_eligible | Rows that passed every gate |
leads_pushed | Leads the sequencer confirmed it created. This is the number billed. |
leads_skipped_by_sequencer | Accepted as a request, not created. Usually a blocklist or duplicate rule. Not billed. |
leads_failed | Leads in a batch the sequencer rejected. Not billed. |
failed_emails | One {email, error} per failure, carrying the vendor's own message |
dry_run_payload | On a dry run, the exact batches that would have been sent |
vendor_api_version | Which vendor API the run used |
dedupe_complete | false when the existing-lead lookup stopped early |
sequencer, campaign_id, dry_run | Echoed from the input |
is_summary_row, notice, run_date | Run bookkeeping |
โ ๏ธ Rows with no ICP score at all are kept, not dropped. Unscored is not the same as low. If you want unscored rows excluded, filter them out before they reach this actor.
๐ ๏ธ How to push Clay leads into a campaign
- Open the Input tab and set
sequencertoinstantly,smartleadorheyreach. - Paste your
api_keyand thecampaign_id. The campaign has to exist already; this actor adds leads to a campaign, it does not create one. - Supply
leads, or setdataset_idto an upstream Apify run's dataset. - Set
min_icp_scoreto your threshold. - Run it once with
dry_run: true, readdry_run_payload, then run it live.
๐งช Dry run first, every time you touch a new campaign
dry_run: true runs every step, including the deduplication read, then publishes the exact request
batches it would have sent and stops. No lead is created and nothing is billed. The published
payload is the real one, so what you see is what a live run would send. Your API key is never
included in it.
A dry run with deduplicate: false makes no calls at all and needs no API key, so you can try the
actor before you have credentials to hand.
๐ As the last step of a chain
Each step passes its dataset ID to the next:
- GTM Hiring Signal Scraper finds companies hiring for go-to-market roles
- Tech Stack Detector reads what they run
- ICP Fit Scorer turns those signals into an
icp_scoreand anicp_tier - This actor gates on that score and pushes what survives
Set dataset_id to the scorer's output and min_icp_score to your threshold, and the whole chain
runs without a CSV.
๐ HeyReach keys on LinkedIn, not on email
HeyReach is a LinkedIn sequencer, so it identifies a lead by LinkedIn profile URL, not by email address. Everything downstream follows that:
- A row with no
linkedin_person_urlis dropped, exactly as a row with noemailis dropped on an Instantly run. A row with a profile URL and no email at all is a perfectly good HeyReach lead. - Within run deduplication and campaign deduplication both key on the profile URL, normalized so
uk.linkedin.com/in/Jane-Doe/?trk=xandwww.linkedin.com/in/jane-doeare the same person. - The default mapping sends
linkedin_person_urltoprofileUrlandemailtoemailAddress, where HeyReach treats it as an optional attribute rather than the identity.
Campaign IDs are numeric. Batches are 100 leads, which is HeyReach's own ceiling.
๐ง The four sequencers that are not here
Lemlist, Apollo, Woodpecker and Reply.io were built for and are not shipped. Their endpoints and auth schemes were verified reachable on 2026-08-22, but no credentials for them were available, so no payload contract could be confirmed against a live account.
That distinction is not pedantry. The HeyReach adapter's deduplication read was written against the documented shape, passed its unit tests, and returned an empty set against a campaign holding 70 leads, because the profile URL is nested one level deeper than the docs suggest. It reported "complete" while finding nothing, which would have re-pushed every existing lead on every run. Only a live read caught it. Shipping four write adapters that have never met their own API would put that same class of defect inside someone else's campaign.
๐ต How much does it cost to push leads to a sequencer?
You are charged for one thing: a lead the sequencer confirms it created.
| Plan | Per lead pushed |
|---|---|
| Free | $0.0100 |
| Bronze | $0.0095 |
| Silver | $0.0090 |
| Gold | $0.0085 |
There is also an Actor start event at $0.00005, charged once per run per GB of memory.
๐ณ Free, in every case: leads dropped by the ICP gate, leads dropped by deduplication, leads with no usable email, leads the sequencer rejected or skipped, and every lead in a dry run. A 500-lead campaign costs $4.75 on Bronze. If half your list fails the ICP gate it costs $2.38, because the gated half was never charged.
โจ๏ธ Input
Everything is on the Input tab. The options worth explaining:
| Field | Type | Required | What it does |
|---|---|---|---|
sequencer | string | yes | instantly, smartlead or heyreach. |
api_key | string | yes | Your v2 Instantly key, your Smartlead key or your HeyReach key. Not needed for a dry run with deduplication off. |
campaign_id | string | yes | The target campaign. Instantly IDs are UUIDs, Smartlead and HeyReach IDs are numeric. |
leads | array | one of | Lead rows. Each needs an email at minimum, or a linkedin_person_url for HeyReach. |
dataset_id | string | one of | An upstream Apify dataset ID. Used only when leads is empty. |
min_icp_score | integer | no | Drop leads scoring below this. Default 0, which pushes everything. |
deduplicate | boolean | no | Check the campaign before pushing. Default true. |
field_mapping | object | no | Override the default map. Keys are your column names, values are sequencer field names. |
custom_variables | array | no | Extra column names to pass through under their own name. |
dry_run | boolean | no | Preview without sending. Default false. |
If you supply both leads and dataset_id, leads wins and the run says so.
๐บ๏ธ Default field mapping
| Your column | Instantly | Smartlead |
|---|---|---|
email | email | email |
first_name | first_name | first_name |
last_name | last_name | last_name |
company_name | company_name | company_name |
company_domain | website | company_url |
linkedin_person_url | custom_variables.linkedin_url | linkedin_profile |
personalization_line | personalization | custom_fields.personalization |
icp_tier | custom_variables.icp_tier | custom_fields.icp_tier |
icp_score | custom_variables.icp_score | custom_fields.icp_score |
Anything not in this table and not in custom_variables is dropped.
The two sequencers do not accept the same field names, which is why the columns differ. Instantly
has a native personalization field and no LinkedIn field; Smartlead has a native
linkedin_profile field and no personalization field. Each one's leftovers go into that vendor's
custom bucket.
field_mapping merges over the defaults. Add a column, point one somewhere else, or set a value to
an empty string to drop it. You do not have to know which target names are native: if you name a
field the sequencer does not have, it is sent as a custom variable instead of breaking the request.
That matters on Instantly, where one unrecognized top-level key rejects the entire batch.
custom_variables is the other half. field_mapping renames columns; custom_variables passes
them through under the name they already have, landing in custom_variables on Instantly and
custom_fields on Smartlead, ready to use as merge tags.
๐ค Output
One row per run, exportable as JSON, CSV, Excel, HTML or XML.
{"total_leads_received": 500,"leads_invalid": 3,"leads_below_min_score": 244,"leads_deduplicated": 12,"leads_eligible": 241,"leads_pushed": 238,"leads_skipped_by_sequencer": 3,"leads_failed": 0,"failed_emails": [],"vendor_api_version": "instantly-v2","dedupe_complete": true,"sequencer": "instantly","campaign_id": "019fdec7-6915-70ab-be87-8bdc0bb78acf","dry_run": false,"is_summary_row": false,"run_date": "2026-08-09T16:48:31.785Z"}
๐ก Tips
- Dry run before every new campaign. It costs nothing and shows you the exact payload.
- Batches go out at 500 per call on Instantly and 400 on Smartlead, with a pause between them to stay inside each vendor's rate limit. You do not need to chunk your input yourself.
- Values that are not text or numbers are converted to JSON text, because neither vendor accepts nested objects in a custom field.
- Check
dedupe_completeon large Smartlead campaigns before trusting the duplicate count.
โ ๏ธ Known limits
The campaign must already exist. This actor adds leads to a campaign. It does not create campaigns or write sequence copy.
Instantly needs a v2 key. A v1 key returns an authentication error. v1 was deprecated on January 19, 2026 and v2 keys are generated separately.
Smartlead deduplication walks the campaign. Smartlead's lead list has no email filter, so
checking a large campaign means paging through it. The walk stops at 20,000 leads and sets
dedupe_complete to false when it does. Instantly is not affected: its API filters by email
directly.
Vendor-side skips are visible but not itemized. Both sequencers report how many leads they
skipped for their own blocklist and duplicate rules, but neither says which ones. The count lands in
leads_skipped_by_sequencer.
No proxy configuration. These are authenticated API calls to two vendors, not scraping, so there is nothing to rotate.
โ FAQ
Should I use this or Clay's built-in push?
Clay's, if you have it. This exists for plan tiers without the native integration, Apify-native pipelines with no Clay subscription, and agencies wanting an API-triggered step.
Why were leads sent but not created?
The vendor's own blocklist or duplicate rules. That count is in leads_skipped_by_sequencer and it
is not billed.
Can it create the campaign for me?
No. The campaign has to exist, and this actor only adds leads to it.
What happens to rows with no ICP score?
They are kept. Unscored is not the same as low.
Is my API key ever written to the output?
No. It is never included in dry_run_payload or any other field.
๐งฉ Want other GTM data?
Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store, so our users get the same tooling we build under contract.
Every actor in the suite takes a domain or a company and returns one flat row, so they stack in the same Clay table without reshaping anything.
๐ ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.
๐ Support
Something wrong, or a sequencer you want supported? Open an issue on the Issues tab with the run id and the counters, and we will look at it.
โน๏ธ Keys and legal. This actor calls Instantly's and Smartlead's authenticated APIs with the key you supply, and holds no data source of its own. Your key is used for the run and is never written to the output. The lead data you push is yours; you are responsible for how it was obtained and for your own lawful basis for contacting anyone in it.
Built by Mamba Labs.
