CINXE.COM
Engaging | Salesforce Architects
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title> Engaging | Salesforce Architects</title> <!-- One Trust --> <script async type="text/javascript" src="https://a.sfdcstatic.com/digital/one-trust/core/stable/scripttemplates/otSDKStub.js" data-domain-script="8e783e8c-0ad0-475d-8fca-4a03afa0a02a" crossorigin ></script> <!-- Data Cloud Manager --> <script type="text/javascript" src="https://cdn.c360a.salesforce.com/beacon/c360a/1264deb6-4cc0-4a48-b265-ce707a286cfd/scripts/c360a.min.js" defer></script> <!-- Google Tag Manager --> <script> (function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'}); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f .parentNode .insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-MPDHG6B'); </script> <!-- End Google Tag Manager --> <link rel="apple-touch-icon" sizes="180x180" href="/1/asset/immutable/s/17304959070000000/assets/images/favicons/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/1/asset/immutable/s/17304959070000000/assets/images/favicons/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/1/asset/immutable/s/17304959070000000/assets/images/favicons/favicon-16x16.png"> <link rel="manifest" href="/1/asset/immutable/s/17304959070000000/assets/site.webmanifest" crossorigin="use-credentials"> <link rel="mask-icon" href="/1/asset/immutable/s/17304959070000000/assets/images/favicons/safari-pinned-tab.svg" color="#5bbad5"> <link rel="shortcut icon" href="/1/asset/immutable/s/17304959070000000/assets/images/favicons/favicon.ico"> <link rel="canonical" href="https://architect.salesforce.com/well-architected/easy/engaging"/> <meta name="google-site-verification" content="9nBLHedRs97kceoTtOMsUGrVIhNfsJHbExzaKVARgAM"> <meta name="google-site-verification" content="GiaTqJgaiTF7nPD6gVxphfKcgFK9leNVs5Wp4mpqoGc"/> <meta name="msapplication-TileColor" content="#da532c"> <meta name="msapplication-config" content="/assets/browserconfig.xml"> <meta name="theme-color" content="#ffffff"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta property="og:url" content="https://architect.salesforce.com/well-architected/easy/engaging"> <meta property="og:type" content="website"> <meta name="author" content="Salesforce Architects"> <meta name="title" property="og:title" content="Salesforce Architects | Engaging"> <meta name="description" property="og:description" content="Build Salesforce solutions that delight users."> <meta name="image" property="og:image" content="https://architect.salesforce.com/assets/images/cards/engaging.png"> <meta property="og:image:url" content="https://architect.salesforce.com/assets/images/cards/engaging.png"> <meta name="twitter:image" content="https://architect.salesforce.com/assets/images/cards/engaging.png"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@SalesforceArchs"> </script> <link rel="preload" href="/1/asset/immutable/s/17304959070000000/assets/css/styles.css" as="style"> <link rel="stylesheet" href="/1/asset/immutable/s/17304959070000000/assets/css/styles.css"> <link rel="preload" href="/1/asset/immutable/s/17304959070000000/assets/dx/css/index.css" as="style"> <link rel="stylesheet" href="/1/asset/immutable/s/17304959070000000/assets/dx/css/index.css"> <style> .preview { width: 100%; display: flex; align-items: center; justify-content: center; background-image: linear-gradient(45deg,rgba(0,0,0,.025) 25%,transparent 0,transparent 50%,rgba(0,0,0,.025) 0,rgba(0,0,0,.025) 75%,transparent 0,transparent); background-size: 64px 64px; color: #102c62; background-color: rgb(234, 245, 254); padding: 8px; box-sizing: border-box; } .preview a:active, .preview a:hover, .preview a:link, .preview a:visited { color: #0071D1; } .preview > span { padding: 0 6px; } </style> </head> <body> <header> <tds-header config="{"logo":{"assistiveText":"Salesforce Architects logo","link":{"href":"/"},"url":"/assets/images/architects_logo_vertical.svg"},"logoMobile":{"assistiveText":"Salesforce Architects logo","link":{"href":"/"},"url":"/assets/images/architects_logo_vertical.svg"},"header":[{"label":"Home","link":{"href":"/","target":null},"active":true},{"label":"Well-Architected","sections":[{"label":"Build trusted, easy and adaptable solutions","items":[{"label":"Well-Architected Overview","link":{"href":"/well-architected/overview","target":null},"iconUrl":"/assets/images/nav/overview-icon.svg","description":"Build healthy solutions"},{"label":"Trusted","link":{"href":"/well-architected/trusted/overview","target":null},"iconUrl":"/assets/images/nav/trusted-icon.svg","description":"Protect your business and stakeholders"},{"label":"Easy","link":{"href":"/well-architected/easy/overview","target":null},"iconUrl":"/assets/images/nav/easy-icon.svg","description":"Deliver value fast"},{"label":"Adaptable","link":{"href":"/well-architected/adaptable/overview","target":null},"iconUrl":"/assets/images/nav/adaptable-icon.svg","description":"Evolve with your business"}]},{"label":"Well-Architected Tools","items":[{"label":"Pattern & Anti-Pattern Explorer","link":{"href":"/well-architected/explorer","target":null},"iconUrl":"/assets/images/nav/roadmap-explorer.svg","description":"Create lists of patterns or anti-patterns"}]}]},{"label":"Diagrams","sections":[{"label":"Create and find artifacts for your solutions","items":[{"label":"Salesforce Diagrams Overview","link":{"href":"/diagrams/#framework","target":null},"iconUrl":"/assets/images/nav/salesforce-diagram-framework.svg","description":"Learn how to create effective diagrams"},{"label":"Reference Architecture Gallery","link":{"href":"/diagrams/#reference-architecture-gallery","target":null},"iconUrl":"/assets/images/nav/template-gallery.svg","description":"Pre-built artifacts to get started fast"},{"label":"Data Model Gallery","link":{"href":"/diagrams/#data-model-gallery","target":null},"iconUrl":"/assets/images/nav/design-patterns.svg","description":"Product entity relationship diagrams"}]}]},{"label":"Decision Guides","sections":[{"label":"Choose the right Salesforce tools","items":[{"label":"Asynchronous Processing","link":{"href":"/decision-guides/async-processing","target":null},"iconUrl":"/assets/images/Asynchronous-Processing-Decision-Guide.svg","description":"Architect's Guide to Asynchronous Processing with Salesforce"},{"label":"Event-Driven Architecture","link":{"href":"/decision-guides/event-driven","target":null},"iconUrl":"/assets/images/nav/event-driven-architecture.svg","description":"Architect's Guide to Event-Driven Architecture with Salesforce"},{"label":"Data Integration","link":{"href":"/decision-guides/data-integration","target":null},"iconUrl":"/assets/images/nav/data-integration.svg","description":"Architect's Guide to Data Integration with Salesforce"},{"label":"Record-Triggered Automation","link":{"href":"/decision-guides/trigger-automation","target":null},"iconUrl":"/assets/images/nav/record-triggered-automation.svg","description":"Architect's Guide to Record-Triggered Automation on Salesforce"},{"label":"Building Forms","link":{"href":"/decision-guides/build-forms","target":null},"iconUrl":"/assets/images/nav/building-forms.svg","description":"Architect's Guide to Building Forms on Salesforce"},{"label":"See All Guides","link":{"href":"/decision-guides","target":null},"iconUrl":"/assets/images/nav/decision-guides.svg"}]}]},{"label":"Fundamentals","sections":[{"label":"Know the basics of Salesforce architecture","items":[{"label":"The Salesforce Platform - Transformed for Tomorrow","link":{"href":"/fundamentals/platform-transformation","target":null},"iconUrl":"/assets/images/nav/next-gen-salesforce-platform.svg","description":"Learn about the latest Salesforce Platform innovations"},{"label":"Architecture Basics","link":{"href":"/fundamentals/architecture-basics","target":null},"iconUrl":"/assets/images/nav/architecture-basics.svg","description":"Learn basics of architecting with Salesforce"},{"label":"Platform Multitenant Architecture","link":{"href":"/fundamentals/platform-multitenant-architecture","target":null},"iconUrl":"/assets/images/nav/platform-mulitenant-architecture.svg","description":"Learn about the architecture of Salesforce Customer 360 Platform"},{"label":"Platform Sharing Architecture","link":{"href":"/fundamentals/platform-sharing-architecture","target":null},"iconUrl":"/assets/images/nav/sharing-guide.svg","description":"Learn how to provide secure data access"},{"label":"See All Fundamentals","link":{"href":"/fundamentals","target":null},"iconUrl":"/assets/images/nav/decision-guides.svg"}]}]},{"label":"Resources","sections":[{"label":"Project Resource Gallery","items":[{"label":"Artificial Intelligence","link":{"href":"/resources/project-resource-gallery/ai","target":null},"iconUrl":"/assets/images/nav/template-gallery.svg","description":"Get AI projects started fast"}]},{"label":"Releases","items":[{"label":"Release Overviews","link":{"href":"/releases","target":null},"iconUrl":"/assets/images/nav/releases.svg","description":"Explore what's changed across releases"}]},{"label":"Roadmap Explorer","items":[{"label":"Roadmap Explorer","link":{"href":"/roadmaps/roadmap-explorer","target":null},"iconUrl":"/assets/images/nav/roadmap-explorer.svg","description":"Plan in alignment with Salesforce innovation"}]}]},{"label":"Connect","sections":[{"label":"Connect with Salesforce Architects","items":[{"label":"Our Blog","link":{"href":"/connect/blog","target":null},"iconUrl":"/assets/images/architects_logo_vertical.svg","description":"A tech publication for architects"},{"label":"Our Youtube Channel","link":{"href":"https://www.youtube.com/c/SalesforceArchitects","target":"_blank","rel":"noopener"},"iconUrl":"/assets/images/nav-youtube.png","description":"Videos to empower and inspire architects"},{"label":"Trailblazer Community","link":{"href":"https://trailblazer.salesforce.com/about","target":"_blank","rel":"noopener"},"iconUrl":"/assets/images/nav-community-groups.png","description":"Get help, answers, and inspiration from peers"}]},{"label":"Stay up to date with our feeds","items":[{"label":"Our Website Feed","link":{"href":"https://architect.salesforce.com/feed.xml","target":null},"iconUrl":"/assets/icons/rss.png","description":"Get new diagrams and content updates"},{"label":"Our Blog Feed","link":{"href":"https://medium.com/feed/salesforce-architects","target":"noopener"},"iconUrl":"/assets/icons/rss-black.png","description":"Our latest blogs delivered"},{"label":"Our Youtube Channel Feed","link":{"href":"https://www.youtube.com/feeds/videos.xml?channel_id=UC9OaSDoddWJ7Zwu83nANsCA","target":"_blank","rel":"noopener"},"iconUrl":"/assets/icons/rss-red.png","description":"Subscribe for video updates"}]}]}],"footer":{"columns":[{"heading":"Well-Architected","links":[{"href":"/well-architected/overview","label":"Overview"},{"href":"/well-architected/trusted/overview","label":"Trusted"},{"href":"/well-architected/easy/overview","label":"Easy"},{"href":"/well-architected/adaptable/overview","label":"Adaptable"},{"href":"/well-architected/explorer","label":"Pattern & Anti-Pattern Explorer"}]},{"heading":"Diagrams","links":[{"href":"/diagrams/#framework","label":"Salesforce Diagrams Overview"},{"href":"/diagrams/#reference-architecture-gallery","label":"Reference Architecture Gallery"},{"href":"/diagrams/#data-model-gallery","label":"Data Model Gallery"}]},{"heading":"Decision Guides","links":[{"href":"/decision-guides/event-driven","label":"Event-Driven Architectures"},{"href":"/decision-guides/data-integration","label":"Data Integration"},{"href":"/decision-guides/trigger-automation","label":"Record-Triggered Automation"},{"href":"/decision-guides/build-forms","label":"Building Forms"},{"href":"/decision-guides","label":"See All Guides"}]},{"heading":"Fundamentals","links":[{"href":"/fundamentals/platform-transformation","label":"Platform Transformation"},{"href":"/fundamentals/architecture-basics","label":"Architecture Basics"},{"href":"/fundamentals/platform-multitenant-architecture","label":"Platform Multitenant Architecture"},{"href":"/fundamentals/platform-sharing-architecture","label":"Plaform Sharing Architecture"}]},{"heading":"Resources","links":[{"href":"/resources/project-resource-gallery/ai","label":"Project Resource Gallery"},{"href":"/roadmaps/roadmap-explorer","label":"Roadmap Explorer"},{"href":"/releases","label":"Release Overviews"}]},{"heading":"Connect","links":[{"href":"/connect/blog","label":"Our Blog"},{"href":"https://www.youtube.com/c/SalesforceArchitects","label":"Our Youtube Channel"},{"href":"https://trailblazer.salesforce.com/about","label":"Trailblazer Community"}]}],"global":{"logo":{"assistiveText":"Salesforce Logo","url":"/assets/images/salesforce-corp-logo.jpg"},"copyrightTitle":"© Copyright 2024 Salesforce, Inc. ","copyrightEnd":" Various trademarks held by their respective owners. Salesforce, Inc. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States","links":[{"href":"https://www.salesforce.com/company/legal/","label":"Legal","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/legal/sfdc-website-terms-of-service/","label":"Terms of Service","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/legal/privacy/","label":"Privacy Information","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/disclosure/","label":"Responsible Disclosure","target":"_blank","rel":"noopener"},{"href":"https://trust.salesforce.com/","label":"Trust","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/contact-us/?d=cta-glob-footer-11","label":"Contact","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/form/other/privacy-request/","label":"Your Privacy Choices","target":"_blank","rel":"noopener","icon":"/assets/images/privacyicon.png"}]}}}"> <tds-search slot="search"></tds-search> </tds-header> </header> <div class="guide"> <tm-page-header-a title="Engaging" jptranslation="https://sf-archs.cdn.salesforce-experience.com/cms/delivery/media/MC247PVPBEDBH25FOW3LGPNANC3U?version=2.1&channelId=0apHs000000y0QG&oid=00DHs000003Wrxy" url="/well-architected/easy/engaging"></tm-page-header-a> <tm-content reading-time="23" last-updated="July 2024" image-hash="axy5g"> <blockquote> <p>Read about our update schedules <a href="../contributors">here</a>.</p> </blockquote> <h2 id="introduction">Introduction</h2> <p>Systems demonstrate engaging behaviors by making it easy for people to access and use apps, making users feel they are getting more high-quality work done, and making people want to use apps in the system.</p> <p>Delivering engaging behavior matters to the business because it directly correlates to user adoption as well as overall worker and customer satisfaction. Engaging behaviors also help reduce support requests and can help raise the quality of feature requests from users.</p> <p>One of the challenges of creating engaging behavior is that it is difficult to measure by objective metrics alone. Instead, it is gauged by the subjective experiences of users; users feel that engaging apps provide genuine value. Engaging apps are <a href="/../well-architected/trusted/compliant#Accessibility">accessible</a>, non-intrusive, and easy to understand. They require a minimal amount of onboarding and training. And they use clear methods to proactively prevent user errors.</p> <p>Another challenge is that engagement goals will often vary with the different types of user interactions in your system. For example, you may have one set of goals for internal users who are managing cases and another for external users who are submitting information through a form on your website. To design engaging systems, you need to carefully consider the type of engagements you’re trying to create, and why users would want to engage before you begin assembling features and pages.</p> <p>Partnering with user experience (UX) designers will help you make much more effective decisions when it comes to delivering engaging apps. From an architectural perspective, user adoption and retention are crucial components of a healthy system. Engaging architectures reduce the likelihood of data quality issues caused by users hurrying through processes or skipping steps to avoid having to spend time in a system they don’t enjoy using. For external-facing systems, an engaging architecture can increase revenue and customer retention as customers who find your systems easier to work with choose to do more business with your organization.</p> <p>You can create more engaging apps by focusing on delivering streamlined and helpful experiences.</p> <h2 id="streamlined">Streamlined</h2> <p>Streamlined apps are easy to navigate, present information and data entry tasks clearly, and adapt to fit various form factors. Streamlined apps also feature experience patterns that users have become accustomed to in other commonly used applications. For example, most web browsers present “open in new tab” as the top option when users right-click a link. A streamlined app that contains tabs will follow the same pattern.</p> <p>The impacts of inefficient app experiences can extend far beyond an individual app. Poor app experiences erode the trust of users. As more kinds of business-critical and customer-facing apps move to digital channels, this can cost companies the loyalty of key stakeholders.</p> <p>You can better streamline your apps by being intentional in how you approach app complexity, form design, and form factors.</p> <h3 id="application-complexity">Application Complexity</h3> <p>Minimizing application complexity means users see only relevant menu items, tabs, and navigation controls. You’ll need to create mappings between user groups, user permissions, and the correct app experience. Use these mappings to understand what app experience to present to a given user and then ensure your app has the logical controls needed to deliver that experience.</p> <p>Apps that present users with too much complexity can cause a variety of poor experiences:</p> <ul> <li>Users frequently see unnecessary or irrelevant tabs, navigate to blank screens, and encounter disabled or blocked links.</li> <li>Unnecessary or unhelpful instructions like "ignore this tab if your role is X..." appear in training and enablement materials.</li> <li>Cluttered navigation menus force users to spend extra time locating the items they need to get work done.</li> </ul> <p>These poor experiences lead to low adoption rates and satisfaction levels.</p> <p>Consider the following when determining the right level of app complexity:</p> <ul> <li>Organize menus, tabs, and other navigational controls based on the priority of the work users need to do.</li> <li>Avoid introducing new behaviors that a user has to learn solely so they can use your app.</li> <li>Don’t remove access to features that enable users to customize aspects of their user interface.</li> <li>Use permission sets to provide expanded or reduced navigation options.</li> <li>Simplify Lightning page <a href="https://help.salesforce.com/s/articleView?id=sf.lightning_page_getting_into_salesforce1.htm">activation assignments</a>. Minimize the number of active Lightning pages per app. Use dynamic forms, permission sets, and conditional rendering to add items to Lightning pages in your app. Do this instead of maintaining multiple Lightning pages, activated and assigned by profile.</li> </ul> <p>The list of <a href="/../well-architected/easy/engaging#Streamlined_App_Patterns_and_Anti_Patterns">patterns and anti-patterns</a> below shows what proper (and poor) app complexity management looks like in a Salesforce org. You can use these to validate or improve your application designs.</p> <p>To learn more about Salesforce tools that can help you manage application complexity,see <a href="/../well-architected/easy/engaging#Tools_Relevant_To_Engaging">Tools Relevant to Engaging</a>.</p> <h3 id="forms">Forms</h3> <p>Streamlined forms organize information into logical sequences, support quick data entry, and minimize required steps. They also allow for <a href="/../well-architected/easy/engaging#Helpful">helpful</a> client-side data validation messages and eliminate repeated form submission cycles.</p> <p>Consider the following when designing forms:</p> <ul> <li><strong>Group related fields together</strong>. Group fields related to the same step in a process or data entry task. Eliminate fields that aren’t directly relevant to the task at hand.</li> <li><strong>Put data entry and validation early</strong>. Fields that require users to input data should appear early on your forms. It is a best practice to surface issues with data formatting or missing data at the field-level and as quickly as possible (that is, before a user attempts to navigate to the next step or submit the form). Also, avoid displaying field-level errors before users have had a chance to enter data into the fields.</li> <li><strong>Minimize data input tasks</strong>. Prefill or autocomplete as many fields as possible, to minimize data entry errors and improve efficiency. Only ask users to input data that is essential or critical. Eliminate any data inputs that are not relevant to the business process at hand. Use picklists instead of free form text fields where possible to enforce the selection of valid options and reduce variations of the same answer.</li> <li><strong>Minimize submissions to the server</strong>. Do not have multistep forms submit data to the server multiple times. Ensure all custom <a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.apex_result_caching">LWC</a> or <a href="https://developer.salesforce.com/docs/atlas.en-us.lightning.meta/lightning/controllers_server_storable_actions.htm">Aura</a> components use client-side caching to handle navigation or pagination actions. (Salesforce Lightning Experience and the Salesforce mobile app use client-side caching by default.) Design forms so that users submit data to the server only once. Validate user inputs on the client side before forms are submitted. This will minimize unintended user submissions, prevent duplicate or dirty transactions from consuming bandwidth on the back end, and help you design for better <a href="/../well-architected/easy/automated#Data_Handling">data handling</a>.</li> <li><strong>Manage form state</strong>. Client-side caching not only helps with behaviors like navigation and pagination, it also helps minimize data loss from intermittent connectivity issues. Effectively managing state also means apps can appropriately orchestrate data submission to the server and prevent duplicate transactions, along with presenting relevant and timely messages to users based on the status of server-side actions. Streamlined forms submit data operations only once and do not require users to wait for long-running operations on the server to finish.</li> <li><strong>Follow accessibility standards</strong>. To maximize the audience for your apps and help ensure they are inclusive of all your customers, enforce standards for <a href="/../well-architected/trusted/compliant#Accessibility">accessibility</a> in your form designs.</li> </ul> <p>Streamlined forms help increase <a href="/../well-architected/easy/automated#Data_Integrity">data integrity</a> in your apps and how <a href="/../well-architected/easy/engaging#Helpful">helpful</a> your apps feel to users. They can also reduce support tickets and requests, as users are better able to address errors and clearly understand the state of their form submissions. Further, streamlined forms enable fast and efficient data entry, and ensure that users won’t have to wait for longer-running processes to complete in order to carry out further work.</p> <p>The list of <a href="/../well-architected/easy/engaging#Streamlined_App_Patterns_and_Anti_Patterns">patterns and anti-patterns</a> below shows what proper (and poor) form design looks like in a Salesforce org. You can use these to validate or improve your form designs.</p> <p>To learn more about Salesforce tools that can help you build more streamlined forms, see <a href="/../well-architected/easy/engaging#Tools_Relevant_To_Engaging">Tools Relevant to Engaging</a>. For more specific guidance on choosing the right form tool for your use case, check out the <a href="/../decision-guides/build-forms#tl_dr">Architect’s Decision Guide to Building Forms with Salesforce</a>.</p> <h3 id="form-factor">Form Factor</h3> <p>Engaging apps adapt gracefully to different devices and interaction types, or form factors. Depending on device type, different kinds of user interactions will be easier (or more difficult), and the readability for forms and fields will change. Keep in mind that in addition to screen dimensions, form factor also refers to how your users interact with the screen. An increasing number of devices now have touch screens and some users may also use special devices for <a href="/../well-architected/trusted/compliant#Accessibility">accessibility</a>. Be sure to take these factors into consideration when designing forms.</p> <p>Failing to account for form factor variations can lead to a variety of issues, including:</p> <ul> <li>Poor data quality</li> <li>Unusable app interfaces</li> <li>More troubleshooting or “order on behalf of” sessions for support agents</li> <li>Poor user adoption, low numbers of active users, and high rates of app “abandon”</li> </ul> <p>To design for interoperability across form factors in your Salesforce apps, consider the following:</p> <ul> <li><strong>Identify supported form factors for every app</strong>.</li> <li><strong>Identify input methods and the accessibility needs of your users</strong>. See <a href="/../well-architected/trusted/compliant#Accessibility">Accessibility</a> for more information.</li> <li><strong>Use <a href="/../well-architected/easy/intentional#Standard_Versus_Custom_Functionality">standard functionality</a> to provide adaptive experiences across devices whenever possible</strong>. <ul> <li><a href="https://help.salesforce.com/s/articleView?id=sf.lightning_page_templates.htm&type=5">Lightning Page templates</a> provided by Salesforce support different form factors by default. If you choose to develop custom Lightning page templates with Aura, developers will need to incorporate form factor information into the component design file.</li> <li><a href="https://help.salesforce.com/s/articleView?id=sf.lightning_page_components.htm&type=5">Standard page components</a> provided by Salesforce handle rendering across supported form factors for you. If you create custom components with LWC or Aura, developers will need to handle width awareness (there are implementation differences between <a href="https://developer.salesforce.com/docs/atlas.en-us.238.0.lightning.meta/lightning/components_config_for_app_builder_width_aware.htm?q=width">Aura</a> and <a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/use_width_aware">LWC</a>) and declare form factor support within the design file of their components.</li> </ul> </li> <li><strong>Follow the guidance for streamlined <a href="/../well-architected/easy/engaging#Forms">forms on all devices</a></strong>.</li> <li><strong>Create test plans (and good tests) for key form factors</strong>. Ideally, you would test for all devices and form factors for all of your apps. However, setting up the correct devices (or device simulators) for form factor tests can be a significant investment. If you know that a certain app or set of apps will have a significant set of users on mobile or tablets, prioritize accurate testing for those apps on mobile and tablet form factors.</li> </ul> <p>The list of <a href="/../well-architected/easy/engaging#Streamlined_App_Patterns_and_Anti_Patterns">patterns and anti-patterns</a> below shows what proper (and poor) form factor awareness looks like in a Salesforce org. You can use these to validate your designs before you build, or identify pages that need to be refactored.</p> <p>To learn more about Salesforce tools for effective form factor design see <a href="/../well-architected/easy/engaging#Tools_Relevant_To_Engaging">Tools Relevant to Engaging</a>.</p> <h3 id="streamlined-app-patterns-and-anti-patterns">Streamlined App Patterns and Anti-Patterns</h3> <p>The following table shows a selection of patterns to look for (or build) in your org and anti-patterns to avoid or target for remediation.</p> <p>✨ Discover more patterns for streamlined apps in the <a href="/../well-architected/explorer?Easy=Streamlined">Pattern & Anti-Pattern Explorer</a>.</p> <table> <colgroup> <col span="1" style="width: 10%;"> <col span="1" style="width: 45%;"> <col span="1" style="width: 45%;"> </colgroup> <tbody> <tr> <th scope="colgroup"></th> <th scope="colgroup">Patterns</th> <th scope="colgroup">Anti-Patterns</th> </tr> <tr> <td rowspan="1"><b>App Complexity</b></td> <td><b>In your org:</b> <br> - Apps have fewer than 10 tabs in the admin-provided default configuration <br> - No apps have "Disable end user personalization of nav items in this app" set to true</td> <td><b>In your org:</b> <br> - Apps routinely have more than 10 tabs in the admin-provided default configuration <br> - Many apps have "Disable end user personalization of nav items in this app" set to true or permission to customize nav items is disabled org-wide</td> </tr> <tr> <td rowspan="2"><b>Forms</b></td> <td><b>In your apps:</b> <br> - Fields follow logical groupings<br> - Data input fields appear together, in groups of five or fewer <br> - Data entry errors are clear and appear at the field level, before users navigate away or submit data <br> - Pagination controls enable movement between steps<br> - Data submission happens once <br> - Labels for actions and navigation are clear <br> - Timely and visual feedback is provided to acknowledge user actions such as button clicks <br> - Navigation buttons (for example, "go", "next", and "back") are placed consistently throughout the UI</td> <td><b>In your apps:</b> <br> - Data input fields are not grouped logically, requiring an extensive amount of context switching by users filling out forms <br> - Data entry errors contain cryptic information that can only be interpreted by someone who understands the internal workings of the system <br> - Data entry errors only appear when a form's submit button is clicked <br> - Steps and groupings are not clearly defined, making navigation difficult <br> - Data submission happens multiple times throughout the data entry process <br> - Labels for actions and navigation are confusing to users who aren't familiar with underlying system functionality <br> - Visual acknowledgement of user actions is not provided <br> - Navigation buttons appear in arbitrary locations throughout the UI</td> </tr> <tr> <td><b>In your form logic:</b> <br> - Fields are prefilled or autocompleted as much as possible <br> - Users are not required to wait for long-running server-side actions to complete <br> - Custom components use <code>cacheable=true</code> for server-based actions that do not involve data operations <br> - Data operations are carried out once <br> - In LWC <code>@wire</code> adapters handle all actions not involving data operations</td> <td><b>In your form logic:</b> <br> - Fields that could be prefilled or autocompleted require manual entry <br> - Users have to stop working during the submission process to wait for server-side actions to complete <br> - Custom components set <code>cacheable=false</code></td> </tr> <tr> <td rowspan="3"><b>Form Factor</b></td> <td><b>In your org:</b> <br> - Salesforce-provided Lightning page templates are used for all or most pages <br> - Custom Lightning page templates use <code>design:supportedFormFactors</code> and <code>design:supportedFormFactor</code> in Aura component design files <br> - Custom LWC or Aura components available in App Builder declare supported form factors in their respective design files and implement width-aware styling patterns</td> <td><b>In your org:</b> <br> - Classic is still active <br> - Custom Lightning page templates do not uniformly use <code>design:supportedFormFactors</code> and <code>design:supportedFormFactor</code> in Aura component design files <br> - Custom LWC or Aura components available in App Builder do not consistently declare supported form factors in their respective design files <br> - In custom LWC or Aura components, width-aware styling is not implemented by Salesforce-provided interfaces <br> - In custom LWC or Aura components, styling for different form factors is driven purely by hardcoded <code>px</code> or <code>%</code> values in CSS</td> </tr> <tr> <td><b>On desktop:</b> <br> - Data input fields and navigation controls fit on the screen and can be interacted with as intended <br> - Record and app pages appear correctly, based on page activation assignment rules</td> <td><b>On desktop:</b> <br> - Data input fields and navigation controls do not appear in their intended locations on the screen <br> - Interactions with data input fields and navigation controls do not match required behaviors <br> - Lack of page activation assignment rules means all users see the same record and app pages</td> </tr> <tr> <td><b>On mobile and tablets:</b> <br> - Data inputs and navigation controls appear correctly <br> - Users can input data easily <br> - Mobile navigation menus, optimized for smaller form factors, appear <br> - Compact layouts appear at the record level</td> <td><b>On mobile and tablets:</b> <br> - Data inputs and navigation controls do not render consistently or correctly <br> - Users cannot input data easily <br> - Mobile navigation menus are not distinguishable from desktop navigation <br> - Compact layouts are not configured at the record level</td> </tr> </tbody> </table> <h2 id="helpful">Helpful</h2> <p>Helpful applications enable users to feel more empowered and effective, with fewer distractions or interruptions.</p> <p>Helpful applications help maintain <a href="/../well-architected/easy/automated#Data_Integrity">data integrity</a> by mitigating manual errors and providing feedback to users when and where they need it. They help users understand what actions they need to focus on now and next, and provide relevant information to help users solve their own problems faster. They provide a clear link between a user’s actions and meaningful impact or achievements.</p> <p>You can build more helpful applications with three key habits: notification and messages, in-app guidance, and recognition and rewards.</p> <h3 id="notifications-and-messages">Notifications and Messages</h3> <p>Notifications and messages help users stay informed.</p> <p>A well-designed notification and messaging system can increase engagement and productivity by providing users with the information they need to make critical decisions in a timely manner. A poorly designed notification and messaging system — one that presents messages that are neither relevant nor timely — will have the opposite effect. Internal users will quickly disable or ignore notifications, causing them to miss out on legitimate messages that may affect essential business processes. Customers or other external users who grow tired of meaningless notifications may decide to stop using your systems altogether.</p> <p>When deciding how apps will handle sending notifications and messages to users, consider the following:</p> <ul> <li><strong>For errors, use notifications and messages as a last resort</strong>. Design the <a href="/../well-architected/easy/automated#Error_Handling">error handling</a> in your system with back-end processing that can correct certain types of errors without human intervention. Send users only messages about critical errors that will prevent them from completing tasks. Similarly, send business users only error messages when there is some corrective action that they can (and need to) take themselves. Additional error messages or details can be made available via reports and/or sent to technical support staff using async methods for further follow-up.</li> <li><strong>Choose message types based on relevance, urgency, and timeliness</strong>. Different types of messages have different levels of blocking or interruptive behavior. Notices are a “blocking” type of message, as they require users to acknowledge them before being able to continue their work. As with error messages, notices should be used sparingly. Toast notifications are <a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/use_toast">non-blocking</a>, can have different persistence behaviors, and support different kinds of message use cases. The least obtrusive messages are <a href="https://help.salesforce.com/s/articleView?id=sf.notif_builder.htm&type=5">in-app notifications</a> or emails. These are best used to deliver information that users can deal with when and as they choose.</li> <li><strong>Consider what needs to happen next</strong>. While some notifications are informational (such as success messages), others may require users to take some type of action. When designing notifications, make sure to consider not just the notification itself, but any additional information that a user might need to take action. Include clear instructions or links to where users can find additional information or complete follow-up steps in all actionable notifications.</li> <li><strong>Focus on readability</strong>. Make sure that you clearly communicate each notification’s purpose and the next steps a user needs to take in response. Messages should be understandable to business users who aren’t familiar with the inner-workings of the underlying systems. When creating messages, follow <a href="/../well-architected/trusted/compliant#Accessibility">accessibility standards</a> and ensure they are localized to support users in the regions where they may appear.</li> </ul> <p>Include patterns for when to use notifications or different types of errors in your <a href="/../well-architected/easy/intentional#Design_Standards">design standards</a> to help ensure app builders follow consistent practices.</p> <p>The list of <a href="/../well-architected/easy/engaging#Helpful_App_Patterns_and_Anti_Patterns">patterns and anti-patterns</a> below shows what proper (and poor) notifications and messaging looks like in a Salesforce org. You can use these to validate your designs before you build, or identify usages that need to be refactored.</p> <p>To learn more about Salesforce tools for notifications and messaging, see <a href="/../well-architected/easy/engaging#Tools_Relevant_To_Engaging">Tools Relevant to Engaging</a>.</p> <h3 id="in-app-guidance">In-App Guidance</h3> <p>In-app guidance can be a powerful way to demystify complex workflows (though you should make sure you’ve <a href="/../well-architected/easy/automated#Process_Design">optimized</a> them first) or help onboard new staff. It can be a great way to introduce process changes, highlight new features, or distribute training in an automated and scalable way. If it is not carefully implemented, however, in-app guidance can be overused. Frequent popups or alerts can create a tremendous amount of noise and interruption for users, leading to lost productivity. In-app guidance can also be underused, resulting in more cumbersome release and change management processes (especially for simple features). Ultimately, both overuse and underuse of in-app guidance lead to a number of issues that pose risks to the business, including:</p> <ul> <li>Lower data integrity</li> <li>Increased user errors</li> <li>Higher user frustration levels and lower user satisfaction</li> <li>Lower user productivity</li> </ul> <p>Keep in mind that you may want to use in-app guidance differently in different scenarios, as a user’s mindset will dictate how much guidance is “too much” versus “not enough”. Users who are being introduced to a new system for the first time will likely require more frequent messaging than users who are simply learning about a new feature in a system they’re already familiar with.</p> <p>Here are some keys to creating effective in-app guidance:</p> <ul> <li><strong>Develop design standards</strong>. It’s important to remember that overexposure to in-app guidance can cause users to begin to routinely dismiss or ignore messages. At this point, in-app guidance becomes an annoyance, rather than a resource. Define <a href="/../well-architected/easy/intentional#Design_Standards">design standards</a> to make it clear when to use prompts, walkthroughs, field-level help text, validation messages, paths, screen flows, and so on.</li> <li><strong>Create a prioritization system for guidance implementations</strong>. Not every use case for in-app guidance should be implemented. Instead, consider the following questions to prioritize. Where can you simply use better field names, more explicit labels on buttons, better <a href="/../well-architected/easy/engaging#Forms">form design</a>, and <a href="/../well-architected/easy/automated#Process_Design">process optimization</a> to create more intuitive workflows? Where can you add more helpful text or links to a path? What <a href="/../resources/kpi-spreadsheet-template">business cost impact</a> will in-app guidance have? How frequently do you want to deliver messages to your users? Also, make sure any implementations are included on your <a href="/../well-architected/easy/intentional#Roadmapping">roadmap</a>, so all stakeholders have visibility.</li> <li><strong>Map users to active (and proposed) in-app guidance</strong>. Mapping users to in-app guidance will help you identify and prevent “helpfulness overload” due to too much in-app guidance appearing for a user. Often this is the result of siloed development, as teams think too narrowly about their particular use case. Maintaining a holistic view of what users will be exposed to is especially critical for large orgs. Including guidance implementations on your roadmap can also help.</li> <li><strong>Gather and use feedback to improve</strong>. Review data on in-app guidance usage, and use it to judge the efficacy of in-app guidance deployments. Make sure to provide ways for users to also give open-ended feedback to help guidance builders.</li> </ul> <p>The list of <a href="/../well-architected/easy/engaging#Helpful_App_Patterns_and_Anti_Patterns">patterns and anti-patterns</a> below shows what proper (and poor) in-app guidance looks like in a Salesforce org. You can use these to validate designs before you build, and identify implementations that need to be refactored.</p> <p>To learn more about Salesforce tools for in-app guidance, see <a href="/../well-architected/easy/engaging#Tools_Relevant_To_Engaging">Tools Relevant to Engaging</a>.</p> <h3 id="recognition-and-rewards">Recognition and Rewards</h3> <p>Building recognition and rewards into an app helps the individuals using that app feel more connected to the impact of their work and better understand the value of their contributions, productivity, and performance. It is also a powerful way to unlock loyalty and engagement.</p> <p>Not designing for recognition or rewarding app experiences can contribute to a variety of problems, including:</p> <ul> <li>Users who struggle to understand their progress or velocity</li> <li>Confusion about progress to goals or unfinished work</li> <li>More unproductive users, who don’t see a connection between their tasks and the “bigger picture”</li> <li>Management time wasted on manual, low-level goal reporting</li> </ul> <p>Rewarding app experiences can be difficult to design and deliver, because they depend on company culture, policies, and standards as well as the context and preferences of individual users. Features that may help desktop users feel moments of delight or appreciation may become an irritation to a user on mobile or a user trying to work from a noisy, busy home office. People using an app to work with information that is private or highly sensitive may not appreciate communication about milestones in the form of confetti celebrations or badges. A distributed sales team, in contrast, may see such gamification as an appropriately rewarding app experience. Ultimately, the implementation patterns you choose may be best determined by working with user experience (UX) designers on a team.</p> <p>When it comes to architecture, it’s important to identify how and where apps can implement features that help users feel recognized and rewarded. It’s also key to understand how and where these features could make apps less <a href="/../well-architected/adaptable/composable">reusable</a> or take away from delivering <a href="/../well-architected/easy/automated#Business_Value">real business value</a>.</p> <p>Here are some questions to consider when evaluating recognition and rewards in Salesforce apps:</p> <ul> <li><strong>How and where can users see their own progress, as well as overall team stats?</strong> Reports are important, but they often contain summary data that can miss the context of day-to-day work. You can use a tool such as Lightning App builder to embed charts or dashboards on record screens within the context of an app, helping users understand their impact or progress as they go about their everyday tasks.</li> <li><strong>How should users be recognized?</strong> This may vary by team or individual preferences. In some cases, supervisors may want to see messages about user progress so they can be shared with a larger group. Recognition can also be an added perk to help with employee morale. And in other cases, users may simply prefer to be the only ones notified about their progress on a certain task or project.</li> </ul> <p>The list of <a href="/../well-architected/easy/engaging#Helpful_App_Patterns_and_Anti_Patterns">patterns and anti-patterns</a> below shows what proper (and poor) recognition and rewards looks like in a Salesforce org. You can use these to validate designs before you build, and identify implementations that need to be refactored.</p> <p>To learn more about Salesforce tools for recognition and rewards, see <a href="/../well-architected/easy/engaging#Tools_Relevant_To_Engaging">Tools Relevant to Engaging</a>.</p> <h3 id="helpful-app-patterns-and-anti-patterns">Helpful App Patterns and Anti-Patterns</h3> <p>The following table shows a selection of patterns to look for (or build) in your org and anti-patterns to avoid or target for remediation.</p> <p>✨ Discover more patterns for helpful apps in the <a href="/../well-architected/explorer?Easy=Helpful">Pattern & Anti-Pattern Explorer</a>.</p> <table> <colgroup> <col span="1" style="width: 10%;"> <col span="1" style="width: 45%;"> <col span="1" style="width: 45%;"> </colgroup> <tbody> <tr> <th scope="colgroup"></th> <th scope="colgroup">Patterns</th> <th scope="colgroup">Anti-Patterns</th> </tr> <tr> <td rowspan="3"><b>Notifications and Messages</b></td> <td><b>Your design standards include:</b> <br> - Approved use cases for notifications, toasts, and notices <br> - Design patterns for toast variants and notifications <br> - Design patterns for error messaging</td> <td>If design standards are defined at all, they do not address errors and notifications</td> </tr> <tr> <td><b>In your org:</b> <br> - Notifications are the predominant messaging format <br> - Toast messages use variants <br> - Toast messages with <code>mode</code> set to <code>sticky</code> do not exist <br> - Notices are used rarely, if at all <br> - Generative responses always identify data sources used <br> - Bots clearly identify themselves before the first interaction with users <br> - Disclaimers for risks associated with generative AI appear to users before first interaction <br> - AI disclaimers are in clear and understandable language for users</td> <td><b>In your org:</b> <br> - Emails are the predominant messaging format <br> - There is no consistent approach to message types <br> - Toast messages do not consistently use variants <br> - Toast messages with <code>mode</code> set to <code>sticky</code> exist <br> - Notices are used ad hoc <br> - Generative responses do not identify data sources used <br> - Bots do not clearly identify themselves before the first interaction with users <br> - No disclaimers for generative AI risks appears to users <br> - AI disclaimers are not in clear and understandable language for users</td> </tr> <tr> <td><b>In your apps:</b> <br> - No generative responses are sent directly to end users without points of human involvement</td> <td><b>In your apps:</b> <br> - Generative responses are sent directly to end users without points of human involvement</td> </tr> <tr> <td colspan="2">Also see: <a href="../easy/automated#Error_Handling">Error Handling</a></td> </tr> <tr> <td rowspan="2"><b>In-App Guidance</b></td> <td><b>Your design standards and documentation include:</b> <br> - Approved use cases for in-app guidance <br> - Design patterns for prompts and walkthroughs <br> - A clear matrix of users, apps, and active in-app guidance</td> <td>If design standards and documentation exist, they: <br> - Do not address in-app guidance <br> - Do not include a clear matrix showing users, apps, active in-app guidance</td> </tr> <tr> <td><b>In your org:</b> <br> - The setting for "Delay Between In-App Guidance" uses the default value or a custom value that is <i>longer</i> than the default (24-hour) period provided by Salesforce <br> - No apps have more than one active walkthrough <br> - No walkthroughs have a "Times to show" setting that is higher than 10 <br> - No prompts are activated for "Any page, any app" or "This page, any app"</td> <td><b>In your org:</b> <br> - The setting for "Delay Between In-App Guidance" is set to a period that is shorter than the default (24-hour) period provided by Salesforce <br> - Apps have more than one active walkthrough <br> - Many walkthroughs have a "Times to show" setting that is higher than 10 (and some have the maximum value of 30) <br> - Prompts are activated ad hoc, many with the "Any page, any app" or "This page, any app" setting </td> </tr> <tr> <td><b>Recognition and Rewards</b></td> <td><b>In your org:</b> <br> - Apps use embedded analytics to show users relevant goal progress and productivity stats <br> - Path celebrations are enabled only with user consent <br> - Notifications and messaging include user recognition, and reflect user preferences in the design of who is notified and what triggers notifications </td> <td><b>In your org:</b> <br> - Analytics related to goal progress and productivity stats are only available in reports or manager dashboards <br> - Path celebrations are enabled without checking for user consent <br> - Notifications and messaging do not include any kind of user recognition or don't reflect the preferences of users and feel noisy or gimmicky </td> </tr> </tbody> </table> <h2 id="tools-relevant-to-engaging">Tools Relevant to Engaging</h2> <table class="tools-table"><tbody><tr><th>Tool</th><th>Description</th><th>Streamlined</th><th>Helpful</th></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.lightning_page_getting_into_salesforce1.htm&type=5">Activate Your Lightning App Page</a></td><td>Manage page availability, naming, visibility and positioning</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://appexchange.salesforce.com/appxListingDetail?listingId=a0N30000004gHhLEAU">Adoption Dashboards</a></td><td>Review login history, feature adoption, and productivity</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/components/alert/">Alert</a></td><td>Persist alerts over sessions and display them without user initiation</td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.apex_result_caching">Client-side Caching of Apex Method Results</a></td><td>Evaluate performance with cached client-side data</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.dynamic_forms_overview.htm&type=5">Dynamic Forms</a></td><td>Only display required fields and page sections to users</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.networks_insights_enable.htm&type=5">Engagement Insights</a></td><td>Monitor recent user activity and take action as needed</td><td class="check-col">X</td><td class="check-col">X </td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.customhelp_lexguid.htm&type=5">In-App Guidance </a></td><td>Utilize prompts and walkthroughs for training and onboarding</td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.customhelp_lex_learning_intro.htm&type=5">Learning Paths</a></td><td>Personalize user learning experiences</td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.lightning_app_builder_overview.htm&type=5">Lightning App Builder</a></td><td>Create custom mobile and Lightning pages without code</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.data_ui_api">Lightning Data Service</a></td><td>Cache and share data across components</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/tools/validator/">Lightning Design System Validator for VS Code</a></td><td>Validate markup against SLDS guidelines</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.lightning_page_templates.htm&type=5">Lightning Page Templates</a></td><td>Build Lightning Pages for different form factors</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.fields_lookup_filters.htm&type=5">Lookup Filters</a></td><td>Filter values for lookup, master-detail and hierarchical relationships</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.admin_currency.htm&type=5">Manage Multiple Currencies</a></td><td>Use multiple currencies in transactions</td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=livemessage_intro.htm&language=en_US&type=5">Messaging </a></td><td>Send SMS, Facebook Messenger or WhatsApp messages</td><td class="check-col"></td><td class="check-col">X </td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=s1_branded_apps.htm&language=en_US">Mobile Publisher</a></td><td>Create mobile versions of Lightning apps and Experience Cloud sites</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.mobile">Mobile-Ready Components</a></td><td>Build components that perform well across mobile experiences</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.siteforce_languages_overview.htm&type=5">Multilingual Sites</a></td><td>Create different language versions of your site</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.notif_builder.htm&type=5">Notification Builder</a></td><td>Create custom notifications to present information</td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.path_overview.htm&type=5">Path</a></td><td>Guide users through business processes and celebrate success</td><td class="check-col">X</td><td class="check-col">X </td></tr> <tr><td><a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_cache_namespace_overview.htm">Platform Cache</a></td><td>Improve performance and reliability when caching data</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.lightning_app_builder_mobile_guidance.htm&type=5">Preview Mobile App Pages in Lightning App Builder</a></td><td>Preview record and app pages on a mobile device</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/components/prompt/">Prompt</a></td><td>Alert users of system-related issues and updates</td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=networks_recog_badges.htm&type=5&language=en_US">Recognition Badges</a></td><td>Acknowledge and celebrate user accomplishments</td><td class="check-col"></td><td class="check-col">X </td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.workcom_overview.htm&type=5">Recognition with WDC</a></td><td>Endorse skills and give thanks</td><td class="check-col"></td><td class="check-col">X </td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=customize_recordtype.htm&type=5&language=en_US">Record Types</a></td><td>Personalize business processes, picklist values, and page layouts</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=networks_reputation_overview.htm&type=5&language=en_US">Reputation Overview</a></td><td>Recognize participation and knowledge sharing</td><td class="check-col"></td><td class="check-col">X </td></tr> <tr><td><a href="https://help.salesforce.com/apex/HTViewHelpDoc?id=sf.security_restriction_rule.htm&language=en_US">Restriction Rules</a></td><td>Prevent users from accessing records that can contain unnecessary data</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.lightning_page_components.htm&type=5">Standard Page Components</a></td><td>Understand the standard Salesforce Lightning components</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=workbench_overview.htm&type=5&language=en_US">Translations</a></td><td>Manage translations for global users</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.fields_about_field_validation.htm&type=5">Validation Rules</a></td><td>Verify that data meets specified standards prior to saving</td><td class="check-col">X</td><td class="check-col"></td></tr> </tbody></table> <h2 id="resources-relevant-to-engaging">Resources Relevant to Engaging</h2> <table class="tools-table"><tbody><tr><th>Resource</th><th>Description</th><th>Streamlined</th><th>Helpful</th></tr> <tr><td><a href="https://architect.salesforce.com/decision-guides/build-forms">Architect's Guide to Building Forms</a></td><td>Evaluate form design considerations and select the best tool</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://developer.salesforce.com/docs/component-library/documentation/en/lwc/use_config_form_factors">Configure Your Component for Different Form Factors</a></td><td>Configure components to render in desktops and phones</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=customhelp_about.htm&type=5&language=en_US">Customize Help Content</a></td><td>Tailor help content to your unique implementation </td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://help.salesforce.com/s/articleView?id=sf.fields_defining_default_values.htm&type=5">Default Field Values</a></td><td>Define default, dynamic, or static field values</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/guidelines/overview/">Design Guidelines</a></td><td>Create user interfaces consistent with best practices</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="/../resources/design-standards-template">Design Standards Template</a></td><td>Create design standards for your organization</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="https://trailhead.salesforce.com/content/learn/modules/ux-designer-certification-prep/refresh-your-design-testing-skills">Design Testing Skills (Trailhead)</a></td><td>Plan methods for validating and testing a designs</td><td class="check-col">X</td><td class="check-col">X </td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/guidelines/in-app-feedback/overview/">In-App Feedback Guidelines</a></td><td>Review guidelines to collect feedback from within your system</td><td class="check-col">X</td><td class="check-col">X</td></tr> <tr><td><a href="https://github.com/salesforce-ux/design-system-android">Lightning Design System Android Static Library</a></td><td>Build native Android apps with the look and feel of Lightning pages</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://github.com/salesforce-ux/design-system-ios">Lightning Design System iOS Static Library</a></td><td>Build native iOS apps with the look and feel of Lightning pages</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/guidelines/messaging/overview/">Messaging Guidelines</a></td><td>Communicate relevant information and create moments of delight</td><td class="check-col"></td><td class="check-col">X</td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/guidelines/messaging/types/">Messaging Types</a></td><td>Understand the different messaging types based on user interaction</td><td class="check-col"></td><td class="check-col">X </td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/guidelines/navigation/">Navigation Guidelines</a></td><td>Help users move between pages and situate themselves in an app</td><td class="check-col">X</td><td class="check-col"></td></tr> <tr><td><a href="https://trailhead.salesforce.com/content/learn/modules/testing-for-web-accessibility">Testing for Web Accessibility (Trailhead)</a></td><td>Utilize automated and manual tests to ensure accessibility</td><td class="check-col">X</td><td class="check-col">X </td></tr> <tr><td><a href="https://www.lightningdesignsystem.com/guidelines/user-engagement/overview/">User Engagement Guidelines</a></td><td>Review guidelines for onboarding, adoption, assistance, and learning</td><td class="check-col">X</td><td class="check-col">X</td></tr> </tbody></table> <h2 id="tell-us-what-you-think">Tell us what you think</h2> <p>Help us keep Salesforce Well-Architected relevant to you; take our <a href="https://sfdc.co/bxNtvh">survey</a> to provide feedback on this content and tell us what you’d like to see next.</p> </tm-content> </div> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Article", "headline": "Engaging", "image": ["https://architect.salesforce.com/assets/images/cards/engaging.png"], "author": "Salesforce Architects", "publisher": { "@type": "Organization", "name": "Salesforce", "logo": { "@type": "ImageObject", "url": "https://architect.salesforce.com'/assets/images/favicon-192x192.png" } }, "url": "https://architect.salesforce.com", "mainEntityOfPage": "https://architect.salesforce.com/well-architected/easy/engaging", "datePublished": "July 2024", "dateModified": "July 2024", "description": "Read about our update schedules here. Introduction Systems demonstrate engaging behaviors by making it easy for people to access and use..." } </script> <footer> <tds-footer config="{"columns":[{"heading":"Well-Architected","links":[{"href":"/well-architected/overview","label":"Overview"},{"href":"/well-architected/trusted/overview","label":"Trusted"},{"href":"/well-architected/easy/overview","label":"Easy"},{"href":"/well-architected/adaptable/overview","label":"Adaptable"},{"href":"/well-architected/explorer","label":"Pattern & Anti-Pattern Explorer"}]},{"heading":"Diagrams","links":[{"href":"/diagrams/#framework","label":"Salesforce Diagrams Overview"},{"href":"/diagrams/#reference-architecture-gallery","label":"Reference Architecture Gallery"},{"href":"/diagrams/#data-model-gallery","label":"Data Model Gallery"}]},{"heading":"Decision Guides","links":[{"href":"/decision-guides/event-driven","label":"Event-Driven Architectures"},{"href":"/decision-guides/data-integration","label":"Data Integration"},{"href":"/decision-guides/trigger-automation","label":"Record-Triggered Automation"},{"href":"/decision-guides/build-forms","label":"Building Forms"},{"href":"/decision-guides","label":"See All Guides"}]},{"heading":"Fundamentals","links":[{"href":"/fundamentals/platform-transformation","label":"Platform Transformation"},{"href":"/fundamentals/architecture-basics","label":"Architecture Basics"},{"href":"/fundamentals/platform-multitenant-architecture","label":"Platform Multitenant Architecture"},{"href":"/fundamentals/platform-sharing-architecture","label":"Plaform Sharing Architecture"}]},{"heading":"Resources","links":[{"href":"/resources/project-resource-gallery/ai","label":"Project Resource Gallery"},{"href":"/roadmaps/roadmap-explorer","label":"Roadmap Explorer"},{"href":"/releases","label":"Release Overviews"}]},{"heading":"Connect","links":[{"href":"/connect/blog","label":"Our Blog"},{"href":"https://www.youtube.com/c/SalesforceArchitects","label":"Our Youtube Channel"},{"href":"https://trailblazer.salesforce.com/about","label":"Trailblazer Community"}]}],"global":{"logo":{"assistiveText":"Salesforce Logo","url":"/assets/images/salesforce-corp-logo.jpg"},"copyrightTitle":"© Copyright 2024 Salesforce, Inc. ","copyrightEnd":" Various trademarks held by their respective owners. Salesforce, Inc. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States","links":[{"href":"https://www.salesforce.com/company/legal/","label":"Legal","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/legal/sfdc-website-terms-of-service/","label":"Terms of Service","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/legal/privacy/","label":"Privacy Information","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/disclosure/","label":"Responsible Disclosure","target":"_blank","rel":"noopener"},{"href":"https://trust.salesforce.com/","label":"Trust","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/company/contact-us/?d=cta-glob-footer-11","label":"Contact","target":"_blank","rel":"noopener"},{"href":"https://www.salesforce.com/form/other/privacy-request/","label":"Your Privacy Choices","target":"_blank","rel":"noopener","icon":"/assets/images/privacyicon.png"}]}}"></tds-footer> </footer> <script type="application/javascript">/* This script is generated */ /* Client Bootstrap configuration */ globalThis.LWR = globalThis.LWR || {}; Object.assign(globalThis.LWR, {"appId":"genericRouteHandler","bootstrapModule":"@lwrjs/app-service/genericRouteHandler/module/esm/v/0_11_15","autoBoot":true,"imports":{"/1/bundle/esm/l/en-US/bi/0/module/mi/%40lwrjs%2Fapp-service%2FgenericRouteHandler%2Fmodule%2Fesm%2Fv%2F0_11_15/s/b6ad7971baa5047e7bbcc1e3720daf77d2e9a4e8/bundle_@lwrjs_app-service_genericRouteHandler_module_esm.js":["@lwrjs/app-service/genericRouteHandler/module/esm/v/0_11_15"],"/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Fheader%2Fv%2F1_0_1/s/f1ae5fd3b59a385b871f876495d5741e0957add6/bundle_tds_header.js":["tds/header/v/1_0_1"],"/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Fsearch%2Fv%2F1_0_1/s/ba146dfefa0db013dde40c32eb477d1546205919/bundle_tds_search.js":["tds/search/v/1_0_1"],"/1/bundle/esm/l/en-US/bi/0/module/mi/tm%2FpageHeaderA%2Fv%2F1_0_1/s/c8f9c55107f494dec9b72e13a6bb453e5f9f65bd/bundle_tm_pageHeaderA.js":["tm/pageHeaderA/v/1_0_1"],"/1/bundle/esm/l/en-US/bi/0/module/mi/tm%2Fcontent%2Fv%2F1_0_1/s/dee4bef2d0f5ca8a26d7c6e1b844af5611d11762/bundle_tm_content.js":["tm/content/v/1_0_1"],"/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Ffooter%2Fv%2F1_0_1/s/1f66aa6c773f6411635ee086a6f51d1560c26190/bundle_tds_footer.js":["tds/footer/v/1_0_1"],"/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Finstrumentation%2Fv%2F1_0_1/s/9c0fc260e15d54da8ccbbd08bcaf7480b9943fff/bundle_tds_instrumentation.js":["tds/instrumentation/v/1_0_1"]},"index":{"@lwrjs/app-service/genericRouteHandler/module/esm/v/0_11_15":"/1/module/esm/0/l/en-US/mi/%40lwrjs%2Fapp-service%2FgenericRouteHandler%2Fmodule%2Fesm%2Fv%2F0_11_15/latest/@lwrjs_app-service_genericRouteHandler_module_esm.js","tds/header/v/1_0_1":"/1/module/esm/0/l/en-US/mi/tds%2Fheader%2Fv%2F1_0_1/latest/tds_header.js","tds/search/v/1_0_1":"/1/module/esm/0/l/en-US/mi/tds%2Fsearch%2Fv%2F1_0_1/latest/tds_search.js","tm/pageHeaderA/v/1_0_1":"/1/module/esm/0/l/en-US/mi/tm%2FpageHeaderA%2Fv%2F1_0_1/latest/tm_pageHeaderA.js","tm/content/v/1_0_1":"/1/module/esm/0/l/en-US/mi/tm%2Fcontent%2Fv%2F1_0_1/latest/tm_content.js","tds/footer/v/1_0_1":"/1/module/esm/0/l/en-US/mi/tds%2Ffooter%2Fv%2F1_0_1/latest/tds_footer.js","tds/instrumentation/v/1_0_1":"/1/module/esm/0/l/en-US/mi/tds%2Finstrumentation%2Fv%2F1_0_1/latest/tds_instrumentation.js"},"rootComponents":["tds/header/v/1_0_1","tds/search/v/1_0_1","tm/pageHeaderA/v/1_0_1","tm/content/v/1_0_1","tds/footer/v/1_0_1","tds/instrumentation/v/1_0_1"],"serverData":{},"endpoints":{"uris":{"mapping":"/1/mapping/esm/0/l/en-US/bi/0/mp/","module":"/1/bundle/esm/l/en-US/bi/0/module/mi/"}}}); globalThis.process = { env: {"NODE_ENV":"prod","SSR":false,"basePath":"","locale":"en-US","assetBasePath":"","uiBasePath":""} }; globalThis.lwcRuntimeFlags = { ENABLE_MIXED_SHADOW_MODE: false };</script> <script type="module" src="/1/bundle/esm/l/en-US/bi/0/module/mi/%40lwrjs%2Fapp-service%2FgenericRouteHandler%2Fmodule%2Fesm%2Fv%2F0_11_15/s/b6ad7971baa5047e7bbcc1e3720daf77d2e9a4e8/bundle_@lwrjs_app-service_genericRouteHandler_module_esm.js"></script> <link rel="modulepreload" href="/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Fheader%2Fv%2F1_0_1/s/f1ae5fd3b59a385b871f876495d5741e0957add6/bundle_tds_header.js" /> <link rel="modulepreload" href="/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Fsearch%2Fv%2F1_0_1/s/ba146dfefa0db013dde40c32eb477d1546205919/bundle_tds_search.js" /> <link rel="modulepreload" href="/1/bundle/esm/l/en-US/bi/0/module/mi/tm%2FpageHeaderA%2Fv%2F1_0_1/s/c8f9c55107f494dec9b72e13a6bb453e5f9f65bd/bundle_tm_pageHeaderA.js" /> <link rel="modulepreload" href="/1/bundle/esm/l/en-US/bi/0/module/mi/tm%2Fcontent%2Fv%2F1_0_1/s/dee4bef2d0f5ca8a26d7c6e1b844af5611d11762/bundle_tm_content.js" /> <link rel="modulepreload" href="/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Ffooter%2Fv%2F1_0_1/s/1f66aa6c773f6411635ee086a6f51d1560c26190/bundle_tds_footer.js" /> <link rel="modulepreload" href="/1/bundle/esm/l/en-US/bi/0/module/mi/tds%2Finstrumentation%2Fv%2F1_0_1/s/9c0fc260e15d54da8ccbbd08bcaf7480b9943fff/bundle_tds_instrumentation.js" /> <tds-instrumentation use-google-tag-manager="true"></tds-instrumentation> </body> </html>