SfSkills Domains Docs GitHub

Home / agentforce / einstein-search-personalization

einstein-search-personalization

Einstein Search personalization: configure search result ranking, promoted results, searchable objects, and Natural Language Search (NLS) for Lightning Experience. Triggers when users ask about search personalization signals, why search results feel irrelevant, how to enable NLS conversational queries, or how to manage Einstein Search settings in Setup. NOT for search on an Experience Cloud site or community portal — use lwc/experience-cloud-search-customization. NOT for B2B or D2C Commerce storefront product search and facets — use apex/commerce-search-customization.

Open the skill folder on GitHub


Einstein Search Personalization

This skill activates when a practitioner needs to configure or troubleshoot Einstein Search personalization in Lightning Experience — including result ranking signals, Natural Language Search (NLS) conversational queries, promoted results, and searchable object management. It does NOT cover SOSL, Experience Cloud search, or Commerce search.


Before Starting

Gather this context before working on anything in this domain:


Core Concepts

Personalization Signals

Einstein Search uses four signals to rank search results for each user:

  1. Activity — records the user has recently viewed or frequently accessed float to the top of results.
  2. Location — records geographically close to the user's related records (e.g. accounts in the same city as the user's contacts) are ranked higher.
  3. Ownership — records the user owns or that are related to records they own (especially Contacts marked as important) are promoted.
  4. Specialization — records matching the user's typical industry, status, or stage values (learned from their activity patterns) rank higher.

Each signal can be toggled independently in Setup > Einstein Search > Settings. All four are on by default when Einstein Search is enabled. Disabling a signal removes it from the ranking model immediately; re-enabling it requires the model to re-learn from activity, which can take time.

Natural Language Search (NLS)

NLS lets users type conversational, near-English queries such as "my open cases from last week" or "accounts in New York with annual revenue over 1 million." Einstein parses the query intent and translates it into a structured record filter.

Critical constraints:

Admins can configure specific records to appear at the top of search results for defined keywords. Promoted results are set per object and are visible to all users with access to that record. They do not inherit personalization signals — they always appear first regardless of a user's activity or ownership.

Promoted results are managed in Setup > Einstein Search > Promoted Search Terms.

Searchable Objects

Admins control which objects appear in the global search scope. Objects not in the searchable set will not appear in global search results at all, regardless of personalization or NLS settings. The default set includes most standard CRM objects; custom objects must be explicitly added.


Common Patterns

Pattern: Enable Personalized Ranking for High-Volume Sales Users

When to use: Sales reps complain that search results show irrelevant records from other territories or old accounts. The org has many records across multiple regions.

How it works:

  1. Navigate to Setup > Einstein Search > Settings.
  2. Ensure Einstein Search is enabled.
  3. Enable all four personalization signals: Activity, Location, Ownership, Specialization.
  4. Confirm users are active in Lightning Experience — the model requires recent view/activity data to rank effectively. A new user will see generic results until they build activity history.
  5. Optionally configure Promoted Results for key accounts or contacts that all reps need fast access to.

Why not keyword search alone: Pure keyword search treats every record equally. High-volume orgs with thousands of accounts return poor signal-to-noise. Personalization signals ensure the rep's own accounts surface first.

Pattern: Enable NLS for Service Users on Standard Objects

When to use: Service agents want to search using natural-language queries like "open cases assigned to me from this week" without learning SOSL syntax.

How it works:

  1. Navigate to Setup > Einstein Search > Settings.
  2. Enable Natural Language Search.
  3. Confirm that the objects users query are in the supported set: Accounts, Contacts, Opportunities, Cases, Leads. If users want NLS for a custom Service object (e.g. Work Orders, custom Case extensions), inform them this is not supported.
  4. Test representative queries in the search bar. Verify that FLS on relevant fields (e.g. Account Name, Case Status) is correct — hidden fields will silently drop filter criteria from NLS queries.
  5. Train users that NLS only interprets English. Non-English org languages will not trigger NLS parsing.

Why not a custom search component: NLS is zero-code. Building a custom component that interprets natural language would require a separate AI service and significant maintenance overhead.


Decision Guidance

