Who this is for: self-serve plans (Free, Starter, Pro, Enterprise). If you bought a Cleanlist AppSumo lifetime deal, your features, limits, and pricing are different. See the AppSumo documentation instead. Support agent: confirm whether the user is self-serve or AppSumo before giving plan-specific advice.
TL;DR: Add steps with Add step on the play canvas. Steps are grouped as Source, Enrich, AI, Logic, CRM and Output. Only Enrich, Validate and the Agents step (skills) cost credits; everything else is free. Each step card shows its price, for example "1 /record". Approve puts a person in the loop, and the Webhook step authenticates with Secrets saved by an admin.
Play steps reference
Each record that enters a play runs through its steps in order. Clu adds and configures steps when it builds a play, and you can add or change them yourself with Add step on the canvas. Each step card shows its cost per record or per company.
All steps at a glance
| Category | Step | What it does | Credits |
|---|---|---|---|
| Source | Find People | Find matching people at each company | Free |
| Source | Get company | Turn people into one record per company | Free |
| Enrich | Enrich | Find emails, phones, and profile data | Per result, see below |
| Enrich | Validate | Verify email and phone quality | 0.5 per check |
| Enrich | Find meetings | Next and last Google Calendar meeting with each record | Free |
| Enrich | Get Fathom call notes | Read the latest Fathom call: summary and action items | Free |
| AI | Agents | Run skills on each record | Per skill, see below |
| Logic | Branch | Route records down different paths | Free |
| Logic | Approve | Ask a person before records continue | Free |
| Logic | Wait | Resume each record after a time or on a date | Free |
| Logic | Code | Compute typed outputs from declared record fields | Free |
| Logic | Hand off | Send records to another play of this agent | Free |
| CRM | CRM Action | Read CRM data or apply a saved CRM action | Free |
| CRM | Review duplicates / Merge duplicates | Duplicate cleanup only | Free |
| Output | Add to sequence | Add people to a sequence | Free |
| Output | Notify | Send a run summary to Slack or email | Free |
| Output | Webhook | Send records to an https endpoint | Free |
| Output | Export to Google Sheets | Add or update rows in a Google Sheet | Free |
| Output | Create a Google Doc | Create a doc for each record | Free |
| Output | Add a page to a Notion database / Update a Notion page | Add or update a Notion page for each record | Free |
Get company, Approve, Wait, Code, Webhook and Hand off work only in a play that belongs to an agent, not in a library play.
Source steps
Find People
Finds people matching your filters at each company the play is working on. People per company: 1 to 25 (default 10). Free.
Get company
Turns people into one record per company, so later steps (for example a Research skill on the company) run once per company instead of once per person. Company source: Employer or CRM account. Free.
Enrich steps
Enrich
| Option | Credits |
|---|---|
| Work email | 1 per email found |
| Phone | 10 per phone found |
| Profile | 0.5 when found, free when an email or phone is also found |
| Company | 1 per company |
| Mobile only (Phone option, agent plays) | Adds a line check, 0.5 per number |
| Find LinkedIn from email (agent plays) | 1 per attempt |
| Personal email (agent plays) | 1.5 per completed attempt, found or not |
Nothing is charged for an email, phone or profile that isn't found. See Waterfall enrichment.
Validate
Verify email and Verify phone, 0.5 credits each per record.
Find meetings and Get Fathom call notes
Find meetings adds the next and last Google Calendar meeting with each record. Get Fathom call notes adds the latest Fathom call's summary and action items. Both are free and need the app connected. See Google, Airtable, Notion and Fathom.
AI: the Agents step
The Agents step runs one or more skills on each record:
| Skill | What it returns | Credits per record |
|---|---|---|
| Research | Live web research on the company or contact | From your workspace's estimate (defaults about 6.3 contact, 12.2 both, 17.8 company) |
| Qualification | ICP fit score, verdict, reasons and CRM status | From your workspace's estimate (default about 0.6) |
| Employment check | Whether the person still works at the company, and where they went | Up to 3.5, billed after the check for the lookups made |
| Write | Copy written for the record. Kinds: First line, Email, LinkedIn note, Call opener, Account brief, CRM note | 3 |
| Your saved per-record skills | The outputs you defined | From the prompt's estimate (about 0.2 to 0.6) |
| Agent instructions | The agent's own instructions run on each record, with optional tools Web search, Read web pages, CRM record and Knowledge | 3, or 5 with Web search or Read web pages |
- The play's projected cost (on the step card and in the Test on 5 records ceiling) assumes the longest allowed prompt, so it can be higher than what a run actually charges. Runs charge the skill's real estimate.
- Agent instructions can read your Knowledge sources at no extra cost.
- For Employment check, the Invalid email counts as left policy can be set by asking Clu.
- Skill outputs (for example
{{play.first_line}}from Write) can feed later steps such as Add to sequence. More on each skill in Skills.
Logic steps
Branch
Routes records down 2 to 6 paths: If, Else if and Else. Each path has its own conditions on record fields, skill outputs or CRM data. A record goes down the first path it matches; the rest fall to Else, and leave the play if no step follows Else. Free.
Approve
Holds each record until a person approves or rejects it. Free. Full details in Approvals below.
Wait
| Setting | Options |
|---|---|
| For a time | Hours 1 to 72, Days 1 to 365, or Business days 1 to 60 |
| Until a date | A Date field on the record, with Days before or after (up to 365 either way) |
| If the date is missing | Drop from the play or Continue on the next run |
| If the date has passed | Continue on the next run or Drop from the play |
Waiting records show under Waiting records on the Runs tab. Free.
Code
Runs JavaScript to compute typed outputs from record fields you declare as inputs. Limits: up to 20,000 characters of code, 1 to 30 inputs, 1 to 12 typed outputs, 3 seconds per batch of records. Code has no network access, cannot import packages and cannot read secrets. Free.
Hand off
Sends records to another play of the same agent (Hand records to), which receives them with the Another play sends records trigger. New play creates the receiving play. Free.
CRM steps
CRM Action
Reads from or writes to Salesforce or HubSpot. Free (it uses your CRM's API calls, not credits).
| Action | What it does |
|---|---|
| Sync | Matches the record and creates or updates it (Match and create or update), or always creates one (Create a new record). Record type: Use CRM default, Contact or Lead |
| Look up | Reads the matching CRM record (owner, link, related data) without writing |
| Update fields | Writes chosen fields: Fill only when empty, Overwrite when different or Always overwrite |
| Create task | Task type Call, Email or To do; Priority; Due date (Days after this run or An upstream date field); Create once per source record or per CRM target |
| Log note | Adds a note to the record |
| Add to campaign | Salesforce campaign (with an optional campaign member status); on HubSpot it reads Add to list |
| Set owner | Changes the record owner |
| Add contact role | Salesforce only |
Owner assignment options: Keep current owner (your CRM defaults), Assign one specific owner, Round-robin across all owners, Round-robin across chosen owners, Account owner, Owner from a field, or Rules, each with an Otherwise fallback.
Write safety: Inherit CRM protections (the default, follows your CRM settings, for example leaving records a rep owns alone) or Allow updates to owned records.
Review duplicates and Merge duplicates
Used only by CRM cleanup plays with the CRM duplicates trigger. See CRM duplicate cleanup.
Output steps
Add to sequence
Send to: a Cleanlist sequence, or (on an agent's play) lemlist, Outreach or Salesloft. Free: sending costs no credits.
Cleanlist sequence
- Pick a Sequence, or create a new one.
- Values stores per-person text from earlier steps (for example a Write first line) that your sequence emails use as
{{play.first_line}}or{{play.<value name>}}. A person missing a value a step needs is stopped with the reason, for example "Stopped: no first line written". - People who replied or were stopped in another sequence are skipped. People added to a draft sequence wait there and start when you launch it.
- Needs access to Sequences.
lemlist, Outreach or Salesloft
- Connect from the step: Connect lemlist and Connect Salesloft take an API key; Connect Outreach opens Outreach sign-in in a new tab. An organization admin makes the connection. These connections are not on the Integrations page.
- Pick the Sequence and Status. Sender: Sequence default, Record owner or One user (lemlist uses the sequence default), with a fallback user (Outreach requires one).
- If active in another sequence: Skip (default) or Add anyway.
- People are skipped when they have no email, unsubscribed from Cleanlist sequences, have a risky or invalid email, are already in that sequence, opted out or bounced there, are active elsewhere (unless Add anyway), or have no mapped sender. Existing people in the sequencer are never updated.
Notify
| Setting | Options |
|---|---|
| Send to | Slack (pick a channel) or Email (with a Subject) |
| Send (agent plays) | Summary (one message per run), Digest (one message listing the records), or Each record (one message per record) |
| Recipients (Digest and Each record) | The Slack channel or default email recipients, or Each record's owner, with a choice for owners who can't be reached (for example Skip the record) |
| Message limit | 1 to 200 messages |
| Approve to sequence | Adds a Slack button to approve adding the people to a sequence. The button expires after 7 days. |
Slack channels must be internal to your Slack workspace. Free.
Webhook
Sends records to your own https endpoint. Free.
| Setting | Options |
|---|---|
| URL | https only |
| Send | Each record, or Batches with a Batch size of 1 to 100 |
| Body | A default JSON body, or your own |
| Authentication Type | None, Bearer token, Custom header (with a Header name), Basic or HMAC signature, each using a Saved secret |
| Headers | Up to 10 extra headers (Add header) |
| Outputs | With Each record, read values from the response into typed outputs with a response path such as $.data.score |
| Calls per period | 1 to 10,000 (default 1,000) |
Use Send test to check the endpoint once the play is saved. Secrets come from Settings → Connections → Secrets; see Secrets.
Export to Google Sheets
Adds a row per record, or updates the matching row, in the Google Sheet and Tab you pick, with the columns you choose. Free.
Create a Google Doc and Notion steps
Create a Google Doc creates one doc per record. Add a page to a Notion database adds one page per record, and Update a Notion page updates the matching page. Free; the apps must be connected.
Brief
Scheduled briefs (an agent with a Schedule trigger and no record play) have a Brief step: one unattended Clu turn that writes the brief, then a Notify step that sends it. It is charged like a Clu message, up to the agent's Brief credits per run (default 100, at most 1,000). See Agents: Scheduled briefs.
Failures and retries
On an agent's play, open a step's On failure settings:
| Setting | Options |
|---|---|
| Retry temporary failures | Off, Once, Twice or 3 times, retried after 1, 6 and 24 hours |
| If this step fails | Stop, Continue, or Error path (send the record down a separate path) |
New Enrich and CRM Action steps on an agent's play retry 3 times by default. A retry restarts at the step that failed and never charges earlier steps again. Records waiting for a retry show under Waiting records on the Runs tab.
Play size limits
A play can have up to 50 steps, branches nested up to 10 deep, and is limited to 200 KB in size. Records parked by Wait, Approve, retries and Hand off are capped at 50,000 per play.
Approvals
The Approve step pauses records until a person decides. Approvals appear on the agent's Approvals tab, in the Approvals inbox and, if you choose, in Slack.
Approve step settings
| Setting | Options |
|---|---|
| Who approves | Play owner, People (up to 10), or Record owner |
| Notifications | Slack, Email, or neither (decide in the app only) |
| Deadline | None, or After a number of days (1 to 30) |
| At the deadline | Reject (default) or Approve |
| Show fields, up to 8 | The record fields approvers see |
Approvers get one reminder after 24 hours. Approved records continue on the Approved path. Rejected records take the Rejected path, or leave the play if it has none.
Where to decide
- Approvals inbox: on the Agents tab, click Approvals. Tabs Pending and Decided, with Refresh and Download CSV. Each row shows the agent, play, step, how long it has waited, and when it expires (or "No deadline"). Select rows and click Approve selected (N) or Reject selected, or open one with Review and approve / Review and reject.
- The agent's Approvals tab: the same records for one agent, plus Approve all at this step (N). The tab appears only when a play has an Approve step or approvals are pending.
- Slack: approvers linked to Slack get Approve and Reject buttons (with reasons Not a fit, Wrong timing, Already in touch, Wrong person), and Approve all.
When you confirm, Cleanlist explains what happens next ("Records continue on the saved Approved path." or "Records take the Rejected path. With no Rejected path, they leave the play.") and lets you add a Reason, optional. When you approve a single record, you can edit the fields shown before it continues, except emails, phones, LinkedIn URLs and IDs.
Who can decide
An approver listed on the step, or an organization admin. In Slack, only the linked approver can use the buttons. The agent must be on: inside a paused agent the Approvals tab shows "Turn the agent on to decide." With nothing pending, the inbox shows "No approvals waiting".
Secrets
Secrets hold tokens and keys for Webhook step authentication, so they never appear in a play or in chat.
- Where: Settings → Connections → Secrets. Visible to organization admins in workspaces that have Agents.
- Add secret: a Name (up to 80 characters) and a Value (up to 8,192 characters), then Save secret. "The value will be hidden after saving."
- Saved secrets lists each secret with a short hint (•••• and the last characters) and when it was last used.
- Archive removes a secret from use ("It will no longer be available for Webhook steps."). A secret that a Webhook step still uses cannot be archived.
- Values are encrypted at rest. Only Webhook steps can use secrets; Code steps cannot.
Related
- Plays and triggers: what starts a play, schedules, runs and auto-pause
- Agents: build, test and turn on agents
- Skills: Research, Qualification, Custom and Employment check
- Sequences: the Cleanlist sequences Add to sequence uses
- CRM duplicate cleanup
- Integrations: HubSpot, Salesforce, Slack and more
- Credits and pricing