Skip to main content
POST
Add a step
Adds a step at the end of the cadence. To put it somewhere else, add it and then reorder the steps. A sequence holds at most 50 steps.

Step types

Tasks go to the rep who owns the enrollment. 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.

Examples

A call on the day someone is enrolled:
Two days later, an email that A/B tests two templates, sending the second three times as often:

Rules

Each of these is a 400 naming the problem:
  • An interval sequence needs interval_seconds and refuses date. A date sequence needs date and refuses interval_seconds.
  • auto_email needs at least one template.
  • An auto_email step that starts a thread (the first email step, or one with new_thread: true) needs a subject on every template it uses. A step that replies in a thread does not.
  • templates and new_thread are only for auto_email and manual_email; call_purpose only for call.
  • Every template must be on your team. Archived templates are accepted.
A 51st step is refused with 422.

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’s subject. The first email step always starts a thread, so its template’s subject is the one the prospect sees.
  • Weights are relative. weight 0 keeps a template on the step but never picks it. An auto_email step 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_id must be the sequence’s author, the team owner or a team admin.

Authorizations

x-api-key
string
header
required

Team-scoped API key generated in the Salesfinity dashboard under Settings → Connections → API & Webhooks. A missing or invalid key returns HTTP 403.

Headers

Idempotency-Key
string

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

sequence_id
string
required

24-character sequence id.

Body

application/json
step_type
enum<string>
required

auto_email sends an email on its own; manual_email, call and task create a task for the rep who owns the enrollment.

Available options:
auto_email,
manual_email,
call,
task
user_id
string
required

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.

Example:

"507f1f77bcf86cd799439011"

interval_seconds
number

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.

Required range: x >= 0
date
string<date-time>

Required on a date sequence, refused on an interval sequence. ISO 8601 date-time when the step comes due.

display_name
string

Step label, up to 200 characters. Becomes the title of the task the step creates.

Maximum string length: 200
new_thread
boolean

auto_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.

task_note
string

Up to 2,000 characters, copied onto the task the step creates.

Maximum string length: 2000
task_priority
enum<string>
default:medium
Available options:
high,
medium,
low
task_autoskip_delay
number

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.

Required range: x >= 0
call_purpose
object

call steps only.

templates
object[]

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.

Maximum array length: 10

Response

The new step.

One step of a cadence.

_id
string

24-character hexadecimal id.

Example:

"507f1f77bcf86cd799439011"

sequence
string

The sequence the step belongs to (24-character id).

Example:

"507f1f77bcf86cd799439011"

team
string

The team that owns the step (24-character id).

order
integer

1-based position in the cadence. Steps run in this order; change it with PUT /v2/sequencer/sequences/{sequence_id}/steps/reorder.

step_type
enum<string>

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.

Available options:
auto_email,
manual_email,
call,
task
interval_seconds
integer | null

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.

date
string<date-time> | null

On a date sequence: when the step comes due. Absent on an interval sequence.

display_name
string | null

Step label. Becomes the title of the task the step creates.

new_thread
boolean

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.

task_note
string | null

Note copied onto the task the step creates.

task_priority
enum<string>

Priority copied onto the task the step creates. Defaults to medium.

Available options:
high,
medium,
low
task_autoskip_delay
integer | null

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.

templates
object[]

Email steps: the templates to pick from, by weight. Empty for call and task steps.

call_purpose
object

Call steps only: the call purpose set on the step. Absent when none is set.

deliver_count
integer

Number of deliveries from this step, counted as events. Rebuilt every 15 minutes.

open_count
integer

Number of opens from this step, counted as events. Rebuilt every 15 minutes.

click_count
integer

Number of link clicks from this step, counted as events. Rebuilt every 15 minutes.

reply_count
integer

Number of replies from this step, counted as events. Rebuilt every 15 minutes.

bounce_count
integer

Number of bounces from this step, counted as events. Rebuilt every 15 minutes.

opt_out_count
integer

Number of opt-outs from this step, counted as events. Rebuilt every 15 minutes.

failure_count
integer

Number of failed sends from this step, counted as events. Rebuilt every 15 minutes.

schedule_count
integer

Times this step ran and produced work: emails sent plus tasks created. Rebuilt every 15 minutes.

created_at
string<date-time>

When the step was created.

updated_at
string<date-time>

When it last changed.