Push Leads to Sequencer
push_leads_to_sequencerPush enriched leads into Instantly or Smartlead campaigns, applying ICP score gates, deduplication, and dry-run previews to verify mappings safely.
Instructions
Push enriched lead rows into an existing Instantly or Smartlead campaign. Maps common Clay column names onto each sequencer's own field names, optionally drops leads below a minimum ICP score, optionally deduplicates against the leads already in the destination campaign, and sends the rest in batches. Returns one flat summary row: how many leads were received, dropped for having no usable email, dropped by the ICP gate, dropped as duplicates, eligible, actually created by the sequencer, skipped by the sequencer, and failed, plus the vendor's own error message per failed address. The campaign must already exist; this does not create campaigns or write sequence copy. Set dry_run true to get back the exact request payload that would be sent without creating a single lead and without being charged, which is the safe way to check a mapping against a new campaign. Billing is per lead the sequencer confirms it created, so gated, duplicate, skipped, failed and dry-run leads are all free. Instantly uses API v2 and needs a v2 key; Smartlead uses API v1. Requires an APIFY_TOKEN and consumes Apify credits. This WRITES to your sequencer campaign unless dry_run is true.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| leads | No | Lead rows to push. Each row needs an email at minimum. Takes precedence over dataset_id when both are set. | |
| api_key | No | Your Instantly v2 API key or your Smartlead API key. An Instantly v1 key will not work: v1 was deprecated on January 19, 2026. Required for any run that calls the sequencer. A dry run with deduplicate false makes no calls and needs no key. | |
| dry_run | No | Run every step, return the exact payload that would be sent, and make zero write calls. Creates no leads and charges nothing. Default false. | |
| sequencer | Yes | Which sequencer to push to. Instantly uses API v2, Smartlead uses API v1. | |
| dataset_id | No | An Apify dataset ID from an upstream run, for example the output of the ICP Fit Scorer. Used only when leads is empty. | |
| campaign_id | Yes | The target campaign in the sequencer. It must already exist. Instantly campaign IDs are UUIDs; Smartlead campaign IDs are numeric. | |
| deduplicate | No | Read the campaign's existing leads first and drop any email already there. Default true. This is a read, so it needs an API key even on a dry run. | |
| field_mapping | No | Override the default Clay column to sequencer field map. Keys are your column names, values are the sequencer field names. Set a value to an empty string to drop that column. A target the sequencer does not have is sent as a custom variable rather than rejected. | |
| min_icp_score | No | Drop leads whose icp_score is below this number. Default 0, which pushes everything. Rows with no icp_score are always kept. | |
| custom_variables | No | Extra column names to pass through as custom variables under their own name. Columns that are neither mapped nor listed here are dropped. |