# Free Salesforce B2C Solution Architect Practice Questions

*Last updated September 2026 · https://www.certifyforce.com/salesforce-b2c-solution-architect-practice-exam/free-questions*

18 free B2C Solution Architect practice questions from the Certifyforce bank of 300 reviewed questions, spread across the 5 official exam sections in proportion to their weight. Each has the correct answer, an explanation, and the official documentation it was verified against.

## Discovery and Customer Success (27%)

### Question 1

AW Computing built Marketing Cloud Personalization web campaigns and templates in a test dataset while its B2C Commerce sitemap was being completed. The launch estimate includes only cloning the dataset. What additional migration effort should the solution architect call out?

- A. Cloning transfers campaigns but not templates, so only template export and import must be added to the launch plan.
- B. Cloning transfers templates but not campaigns, so only campaign recreation must be added to the launch plan.
- C. Templates must be exported and imported, and test-dataset campaigns must be reproduced manually in production.
- D. Campaigns and templates must both be deleted and rebuilt in Commerce Business Manager before Personalization can use them.

**Correct answer:** C. Templates must be exported and imported, and test-dataset campaigns must be reproduced manually in production.

**Explanation:** The Personalization planning guide says cloning a dataset does not carry over data, campaigns or templates. Templates developed in test require individual export and import, while campaigns require manual reproduction in production. Either assumption that cloning transfers one of those asset types leaves work unbudgeted. These are Personalization assets, so rebuilding them in Commerce Business Manager is not the documented migration process.

