Create a sequence
Creates a sequence with no steps. It starts disabled, with user_id as its author. Next, add steps (POST /v2/sequencer/sequences/{sequence_id}/steps) and enable it (POST /v2/sequencer/sequences/{id}/enable). People can be added before then: they wait as pending and start when the sequence is enabled.
Only the author, the team owner or a team admin can change the sequence later. policy must be a rules-of-engagement policy on your team. A member who is not a team admin may only pick shared mailboxes, or mailboxes assigned to them, in email_account_ids. If you send schedule, send all five of its fields.
Send an Idempotency-Key: without one, a retried request creates a second sequence. Counts toward the Sequencer writes rate limit.
user_id as its author. Only the author,
the team owner or a team admin can change it later.
Build a sequence end to end
- Create the sequence with this call.
- Create an email template for each email you want to send.
- Add steps, in the order they should run.
- Add contacts. While the sequence is
disabled they wait as
pending. - Enable the sequence. Everyone waiting starts.
Example
enabled: false and sequence_step_count: 0.
Things to know
scheduleis all or nothing. Send all five fields, or leavescheduleout. A partial schedule is refused with 400. Without one, the sequence uses the team’s default schedule, or, when the team has none, Monday to Friday from 8 to 17 in each prospect’s timezone (UTC when it is unknown).sequence_typeis fixed once there are steps.intervaltimes each step from the previous one;dategives each step a fixed date. Changing it later is refused with 409.primary_reply_pause_durationis in seconds. One week is604800.transactional: trueskips the suppression list when people are added. Sends still never go to an address suppressed as bounced, complained or do-not-contact. Use it only for mail a recipient asked for.- Mailboxes. Leave
email_account_idsout to send from the author’s assigned mailboxes, or from the team’s shared ones when the author has none. A member who is not a team admin can only pick shared mailboxes or mailboxes assigned to them; anything else is a 422. List them with List sending mailboxes. - Retries. Without an
Idempotency-Key, retrying a request whose response you lost creates a second sequence.
When it fails
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.
Body
Sequence name, 1 to 200 characters.
200"Q4 outbound - VP Operations"
The team member creating the sequence; it becomes the author. Must be an active team member with an active plan or seat. A 24-character hexadecimal ID.
"507f1f77bcf86cd799439011"
Up to 2,000 characters.
2000Up to 20 labels for filtering, each up to 50 characters.
2050interval: each step waits interval_seconds after the previous one. date: each step comes due on a fixed date. Cannot be changed later once the sequence has steps.
interval, date Rules-of-engagement policy id; it must be on your team (404 otherwise). Omit, or send null, to use the team default policy. A 24-character hexadecimal ID.
Most new enrollments this sequence accepts per owner per day, counted from midnight in the schedule's timezone. Further adds that day are refused with throttle_daily. Whole number. Omit for no cap.
x >= 0Most live (pending, active or paused) enrollments this sequence holds per owner. Further adds are refused with throttle_capacity. Whole number. Omit for no cap.
x >= 0When true, adding people to the sequence is refused with 422 while it keeps running for those already in it.
Marks the sequence transactional. Enrollment then skips the suppression list entirely, and sends ignore unsubscribed and manual suppression entries; an address suppressed as bounced, complained or dnc is still never emailed. Only for mail a recipient asked for.
Adds an open-tracking pixel to this sequence's emails.
Rewrites links in this sequence's emails to track clicks.
What a reply that reads as interested, a meeting request, or unclear does to the enrollment: finish ends it, continue carries on, pause pauses it. Other replies are handled the same way in every sequence: an out-of-office reply pauses the enrollment until the return date, an auto-reply is ignored, an unsubscribe request opts the person out, and a not-interested or wrong-person reply finishes the enrollment.
finish, continue, pause Seconds to pause for when primary_reply_action is pause; the enrollment then resumes on its own. Omit, or send 0, to pause until someone resumes it. Whole number.
x >= 0When the sequence may act. Send all five fields together: a partial schedule is rejected with 400. Omit schedule to use the team's default schedule, or, when the team has none, Monday to Friday, 8 to 17, in each prospect's timezone (UTC when unknown). A step that comes due outside the window waits for the next open hour.
Mailbox ids this sequence sends from (see GET /v2/sequencer/email-accounts). Omit, or send an empty array, to send from the mailboxes assigned to the sequence's author, or from the team's shared mailboxes when the author has none. A member who is not a team admin may only pick shared mailboxes or mailboxes assigned to them (422 otherwise).
100Response
The new sequence. can_manage is not included.
A Sequencer sequence (a cadence). can_manage is returned by list and get only; step_type_counts and enrollment_counts by list only.
24-character hexadecimal id.
"507f1f77bcf86cd799439011"
The team that owns the sequence (24-character id).
Sequence name.
Free-text labels for filtering.
Whether the sequence is running. New and duplicated sequences start false.
interval: each step waits interval_seconds after the previous one. date: each step comes due on its own date.
interval, date Author's team member id. Only the author, the team owner or an admin can change the sequence. On GET /v2/sequencer/sequences this field arrives expanded, as an object with _id, first_name, last_name and email, not as a string.
Rules-of-engagement policy id, or null (or absent) when the sequence uses the team default policy.
Whether the sequence is transactional: enrollment skips the suppression list, and sends skip only unsubscribed and manual suppression entries.
Most live (pending, active or paused) enrollments per owner. Absent when there is no cap.
Most new enrollments per owner per day. Absent when there is no cap.
When true, adding people is refused while the sequence keeps running for those already in it.
Whether emails carry an open-tracking pixel.
Whether links in emails are rewritten to track clicks.
Number of steps. Updated whenever a step is added, changed or deleted.
Sum of the steps' interval_seconds, rounded up to whole days. Always 0 on a date sequence.
Distinct people reached: sent or delivered an email, or a completed call or task. Rebuilt every 15 minutes.
Distinct people who replied. Rebuilt every 15 minutes.
Number of opens, counted as events, not people. Rebuilt every 15 minutes.
Number of link clicks, counted as events, not people. Rebuilt every 15 minutes.
Number of replies, counted as events, not people. Rebuilt every 15 minutes.
Number of bounces, counted as events, not people. Rebuilt every 15 minutes.
Number of opt-outs, counted as events, not people. Rebuilt every 15 minutes.
Number of deliveries, counted as events, not people. Rebuilt every 15 minutes.
When the sequence was last enabled. Absent if it never has been.
When the sequence was archived in the dashboard, or null. Archived sequences are left out of the list and cannot be enabled or enrolled into; the API has no archive endpoint.
What a reply that reads as interested, a meeting request, or unclear does to the enrollment.
finish, continue, pause Seconds an enrollment pauses for when primary_reply_action is pause. Absent means the pause lasts until someone resumes it.
The sequence's own sending window. Absent when the sequence uses the team default schedule.
Mailbox ids the sequence sends from. Empty means the author's assigned mailboxes, or the team's shared ones when the author has none.
Number of failed sends, counted as events. Rebuilt every 15 minutes.
Number of times a step ran and produced work: emails sent plus tasks created. Rebuilt every 15 minutes.
num_replied_prospects as a percentage of num_contacted_prospects, 0 to 100, rounded. 0 while nobody has been contacted.
Share of steps that are auto_email, 0 to 100, rounded.
When anything last happened in the sequence (an email, a task, a reply). Null for a sequence that has done nothing.
List only. How many steps of each type the sequence has. Every type is always present.
List only. Live count of the sequence's enrollments in each state, plus total. Every state is always present.
Whether the member the request acted as may change this sequence. API reads act as the team owner, so this is true on every API read; it does not tell you whether a given user_id may edit. Returned by list and get only.
When the sequence was created.
When it last changed.