Before you start
Step by step
1
Write the opener prompt and test it on ten rows
Ask for exactly the sentence you want to send, and tell the column what to do when it finds nothing, so every row ends up with a usable line:
deep_research checks live sources for every row and records them, which matters when the line will be sent under your name. For large lists where a lighter touch is fine, standard is cheaper.2
Check the lines and the sources behind them
Poll If the lines are too long, too salesy or wrong, change the prompt now with
GET /business/lists/{listId}/smart-columns/{jobId}/status until the run finishes, then read the lines under columnValues on GET /business/lists/{listId}/rows. For any line you want to check, ask where it came from:PATCH /business/lists/{listId}/smart-columns/{columnId}. A prompt edit rewrites every line already written, so it is cheapest while that is only ten rows.3
Write lines for the rest of the list
new_only writes lines only for rows that do not have one yet, so the ten sample rows are not billed twice. You can build the campaign in the next steps while this runs. Just do not approve it until the run has finished.4
Create a manual campaign
Column tokens go in the steps you write yourself, so use a manual campaign. Its steps exist as soon as it is created:Then confirm the exact token for the column:
5
Put the opener in the first email
List the steps with Write the follow-up step the same way, with
GET /business/campaigns/{campaignId}/steps, then write the first one:daysBetween set to the wait in days. Built-in tokens such as {Contact First Name} use single braces and exact names; see Merge tokens.6
Wait for every line, then close the gaps
Poll the re-run’s status until it is This only removes them from the list, not from your workspace. Put them in a list of their own if you want to write their openers by hand.
completed or partially_completed. Then page through GET /business/lists/{listId}/rows and look for rows where columnValues has no value for the column. Those are the rows the column could not answer.A contact with an empty cell would get the email with a gap where the opener goes. Take them off the list before you approve:7
Preview, then approve
Render the step for a sample contact with
POST /business/campaigns/{campaignId}/steps/{stepId}/generate and read it as the prospect will see it. Then approve:How column values reach the email
- The value is read when each email is scheduled. It is then frozen onto the queued email, so changing the column afterwards does not rewrite emails already queued. Finish editing the prompt before you approve.
- An empty cell leaves a gap. A row the column failed on, or found nothing for, renders as nothing, and the email still sends. That is why step 6 removes those contacts first.
- A line still being written stops the contact. If a contact’s cell is still running when their step comes due, that step is not scheduled and is not retried automatically. Always let the run finish before the campaign reaches a contact.
Add new prospects in batches
Columns belong to a list, and a dynamic campaign enrolls new rows within about 30 minutes, often before a smart column could write their line. So add new prospects in batches rather than straight to the campaign’s list:- Put the batch in a new list and add a smart column named
Openerwith the same prompt. - Let it finish, and remove any rows it could not answer.
- Add the batch’s list to the campaign with
PATCH /business/campaigns/{campaignId}and the fulllistIds, old lists included. WithisDynamic: trueset on the campaign, at creation or in the samePATCH, it enrolls the batch on its next check.
{Column: Opener} finds each contact’s line on whichever list holds it.
What it costs
Troubleshooting
Run the whole workflow
Python script: researched openers into a manual campaign
Python script: researched openers into a manual campaign
Do it from Claude
With the Fuse MCP server connected:On my list “Fintech finance leaders”, add a smart column called “Opener” that writes one sentence under 25 words referring to something specific each person’s company announced in the last six months. Run it on ten rows and show me the lines with their sources.
Run “Opener” on the rest of the list and wait for it to finish. Remove anyone it could not write a line for, then draft a two-step manual campaign on the list that opens the first email with that column. Don’t launch it.The assistant uses the smart column and list tools, then creates the campaign as a draft. Removing rows is marked as destructive, so your client may ask you to approve that step.
Related
Smart columns
Engines, prompts, re-runs and provenance.
Campaigns
Merge tokens and how column values render.
Qualify leads before enriching
Build the list this workflow personalizes.
Follow up on replies and clicks
Hand off repliers and re-engage clickers after the campaign.