**Sources:** [Plan a Web Integration](https://developer.salesforce.com/docs/marketing/personalization/guide/web-integration-planning.html)

### Question 2

Northern Trail Outfitters expects a large surge of back-in-stock signups during its seasonal launch. The design has B2C Commerce call Agentforce Service (formerly Service Cloud) for each request, and each request is stored there as a custom object record. Which two risks should the solution architect document? Choose 2 answers.

- A. Stored request records consume data storage, so plan to archive or automatically remove old ones
- B. Marketing Cloud Connect replaces the B2C Commerce catalog feed, so SFTP capacity becomes the main limit
- C. Each request opens a case in Agentforce Service, so the signup surge reduces agents' service capacity
- D. Each request is an individual API call that counts against daily API limits in Agentforce Service
- E. Each record must also be written back to a B2C Commerce custom object before Engagement can read it

**Correct answers:** A. Stored request records consume data storage, so plan to archive or automatically remove old ones; D. Each request is an individual API call that counts against daily API limits in Agentforce Service

**Explanation:** The design considerations state that each call from Commerce to Service is an individual API request counting against daily API limits, and they advise watching request volume and storage. They also say to archive the data, or configure a flow to remove it automatically, when it is no longer required. The kit stores requests on a custom object related to the contact, not as cases. Marketing Cloud Connect synchronizes the request object, while the catalog feed still uploads separately to Engagement SFTP. Engagement gets the requests through Marketing Cloud Connect, so no write-back to a B2C Commerce custom object is required.

**Sources:** [Back-in-Stock Design Considerations](https://help.salesforce.com/s/articleView?id=xcloud.send_back_in_stock_notifications_design_considerations.htm&type=5&language=en_US)

### Question 3

AW Computing authorizes card payments when a B2C Commerce order is placed and captures them later. In the Order Management ingestion design, the analyst labels the initial authorization transaction as a Payment representing captured funds. Which representation should the solution architect use instead?

- A. A PaymentAuthorization record for an authorization; sale or capture transactions create Payment records.
- B. A CardPaymentMethod record, because the payment instrument itself records the amount captured for each transaction.
- C. A PaymentGroup record, because grouping an order's payments proves that its authorization was captured.
- D. A Payment record, because all transaction types are ingested identically once an order reaches Salesforce.

**Correct answer:** A. A PaymentAuthorization record for an authorization; sale or capture transactions create Payment records.

**Explanation:** The integration creates PaymentAuthorization for transaction types beginning with auth and Payment for sale or capture transactions. The instrument record describes the payment method rather than replacing the authorization transaction. PaymentGroup associates payments with their source order and does not establish capture. Treating every transaction as Payment erases the documented distinction between authorizing and capturing funds.

**Sources:** [Salesforce B2C Commerce Storefront Order Data Map](https://developer.salesforce.com/docs/atlas.en-us.order_management_developer_guide_html.meta/order_management_developer_guide_html/order_management_b2c_commerce_data_map.htm)

### Question 4

Universal Containers sells extended warranty plans that should never show as out of stock on its B2C Commerce storefront, and it is adopting Salesforce Omnichannel Inventory. A merchandiser asks the solution architect to turn on perpetual availability for those inventory records. What should the architect recommend?

- A. Assign the products to a location group without any locations, because empty groups never report an out-of-stock status
- B. Use the inventory list's Default In-Stock setting, and customize the order workflow to manage reservations for those products
- C. Use the inventory list's Default In-Stock setting, and rely on Omnichannel Inventory to reserve those products at order time
- D. Turn on perpetual availability at the location group level, so every record in the group inherits the setting automatically

**Correct answer:** B. Use the inventory list's Default In-Stock setting, and customize the order workflow to manage reservations for those products

**Explanation:** Omnichannel Inventory does not support perpetual availability for individual inventory records, but Salesforce describes similar approaches, including the B2C Commerce inventory list's Default In-Stock setting. Products not on that list are available but are not included in reservation requests, so the order workflow must be customized to create and manage reservations. That also rules out relying on automatic reservations for them. The documentation describes no location-group perpetual setting or empty-group behavior; its other workaround is setting available inventory at one or more locations to 999999999.

**Sources:** [Omnichannel Inventory Integrations](https://help.salesforce.com/s/articleView?id=commerce.inv_omnichannel_inventory_integrations.htm&type=5&language=en_US)

### Question 5

Bloomington Caregivers schedules B2C Commerce data replication for a coordinated CRM launch. Merchandising approval was given when the process was created, but the selected source data changed before the scheduled run. The release board assumes scheduling froze the approved values. What should the solution architect clarify?

- A. The process uses source data as it exists when it runs, so approval must account for intervening source changes.
- B. The process cancels itself whenever a selected source value changes after the schedule was created.
- C. The process switches to target values after source edits, so production's current data becomes the approved input.
- D. The process retains the data values from creation, so later source edits cannot affect this scheduled replication.

**Correct answer:** A. The process uses source data as it exists when it runs, so approval must account for intervening source changes.

**Explanation:** The creation guide explicitly says data is replicated in its state when the process runs, not when the process is defined. Scheduling therefore does not create an immutable approved snapshot. The guide does not describe automatically canceling the process on source edits or switching its input to target data. Approval and source-change controls must account for the actual execution state.

**Sources:** [Create a Data Replication Process in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_create_data_replication_process.htm&type=5&language=en_US)

## Functional Capabilities and Business Value (7%)

### Question 6

Northern Trail Outfitters authorizes five units on one Salesforce Order Management RMA, but its warehouse receives and inspects only two units in the first parcel. Service must process each received batch promptly and retain the existing authorization for the three units arriving later. Which receipt workflow should the architect recommend?

- A. Process the two received units and use the separate line created for the remaining expected quantity on that RMA.
- B. Process the two received units, then edit that same processed return line to add the later receipt quantities.
- C. Reduce the expected quantity to two and close that return, requiring a new authorization when the other units arrive.
- D. Keep the first receipt unprocessed until all five units arrive, then process the original return line in one batch.

**Correct answer:** A. Process the two received units and use the separate line created for the remaining expected quantity on that RMA.

**Explanation:** Order Management supports processing the received quantity while keeping the remaining expected quantity on a newly created return line under the existing return order. The processed line becomes read-only, so later receipts cannot be added by editing it. Reducing the authorization to the first receipt and requiring a new one discards the requested continuity for the outstanding units. Waiting for every unit would postpone processing the inspected first batch and fail the prompt-processing requirement.

**Sources:** [ReturnOrder Class](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_ReturnOrder_static_methods.htm)

## Architecture Design (18%)

### Question 7

AW Computing uses Data 360 audiences for Marketing Cloud Personalization targeting and Engagement journeys for follow-up messaging. The website must react to a customer's recent journey interaction without waiting for a CRM attribute-sharing cycle. Which additional integration should the architect recommend?

- A. Pull CRM Contact attributes through Personalization's native CRM integration whenever the website renders.
- B. Export Personalization segments to Engagement through the Segment Exporter Gear as the return path for journey actions.
- C. Use the Engagement Email starter bundle in Data 360 as the direct callback from each journey activity to the website.
- D. Add a Personalization Activity to the journey to pass configured actions, identifiers, and attributes back to Personalization.

**Correct answer:** D. Add a Personalization Activity to the journey to pass configured actions, identifiers, and attributes back to Personalization.

**Explanation:** The Journey Builder integration uses a Personalization Activity to pass configured actions, identifiers, and attributes back to Personalization for targeting and personalization. It supports reacting to journey context rather than waiting for CRM attribute sharing. The CRM integration isn't a website-render-time lookup, and the Segment Exporter Gear moves segments toward Engagement rather than returning journey actions. The Email starter bundle ingests engagement data into Data 360; it isn't a direct callback from each journey activity to the website.

**Sources:** [Marketing Cloud Personalization — Winter ’23](https://resources.docs.salesforce.com/240/latest/en-us/sfdc/pdf/mc_interaction_studio.pdf), [About Integrating Personalization with Journey Builder](https://help.salesforce.com/s/articleView?id=mktg.mc_pers_salesforce_marketing_cloud_journey_builder_about.htm&type=5&language=en_US)

### Question 8

Northern Trail Outfitters has an order that automated routing hasn’t allocated. Operations has identified suitable fulfillment origins and wants to apply that decision within Order Management. Which response should the architect recommend for this exception?

- A. Create Draft fulfillment-order headers and assume the normal process will supply their missing line allocations and activate them.
- B. Create another routing schedule so the unchanged automatic rules determine the fulfillment origins again.
- C. Change the order summary to Unmanaged so the same managed fulfillment and payment flows automatically start again.
- D. Use manual order routing to create fulfillment orders for the existing order from the locations selected by operations.

**Correct answer:** D. Use manual order routing to create fulfillment orders for the existing order from the locations selected by operations.

**Explanation:** Order Management supports manual creation of fulfillment orders for orders that aren’t automatically routed, a capability explicitly documented in the Spring ’21 release notes. The fulfillment-order creation capability allocates order product summaries to the specified fulfillment locations for the existing order. Scheduling another attempt asks the automatic rules to choose again rather than applying the operations-selected plan. An order summary’s lifecycle type is set at creation and can’t be changed later; changing it to Unmanaged is not a recovery mechanism. Draft headers without the required line allocations and supporting records are not completed fulfillment work.

**Sources:** [Enhance the Shopping and Order Experience — Salesforce Spring ’21 Release Notes, printed page 384](https://resources.docs.salesforce.com/230/latest/en-us/sfdc/pdf/salesforce_spring21_release_notes.pdf), [FulfillmentOrder Class](https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_ConnectAPI_FulfillmentOrder_static_methods.htm), [Salesforce Order Management Developer Guide — API 56.0, Winter ’23](https://resources.docs.salesforce.com/240/latest/en-us/sfdc/pdf/order_management_developer_guide_html.pdf)

### Question 9

A retailer is extending an existing Commerce-to-Engagement solution kit to two markets. The same products have translated descriptions and different currencies, and their available inventory differs by market. Which two design considerations should the architect include before reusing one unchanged catalog feed? Choose 2 answers.

- A. Evaluate separate Engagement business units for the differing inventory, with the Marketing Cloud representative.
- B. Create a different B2C Commerce realm solely because Engagement cannot consume localized product information.
- C. Put translated product descriptions and currency values only on customer profiles, leaving the catalog feed model unchanged.
- D. Extend the catalog feed model to support the required language and currency representations.
- E. Feed default-language and default-currency product values and rely on each Engagement business unit's locale to convert them automatically.

**Correct answers:** A. Evaluate separate Engagement business units for the differing inventory, with the Marketing Cloud representative.; D. Extend the catalog feed model to support the required language and currency representations.

**Explanation:** The kit says to extend the catalog feed for multiple languages and currencies and to customize the reference implementation for localization. It also recommends considering a different business unit when inventory differs for the same products. Separate Commerce realms are not required merely to make localized feed data possible. A business-unit locale is not the documented substitute for extending the catalog, and customer-profile attributes do not replace the required localized product-feed model.

**Sources:** [Turn Abandoned Carts into Completed Sales — Winter ’23 Solution Kit](https://resources.docs.salesforce.com/240/latest/en-us/sfdc/pdf/abandoned_cart_solution_kit.pdf)

## Data Models and Management (25%)

### Question 10

Cumulus Financial's service org runs Loyalty Management, which is the system of record for member tiers. Its B2C Commerce merchandise store must give Gold members a members-only promotion, and the loyalty system can export the customer numbers of Gold members every night. The tier must not be recalculated in B2C Commerce. What should the B2C solution architect recommend?

- A. Create a dynamic customer group whose rule uses average order value from Active Data to approximate the Gold tier on the storefront.
- B. Import a customer group file that lists the Gold members, because the customer group import carries each group's assigned customers.
- C. Call Loyalty Management from every storefront page to check the tier, then apply the promotion when the response says Gold.
- D. Create a static Gold group, assign members through the nightly customer import, and assign the group to the promotion's campaign.

**Correct answer:** D. Create a static Gold group, assign members through the nightly customer import, and assign the group to the promotion's campaign.

**Explanation:** Static customer groups are merchant-defined groups whose members are assigned explicitly in Business Manager or by import, and customer-to-group assignments travel through the customer import rather than the customer group import; promotions inherit customer group qualifiers from their campaign. Feeding membership from the loyalty export keeps Loyalty Management as the tier's system of record. A dynamic group calculates membership from B2C Commerce data such as Active Data, which only approximates the tier and breaks the no-recalculation requirement. The customer group import doesn't support customer assignments. A live call on every page adds a synchronous dependency for data that changes only nightly.

**Sources:** [Create a Customer Group in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_creating_a_customer_group.htm&type=5&language=en_US), [Customer Group Object Import/Export in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_customer_group_object_import_export.htm&type=5&language=en_US), [Customer Groups as Promotion Qualifiers for B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_using_customer_groups_as_qualifiers.htm&type=5&language=en_US)

### Question 11

Bloomington Caregivers' service org uses data privacy records based on the Individual object. A customer who earlier asked the company to stop processing her data now wants an account on its Experience Cloud help site, and an agent can't create the site user from her contact record. Her data privacy record has Don't Process selected. What should the B2C solution architect recommend?

- A. Create a second contact for her without a data privacy record, so that the help site user can be created from that contact.
- B. Delete her data privacy record, because a contact linked to any data privacy record can't be enabled as a site user.
- C. Record her new consent, then clear Don't Process and Forget this Individual on her record before creating the user.
- D. Clear only Forget this Individual, because Don't Process doesn't affect whether a contact can become a site user.

**Correct answer:** C. Record her new consent, then clear Don't Process and Forget this Individual on her record before creating the user.

**Explanation:** Salesforce's best practices for data privacy records say that to create a community member from a contact with an associated data privacy record, first disable Don't Process and Forget this Individual on that record; because she previously asked not to be processed, her new consent should be recorded before the preference changes. A second contact without a privacy record sidesteps her recorded preferences and splits her data. Contacts with data privacy records can become site users once those two preferences are cleared, so deleting the record isn't needed. Clearing only Forget this Individual leaves Don't Process in place, and it must be disabled too.

**Sources:** [Best Practices for Tracking Data Privacy](https://help.salesforce.com/s/articleView?id=platform.individuals_things_to_know_privacy_records.htm&type=5&language=en_US), [Object Reference: Individual](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_individual.htm)

### Question 12

Northern Trail Outfitters' B2C Commerce catalog has grown to 400,000 products across six locales, and search indexing and replication from staging now overrun their windows. Which two data hygiene practices should the B2C solution architect recommend? Choose 2 answers.

- A. Run the cleanup on production rather than staging, because production holds the rows that slow search indexing and replication.
- B. Store simple flags as Set of Strings or Enum of Strings attributes so that they can be extended later without a data migration.
- C. Copy the default value explicitly into every locale and site so that storefront lookups don't fall back to x-default at runtime.
- D. Consolidate locale-specific values to the language representation instead of keeping separate country-code locale values.
- E. Remove orphan products and catalog data on staging, and delete custom attributes that are no longer needed with their values.

**Correct answers:** D. Consolidate locale-specific values to the language representation instead of keeping separate country-code locale values.; E. Remove orphan products and catalog data on staging, and delete custom attributes that are no longer needed with their values.

**Explanation:** The B2C Commerce product data guidance says large product data sets slow export, replication, search indexing, database access and rendering, and recommends removing orphan products and catalog data, deleting unneeded custom attributes (which removes their stored values), and consolidating locale-specific values to the language representation unless country codes are needed. Set of and Enum of attributes should be used only when their extended functions are used. The guidance applies primarily to staging, which replicates product data to production, so cleaning staging improves replication. Copying the default into every locale and site creates the redundant rows the guidance warns against; x-default is the intended fallback.

**Sources:** [B2C Commerce: How to Optimize Product Data and Custom Attributes for Performance](https://help.salesforce.com/s/articleView?id=000393488&language=en_US&type=1)

### Question 13

Ursa Major Solar's ERP is the system of record for prices. For a Black Friday event, its B2C Commerce site, which sells only in USD, must switch to sale prices at midnight and return to list prices when the sale ends. The draft plan has an administrator replicate a sale price book from staging at midnight and remove it afterward. Which three statements should the B2C solution architect use to revise the sequence? Choose 3 answers.

- A. Assign the sale price book only after midnight, because B2C Commerce ignores the valid period of a price book assigned early.
- B. Keep the midnight replication, because a price book can't be given a start and end date in B2C Commerce.
- C. Load and assign the sale price book ahead of the event with a valid period, so that it becomes active at midnight on its own.
- D. Keep the list price book continuous, so that it becomes active again automatically when the sale valid period ends.
- E. Make sure every product keeps a price for a quantity of one in the active USD price book, or it shows N/A and can't be bought.

**Correct answers:** C. Load and assign the sale price book ahead of the event with a valid period, so that it becomes active at midnight on its own.; D. Keep the list price book continuous, so that it becomes active again automatically when the sale valid period ends.; E. Make sure every product keeps a price for a quantity of one in the active USD price book, or it shows N/A and can't be bought.

**Explanation:** Price books can be valid only for a specific period, and when a continuous price book and a dated one are both assigned to a site, the dated one is active during its valid period and the continuous one otherwise, so loading the sale price book early removes the midnight replication and the list price book takes over when the sale ends. Each product needs a price for a quantity of one in a price book that is active for the site; without it the price shows as N/A and the product can't be bought. Valid periods apply to assigned price books, so assigning early is the point rather than a problem. Price books do support start and end dates through the Valid From and valid period settings.

**Sources:** [Pricing and Price Books in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_pricing_and_price_books.htm&type=5&language=en_US)

### Question 14

Northern Trail Outfitters imports its full product catalog into B2C Commerce every night in MERGE mode. Products that were discontinued and left out of the file still appear in the catalog. Which two statements should the B2C solution architect use to explain the behavior and the fix? Choose 2 answers.

- A. MERGE mode creates and updates the objects in the feed but leaves objects that are absent from the feed in the database.
- B. Replicating staging to production removes products missing from the last import, so the discontinued items disappear afterward.
- C. Switching the import to REPLACE mode removes the absent products, because REPLACE rebuilds the catalog from the feed contents.
- D. An element-level delete mode, such as `<product product-id="PN00001" mode="delete"/>`, lets one feed also remove products.
- E. Switching the import to UPDATE mode removes the absent products, because UPDATE keeps only the objects listed in the feed.

**Correct answers:** A. MERGE mode creates and updates the objects in the feed but leaves objects that are absent from the feed in the database.; D. An element-level delete mode, such as `<product product-id="PN00001" mode="delete"/>`, lets one feed also remove products.

**Explanation:** B2C Commerce import modes act only on objects in the feed: MERGE creates or updates them, and for imports other than price books no mode deletes objects that aren't in the feed, so a strategy is needed to remove outdated objects explicitly. Some imports support a DELETE attribute mode at the element level, so a single feed can create, update and delete objects. REPLACE is tempting, but it deletes and re-creates only the objects in the feed. UPDATE modifies existing objects in the feed and never removes others. Replication copies the staging data as it is, and the discontinued products still exist on staging.

**Sources:** [Import Modes in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_import_modes.htm&type=5&language=en_US)

## Integration (23%)

### Question 15

Northern Trail Outfitters' service org sends an outbound message to its warehouse system each time an exchange order's status changes. During busy periods, the warehouse sometimes applies an older status after a newer one, because a retried message arrives late. What should the B2C solution architect recommend?

- A. Replace the outbound message with an Apex callout for each update, because callouts are delivered in commit order and retried.
- B. Add a sequence field that the org increments, because outbound messaging then delivers messages in the order they were sent.
- C. Shorten the retry interval to 15 seconds for every attempt, so that older messages are always delivered before newer ones arrive.
- D. Have the warehouse call back with the message's session ID to read the current status before applying the change.

**Correct answer:** D. Have the warehouse call back with the message's session ID to read the current status before applying the change.

**Explanation:** Outbound messaging can't guarantee delivery order because a message can be retried over 24 hours; the integration pattern recommends callbacks, using the unique session ID in the message to authenticate, so the remote system reads the data as it is now rather than when the message was sent. The retry interval isn't configurable per attempt; it grows from 15 seconds to 60 minutes. Apex callouts have no built-in retry or ordering guarantee and need custom reliability code. A sequence field lets the receiver detect stale messages, but it doesn't make Salesforce deliver in order.

**Sources:** [Remote Process Invocation—Fire and Forget](https://developer.salesforce.com/docs/atlas.en-us.integration_patterns_and_practices.meta/integration_patterns_and_practices/integ_pat_remote_process_invocation_fire_forget.htm)

### Question 16

Ursa Major Solar's B2C Commerce checkout calls an installer-scheduling partner's API through the service framework. The partner requires mutual TLS: its server certificate is issued by the partner's private certificate authority, and each caller must present a client certificate. Which two steps should the B2C solution architect recommend? Choose 2 answers.

- A. Import both certificates into the eCDN keystore so that the embedded CDN completes the TLS handshake with the partner for the instance.
- B. Register the partner's CA as an Account Manager API client so that B2C Commerce trusts certificates that the authority issues.
- C. Import the company's client private key and certificate into the instance keystore as a private key entry for the outbound calls.
- D. Store the client private key in a password-type site custom preference and read it in the service callback that builds the request.
- E. Import the partner's CA certificate into the instance keystore as a trusted certificate entry so that outbound connections validate the server.

**Correct answers:** C. Import the company's client private key and certificate into the instance keystore as a private key entry for the outbound calls.; E. Import the partner's CA certificate into the instance keystore as a trusted certificate entry so that outbound connections validate the server.

**Explanation:** By default B2C Commerce recognizes only the root CAs that ship with the Java platform, so a private CA's certificate must be imported into the instance keystore as a TrustedCertificateEntry to validate the partner's server. A PrivateKeyEntry holds the private key and corresponding public key used to communicate with external web services, which is what the client certificate requires. The eCDN keystore holds the certificate for the storefront's eCDN, not certificates for the instance's outbound calls. Keeping a private key in a custom preference bypasses the encrypted keystore designed for key material. Account Manager API clients are credentials for API callers, not trust anchors for certificates.

**Sources:** [Private Keys and Certificates in B2C Commerce](https://help.salesforce.com/s/articleView?id=cc.b2c_certificates_and_private_keys.htm&type=5&language=en_US), [Security Managed by Customer](https://help.salesforce.com/s/articleView?id=cc.b2c_security_managed_by_customer.htm&type=5&language=en_US)

### Question 17

Cloud Kicks sends B2C Commerce orders to Salesforce Order Management through the standard B2C Commerce integration, with Person Accounts for Shoppers turned on. Service agents also need to find registered shoppers who call about product registrations before they have ever placed an order. The project plan assumes the order integration will provide these records. What should the B2C solution architect recommend?

- A. Rely on the Person Accounts for Shoppers setting, which makes the integration create a person account as soon as a shopper registers on the site.
- B. Change the two default Account record types for shoppers, so that the integration recognizes registered shoppers before their first order.
- C. Turn on B2C Integration Data Matching Rules, so that the order integration also loads registered shoppers who have no orders into the org.
- D. Plan a separate customer profile integration, because the Order Management integration creates or matches shopper records only from order data.

**Correct answer:** D. Plan a separate customer profile integration, because the Order Management integration creates or matches shopper records only from order data.

**Explanation:** The Order Management B2C Commerce integration works from the order data it receives: it searches for a matching shopper and creates a person account or account and contact only when an order arrives, so registered shoppers without orders never reach the org through it. The Person Accounts for Shoppers setting only decides how individual shoppers on ingested orders are represented. B2C Integration Data Matching Rules change how existing records are matched, not which shoppers are loaded. The integration depends on the two default Account record types keeping their names, so changing them risks breaking it rather than adding shoppers.

**Sources:** [Shopper Data with the B2C Commerce Integration](https://help.salesforce.com/s/articleView?id=commerce.om_shopper_data_with_b2c_com_integration.htm&type=5&language=en_US)

### Question 18

Ursa Major Solar is rebuilding its storefront on SCAPI. The old OCAPI implementation used a modify-response hook to return member-tier prices and region-specific promotions. The architect wants to avoid custom code for this personalization in the new design. What should the B2C solution architect recommend?

- A. Store the member tier in a shopper cookie and filter the standard prices in the storefront code before they are displayed.
- B. Send the shopper's attributes, such as member tier and region, through the Shopper Context API so SCAPI returns matching prices.
- C. Recreate the modify-response hook as a SCAPI hook on the product endpoint, because hooks are the standard way to personalize prices.
- D. Build a Custom API that recalculates every price in script code and have the storefront call it after each product request.

**Correct answer:** B. Send the shopper's attributes, such as member tier and region, through the Shopper Context API so SCAPI returns matching prices.

**Explanation:** Salesforce explains that SCAPI replaces OCAPI's modify-response hooks for this use case with the Shopper Context API: the storefront sends shopper attributes such as member level or region, and SCAPI returns the correct price or promotion natively without running custom code. A SCAPI hook can modify responses, but it carries forward the custom-code approach the architect wants to avoid. A Custom API that recalculates prices duplicates pricing logic in script and adds an extra call. Filtering prices in the storefront from a cookie exposes pricing logic to the client and bypasses B2C Commerce promotions.

**Sources:** [The Advantages of SCAPI](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/why-use-scapi.html)

## Related pages

- [Salesforce B2C Solution Architect practice exam](https://www.certifyforce.com/salesforce-b2c-solution-architect-practice-exam)
- [Practice exam packs](https://www.certifyforce.com/practice-exams)
- [Official B2C Solution Architect exam guide](https://help.salesforce.com/s/articleView?id=005298942&language=en_US&type=1)
