Motion reasons

Every reason Curviate reports for a Motion is one of the codes on this page: an Enrollment's skip_reason and finish_reason, a history entry's reason, the analytics reason counts, and the events feed. The list is closed: a code is never renamed, and a new one is added here first. Each code comes with its one-line sentence beside it (skip_message, finish_message, reason_message), so an agent can explain it without a lookup.

Read them from the CLI:

curviate enrollment get enr_01J8Z3K9P0Q1R2S3T4V5W6X7Y8 --json
curviate enrollment list --motion mot_01J8Z3K9P0Q1R2S3T4V5W6X7Y8 --reason already_connected

or from the API: GET /v1/enrollments/{id} and GET /v1/enrollments?motion_id=...&reason=already_connected.

in_exclusion_list

The Contact is on one of the Motion's exclusion lists, so it was not enrolled.

Reported as: Enrollment skipped (skip_reason).

What to do: Nothing to do unless the exclusion is wrong: remove the Contact from the exclusion list, then add it again with curviate motion add <motion> --contact <id>.

in_other_motion

The Contact is or recently was in another Motion, so it was not enrolled.

Reported as: Enrollment skipped (skip_reason).

What to do: Wait until the other Motion is done with the person, or turn off settings.exclude.other_motions. skip_detail is same_motion when an earlier Enrollment of this Motion already reached them.

known_chat

The Account already has a chat with this person, so the Motion left them out.

Reported as: Enrollment skipped (skip_reason).

What to do: The account already talks to this person. To enroll them anyway, add them from that chat in the Unibox, or turn off settings.exclude.known_chats.

filtered

The Contact did not pass one of the Motion's where filters; skip_detail names which one.

Reported as: Enrollment skipped (skip_reason).

What to do: skip_detail is the index of the failing where filter. Fix the Contact's data or the filter, then add the Contact again.

profile_unavailable

The LinkedIn profile could not be read, so nothing was done for this person.

Reported as: Enrollment skipped (skip_reason); Step failed (history reason).

What to do: The profile may be private, deleted or out of reach for this account. Check linkedin_url on the Contact; nothing is retried automatically.

no_connected_account

None of the Motion's sending Accounts could take this Contact.

Reported as: Enrollment skipped (skip_reason).

What to do: With settings.assign set to already_connected, no sending account is a Connection of the person. Add an account that is, or change assign.

completed

The Enrollment reached the end of its Sequence.

Reported as: Enrollment finished (finish_reason).

What to do: Normal ending. Read history with curviate enrollment get <id> for what each Step did.

stopped

Someone stopped this Enrollment.

Reported as: Enrollment finished (finish_reason).

What to do: Ended by curviate enrollment stop or POST /v1/enrollments/{id}/stop. Resume it with curviate enrollment resume <id> --at <step>.

removed

The Contact was removed from the Motion.

Reported as: Enrollment finished (finish_reason).

What to do: Ended by curviate motion remove. Add the Contact again to re-enroll it.

account_unavailable

The sending Account stayed unavailable, so the Enrollment ended.

Reported as: Enrollment finished (finish_reason).

What to do: The sending account needs attention (reconnect it). Reassign the Enrollment to another account of the Motion, or resume it once the account is back.

account_removed

The sending Account was removed, so the Enrollment ended.

Reported as: Enrollment finished (finish_reason).

What to do: The account left Curviate or the Motion. Reassign the Enrollment to another sending account of the Motion.

motion_archived

The Motion was archived, which ends every open Enrollment.

Reported as: Enrollment finished (finish_reason).

What to do: Archiving ends every open Enrollment and cannot be undone. Create a new Motion to reach the person again.

motion_ended

The Motion reached its end date, which ends every open Enrollment.

Reported as: Enrollment finished (finish_reason).

What to do: The Motion's schedule.end_at passed. Extend end_at on a new Motion to continue.

contact_deleted

The Contact was deleted, so the Enrollment ended.

Reported as: Enrollment finished (finish_reason).

What to do: The Contact is gone; contact_id is null. Nothing to do.

contact_merged

The Contact was merged into one already enrolled on this Account, so this Enrollment ended.

Reported as: Enrollment finished (finish_reason).

What to do: The surviving Contact already has an Enrollment on this account in this Motion; follow that one.

replied

The person replied and the Motion stops on engagement, so the Enrollment ended.

Reported as: Enrollment finished (finish_reason).

What to do: The person replied while settings.stop_on_engagement is on. Continue the conversation in the Unibox.

