Run Scorers with Invocable Actions

Once you define a custom scorer and deploy it, you can run it against real agent traffic with a pair of invocable actions:

  • triggerAgentBulkScoring runs a batch of sessions or intents through one or more LLM-driven scorers.
  • ingestManualAgentScores writes reviewer-provided scores against sessions, intents, or interactions when a human is the evaluator.

triggerAgentBulkScoring is a standard invocable action available through REST, Salesforce Flow, and Apex. ingestManualAgentScores is available through REST only. Use these actions to backfill scores over historical traffic, wire scoring into a review workflow, or feed a downstream reporting pipeline.

When to Use Which Action 

Use caseAction
Score a batch of past sessions or intents with an LLM-driven scorer.triggerAgentBulkScoring
Record a score that a human reviewer assigned to a session or intent.ingestManualAgentScores

Prerequisites 

  • At least one AiAgentScorerDefinition deployed to your org, with a version whose status is Available and whose agentAssociation.isActive is true. See Scorer Status. A scorer is only eligible to run when both conditions hold — a Draft version, or an Available version with an inactive agent association, won’t produce scores.
  • The agent that the scorer is associated with exists in the org.
  • To call ingestManualAgentScores, the referenced scorer must have engine type Manual. ingestManualAgentScores rejects scores targeting a scorer with any other engine type.

triggerAgentBulkScoring 

Kicks off an asynchronous pipeline that runs one or more scorers against a batch of session or intent IDs. All IDs and all scorers in a single call must belong to the same agent.

Endpoint
1POST /services/data/v67.0/actions/standard/triggerAgentBulkScoring

Bulk Scoring Inputs 

FieldTypeDescription
inputIdsList<String>Required. The session or intent IDs to score. Up to 500 per call. All IDs must belong to the same agent.
inputScopepicklistRequired. The kind of ID in inputIds. Valid values: Session, Intent.
scorerApiNamesList<String>Required. The API names of the scorers to run. Up to 10 per call. Each scorer must have a version with status: Available and agentAssociation.isActive: true, associated with the same agent as the input IDs.
daysBackintegerOptional. The number of days to look back when finding entities to score. Must be between 1 and 180. Default is 90.

Behavior 

  • The call returns immediately; scoring runs asynchronously in the background. There is no status-polling endpoint yet — read the resulting scores from the target reporting objects once the pipeline completes.
  • If any input ID or scorer API name references a different agent, the entire request fails.
  • If a referenced scorer has no version that is both Available and has an active agent association, the entire request fails.

Bulk Scoring Example: REST 

triggerAgentBulkScoring — request body
1{
2    "inputs": [
3        {
4            "inputIds": [
5                "0Xz01000000AbcDEAX",
6                "0Xz01000000AbcDFAX"
7            ],
8            "inputScope": "Session",
9            "scorerApiNames": [
10                "Customer_Drop_Off_Scorer",
11                "Sentiment_Scorer"
12            ]
13        }
14    ]
15}

Bulk Scoring Example: Apex 

triggerAgentBulkScoring — Apex
1Invocable.Action action = Invocable.Action.createStandardAction('triggerAgentBulkScoring');
2action.setInvocationParameter('inputIds', new List<String>{'0Xz01000000AbcDEAX', '0Xz01000000AbcDFAX'});
3action.setInvocationParameter('inputScope', 'Session');
4action.setInvocationParameter('scorerApiNames', new List<String>{'Customer_Drop_Off_Scorer', 'Sentiment_Scorer'});
5
6List<Invocable.Action.Result> results = action.invoke();

You can also invoke this action from a Flow with the Action element by selecting triggerAgentBulkScoring.

ingestManualAgentScores 

Writes reviewer-provided scores against sessions, intents, or interactions. Every score in the request must reference a scorer whose engine type is Manual — that is, a scorer designed to receive scores from a human reviewer rather than from an LLM.

Endpoint
1POST /services/data/v67.0/actions/standard/ingestManualAgentScores

Manual Scoring Inputs 

FieldTypeDescription
manualScoresstringRequired. A JSON-encoded array of manual score objects. See Manual Score Schema.
sourceTypestringOptional. A free-form string tag that identifies the source of the scores. Default is API. Set it to any value that helps you segment your data — for example, the name of a review UI, a batch job identifier, or the model name of an AI reviewer.
attributestringOptional. Up to 1 KB of user-defined key-value JSON. Use this for audit metadata like a review run ID or reviewer group. The value is stored verbatim alongside each score in the same call.
daysBackintegerOptional. The number of days to look back when finding entities to score. Must be between 1 and 180. Default is 90.

Manual Score Schema 

Each object in the manualScores array has these fields.

FieldTypeDescription
scorerApiNamestringRequired. The API name of the scorer that this score belongs to. The scorer’s engine type must be Manual; the request fails otherwise.
sessionIdstringProvide exactly one of sessionId, intentId, or interactionId. The ID must match the input scope of the scorer.
intentIdstringSee sessionId.
interactionIdstringSee sessionId.
labelstringRequired. A short display label for the score, such as Pass or Positive Sentiment.
valuestringRequired. The score value. Up to 4 KB. Format depends on the scorer’s dataType — for a Number scorer, a numeric string; for a Text scorer, the raw text.
isPassedbooleanRequired. Whether this score maps to a Pass outcome.
associationReasonstringOptional. Free-form reviewer notes explaining the score. Useful for audit and for training data.

Manual Scoring Example: REST 

ingestManualAgentScores — request body
1{
2    "inputs": [
3        {
4            "manualScores": "[{\"scorerApiName\":\"Customer_Drop_Off_Scorer\",\"sessionId\":\"0Xz01000000AbcDEAX\",\"label\":\"No Drop-Off\",\"value\":\"0\",\"isPassed\":true,\"associationReason\":\"Customer confirmed resolution before ending the chat.\"}]",
5            "sourceType": "ReviewerUI",
6            "attribute": "{\"reviewRunId\":\"run-2026-08-05-001\",\"reviewer\":\"jsmith\"}"
7        }
8    ]
9}

See Also