Skip to navigation

Outcomes

Phone-system outcomes define what an agent can apply during or after a call. They are the public configuration surface for call results, Smart List movement, and outcome webhooks.

Outcome Model

Every outcome has:

FieldPurpose
outcome_nameThe label shown to agents and sent in webhook payloads.
outcome_typeaction for in-call use, or disposition for post-call classification.
orderDisplay order. Lower numbers appear first.
destination_typenone, smart_list, or remove_from_smart_list.
webhook_urlHTTP or HTTPS endpoint Sailor calls for action outcomes.

List Outcomes

curl https://api.sailorhq.io/phone-system/outcomes \
-H "Authorization: Bearer $SAILOR_API_TOKEN"

Example response:

{
"ok": true,
"outcomes": [
{
"outcome_id": "00000000-0000-4000-8000-000000000001",
"outcome_name": "Interested",
"outcome_type": "action",
"order": 10,
"destination_type": "smart_list",
"destination": {
"destination_type": "smart_list",
"destination_id": "00000000-0000-4000-8000-000000000002",
"destination_name": "Follow up"
},
"webhook_url": "https://example.com/sailor/outcomes",
"created_at": "2026-06-25T00:00:00.000Z",
"updated_at": "2026-06-25T00:00:00.000Z"
}
],
"disposition_popup_enabled": false
}

Create An Action Outcome

Action outcomes are selected during a live call. They require a webhook URL.

curl https://api.sailorhq.io/phone-system/outcomes \
-X POST \
-H "Authorization: Bearer $SAILOR_API_TOKEN" \
-H "Idempotency-Key: $SAILOR_REQUEST_KEY" \
-H "Content-Type: application/json" \
-d '{
"outcome_name": "Interested",
"outcome_type": "action",
"order": 10,
"destination_type": "smart_list",
"destination_id": "00000000-0000-4000-8000-000000000000",
"webhook_url": "https://example.com/sailor/outcomes"
}'

Create A Post-Call Disposition

Disposition outcomes are shown after a call. If at least one disposition exists, Sailor reports disposition_popup_enabled: true.

curl https://api.sailorhq.io/phone-system/outcomes \
-X POST \
-H "Authorization: Bearer $SAILOR_API_TOKEN" \
-H "Idempotency-Key: $SAILOR_REQUEST_KEY" \
-H "Content-Type: application/json" \
-d '{
"outcome_name": "Not Qualified",
"outcome_type": "disposition",
"order": 20,
"destination_type": "none"
}'

Destination Recipes

No movement

Use destination_type: "none" when the outcome should only record the result and optionally send a webhook.

Add to a list

Use destination_type: "smart_list" with destination_id to add the contacted person to one Smart List.

Remove from lists

Use destination_type: "remove_from_smart_list" with remove_from_smart_lists to clean up membership.

Remove From Smart Lists

Use remove_from_smart_list when an outcome should clean up list membership.

curl https://api.sailorhq.io/phone-system/outcomes \
-X POST \
-H "Authorization: Bearer $SAILOR_API_TOKEN" \
-H "Idempotency-Key: $SAILOR_REQUEST_KEY" \
-H "Content-Type: application/json" \
-d '{
"outcome_name": "Remove from active lists",
"outcome_type": "action",
"order": 30,
"destination_type": "remove_from_smart_list",
"remove_from_smart_lists": {
"all": true
},
"webhook_url": "https://example.com/sailor/outcomes"
}'

To remove from selected lists, send list_ids instead of all.

{
"remove_from_smart_lists": {
"list_ids": [
"00000000-0000-4000-8000-000000000010",
"00000000-0000-4000-8000-000000000011"
]
}
}

Update An Outcome

PATCH replaces the outcome configuration with the submitted fields. Send the full intended configuration, not only the one field you changed.

curl https://api.sailorhq.io/phone-system/outcomes/00000000-0000-4000-8000-000000000001 \
-X PATCH \
-H "Authorization: Bearer $SAILOR_API_TOKEN" \
-H "Idempotency-Key: $SAILOR_REQUEST_KEY" \
-H "Content-Type: application/json" \
-d '{
"outcome_name": "Interested - Follow Up",
"outcome_type": "action",
"order": 10,
"destination_type": "smart_list",
"destination_id": "00000000-0000-4000-8000-000000000002",
"webhook_url": "https://example.com/sailor/outcomes"
}'

Delete An Outcome

curl https://api.sailorhq.io/phone-system/outcomes/00000000-0000-4000-8000-000000000001 \
-X DELETE \
-H "Authorization: Bearer $SAILOR_API_TOKEN"

Validation Rules

RuleError to expect
outcome_name must be 1-120 characters.invalid_outcome
action outcomes require webhook_url.invalid_outcome
destination_type: smart_list requires destination_id.invalid_outcome
destination_id is only allowed with smart_list.invalid_outcome
remove_from_smart_lists is only allowed with remove_from_smart_list.invalid_outcome
remove_from_smart_lists must choose either all or list_ids, not both.invalid_outcome
The target Smart List must exist in the workspace.destination_not_found

Use the API Reference for exact field constraints.