Using Chatlane for sales outreach
Upload a prospect list, turn it into a segment, and run an AI-personalised outreach sequence
Chatlane's automation was built for lifecycle messaging — reacting to what customers do. The same pieces work just as well for outbound sales: upload a curated prospect list, turn it into a segment, and run a personalised sequence over it.
This article walks the whole thing end to end, using a worked example: a campaign targeting apostille and legalisation companies.
The shape of a campaign
- Upload your list as a CSV, with any extra columns you want to personalise on.
- Create a segment from that upload, so the list becomes a live group you can target.
- Build a workflow triggered by entry to that segment.
- Activate it, enrolling the people already on the list.
The order matters, and step 4 has a checkbox that's easy to miss — more on that below.
1. Upload your list
On Contacts, click Import. Start by downloading the template so your headings match:
name,email,phone,company
Ada Lovelace,[email protected],+447700900123,Analytical Engines Ltd
Three column names are reserved and map onto the contact record itself:
| Column | Notes |
|---|---|
name |
Optional. If missing, the contact is named from their email or phone. |
email |
Used for matching, and required to send email. |
phone |
Any format — Chatlane normalises it. Invalid numbers fail the row rather than the file. |
Every other column becomes a contact attribute. A company column creates a company attribute; annual_volume creates annual_volume. This is the part that makes outreach personal: attributes can be used in segment rules, written into message copy as {{contact.attributes.company}}, and read by an AI agent when it drafts.
Three things worth knowing before you upload:
- Keep each column's values consistent. An attribute's type is decided the first time Chatlane sees it. A column whose first value is
2400becomes a number (so you can filter "more than 1000"); if the first value isunknown, it becomes text and numeric comparisons won't work on it afterwards. - Blank cells are skipped, not stored as empty values.
- A row needs an email or a phone. Rows with neither are skipped; rows with an invalid email or phone are reported as failures. Neither stops the rest of the file.
Duplicates and unsubscribes
Chatlane matches each row against your existing contacts — email first, then phone. What happens next is your choice:
- Overwrite existing contacts (default): matched contacts get their name, email, phone and attributes updated from the file. Useful for enriching people you already know.
- Unticked: matched contacts are left completely alone. Only genuinely new people are created. They still join the segment.
Whichever you choose, an import never resubscribes someone who opted out. If a contact previously unsubscribed and reappears in your CSV, they stay suppressed.
Automations are off by default
The upload dialog has an automation checkbox that stays off unless you tick it. Leave it off for a cold list. With it on, every imported contact fires a "contact created" event — which can enrol them in unrelated workflows and queue an AI agent run per row. On a list of a few thousand, that's a lot of unintended messages and cost.
You'll still be able to run your outreach workflow deliberately; see step 4.
2. Create the segment
In the same dialog, choose Add to a segment → Create new and name it — Apostille Clients June 2026, say.
Chatlane stamps a hidden marker attribute on everyone in the upload and creates a segment that matches it. That means the list behaves like every other segment: it stays accurate on its own, and you can build workflows, broadcasts and reports on it.
Appending to a list later
Uploading again lets you add to an existing list — but only lists created by a previous import.
Ordinary segments aren't offered, and that's deliberate. Every other segment works out its own membership from rules, so anything an upload forced into it would be removed the next time the segment recalculated. If you want a rule-based segment to include your uploaded prospects, add a rule to it instead — for example "has the Apostille Clients June 2026 attribute".
3. Build the workflow
Create a workflow with Trigger: Contact enters a segment, and pick your list.
A few settings matter more than usual for outbound:
Goal events. Add the events that mean "this worked" — enquiry or enquiry_submitted. Anyone who fires one leaves the sequence immediately, so you stop chasing people who've already responded. Don't add a Filter step that re-checks the same event; goal events are evaluated before every step and already cover it.
Conversion goal. Set this to the event you actually care about, with a value property if you track deal size. Conversion rate then appears on the workflow list and detail pages.
Re-enrolment. For a one-off campaign, leave it at Once ever so nobody gets the sequence twice.
The Trigger Agent step
A Trigger Agent step lets the agent write each message individually, rather than sending the same copy to everyone.
The agent receives the contact's name, email, phone and all their attributes — including everything from your CSV — so an instruction like "Check the contact attributes and draft a personalised email explaining how we can help" has real material to work with. It also gets the current date and any conversation history.
Two settings to get right:
- Channel. Prospects from a CSV have never messaged you, so "Contact's last-used channel" will always fall through to whatever fallback you set. Choose email explicitly. If the fallback is left on web chat, you'll generate widget messages nobody ever opens.
- Send policy. Always auto-send sends without review. For a first campaign, consider Draft instead: the agent writes each email and a human approves it. You can switch to auto-send once you trust the copy.
The email goes out with the From Name, From Address and signature configured on the inbox channel. If your signature or From Name uses {{sender.name}}, that renders the agent's name — so name your agent something a customer should see, or hardcode a person's name on the channel instead.
Contacts without an email address fail that step cleanly and move on; nothing is sent and no AI credit is spent on them.
4. Activate — and enrol the people already on the list
This is the step that catches people out.
Workflows enrol contacts at the moment they enter a segment. Your prospects entered when you uploaded them, which was before the workflow existed — so activating it normally would only catch people added from that point on, and your existing list would sit there untouched.
To include them, tick Enrol contacts already in this segment on the workflow, then activate. Chatlane sweeps everyone currently in the segment into the workflow.
It's a one-shot setting: it runs once at activation and then clears itself, so pausing and reactivating later won't message everyone a second time. It's also safe if you activate twice by accident — nobody can hold two active enrolments in the same workflow.
Watching it run
The workflow page shows every enrolment, with a filter for searching by name or email and narrowing by status:
- Active — still moving through the sequence.
- Completed — reached the end.
- Exited — left early, usually because they hit a goal event.
- Failed — a step errored for that contact.
- Converted — fired your conversion event. This is shown as a separate badge rather than a status, because someone can convert while still active in the sequence.
Per-step counters show how many contacts have cleared each step, so you can see exactly where a sequence stalls.
If nothing seems to happen
Enrolments appear immediately, but the steps themselves are advanced by a background process. If contacts are enrolled and sitting at step 1 with nothing sent, the usual cause is that the scheduler or the queue worker isn't running. Both are needed:
- a scheduler process, and
- a queue worker consuming the
marketingqueue as well asdefault.
Ask whoever runs your deployment to confirm both. On a local install the equivalents are php artisan schedule:work and php artisan queue:work --queue=default,marketing.
Before you send to a real list
- Test with one contact first. Make a segment of one and run the whole thing end to end.
- Check the sending domain is authenticated with your email provider. Cold outreach to an unauthenticated domain lands in spam or bounces outright.
- Watch the first few messages the agent writes before switching to auto-send.
- Respect consent. Chatlane won't message anyone who has unsubscribed, but whether you have a lawful basis to contact a purchased or scraped list is your call, not the software's.
Related
- Build segments of contacts — the rule builder in full
- Automate journeys with workflows — every step type, branching, and goals
- Events and contact attributes — how attributes and events work
- Send broadcasts to a segment — one-off sends without a sequence
- Run your AI agent on contacts — research and enrich leads before you write to them