Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Building and configuring Salesforce Experience Cloud sites and portals — communities, partner/customer portals, LWR and Aura templates, the external sharing model (sharing sets, share groups, guest-user hardening), external license selection, user provisioning and authentication (SSO, self-registration, JIT), audiences and personalization. Use when scoping a portal to the right license/user model, configuring external-user access, or debugging external-user CRUD/FLS/OWD/sharing failures. Not int
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 264% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 262% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 271% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 731% | 0% |
| case-16 | ✓→✓ | = Same ✓ | 342% | 0% |
Operational playbook for designing, building, and reviewing external-facing Salesforce digital experiences (portals, communities, sites). Each section states the rule to apply — with concrete limits, decision criteria, and anti-patterns. The recurring framing is "given this requirement, which approach is correct and why, and what breaks if I pick wrong."
> Load this skill when… scoping or building a Salesforce portal, community, or external site; selecting an external license type (Customer/Partner/External Apps); configuring the external sharing model (sharing sets, share groups, guest profile hardening); provisioning or authenticating external users (SSO, self-registration, JIT); or debugging an external-user access failure (CRUD, FLS, OWD, sharing). > Not this skill: internal-org sharing model or permission sets for employees alone → see salesforce-advanced-administrator; service console configuration for internal agents → see salesforce-service-cloud-consultant; sales pipeline configuration → see salesforce-sales-cloud-consultant.
> Deeper context: Study resources live in references/study-resources.md (loaded on demand). For NPSP/nonprofit-specific guidance, see salesforce-nonprofit-cloud-consultant.
> Verify steps assume nothing about your tooling — use your project's Salesforce MCP connection, the Salesforce CLI (sf), or the Salesforce setup UI, in that order of preference.
[volatile — verify live], which OOTB components are available on LWR vs Aura (the list grows each release) [volatile — verify live], ARO enablement restrictions, Spring '21+ guest-user hardening changes, and Account Role Optimization behavior at scale — confirm against current Salesforce release notes and your org.[volatile — verify live] or [opinion — house style]. If you act on an untagged fact and the live system disagrees, file feedback — do not silently trust this file over the live org.Rule: decide the user model first — it locks your license, sharing mechanism, and provisioning path. Changing it later means rebuilding the site (templates cannot be migrated in place).
| Requirement | Model | License | Why | |---|---|---|---| | Unauthenticated public visitors only (read content, maybe submit a form) | Guest user | Free (guest profile) | No User records; one shared guest profile | | Authenticated customers see their own records, no peer visibility | Customer model (Contact + Account) | Customer Community | Cheapest authenticated tier; no role hierarchy | | Authenticated customers need reports, dashboards, sharing rules, or cross-account visibility | Customer model | Customer Community Plus | Adds role hierarchy + reports | | Resellers/partners working Leads, Opportunities, Campaigns | Partner (Business Account) | Partner Community (PRM) | Full CRM objects + role hierarchy | | Partner-focused B2B site with pooled partner-user quota (up to 40 users per partner account) | Partner (Business Account) | Channel Account | Pooled licensing; read/create/edit Accounts, Assets, Contacts, Contracts, Leads [volatile — verify live] | | External users need only identity services (SSO, passwordless login, profile management) — no Salesforce data access | Customer or partner model | External Identity | Authentication-only; lowest-cost tier; upgrade to a Community license to expand object access [volatile — verify live] | | Custom high-object-count app, many logins | Customer model | External Apps license | Flexible object access, login- or member-based pricing | | Managed-package org (e.g. NPSP nonprofit portal) | Customer model | Experience Cloud for Nonprofits (or vendor-specific tier) | Package-aware licensing; see salesforce-nonprofit-cloud-consultant for NPSP specifics |
Unauthenticated/low-friction audiences: when there is no Contact-with-Account and login is unacceptable friction, use a guest or external-token model — a tokenized bearer scoped to a single record has narrower blast radius than a guest profile.
Anti-pattern / red flag: Partner Community when users have no Account relationship, or Customer Community when "partners must see reports of their team's deals" (needs Plus or Partner). Mismatched license = missing features or wasted spend.
Rule: external users see nothing by default — ALL layers must pass. Trace failures top-down:
Profile/Permission Set (CRUD) → FLS → OWD → Sharing Set / Rule / Role Hierarchy → record visibleFix the first failing layer; do not jump to sharing rules before confirming CRUD + FLS.
CRUD and FLS are independent of record sharing. A sharing set grants which records a user sees, never which objects/fields. Both must be on the profile or permission set.
| Mechanism | What it does | Use when | |---|---|---| | Sharing Set | Grants an external user access to records related to their Account or Contact via a lookup (e.g. Case.Contact = the user's Contact) | The record has a lookup path back to the portal user — the default external-user sharing tool | | Share Group | Extends a sharing set's access to other internal/external users in the set (so account peers see each other's records) | Customer Community users (no role hierarchy) need to see each other's records within an account | | Sharing Rule | Criteria- or owner-based, opens records to roles/groups | Cross-cutting visibility not expressible as a lookup; works for Plus/Partner with roles | | Role Hierarchy | Account-scoped external roles roll records up to managers | Customer Community Plus / Partner only — NOT available on base Customer Community |
Decision rule: record has a lookup to the portal user's Contact/Account → sharing set. Account peers must see each other → add a share group on that set. Reach for sharing rules only when neither fits.
Rule: harden the guest profile to the absolute minimum. In Spring '21+ orgs:
with sharing + explicit record-key filtering.[volatile — verify live]cheapest. Self-service support. [volatile — verify live]
rules. Authenticated portals needing cross-visibility. [volatile — verify live]
[volatile — verify live][volatile — verify live][volatile — verify live]Rule: declaratively in Experience Builder first; custom LWC only when a standard component cannot meet the requirement. Every custom component adds CSP, Locker, and upgrade-path cost.
Anti-pattern: hardcoding brand colors/logos in custom CSS instead of the Theme panel — breaks no-code maintainability and theme export.
Rule: template choice is permanent. Migrating a live site from one template to another is not supported — you build a new site and re-create everything.
| Template | Runtime | Use for | |---|---|---| | Customer Account Portal | Aura | Authenticated self-service, account/case mgmt, rich OOTB | | Partner Central | Aura | PRM: lead distribution, deal reg, MDF | | Help Center | Aura | Public KB/FAQ, searchable without login | | Build Your Own (Aura) | Aura | Max flexibility, Aura + LWC, no use-case layout | | Build Your Own (LWR) | LWR | LWC-only, fastest, Salesforce's strategic direction | | Microsite (LWR) | LWR | Campaign landing / minimal single-page |
Aura vs. LWR: new build, performance-sensitive, public → LWR. Need Reputation, certain CMS components, or rich prebuilt use-case pages → Aura (not all features exist on LWR yet). LWR is faster because the UI layer is rendered static on publish and CDN-cached; Aura fetches data dynamically on every load.
[volatile — verify live]Salesforce's next-generation LWR tier — not the same as standard Build Your Own (LWR). Adds expression-based visibility/variations, enhanced CMS workspaces, Data Cloud visitor insights, and partial deployment. Full feature list and upgrade-path detail are in references/coverage-notes.md.
/s URL suffix and update CI/CD pipelines (ExperienceBundle → DigitalExperienceBundle) before migrating.Rule: every Experience Cloud user except the guest is backed by a Contact. No Contact → no external User. Customer/partner contacts must belong to an Account.
| Volume / scenario | Method | Notes | |---|---|---| | Handful of known users | Manual enablement from Contact | "Enable Customer/Partner User" button | | Bulk load | Data Loader / API | Use a Contact external ID for upsert idempotency | | Public self-signup | Self-registration | Apex handler; creates Contact + User; set default profile + account | | Enterprise SSO, no pre-provisioning | JIT | Creates/updates User from SAML assertion on first login |
Phone → MobilePhone on every Contact insert — see salesforce-nonprofit-cloud-consultant.Rule: instrument for case deflection — the ROI metric leadership asks for. Enable Experience Dashboards (Workspaces → Dashboards) for logins, unique visitors, page views, and search terms.
Rule: My Domain must be deployed before you can create a site; inactive sites are admin-only. Activation is a deliberate step.
Rule: know the hard ceilings before you design past them.
Each rule is imperative and concrete.
template — it locks everything downstream.
unsupported; you rebuild the whole site.
set/rule/role. Fix the first failing layer.
which records. CRUD + FLS are separate and both required.
Contact/Account; add a share group only when account peers must see each other.
usable role hierarchy. Upgrade to Plus/Partner or use a share group.
ownership, no PII FLS, no broad Read.
with sharingApex filtered by an explicit record key.
Leads/Opps/Campaigns, External Apps for high-object custom apps.
customer/partner models).
idempotency).
with guest permissions.
browser console for CSP violations first when a widget is dead.
100 SOQL / 150 DML / 50k-row governor limits.
never retroactively.
profiles, and some settings are org-specific manual steps.
yourdomain.my.site.com/portalname). Custom domain (CNAME) maps in Setup → Custom URLs; My Domain base must be active.> PRM depth (deal-registration, MDF, lead distribution), CMS workspaces and channels, moderation rule depth (rate limits, keyword lists, review queues), and Mobile Publisher coverage notes are in references/coverage-notes.md. Load that file if your work targets any of those areas.
Case.Contact = portal user's Contact). → gate: create a test Contact-linked record; log in as a test external user; confirm the record is visible.ObjectPermissions). → gate: if Read is false on the object, add it — that is the root cause; stop here.SELECT Id, SObjectType, Field, PermissionsRead FROM FieldPermissions WHERE SobjectType = '<Object>' AND ParentId IN (SELECT Id FROM PermissionSet WHERE Name = '<permset>'). → gate: if the field is missing, add it to the profile/permset — root cause found; stop here.UserRecordAccess object: SELECT RecordId, HasReadAccess FROM UserRecordAccess WHERE UserId = '<userId>' AND RecordId = '<recordId>'. → gate: HasReadAccess = true after any sharing fix confirms the layer is resolved.Scenarios 1–4 inline below. Scenario 5 (Authentication — JIT vs. self-registration) is in references/scenarios.md.
Scenario 1 — Sharing: account peers can't see each other's cases
> Situation: A customer portal (Customer Community license) is live. Each contact at a business account can see their own cases via a sharing set keyed on Case.Contact. A requirement arrives: contacts at the same account must also be able to see each other's cases so a team manager can monitor the whole account. The admin adds more sharing rules but the peer visibility never appears.
> Competent move: Add a share group to the existing sharing set. A share group extends a sharing set's record access to all external users in that set — the exact mechanism for intra-account peer visibility on base Customer Community. Sharing rules are role-based and base Customer Community has no usable role hierarchy, so they cannot reach peer external users on this license.
> Tempting-but-wrong: Adding criteria-based sharing rules referencing an account ID. This fails silently because sharing rules target roles or public groups, and Customer Community users (no role hierarchy) are not in any role or standard group that sharing rules can address.
> Verify: In Setup → Digital Experiences → site] → Administration → Members, confirm the sharing set exists and the share group is added. In a sandbox, log in as two different contact users under the same account and confirm mutual case visibility.
Scenario 2 — Template: LWR site, Reputation required
> Situation: A project is mid-build on a Build Your Own (LWR) site. A new requirement arrives: add Reputation points and levels to gamify community engagement. The developer searches Experience Builder for the Reputation component and cannot find it.
> Competent move: Recognize that Reputation and gamification are Aura-only features. LWR sites do not support the Reputation component — this is a hard platform ceiling, not a configuration gap. The correct response is to surface this incompatibility to stakeholders immediately and evaluate whether to switch to an Aura template (requires rebuilding the site) or drop the Reputation requirement.
> Tempting-but-wrong: Assuming the component is just missing from the library and attempting to build a custom LWC Reputation replacement. This is an unbounded engineering effort that re-implements a managed platform feature, creates an unsupported upgrade path, and could have been avoided by confirming the feature-template matrix before committing to LWR.
> Verify: Check the official Salesforce Experience Cloud feature comparison table (Help article: "Considerations Before You Migrate an Aura Site to Lightning Web Runtime (LWR)") before locking in a template. Add a feature-matrix review step to every project scoping checklist.
Scenario 3 — Guest user: flow tries to write a record
> Situation: A public (unauthenticated) application form is built as a Screen Flow embedded via the Flow component on an LWR site. When a visitor submits the form, they receive an Insufficient Privileges error. The admin checks the flow in Flow Builder — it looks correct. Sharing settings look fine.
> Competent move: The flow runs in the guest user's session and therefore under the guest profile's permissions. Trace the access failure top-down: confirm the guest profile has Create CRUD on the target object AND FLS write access on every field the flow populates. Because the guest profile is shared across all unauthenticated traffic, any missing permission silently blocks DML for every visitor.
> Tempting-but-wrong: Assuming it is a sharing problem and adding the object to the guest user's "secure guest user record access" or trying to open OWD. Sharing controls which records a user sees, not whether they can create. The correct layer to fix is CRUD and FLS on the guest profile.
> Verify: In Setup → Profiles → Guest User Profile for the site] → Object Settings, confirm Create is checked for the target object and each mapped field shows Write. Test end-to-end as an unauthenticated user in a sandbox; confirm the record appears in the org after submission.
Scenario 4 — ARO: enabling Account Role Optimization on a live portal
> Situation: A Customer Community Plus portal has been live for six months with thousands of account-user pairs. Performance is degrading; Salesforce support attributes it to role hierarchy bloat (~3 roles per account × thousands of accounts). An admin finds the Account Role Optimization (ARO) setting in Digital Experiences and wants to enable it immediately.
> Competent move: Stop. ARO must be enabled before any portal users are associated with accounts. Enabling ARO retroactively on an org that already has portal users and role-hierarchy entries causes data integrity issues — existing role assignments can be orphaned or corrupted. The correct remediation path at this stage is to open a Salesforce support case to discuss migration options, not to flip the switch unilaterally.
> Tempting-but-wrong: Enabling ARO in production immediately to fix the performance issue. This is a destructive configuration change on a live portal and is explicitly unsupported after account-user pairs exist.
> Verify: Before any portal goes live, add ARO enablement to the pre-launch checklist if scaling to many accounts is expected. Confirm the org has zero portal users attached to accounts before flipping the ARO setting. Reference: Salesforce Help article "Enable Account Role Optimization."
references/study-resources.md. For NPSP-specific guidance: salesforce-nonprofit-cloud-consultant.
Using this skill and hit a wall? If you find a claim contradicted by the live system or official docs, a missing rule that cost you a wrong attempt, or a decision this skill gave no criteria for — append an entry in the moment to .skill-feedback/salesforce-experience-cloud-consultant.md at the project root (create it if absent):
date | skill last-reviewed | claim or gap | what you observed instead | evidence (error text / doc URL / query output) | suggested fix
These are harvested back into the skill via the learning loop. When the live system and this file disagree, trust the live system.
[volatile — verify live] marks, executable workflows, tool-agnostic verify steps, feedback protocol. Exam logistics relocated to references/study-resources.md.[volatile — verify live] marks (INTEGRATED). Eval probes 13–15 appended.Independent educational content to upskill AI agents. Not affiliated with, authorized by, endorsed by, or sponsored by Salesforce or any certification body. "Salesforce," "Experience Cloud," and all related product names and certification titles are trademarks of Salesforce, Inc. and their respective owners, used here solely to identify the subject matter. Content is provided as guidance only — verify all configuration details against official Salesforce documentation and a live org before acting. No certification outcome is implied or guaranteed. Exam details (questions, weights, fees, score thresholds) are subject to change; confirm current values at trailhead.salesforce.com.
Other measured skills in the registry, with their headline benchmark lift.