Data Cloud Grounding For Agentforce
Purpose
Agentforce answers are only as good as the data they can reach. Grounding with
Data Cloud lets an agent retrieve context from unified customer profiles,
engagement events, knowledge articles, and structured or unstructured sources,
then cite them in the answer. Without a deliberate grounding design the agent
either hallucinates (too little context), over-retrieves (latency and cost
spike), or leaks data the calling user should not see (sharing ignored at the
retriever level).
This skill covers picking the right DMOs and data graphs, chunking and
filtering for relevance, enforcing field-level and record-level visibility at
query time, setting a freshness SLA that fits the use case, and returning
answers that cite their sources.
Terminology. Agentforce topics were renamed subagents in April 2026.
This skill leads with subagent. The older term still appears in metadata and
API names, in older Help articles, and in many orgs; nothing about behaviour
changed with the rename.
Recommended Workflow
- List the questions the agent must answer. Work backwards from real user
utterances. If you cannot list 10 sample questions, grounding is premature.
- Map questions to DMOs and data graphs. For each question, identify the
DMO(s) and fields required. Promote gaps into Data Cloud ingestion work
before wiring a retriever.
- Pick retriever type per question bucket. Structured retriever for
records (account, contact, case). Vector/unstructured retriever for
Knowledge, call transcripts, documents. Hybrid when both are needed.
- Decide chunking. For unstructured, chunk by semantic boundary (article
section, call segment) not fixed token count when possible. Preserve a
stable doc_id + section_id in metadata for citation.
- Enforce sharing at retrieval time. Apply user-context filters so the
retriever never returns rows the running user cannot see. Never rely on the
LLM to redact.
- Set a freshness SLA. State how stale data can be before the answer is
wrong. Align Data Cloud refresh cadence to that SLA, not vice versa.
- Return citations. Every grounded answer should include source doc_ids
or record Ids the user can open.
Retriever Selection
| Question Type |
Retriever |
Notes |
| "What is this customer's status?" |
Structured (DMO) |
Filter by UnifiedIndividualId |
| "What did we tell the customer last?" |
Structured (Engagement DMO) |
Order by timestamp DESC limit 5 |
| "How do I handle policy X?" |
Vector (Knowledge) |
Chunk by section |
| "What does the transcript of the last call say?" |
Vector + metadata filter |
Filter by call_id |
| Blend ("account summary + last case note") |
Hybrid |
Two retrievers, ranked and fused |
Grounding Strategy Per Subagent
For each subagent, classify each fact you want the agent to use:
- Instructional (in subagent prompt): unchanging, short, domain rules.
- Grounded (retriever): account- or case-specific, volatile, or too big
for a prompt.
- Action-derived (from an action call): live data that must be fetched at
answer time (balance, entitlement, real-time inventory).
Over-packing the subagent prompt with facts is the #1 token waste.
Sharing Enforcement
Three layers:
- Data Cloud data space / sharing rules — baseline visibility.
- Retriever filter — always pass the calling user's identifiers so the
retriever limits to rows they are allowed to see.
- Agent response scrubbing — last line of defense, not primary.
If the retriever returns data the user should not see, you have a compliance
incident, not a UX bug.
Freshness
Ingestion latency + retriever cache TTL = worst-case staleness. State this
number explicitly in the subagent design. Examples:
- Subagent for "what's my order status" — SLA = 5 min; Data Cloud stream
job must run ≤ 3 min.
- Subagent for "what did we email last week" — SLA = 24h; daily batch is
fine.
Citation Pattern
Every retriever must emit stable ids back to the agent. The agent's response
template then includes "Source: ()". This enables:
- Transparency for the user.
- Debugging for the designer.
- Measurable retrieval quality (did the cited doc actually contain the fact?).
Anti-Patterns (see references/llm-anti-patterns.md)
- Stuffing facts into subagent instructions that belong in a retriever.
- Returning answers with no citations.
- Filtering sharing in the agent response instead of at retrieval.
- Setting retriever k to 20+ "just in case."
- Vectorizing everything, including structured data.
Official Sources Used
1---2name: data-cloud-grounding-for-agentforce3description: Grounding an Agentforce agent with Data Cloud retrievers, DMO selection, chunking, and freshness windows. Triggers: agent grounding, retriever, DMO, data graph, RAG, vector index, citations. NOT for building or tuning the vector index itself — chunk size, embedding model, Query API — use agentforce/data-cloud-vector-search-dev. NOT for the end-to-end Knowledge-article RAG build — use agentforce/rag-patterns-in-salesforce. NOT for Data Cloud ingestion pipelines — use data/data-cloud-data-streams. NOT for identity resolution ruleset tuning — use admin/data-cloud-identity-resolution.4---56# Data Cloud Grounding For Agentforce78## Purpose910Agentforce answers are only as good as the data they can reach. Grounding with11Data Cloud lets an agent retrieve context from unified customer profiles,12engagement events, knowledge articles, and structured or unstructured sources,13then cite them in the answer. Without a deliberate grounding design the agent14either hallucinates (too little context), over-retrieves (latency and cost15spike), or leaks data the calling user should not see (sharing ignored at the16retriever level).1718This skill covers picking the right DMOs and data graphs, chunking and19filtering for relevance, enforcing field-level and record-level visibility at20query time, setting a freshness SLA that fits the use case, and returning21answers that cite their sources.2223> **Terminology.** Agentforce *topics* were renamed **subagents** in April 2026.24> This skill leads with *subagent*. The older term still appears in metadata and25> API names, in older Help articles, and in many orgs; nothing about behaviour26> changed with the rename.2728## Recommended Workflow29301. **List the questions the agent must answer.** Work backwards from real user31 utterances. If you cannot list 10 sample questions, grounding is premature.322. **Map questions to DMOs and data graphs.** For each question, identify the33 DMO(s) and fields required. Promote gaps into Data Cloud ingestion work34 before wiring a retriever.353. **Pick retriever type per question bucket.** Structured retriever for36 records (account, contact, case). Vector/unstructured retriever for37 Knowledge, call transcripts, documents. Hybrid when both are needed.384. **Decide chunking.** For unstructured, chunk by semantic boundary (article39 section, call segment) not fixed token count when possible. Preserve a40 stable doc_id + section_id in metadata for citation.415. **Enforce sharing at retrieval time.** Apply user-context filters so the42 retriever never returns rows the running user cannot see. Never rely on the43 LLM to redact.446. **Set a freshness SLA.** State how stale data can be before the answer is45 wrong. Align Data Cloud refresh cadence to that SLA, not vice versa.467. **Return citations.** Every grounded answer should include source doc_ids47 or record Ids the user can open.4849## Retriever Selection5051| Question Type | Retriever | Notes |52|---|---|---|53| "What is this customer's status?" | Structured (DMO) | Filter by UnifiedIndividualId |54| "What did we tell the customer last?" | Structured (Engagement DMO) | Order by timestamp DESC limit 5 |55| "How do I handle policy X?" | Vector (Knowledge) | Chunk by section |56| "What does the transcript of the last call say?" | Vector + metadata filter | Filter by call_id |57| Blend ("account summary + last case note") | Hybrid | Two retrievers, ranked and fused |5859## Grounding Strategy Per Subagent6061For each subagent, classify each fact you want the agent to use:6263- **Instructional (in subagent prompt):** unchanging, short, domain rules.64- **Grounded (retriever):** account- or case-specific, volatile, or too big65 for a prompt. 66- **Action-derived (from an action call):** live data that must be fetched at67 answer time (balance, entitlement, real-time inventory).6869Over-packing the subagent prompt with facts is the #1 token waste.7071## Sharing Enforcement7273Three layers:74751. **Data Cloud data space / sharing rules** — baseline visibility.762. **Retriever filter** — always pass the calling user's identifiers so the77 retriever limits to rows they are allowed to see.783. **Agent response scrubbing** — last line of defense, not primary.7980If the retriever returns data the user should not see, you have a compliance81incident, not a UX bug.8283## Freshness8485Ingestion latency + retriever cache TTL = worst-case staleness. State this86number explicitly in the subagent design. Examples:8788- Subagent for "what's my order status" — SLA = 5 min; Data Cloud stream89 job must run ≤ 3 min.90- Subagent for "what did we email last week" — SLA = 24h; daily batch is91 fine.9293## Citation Pattern9495Every retriever must emit stable ids back to the agent. The agent's response96template then includes "Source: <title> (<id>)". This enables:9798- Transparency for the user.99- Debugging for the designer.100- Measurable retrieval quality (did the cited doc actually contain the fact?).101102## Anti-Patterns (see references/llm-anti-patterns.md)103104- Stuffing facts into subagent instructions that belong in a retriever.105- Returning answers with no citations.106- Filtering sharing in the agent response instead of at retrieval.107- Setting retriever k to 20+ "just in case."108- Vectorizing everything, including structured data.109110## Official Sources Used111112- Agentforce — Ground Your Agent — https://help.salesforce.com/s/articleView?id=sf.agentforce_grounding.htm113- Data Cloud retriever — https://help.salesforce.com/s/articleView?id=sf.c360_a_data_cloud_retriever.htm114- Data Cloud DMOs — https://help.salesforce.com/s/articleView?id=sf.c360_a_data_model_objects.htm115- Salesforce Architects — Data Cloud guidance — https://architect.salesforce.com/