Free sample · answers included
Free Salesforce Platform App Builder
Practice Questions
18 free Platform App Builder practice questions from our bank of 300 reviewed questions, picked across all 5 official exam sections in proportion to their weight. Each one shows the correct answer, why it is right and why the others are wrong, and the official documentation it was checked against.
Last updated
What is the Platform App Builder exam like?
60 + up to 5
Scored + unscored questions
105 min
Time limit
73%
Passing score
$200
Registration (retake $100)
None
Prerequisite
Confirm current details in the official Platform App Builder exam guide.
Questions by exam section
Heavier sections get more questions, the same way the real exam and our 60-question practice exams are weighted.
Salesforce Fundamentals
18% of the examQuestion 1 · Easier
The custom object Expense_Report__c has a Private org-wide default at AW Computing. Two internal auditors must be able to read every expense report regardless of owner, but must not edit them and must not gain access to other objects' records. What should the app builder do?- A.Assign the auditors a permission set with the View All Data permission so they can read every expense report.
- B.Assign the auditors a permission set with Modify All Records on Expense_Report__c, then remove their Edit access.
- C.Assign the auditors a permission set with Read and View All Records on the Expense_Report__c object.
- D.Change the Expense_Report__c org-wide default to Public Read Only so that the auditors can see all records.
Show the answer and explanationHide the answer
Correct answer: C. Assign the auditors a permission set with Read and View All Records on the Expense_Report__c object.View All Records on a specific object lets users view all records of that object regardless of sharing settings, and Salesforce describes it as a better alternative to View All Data for object-specific needs. View All Data exposes all apps and data across the org, which breaks the requirement to stay out of other objects. Modify All Records grants edit, delete and transfer rights, and Edit can't be removed while Modify All Records stays enabled. Changing the org-wide default would expose every expense report to every internal user, not just the two auditors.Question 2 · Easier
The finance director at Ursa Major Solar wants a waterfall chart on a Lightning dashboard that shows how starting pipeline moves to ending pipeline through gains and losses. None of the standard dashboard widget types offers a waterfall chart. What should the app builder recommend?- A.Add a custom Lightning web component to the Lightning dashboard to render the waterfall chart from report data.
- B.Use a gauge widget with custom ranges for each gain and loss so the segments look like steps in a waterfall chart.
- C.Turn the source report into a joined report, because joined report charts support waterfall charts on dashboards.
- D.Add a metric widget for each gain and each loss and arrange the widgets side by side across the dashboard grid.
Show the answer and explanationHide the answer
Correct answer: A. Add a custom Lightning web component to the Lightning dashboard to render the waterfall chart from report data.Build a Lightning Experience Dashboard explains that custom Lightning web components can be added to Lightning dashboards to support new use cases, giving a waterfall chart as an example of a visualization that isn't available in standard dashboard components. A gauge shows a single value within a range of custom values, not a sequence of gains and losses. Joined report charts don't add chart types; Help only notes that their chart can be added as a widget without filtering. A row of metric widgets shows separate key values but can't draw the cumulative steps of a waterfall.Question 3 · Harder
At Cumulus Financial, new loan applications are owned by the Intake queue until an underwriter takes ownership. An owner-based sharing rule shares records owned by the Intake queue with the Compliance Reviewers group. Reviewers report that they see unassigned applications but lose access once an underwriter in the queue takes ownership. What explains this?- A.A sharing rule that uses a queue as its source shares only records the queue owns, not records owned by the queue's individual members.
- B.Compliance Reviewers lost access because ownership changes trigger a full recalculation that removes every sharing rule's access to the record.
- C.Owner-based sharing rules apply only to records whose owner is an active user, so queue-owned records stay shared until reassigned.
- D.The rule was created before the underwriters joined the queue, and sharing rules ignore group or queue members added after the rule is saved.
Show the answer and explanationHide the answer
Correct answer: A. A sharing rule that uses a queue as its source shares only records the queue owns, not records owned by the queue's individual members.Sharing Rule Considerations states that when an owner-based sharing rule shares records owned by a queue, only records owned by the queue are shared and records owned by individual queue members aren't, so access ends when an underwriter takes ownership. Transferring records reevaluates sharing rules to add or remove access as needed, so other rules that still match keep granting access. Sharing rules apply to records owned by both active and inactive users. When the members of a group, role or territory change, sharing rules are reevaluated, so later members are not ignored.
Data Modeling and Management
20% of the examQuestion 4 · Medium
Northern Trail Outfitters has a custom Membership object. The app builder wants each Contact to be the detail side of a master-detail relationship to Membership, so contacts inherit membership sharing and are deleted with the membership. What should the app builder recommend?- A.Create the master-detail field on Contact after setting the Contact organization-wide default to Controlled by Parent
- B.Create the master-detail field on Contact and select Allow reparenting so contacts can switch memberships
- C.Create a master-detail field on Membership pointing to Contact, so each contact inherits the membership's sharing
- D.Relate Contact to Membership with a lookup, because a standard object can't be the detail of a custom object
Show the answer and explanationHide the answer
Correct answer: D. Relate Contact to Membership with a lookup, because a standard object can't be the detail of a custom objectConsiderations for Object Relationships states that standard objects can't be on the detail side of a custom object in a master-detail relationship, so a lookup from Contact to Membership is the supported design. Changing the Contact organization-wide default or selecting Allow reparenting doesn't lift that restriction, and Allow reparenting applies only to master-detail relationships on custom objects anyway. A master-detail field on Membership pointing to Contact is allowed, but it makes Membership the detail, so memberships would inherit contact sharing, which is the opposite of the requirement.Question 5 · Medium
Ursa Major Solar stores a Legacy Ticket Reference in a populated custom Text field on the Service Ticket object. The service manager wants Salesforce to number new tickets automatically in the same field, so the app builder plans to convert it to Auto Number. A data review shows that some existing references are 34 characters long. What should the app builder do before converting?- A.Convert the field to Number first, then convert it again from Number to Auto Number
- B.Nothing, because Salesforce trims longer values to the field limit during the conversion
- C.Replace the field with a formula that concatenates a prefix with the record's created date
- D.Shorten the existing values that exceed 30 characters, then convert the Text field to Auto Number
Show the answer and explanationHide the answer
Correct answer: D. Shorten the existing values that exceed 30 characters, then convert the Text field to Auto NumberA Text field can be converted to Auto Number without losing data, but auto-number fields hold at most 30 characters, so Salesforce says to change records whose value is longer than 30 characters before converting. Converting to Number first would itself risk data loss, because changing to Number from any other type can lose data, and Auto Number from any type except Text loses data too. Salesforce doesn't document silently trimming long values; the guidance is to fix them first. A formula field is read-only and can't replace a numbering field that keeps historic references.Question 6 · Medium · Choose 2
Universal Containers has a custom Manifest Line object with an optional lookup to the custom Shipment Manifest object. Lines must keep their own owners, but the business wants all lines deleted when a manifest is deleted. The app builder is considering the Delete this record also option. Which two considerations apply? Choose 2 answers.- A.Cascade-delete is disabled by default, so Salesforce must enable it for the org before the option can be used
- B.The option is available for lookups to any object, including lookups from custom objects to the User object
- C.Cascade-delete bypasses security and sharing, so users can delete lines they don't have access to
- D.Selecting the option requires the lookup field to be required, because only required lookups can cascade
- E.Selecting the option converts the lookup into a master-detail relationship and removes the Owner field
Show the answer and explanationHide the answer
Correct answers: A. Cascade-delete is disabled by default, so Salesforce must enable it for the org before the option can be used; C. Cascade-delete bypasses security and sharing, so users can delete lines they don't have access toHelp warns that Delete this record also can cause a cascade-delete that bypasses security and sharing settings, so users can delete related records they can't access; to prevent accidents, cascade-delete is disabled by default and you contact Salesforce to enable it. Cascade-delete and related options aren't available for lookups to business hours, network, lead, price book, product or user objects. The deletion behaviors are offered when the lookup field is optional, not only when it is required. The option keeps the relationship a lookup, so lines keep their own Owner field.Question 7 · Easier
Ursa Major Solar's operations lead has a CSV file of 30,000 new records for the custom Installation object, exported from a spreadsheet tracker. It's a one-time load, the lead isn't technical and prefers a browser-based tool, and the org uses Enterprise Edition. What should the Salesforce admin recommend?- A.Data Loader, because custom objects can only be loaded through a client application
- B.The Data Import Wizard, which runs in the browser and handles up to 50,000 records
- C.The Data Export service, scheduled to import the CSV file during the weekly run
- D.Basic Data Import, which provides a simplified in-browser path for custom objects
Show the answer and explanationHide the answer
Correct answer: B. The Data Import Wizard, which runs in the browser and handles up to 50,000 recordsThe Data Import Wizard is an in-browser tool that imports custom objects as well as accounts, contacts, leads, solutions and campaign members, up to 50,000 records at a time, so it fits a one-time load of 30,000 rows. Data Loader also works, but custom objects aren't limited to it, and it's a client application rather than a browser tool. The Data Export service creates backup files; it doesn't import data. Basic Data Import is a simplified tool for contacts and leads only.
Business Logic and Process Automation
32% of the examQuestion 8 · Harder
At Northern Trail Outfitters, an integration creates a Shipment record and then immediately updates its Status from Pending to Dispatched in the same transaction. A record-triggered flow on Shipment that runs when a record is created or updated compares$Record.Status__cwith$Record__Prior.Status__cto post a dispatch notice, but the notice never posts for these shipments. Shipments that users dispatch later work correctly. What explains this?- A.
$Record__Prioris available only in flows that run when a record is updated, not in created or updated flows - B.The record is created and updated in one transaction, so
$Record__Priorholds the same values as$Record - C.Record-triggered flows never run for records that an integration user saves through the API in a transaction
- D.Decision elements can't read
$Record__Prior, so the comparison must use ISCHANGED on an asynchronous path
Show the answer and explanationHide the answer
Correct answer: B. The record is created and updated in one transaction, so$Record__Priorholds the same values as$RecordWhen the triggering record is created and updated in the same transaction, no committed prior state exists, so $Record__Prior contains the same values as $Record and the statuses never differ; the integration needs to split the create and the update into separate transactions. $Record__Prior is available in flows that run when a record is updated and in flows that run when a record is created or updated. Record-triggered flows run on matching saves whichever user or channel makes them, which is why the issue is limited to the same-transaction pattern. Decisions can compare $Record with $Record__Prior, and asynchronous paths don't support the ISCHANGED operator anyway.- A.
Question 9 · Easier
An app builder at AW Computing is debugging a screen flow in a Full sandbox that testers use for user acceptance testing. The flow creates opportunities and sends emails, and the testers do not want debug runs to leave records behind. What should the app builder do?- A.Close the debug panel before the final screen, because closing a running flow reverses its earlier changes
- B.Debug the flow in Test Mode, because test scenarios never commit records or send any emails while running
- C.Deactivate the flow before debugging, because inactive flows run the debugger in read-only preview mode
- D.Select Run flow in rollback mode in Debug Options so the debug run's data changes are rolled back
Show the answer and explanationHide the answer
Correct answer: D. Select Run flow in rollback mode in Debug Options so the debug run's data changes are rolled backSalesforce warns that debugging without Run flow in rollback mode makes the flow perform its actions, including DML, so selecting rollback mode keeps the debug run from leaving records. Closing or restarting a running flow doesn't roll back actions already executed or changes already committed. Test Mode applies to autolaunched and record-triggered flows, not screen flows like this one. Deactivating a flow doesn't turn the debugger into a read-only preview; debug runs still perform their actions unless rollback mode is selected.Question 10 · Medium
At Northern Trail Outfitters, sales reps must not be able to move an opportunity to Closed Won while the related account has its custom Credit Hold checkbox selected. Open opportunities on those accounts must stay editable. What should the app builder configure?- A.A validation rule on Opportunity with
AND(ISPICKVAL(StageName, "Closed Won"), Account.Credit_Hold__c) - B.A validation rule on Account with
AND(Credit_Hold__c, ISPICKVAL(Opportunity.StageName, "Closed Won")) - C.A lookup filter on the Opportunity's Account field that excludes every account with Credit Hold selected
- D.A required setting on the Credit Hold field in the Account page layout so opportunities check it before saving
Show the answer and explanationHide the answer
Correct answer: A. A validation rule on Opportunity withAND(ISPICKVAL(StageName, "Closed Won"), Account.Credit_Hold__c)Validation rule formulas can reference fields on the parent of the object they run on, so a rule on Opportunity can combine the stage with Account.Credit_Hold__c and fire only when both are true. A rule on Account runs when the account is saved and cannot reference a single child opportunity's stage. A lookup filter limits which accounts users can pick in the lookup, which would block every opportunity on held accounts rather than only the move to Closed Won. Making a checkbox required on a layout does not stop an opportunity from being saved at any stage.- A.A validation rule on Opportunity with
Question 11 · Harder · Choose 2
When an app builder at Get Cloudy Consulting saves a new cross-object formula field on the Engagement object, Salesforce reports that the object has reached the maximum number of 15 object references. Engagement has formula fields, active and inactive validation rules, lookup filters, and some legacy workflow rules. Which two actions reduce the spanning relationship count so the new formula can be saved? Choose 2 answers.- A.Deactivate a legacy workflow rule whose field update references fields on two other related objects
- B.Split the new cross-object formula into two smaller formula fields that both live on the Engagement object
- C.Delete an unused formula field that is the only component on Engagement referencing a particular relationship
- D.Move the cross-object references out of a validation rule and into a lookup filter on Engagement
- E.Deactivate an unused validation rule that is the only component referencing a particular relationship
Show the answer and explanationHide the answer
Correct answers: C. Delete an unused formula field that is the only component on Engagement referencing a particular relationship; E. Deactivate an unused validation rule that is the only component referencing a particular relationshipThe 15-reference limit counts unique relationships used across an object's formula fields, validation rules, lookup filters, workflow rules and other rules, so removing the only component that uses a relationship frees capacity; for validation rules only active rules count, so deactivating an unused one is enough. For workflow rules and field updates, every rule counts whether or not it is active, so deactivating one does not help; only deletion frees capacity. Splitting a formula into two fields on the same object keeps the same relationships referenced. Lookup filters also count toward the limit, so moving references into one does not reduce the total.Question 12 · Harder
Cloud Kicks built three agents from the same standard subagent in the asset library and customized each one. Salesforce later improved that standard subagent, but none of the three agents shows the new behaviour. What should the app builder do to give an agent the improvements?- A.Wait for the next release, because changes to standard assets sync to existing agents during upgrades
- B.Edit the standard subagent in the asset library and save it again so all three agents pick up the change
- C.Deactivate and reactivate each agent so it reloads its subagents from the current asset library version
- D.Add the standard subagent to the agent again from the asset library and recreate the customizations
Show the answer and explanationHide the answer
Correct answer: D. Add the standard subagent to the agent again from the asset library and recreate the customizationsWhen you add a standard subagent or action, it's copied to your agent, and changes to standard assets in the asset library aren't automatically applied to agents that use them, so you add the asset again and recreate any customizations. Waiting for a release won't help because the copy is intentional to protect deployed agents. Editing and saving the library asset doesn't push changes into existing agents' copies. Reactivating an agent doesn't reload its copied subagents from the library.Question 13 · Harder
In a Northern Trail Outfitters flow approval process for supplier onboarding, the finance approval step must not start until an integration updates the Supplier record's Credit Check Status field to Complete, which can take several days. What should the app builder use?- A.A Decision element before the finance stage that checks Credit Check Status once and ends the process if the field is not yet Complete.
- B.A requirement on the finance approval step that marks the step as ready to start once Credit Check Status is updated to Complete.
- C.A schedule-triggered flow that runs nightly and resubmits the supplier for approval once the Credit Check Status field says Complete.
- D.A Pause element inside the approval step's screen flow that keeps the approver waiting on the Work Guide until the status changes.
Show the answer and explanationHide the answer
Correct answer: B. A requirement on the finance approval step that marks the step as ready to start once Credit Check Status is updated to Complete.Requirements resume an orchestration run when a record changes: you can define up to 10 requirements that decide when a step is ready to start or when a stage or approval step is marked completed, so the finance step waits for the field update. A Decision element evaluates its conditions when the run reaches it, so checking once would end or misroute the process rather than wait. Resubmitting nightly from a schedule-triggered flow creates new submissions instead of continuing the existing one. A screen flow cannot keep an approver parked on a Work Guide waiting for an integration, and that would assign the work item before it should exist.
User Interface
17% of the examQuestion 14 · Medium
Bloomington Caregivers wants coordinators to see different fields on Task records depending on the Task's Type, and the app builder plans to use Dynamic Forms visibility rules. When the app builder opens the Task record page in the Lightning App Builder, there is no Fields tab in the component panel. What is the reason, and what should the app builder do?- A.Dynamic Forms must first be enabled in User Interface settings; turn it on and reopen the Task record page
- B.The page uses a template that does not support Dynamic Forms; switch the page to the Header and Right Sidebar template
- C.Task isn't LWC-enabled, so Dynamic Forms isn't available; vary the fields with record types and page layouts
- D.The app builder lacks the Customize Application permission; assign it and the Fields tab will appear for Tasks
Show the answer and explanationHide the answer
Correct answer: C. Task isn't LWC-enabled, so Dynamic Forms isn't available; vary the fields with record types and page layoutsDynamic Forms is supported only on LWC-enabled objects, and Help names Tasks, Events, and Products as objects that are not LWC-enabled and therefore use the object page layout; if there is no Fields tab, Dynamic Forms is not supported for that object. Varying fields by Type therefore falls back to record types with their own page layouts. There is no org-wide User Interface setting that adds the Fields tab for an unsupported object. Changing templates cannot add Dynamic Forms support to an object that lacks it. Customize Application is needed to save pages at all, so it would not explain a missing Fields tab on one object.Question 15 · Harder
The Salesforce admin at Cumulus Financial has never customized the Salesforce Mobile and Lightning Experience Actions section of the Account page layout. In the Quick Actions in the Salesforce Classic Publisher section, the admin moved the Post action to the end, yet Post still appears in the same position in the Account action bar in the Salesforce mobile app. What explains this, and how can the admin control the order?- A.Feed tracking overrides the publisher order on Account; turn it off for Account so the Classic publisher order applies.
- B.Account predefined actions fix Post in a set position; override the mobile actions section and order the actions there.
- C.The Account action bar follows the global publisher layout; move Post to the end of the global publisher layout instead.
- D.The mobile app caches the action bar; have users log out of the app and back in so the new publisher order loads.
Show the answer and explanationHide the answer
Correct answer: B. Account predefined actions fix Post in a set position; override the mobile actions section and order the actions there.When the Salesforce Mobile and Lightning Experience Actions section isn't customized, Salesforce uses predefined actions, and on Account the Post action holds a fixed fourth position no matter where it sits in the Classic publisher section. To set the order yourself, override the predefined actions and arrange them in the Salesforce Mobile and Lightning Experience Actions section. Turning off feed tracking would remove standard Chatter actions such as Post rather than reorder them. The global publisher layout is used only when the object's Classic publisher section isn't customized, and a fixed position isn't a caching issue.Question 16 · Easier · Choose 2
A developer at Ursa Major Solar deployed a Lightning web component named solarEstimate, but the app builder can't find it in the Components pane while editing the Opportunity record page in the Lightning App Builder. Refer to the configuration file below:
Which two changes should the developer make? Choose 2 answers.<?xml version="1.0" encoding="UTF-8"?> <LightningComponentBundle xmlns="http://soap.sforce.com/2006/04/metadata"> <apiVersion>66.0</apiVersion> <isExposed>false</isExposed> </LightningComponentBundle>- A.Add a solarEstimate.design resource to the bundle that names the Opportunity object.
- B.Set isExposed to true so that the builders can offer the component.
- C.Implement the flexipage:availableForRecordHome interface in the component's JavaScript class.
- D.Add a targets section that lists lightning__RecordPage as a target.
- E.Add a solarEstimate.svg file to the folder so the component is listed in the Components pane.
Show the answer and explanationHide the answer
Correct answers: B. Set isExposed to true so that the builders can offer the component.; D. Add a targets section that lists lightning__RecordPage as a target.A Lightning web component shows up in the Lightning App Builder only when its js-meta.xml file sets isExposed to true and defines at least one target, such as lightning__RecordPage for record pages. A .design resource and the flexipage:availableForRecordHome interface are how Aura components are exposed, so neither applies to a Lightning web component. A componentName.svg file only supplies a custom icon for the Components pane; it doesn't make a hidden component appear.
App Deployment
13% of the examQuestion 17 · Easier
A Northern Trail Outfitters admin uploaded an outbound change set to production and then noticed that a new validation rule was missing from it. What should the admin do to send the validation rule with the rest of the changes?- A.Open the uploaded change set, add the validation rule, and upload the same change set again
- B.Recall the uploaded change set from production, add the validation rule, and then resend it
- C.Clone the uploaded change set, add the validation rule to the clone, and upload the clone
- D.Wait for the change set to pick up the rule, since uploaded change sets refresh their components
Show the answer and explanationHide the answer
Correct answer: C. Clone the uploaded change set, add the validation rule to the clone, and upload the cloneAfter an outbound change set is uploaded its status becomes closed, so its components can't be changed. To send the same components plus the missing one, Salesforce recommends cloning the change set, adding the component, and uploading the clone. An uploaded change set can't be recalled. Components in a closed change set aren't refreshed, so waiting won't add the rule; the clone picks up the latest version of each component.Question 18 · Medium
Northern Trail Outfitters has years of unpackaged customizations for its internal warehouse app. The release manager wants to group that app's metadata into a versioned container whose source of truth is the team's Git repository, so components can be added, edited, and removed in a trackable way across sandboxes and production. The app will never be listed on AgentExchange (formerly AppExchange). Which package type should the release manager choose?- A.An unlocked package, versioned from the Git repository and suited to internal business apps
- B.A second-generation managed package, because every source-driven package must be a managed one
- C.An unmanaged package uploaded again from the production org after each release is finished
- D.A first-generation managed package created and maintained in a dedicated packaging org
Show the answer and explanationHide the answer
Correct answer: A. An unlocked package, versioned from the Git repository and suited to internal business appsSalesforce says unlocked packages are especially suited for internal business apps, follow a source-driven model where version control is the source of truth, and help you add, edit, and remove metadata in a trackable way across orgs. Second-generation managed packaging is source-driven too, but Salesforce directs it at partners who distribute apps on AgentExchange, so source-driven development doesn't require a managed package. Unmanaged packages can't be upgraded by the publisher and aren't meant for moving changes into production. A first-generation managed package treats the packaging org, not version control, as the source of truth, and it is a partner distribution tool.
Where to go after these 18 questions
Get Platform App Builder exam updates by email
Occasional emails when Salesforce changes this exam, plus practice questions with full explanations.
Free practice questions for other Salesforce Administrator certifications
Ready for a full Platform App Builder practice exam?
Take a timed 60-question exam drawn from all 300 reviewed questions in the real exam's section mix, then drill the sections you miss.