SituationRecommended ApproachReason
Users want results ranked by their own activity and record ownershipEnable all four personalization signals in Einstein Search SettingsSignals work together; disabling any one degrades ranking quality for specific user behaviors
Users want conversational queries on Accounts, Cases, Contacts, Leads, or OpportunitiesEnable Natural Language SearchNLS is declarative and zero-code for these five objects
Users want conversational queries on custom objectsCustom search component or filter panelNLS cannot be extended to custom objects — do not overpromise
Admins need specific records to always appear for a keywordConfigure Promoted Search TermsPromoted results bypass personalization and always rank first
Users search in non-English languagesKeyword search only; NLS not applicableNLS is English-only; no workaround within the native feature
Object labels have been renamedInform users to use default English object names in NLS queriesNLS matches on API names, not custom labels

Step-by-step instructions for configuring Einstein Search personalization:

  1. Confirm edition and feature eligibility. Verify the org is on Enterprise, Performance, or Unlimited Edition with Lightning Experience enabled. Einstein Search personalization is not available on lower editions or in Classic. Check Setup > Einstein Search to confirm the feature is accessible.
  2. Assess user needs. Interview or document which search improvements are required: relevance personalization (signals), conversational queries (NLS), promoted records, or object scope changes. Identify which objects are in scope and whether any are custom objects (which cannot use NLS).
  3. Configure Einstein Search Settings. Navigate to Setup > Einstein Search > Settings. Enable Einstein Search if not already on. Toggle the four personalization signals (Activity, Location, Ownership, Specialization) based on user profile — for most CRM use cases, all four should be on. Enable Natural Language Search if conversational queries are required and the target objects are in the supported set.
  4. Configure Promoted Search Terms if needed. Navigate to Setup > Einstein Search > Promoted Search Terms. For each keyword-to-record pairing required, select the object, choose the record, and add the trigger keywords. Verify the promoted record is accessible to the intended users (sharing rules apply).
  5. Validate NLS behavior with representative queries. For each NLS-enabled object, run test queries that reflect real user intent (e.g. "open cases from this week", "accounts in Chicago"). Verify results match expected records. Check that FLS is correctly set on any fields referenced in those queries — if a field is hidden, its criteria will be silently excluded.
  6. Communicate language and object scope constraints to users. Document that NLS is English-only and limited to Accounts, Contacts, Opportunities, Cases, and Leads. If object labels have been renamed, note that NLS still uses the standard English API names for query parsing.
  7. Monitor and iterate. Personalization signals improve as users build activity history. Revisit settings after 2–4 weeks of active use and survey users on search relevance. Adjust promoted results as business priorities change.

Review Checklist

Run through these before marking work in this area complete:


Salesforce-Specific Gotchas

Non-obvious platform behaviors that cause real production problems:

  1. NLS scope is fixed to five standard objects — Natural Language Search cannot be extended to custom objects, regardless of org configuration or Apex customization. Practitioners who assume NLS is a general-purpose AI query layer will be surprised that their custom "Service_Request__c" object returns no NLS results.
  2. Object label renaming breaks NLS user expectations — If an admin renames "Contact" to "Client" in Object Manager, NLS still parses on the API name Contact. Users typing "my clients in New York" will not get NLS filtering — they must type "my contacts in New York." This is counterintuitive and rarely documented in admin change logs.
  3. Personalization signals require activity history — New users or users migrating from Classic will see generic, non-personalized results for days or weeks until Einstein builds a sufficient activity model. This is often reported as a bug when Lightning is first rolled out.
  4. Promoted Results ignore personalization — Promoted records always appear first, even when personalization signals would otherwise rank them lower for a specific user. If a promoted record is not accessible to a user (due to sharing), it is excluded silently — but other promoted records for that keyword still appear.
  5. FLS silently drops NLS criteria — If a user types "open cases with priority High" and the Priority field is hidden from their profile, Einstein silently ignores that filter. The query executes but returns all open cases, not just high-priority ones. This can return misleading results without any error message.

Output Artifacts

ArtifactDescription
Einstein Search Settings configurationDocumented state of personalization signals and NLS toggle in Setup
Promoted Search Terms listKeyword-to-record mappings configured for high-value records
Searchable objects listConfirmed set of objects in global search scope
NLS constraint communication documentUser-facing note on English-only support and supported object list

Package files