Add a step
Adds a step at the end of the cadence; its order is the current number of steps plus one. Move it with PUT /v2/sequencer/sequences/{sequence_id}/steps/reorder. A sequence holds at most 50 steps.
The body is checked against the sequence (400 when a rule is broken): an interval sequence needs interval_seconds and refuses date, and a date sequence needs date and refuses interval_seconds. auto_email needs at least one template. templates and new_thread are only for auto_email and manual_email, and call_purpose only for call. Every template must be on your team; archived templates are accepted. LinkedIn, meeting and SMS exist as one-off task types but cannot be cadence steps.
display_name (on a call or task step) and task_note (on any step) take the same variables as a template, except AI lines, and are filled in for each contact on the task the step creates. An email step’s name takes no variables. A token a field cannot take is refused with 400 and code: unknown_variables, the same body as a template write, and each entry in unknown also names its field (display_name or task_note). The reason is not_allowed_here for an AI line, and for anything in double braces in an email step’s name.
personalization turns on AI-written emails for an auto_email or manual_email step: each contact’s email is written for them from the template’s AI lines, or within instructions when it has none. review: "rep" (accepted on auto_email steps only) makes each email a manual_email task for a rep to check first.
Adding a step while people are in the sequence is allowed: anyone still partway through reaches it after the earlier steps, and anyone already finished does not. user_id must be the author, the team owner or a team admin. Send an Idempotency-Key: without one, a retry appends a second step. Counts toward the Sequencer writes rate limit.
Step types
display_name becomes the task’s title, and task_note and
task_priority are copied onto it. LinkedIn, meeting and SMS exist as
one-off task types but cannot be cadence steps.
Variables in the name and note
A step’s name and note can name the person.display_name on a call or task step, and task_note on any
step, take the same variables as a template,
fallbacks included, except AI lines. They are filled in for each contact when the step creates the task: a step
named Call {{first_name}} at {{company}} gives the rep a task called Call Dana at Acme Logistics.
- An empty variable with no fallback shows as its name in brackets, such as
[First name], so the rep sees what is missing. Nothing waits. - An email step’s name is the same for everyone, so it takes no variables.
- AI lines are for emails only. A name or note cannot hold one.
unknown
also names its field:
reason is not_allowed_here for an AI line, and for anything in double braces in an email step’s name. A
typo is not_a_variable, as in a template. See
Calls and to-dos that name the person.
Examples
A call on the day someone is enrolled:Personalization
auto_email and manual_email steps can carry personalization. Each contact’s email is then written for them
when the step runs, from the step’s template and what Salesfinity knows about them.
- A template with AI lines (
{{ai:opener|why I'm reaching out}}) gets those lines written for each person. A template without them is rewritten withininstructions. - Each personalized email uses the team’s daily personalization budget.
- If an email can’t be personalized, for example because the budget is used up, the plain template goes out
instead. A template with AI lines goes to the rep as a
manual_emailtask, rather than out with the lines unwritten. - An empty variable still holds the email when the template’s
if_emptyiswait, personalized or not.
enabled: true on a call or task step is refused with 400
(personalization is only allowed on auto_email and manual_email steps), and so is review: "rep" on a
manual_email step (personalization.review = rep is only allowed on an auto_email step).
Rules
Each of these is a 400 naming the problem:- An
intervalsequence needsinterval_secondsand refusesdate. Adatesequence needsdateand refusesinterval_seconds. auto_emailneeds at least one template.- An
auto_emailstep that starts a thread (the first email step, or one withnew_thread: true) needs asubjecton every template it uses. A step that replies in a thread does not. templatesandnew_threadare only forauto_emailandmanual_email;call_purposeonly forcall.- Every template must be on your team. Archived templates are accepted.
Things to know
- Subjects and threads. An email step replies in the thread of the previous email unless you set
new_thread: true, and a reply does not send its template’ssubject. The first email step always starts a thread, so its template’s subject is the one the prospect sees. - Weights are relative.
weight0 keeps a template on the step but never picks it. Anauto_emailstep whose templates all weigh 0 cannot send. - Adding to a running sequence. Allowed. People still partway through reach the new step after the earlier ones; people who already finished do not.
- Retries. Without an
Idempotency-Key, a retry appends the step twice. user_idmust be the sequence’s author, the team owner or a team admin.
Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings → Connections → API & Webhooks. A missing or invalid key returns HTTP 403.
Headers
Makes this write safe to retry. Send a unique value, such as a UUID, and send the same value again when you retry the same request. A retry with the same key and the same request (method, path including the query string, and JSON body) returns the original successful response without acting twice. The same key with a different body or path returns 409, and so does a retry while the first request is still running; that one is safe to repeat after a moment. A request that fails frees its key, so a retry runs the write again: after a 5xx on a create, confirm with a GET before retrying. Keys are kept for 24 hours and are scoped to your team.
Path Parameters
24-character sequence id.
Body
auto_email sends an email on its own; manual_email, call and task create a task for the rep who owns the enrollment.
auto_email, manual_email, call, task The team member making the change. Must be the sequence's author, the team owner or a team admin, and have an active plan or seat. A 24-character hexadecimal ID.
"507f1f77bcf86cd799439011"
Required on an interval sequence, refused on a date sequence. Seconds to wait after the previous step finished (an email sent, or a task completed or skipped); for the first step, after enrollment. Whole number.
x >= 0Required on a date sequence, refused on an interval sequence. ISO 8601 date-time when the step comes due.
The step's name, up to 200 characters. On a call or task step it titles the task the step creates and can use variables, filled in for each contact (Call {{first_name}} at {{company}}); an empty variable with no fallback shows as its name in brackets, such as [First name]. It takes the same variables as a template except AI lines. An email step's name is the same for everyone and takes no variables.
200auto_email and manual_email only. true starts a new email thread with this step's template subject; otherwise the email replies in the previous email's thread and the template's subject is not sent. The first email step always starts a thread.
Up to 2,000 characters, shown to the rep on the task the step creates. It can use variables on every step type, filled in for each contact; an empty variable with no fallback shows as its name in brackets, such as [First name]. It takes the same variables as a template except AI lines.
2000high, medium, low Seconds after the task is created at which a still-open task expires and the enrollment moves on. Whole number. Omit to let tasks wait indefinitely.
x >= 0call steps only.
auto_email and manual_email only; auto_email needs at least one. 1 to 10 templates, each on your team (archived ones are accepted), picked by weight each time the step runs.
10Email steps only (auto_email, manual_email); enabled: true on any other step is refused with 400. When on, each contact's email is written for them when the step runs, from the step's template and what Salesfinity knows about them: the template's AI lines ({{ai:name|what to write}}) are filled in, or, if it has none, the email is rewritten within instructions. If an email cannot be personalized (for example, the team's daily personalization budget is used up), the plain template is used instead; a template with AI lines goes to the rep as a manual_email task rather than out with the lines unwritten.
Response
The new step.
One step of a cadence.
24-character hexadecimal id.
"507f1f77bcf86cd799439011"
The sequence the step belongs to (24-character id).
"507f1f77bcf86cd799439011"
The team that owns the step (24-character id).
1-based position in the cadence. Steps run in this order; change it with PUT /v2/sequencer/sequences/{sequence_id}/steps/reorder.
auto_email sends an email on its own. manual_email creates a task with the email drafted from a template, for the rep to edit and send. call creates a call task. task creates a to-do. Tasks go to the rep who owns the enrollment.
auto_email, manual_email, call, task On an interval sequence: seconds to wait after the previous step finished (an email sent, or a task completed or skipped) before this step comes due. For the first step, the wait after enrollment. Absent on a date sequence.
On a date sequence: when the step comes due. Absent on an interval sequence.
The step's name. On a call or task step it can hold variables, and titles the task the step creates, filled in for that contact.
Email steps: true starts a new email thread with this step's template subject; false replies in the previous email's thread, so the template's subject is not sent. The first email step always starts a thread.
Note for the rep, filled in for each contact on the task the step creates. It can hold variables.
Priority copied onto the task the step creates. Defaults to medium.
high, medium, low Seconds after the task is created (when the step comes due) at which a still-open task expires and the enrollment moves on to the next step. Absent means tasks wait indefinitely.
Email steps: the templates to pick from, by weight. Empty for call and task steps.
Call steps only: the call purpose set on the step. Absent when none is set.
The step's AI personalization settings: enabled, instructions and review (auto or rep). Absent when personalization was never set.
Number of deliveries from this step, counted as events. Rebuilt every 15 minutes.
Number of opens from this step, counted as events. Rebuilt every 15 minutes.
Number of link clicks from this step, counted as events. Rebuilt every 15 minutes.
Number of replies from this step, counted as events. Rebuilt every 15 minutes.
Number of bounces from this step, counted as events. Rebuilt every 15 minutes.
Number of opt-outs from this step, counted as events. Rebuilt every 15 minutes.
Number of failed sends from this step, counted as events. Rebuilt every 15 minutes.
Times this step ran and produced work: emails sent plus tasks created. Rebuilt every 15 minutes.
When the step was created.
When it last changed.