Sequence examples
Three complete Sequence documents. Each passes curviate motion lint with no errors; post one as the sequence of POST /v1/motions with a name, and the Motion's schedule, limits and Accounts take their defaults. See Sequence rules for every check.
Connect and converse
Visit, like a recent post, invite without a note, then two messages after acceptance.
{
"$schema": "https://docs.curviate.com/schemas/sequence/v1.json",
"on_reply": "replied",
"steps": [
{
"id": "visit",
"do": "profile.view",
"note": "Warm-up visit before any contact."
},
{
"id": "has_post",
"if": {
"contact.posted_within": "14d"
},
"then": "w_like",
"else": "w_invite"
},
{
"id": "w_like",
"wait": "1d"
},
{
"id": "like",
"do": "post.react",
"with": {
"post": "latest",
"newer_than": "14d",
"reaction": "like"
}
},
{
"id": "w_invite",
"wait": "1d"
},
{
"id": "invite",
"do": "invite.send",
"with": {
"withdraw_after": "21d"
},
"note": "No note: blank invites are accepted slightly more often."
},
{
"id": "accepted",
"until": "invite.accepted",
"timeout": "21d",
"then": "w_opener",
"else": "end"
},
{
"id": "w_opener",
"wait": "1d"
},
{
"id": "opener",
"do": "message.send",
"variants": [
{
"id": "opener_named",
"text": "Hi {{first_name}}, {{opener}}"
},
{
"id": "opener_plain",
"text": "{{opener}}"
}
],
"with": {
"fallback": "Hi, glad we are connected. How do you handle LinkedIn outreach today?"
},
"note": "No link in the first message."
},
{
"id": "r_opener",
"until": "message.replied",
"timeout": "4d",
"then": "replied"
},
{
"id": "followup",
"do": "message.send",
"with": {
"text": "{{followup}}",
"fallback": "Quick follow-up in case this got buried. Happy to leave it here if the timing is off."
}
},
{
"id": "r_followup",
"until": "message.replied",
"timeout": "7d",
"then": "replied"
},
{
"id": "silent",
"tag": "no-reply",
"next": "end"
},
{
"id": "replied",
"tag": "in-conversation",
"next": "end"
}
]
}Engage then connect
React and comment on a recent post, then invite and two messages.
{
"on_reply": "replied",
"steps": [
{
"id": "react",
"do": "post.react",
"with": {
"newer_than": "60d"
},
"else": "w_invite"
},
{
"id": "w_comment",
"wait": "10m"
},
{
"id": "comment",
"do": "post.comment",
"with": {
"newer_than": "60d",
"text": "{{comment}}",
"fallback": "skip"
},
"note": "The agent writes one comment per Contact; no product mention."
},
{
"id": "w_invite",
"wait": "30m"
},
{
"id": "invite",
"do": "invite.send",
"with": {
"withdraw_after": "21d"
}
},
{
"id": "accepted",
"until": "invite.accepted",
"timeout": "21d",
"then": "w_opener",
"else": "end"
},
{
"id": "w_opener",
"wait": "1d"
},
{
"id": "opener",
"do": "message.send",
"with": {
"text": "Hi {{first_name}}, {{opener}}",
"fallback": "Hi, thanks for connecting. What are you working on at the moment?"
}
},
{
"id": "r_opener",
"until": "message.replied",
"timeout": "5d",
"then": "replied"
},
{
"id": "followup",
"do": "message.send",
"with": {
"text": "{{followup}}",
"fallback": "Following up once in case this got buried. All good if now is not the time."
}
},
{
"id": "r_followup",
"until": "message.replied",
"timeout": "7d",
"then": "replied"
},
{
"id": "silent",
"tag": "no-reply",
"next": "end"
},
{
"id": "replied",
"tag": "in-conversation",
"next": "end"
}
]
}Nurture connections
Message existing Connections twice; people not connected are tagged and skipped.
{
"on_reply": "replied",
"steps": [
{
"id": "is_connected",
"if": {
"contact.connected": true
},
"then": "dm",
"else": "not_connected"
},
{
"id": "not_connected",
"tag": "not-connected",
"next": "end"
},
{
"id": "dm",
"do": "message.send",
"with": {
"text": "{{dm}}",
"fallback": "Hi, it has been a while. What are you focused on these days?"
}
},
{
"id": "r_dm",
"until": "message.replied",
"timeout": "5d",
"then": "replied"
},
{
"id": "seen_dm",
"if": {
"message.seen": true
},
"then": "followup",
"else": "end",
"note": "Follow up only when they saw the first message."
},
{
"id": "followup",
"do": "message.send",
"with": {
"text": "{{followup}}",
"fallback": "No rush on this, just wanted to check in once more."
}
},
{
"id": "r_followup",
"until": "message.replied",
"timeout": "7d",
"then": "replied",
"else": "end"
},
{
"id": "replied",
"tag": "in-conversation",
"next": "end"
}
]
}