Reference
Field and completed-text limits
Detailed page. Use “On this page” to jump directly to the section you need.
Use this page when Salesforce rejects a Check Set or Check value, a Check returns RESOLVED_TEMPLATE_TOO_LONG, or a failed Check does not show its action link.
Two limits can apply. The Salesforce field limit controls what an administrator can save in Custom Metadata. The completed-text limit applies later, after Record Health Check replaces merge tokens such as {!record.Name} with Salesforce values. Most fields have only the Salesforce limit.
Start with what happened
Section titled “Start with what happened”| What you observe | Which limit matters | What to do |
|---|---|---|
| Salesforce will not save or deploy the Custom Metadata value | What Salesforce accepts | Find the field below and shorten or correct the value so it matches the Salesforce field type and limit. |
A Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG | Completed text limit | Shorten the configured text or the Salesforce values inserted by its merge tokens. |
| A failed Check does not show its configured action link | The Action URL limit and URL checks | The failure still appears. Keep the final URL within 2,000 characters and use a same-org relative URL or an https:// URL. |
Why completed text has a separate limit
Section titled “Why completed text has a separate limit”Some fields contain a message template rather than the final words a user sees. Record Health Check creates the completed text by replacing merge tokens with Salesforce data. For example, {!record.Name} is replaced with the current record’s Name. Add a quoted fallback when an empty value needs a substitute, as in {!record.Name fallback="Unnamed record"}.
A saved template can therefore be short while the completed text becomes much larger. FailureMessage__c might contain Account {!record.Name} needs review., but the Account Name is not inserted until the Check runs.
Record Health Check limits one completed value to 20,000 characters. This prevents an inserted Salesforce value from creating an unexpectedly large Apex or Flow response and keeps the Lightning card from receiving more display text than intended.
When completed text crosses the limit, Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG. It does not cut the message because partial instructions could mislead the user. Not applicable means the field does not accept Record Health Check merge tokens, so only the Salesforce limit matters.
One display template can contain at most 100 merge tokens, and one completed value can contain at most 20,000 characters. Record Health Check returns UNABLE_TO_EVALUATE instead of silently shortening text. A completed Action URL also must pass URL safety checks and contain no more than 2,000 characters.
Check Set text limits
Section titled “Check Set text limits”These Check Set fields can be affected by a saved-value or completed-text character limit. Select an API name for its Setup label, purpose, default, and examples.
| Field API name | Salesforce field type | What Salesforce accepts | Completed text limit | If the value is too long |
|---|---|---|---|---|
CardSubtitle__c | Text | 255 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
CardTitle__c | Text | 255 | Not applicable | Record Health Check uses the saved value as-is |
ObjectApiName__c | Text | 80 | Not applicable | Record Health Check uses the saved value as-is |
RerunButtonLabel__c | Text | 80 | Not applicable | Record Health Check uses the saved value as-is |
RunButtonIcon__c | Text | 80 | Not applicable | Record Health Check uses the saved value as-is |
RunButtonLabel__c | Text | 80 | Not applicable | Record Health Check uses the saved value as-is |
Check text limits
Section titled “Check text limits”These Check fields can be affected by a saved-value or completed-text character limit. Select an API name to learn which Evaluation Type uses it and how it affects the result.
| Field API name | Salesforce field type | What Salesforce accepts | Completed text limit | If the value is too long |
|---|---|---|---|---|
ActionLabel__c | Text | 80 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
ActionUrl__c | LongTextArea | 32768 | 2,000 | Record Health Check leaves out a URL over 2,000 characters or one that fails its safety checks |
ApexClass__c | Text | 255 | Not applicable | Record Health Check uses the saved value as-is |
ApexParametersJson__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
ApplicabilityCountQuery__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
ApplicabilityFormula__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
ApplicabilityNotMetMessage__c | LongTextArea | 32768 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
CheckDescription__c | Text | 255 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
CheckTitle__c | Text | 255 | Not applicable | Record Health Check uses the saved value as-is |
ComparisonQueryField__c | Text | 255 | Not applicable | Record Health Check uses the saved value as-is |
ComparisonQuery__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
DisplayExpectedFormula__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
DisplayExpectedText__c | Text | 255 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
DisplayFoundFormula__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
DisplayFoundText__c | Text | 255 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
ExpectedCurrencyIsoCode__c | Text | 3 | Not applicable | Record Health Check uses the saved value as-is |
ExpectedFixedValue__c | Text | 255 | Not applicable | Record Health Check uses the saved value as-is |
ExpectedRecordFormula__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
FailureMessage__c | LongTextArea | 32768 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
FindInListFormula__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
FixMessage__c | LongTextArea | 32768 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
PassConditionFormula__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
PrerequisiteCheck__c | Text | 255 | Not applicable | Record Health Check uses the saved value as-is |
SourceQueryField__c | Text | 255 | Not applicable | Record Health Check uses the saved value as-is |
SourceQuery__c | LongTextArea | 32768 | Not applicable | Record Health Check uses the saved value as-is |
UnableToEvaluateMessage__c | LongTextArea | 32768 | 20,000 | Record Health Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG; it does not shorten the text |
Fields controlled by something other than character count
Section titled “Fields controlled by something other than character count”These fields are still constrained, but making their text shorter will not solve the problem. Picklists accept only shipped API values, checkboxes accept true or false, Number fields enforce their digit count, and the relationship must name a Check Set.
| Metadata type | Salesforce field type | Constraint | Field API names |
|---|---|---|---|
| Check Set | Picklist | Restricted value set | CardHeadingDisplay__c, CardRevealMode__c, CardRunMode__c, FoundExpectedDisplay__c, PassedChecksDisplay__c, RunButtonDisplay__c, SkippedChecksDisplay__c, SummaryDisplay__c |
| Check Set | Checkbox | true/false | IsActive__c, PublishErrorLogEvent__c, PublishUserRunEvent__c, ShowDiagnostics__c, StopOnSystemError__c |
| Check | Picklist | Restricted value set | ApplicabilityCountOperator__c, ApplicabilityMode__c, Category__c, ComparisonDisplayMode__c, ComparisonOperator__c, DisplayValueFormat__c, EmptyValueHandling__c, EvaluationType__c, ExpectedValueSource__c, FailureSeverity__c, FormulaResultType__c, NoRowsResult__c, QueryResultHandling__c |
| Check | Number | 4 digits, 0 decimal places | ApplicabilityCountThreshold__c, EvaluationOrder__c, MaxQueryRows__c |
| Check | Checkbox | true/false | IsActive__c, PublishUserResultEvent__c |
| Check | Metadata relationship | Must name a Check Set | Record_Health_Check_Set__c |
This page covers all 19 Check Set fields and 45 Check fields in the shipped Custom Metadata definitions.
If the limit is exceeded
Section titled “If the limit is exceeded”Salesforce rejects a value that does not fit its Custom Metadata field. Record Health Check never receives that value. Shorten or correct it, then save or deploy again.
When inserted values make display text longer than 20,000 characters, the Check returns UNABLE_TO_EVALUATE with RESOLVED_TEMPLATE_TOO_LONG. Shorten the configured message or review the Salesforce fields used by its merge tokens. Record Health Check does not cut off the message because partial guidance could mislead the user.
When an Action URL is unsafe or longer than 2,000 characters, the Check can still return FAIL and show its Fix Message, but Record Health Check leaves out the link. An authorized administrator can use Show Diagnostics to investigate the completed URL.