messaged_manually

Someone messaged this person outside the Motion and it stops on engagement, so the Enrollment ended.

Reported as: Enrollment finished (finish_reason).

What to do: Someone wrote to the person outside the Motion while settings.stop_on_engagement is on, so the Motion stepped back. Nothing to do.

already_following

The Account already follows this person, so the follow was skipped.

Reported as: Step skipped (history reason).

What to do: Nothing to do: the follow you wanted is already in place.

not_following

The Account does not follow this person, so there was nothing to unfollow.

Reported as: Step skipped (history reason).

What to do: Nothing to do: there was no follow to remove.

already_connected

Already connected to this Account, so no invitation was sent.

Reported as: Step skipped (history reason).

What to do: Nothing to do: the person is already a Connection. Steps after the invitation continue.

invite_pending

An invitation from this Account to this person is already pending, so no new one was sent.

Reported as: Step skipped (history reason); Step failed (history reason).

What to do: An earlier invitation from this account is still open. Wait for it, or withdraw it with an invite.withdraw step.

already_invited

Your team already invited this person once, and Curviate never invites the same person twice.

Reported as: Step skipped (history reason).

What to do: Curviate invites each person at most once per team, from any account. The Sequence continues without a second invitation.

no_pending_invite

There was no pending invitation to withdraw.

Reported as: Step skipped (history reason).

What to do: Nothing to do: there was no open invitation to withdraw.

not_connected

The person is not a Connection of this Account, so the message could not be sent.

Reported as: Step skipped (history reason); Step failed (history reason).

What to do: A message needs a Connection. Send an invitation first, wait with until invite.accepted, or use an inmail.send step.

inmail_unavailable

This Account cannot send an InMail to this person.

Reported as: Step skipped (history reason); Step failed (history reason).

What to do: The account has no InMail it can use for this person. Use an account on Sales Navigator or Recruiter, or a message.send after an invitation.

no_eligible_post

The person has no recent post to react to or comment on.

Reported as: Step skipped (history reason); Step failed (history reason).

What to do: The person has not posted recently. Use if contact.posted_within before the step, or accept the skip.

already_reacted

The Account already reacted to this post, so the reaction was skipped.

Reported as: Step skipped (history reason).

What to do: Nothing to do: the reaction is already there.

already_commented

The Account already commented on this post, so the comment was skipped.

Reported as: Step skipped (history reason).

What to do: Nothing to do: the account already commented on that post.

missing_variable

A variable in the text had no value and the step has no fallback to send instead.

Reported as: Step skipped (history reason).

What to do: A {{...}} variable had no value for this Contact and there was no fallback. Add a fallback to the step, or fill the field on the Contact.

no_endorsable_skill

The person lists no skill this Account has not endorsed yet.

Reported as: Step skipped (history reason).

What to do: Nothing left to endorse. Accept the skip.

text_too_long

The rendered text was over LinkedIn's limit and no shorter fallback could be sent.

Reported as: Step skipped (history reason).

What to do: The text with the Contact's values passed LinkedIn's limit. Shorten the text or the field, or add a shorter fallback.

already_attempted

This step was already attempted and LinkedIn never confirmed it, so Curviate did not send it again.

Reported as: Step skipped (history reason).

What to do: LinkedIn never confirmed an earlier attempt of this step, so it may already have happened. Curviate does not send it twice; check the chat before writing by hand.

platform_rejected

LinkedIn refused the action.

Reported as: Step failed (history reason).

What to do: LinkedIn said no. Look at the person and the account in LinkedIn before trying again with curviate enrollment retry <id>.

recipient_unreachable

LinkedIn says this person cannot be reached from this Account.

Reported as: Step failed (history reason).

What to do: This account cannot reach the person (privacy settings, or they left LinkedIn). Try another account with reassign, or accept it.

platform_error

LinkedIn returned an error, so the action did not happen.

Reported as: Step failed (history reason).

What to do: LinkedIn returned an error and nothing happened. Retry with curviate enrollment retry <id>.

outcome_unknown

LinkedIn did not confirm the action. Curviate never repeats it, so it was not retried.

Reported as: Step failed (history reason).

What to do: Treat it as possibly sent: read the chat before doing anything by hand. Retry skips this step as already_attempted.

tag_limit

The Tag could not be added because a Tag limit is reached; the Sequence moved on.

Reported as: Step taken (history reason).

What to do: The Contact or the team is at its Tag limit. Remove unused Tags; the Sequence already moved on.