Is your Salesforce Commerce Cloud Website ready to launch? How to know for sure.
Is your organization preparing a Salesforce B2C Commerce Cloud website for launch? Have you completed the Salesforce Specification Review and are now preparing for the Launch Gate? If so, this article will help ensure your Salesforce Commerce Cloud Website ready to launch.
The Launch Gate is the final round of assessment Salesforce offers without any additional cost to confirm your website is ready for launch. There are a maximum of two Launch Gate reviews; the initial review is held 2 to 3 weeks before the planned go-live date. The second review is scheduled if blocker issues are discovered.
I will focus on reviewing the following items to help identify potential issues before your Launch Gate assessment. Reviewing these items will need coordination and cooperation between the Product Owner, Business Analyst, Technical Architect and the Functional Architect.
- High-level Code Review
- Performance Assessment
- SEO Configurations
- Products and Catalogs Configurations
- Search Configurations
- Online Marketing Setup
- Site Ordering Configurations
- Site Preferences
- Data Security
- Data Integration and Jobs
- Quota Status
- eCDN Configuration
High-level Code Review
It is very important to follow coding best practices when applying customization to the platform as it has a direct impact on the quality of your B2C Commerce implementation. Therefore, Salesforce conducts a high level code review for any customizations to ensure best practices are followed.
In order to ensure a smooth code review and minimize the back-and-forth, make sure to review the following items with the help of your Technical Architect:
- Naming conventions are followed.
- No Inline CSS or JavaScript is used.
- Each custom function has descriptive documentation added on top of it.
- Code is implemented in modular, reusable and understandable manner.
- No duplicated or not used code found.
- <isscript>and business logic are avoided inside the rendering isml templates, controllers should be responsible for the business logic.
- ISML tags use lower case.
- Caching statements are placed at the top of templates.
- Comments are included at the top of each new ISML template describing the purpose, the requirements and the effect of a template from both a business point of view and a technical perspective.
- Includes that affects the whole page are placed at the top of the ISML template.
- Search results are using pagination.
- Remote includes are properly used and cached since it is considered as a separate request.
- Error and exception handling are used properly with custom code and integrations.
- Concurrent object changes are avoided, shared data like catalogs and prices should be read-only.
- Post processing of product and category information is avoided and search APIs and native features are used instead.
- Timeout is set for all connections to external web services.
- Logging categories, level, file prefixes are used properly to make sure logs are printed to a specific file and only when needed.
- No customer or session specific information is cached.
- Session objects are properly used considering the following points:
- Session storage usage is minimized as much as possible.
- Large collection of values are not saved in session variables.
- Custom objects are properly used considering the following points:
- Primary keys are used when retrieving custom objects.
- System objectsare usedover custom objects as possible, this is better for improved performance and easier maintenance.
- Structured JSON style attributes are used and stored in a single custom attribute rather than creating stand alone custom object with many custom attributes.
- Jobsare scheduled to periodically purge custom objects or retention is set.
Ensuring the logic behind your application is sound and following best practices allows you to maximize your site performance, our next topic.
Performance Assessment
There are two key areas which need to be checked for optimal performance: server-side and client-side. Your Technical Architect should drive this with you.
For server-side performance, make sure caching is enabled and configured properly especially on the most visited pages like Product Details, Category Listing and Home pages.
You should do everything possible to attain a 1% cache miss rate; meaning when 100 transactions are coming through the web tier, only 10 transactions are recommended to go through the application tier and only one transaction hits the database. It is important to understand the cache key is based on the requested URL hash. This means if a parameter position changes then this will be considered as a cache miss which will impede performance by not leveraging the cache.
Salesforce provides some tools which help monitor and diagnose your site performance like the Pipeline Profiler, Code Profiler and Technical Reports. I will be writing separate blog that talks about each of these tools. Another tip – make sure to continually review the log files for potential errors and fix them accordingly.
Review my article herefor client side performance best practices.
While site performance has direct impact on sales, Search Engine Optimization (SEO) grows the quality and quantity of the site traffic by increasing the site visibility on search engines. Accordingly, your SEO configurations must be reviewed to make sure the site is ready for launch. In our next section, we will highlight the items that need to be reviewed for best SEO.
SEO Configurations
Check and validate the following items to optimize your site for search engines:
- URL rules
- Hostname aliases
- Redirects
- Page meta tags
- XML Sitemaps
- Robots files
It is very important to optimize your site URLs to improve user experience, rankings, linking functionality and increase site traffic. In particular, the following items should be checked:
URL rules
- URL conflicts are resolved.
- Home, Category, Product Details and Content pages have URL rules configured.
- URL length is 70 characters or less.
- Trailing slash is specified for all URLs.
- Capital letters are not used in URLs.
- Category URLs nested only two or three levels deep.
- Character replacements are configured.
- H1, href language and canonical tags have been coded into the templates.
- Cookies are not used for catalog navigation.
Hostname aliases
- A unique alias is configured for each instance.
- Controllers aliases are configured.
- Duplicate contents are avoided.
- Locale mappings are configured based on locale requirements.
Redirects
- Static and dynamic mapping is configured from 301 legacy URLs to new URLs.
- 404 pages contains alternative paths into the site.
Page meta tags
Metadata is configured for home, category, product and content pages following current industry guidelines:
- 50-60 character for Title
- 50-300 characters for Description
XML Sitemaps
Sitemap job is configured to run on production.
Robots files
Robots.txt file been configured on Production.
Now your code is clean, you have assessed the performance of your website and reviewed your SEO configurations. It is now the time to review your products and catalog configurations.
Product and Catalog Configuration
Product catalog management is the strategic process of organizing, standardizing, and publishing your product data and ensuring high quality across all sales channels therefore it is very important to review the corresponding configurations. As a Merchant and with the help of your Functional Architect make sure the following items are reviewed:
- A Master Catalog and a Storefront Catalog have been configured separately.
- Category refinements have been configured and relevant attributes are bucketed.
- Product attributes are clean and match the business requirements; all unnecessary attributes have been deleted.
- The Storefront Catalog is assigned to the site.
- The Storefront Catalog is assigned products, but doesn’t own any products.
Salesforce Commerce Cloud supports multiple catalogs for the same site, but only one catalog is exposed to the storefront at a time. It is common to configure a master catalog that owns all products and a storefront catalog that’s assigned to a subset of products. Typically, Master Catalog data is imported from a system of record.
It is also important for the storefront page navigation to mirror the Storefront Catalog structure for the following reasons:
- Allow Merchants to control which categories appear on the storefront and in what order.
- Avoid confusion for the Merchant and the shopper and simplify navigation for them.
Now that you’ve reviewed both Product and Catalog configurations, we need to look at Price Book and Inventory configurations.
Price Book Configuration
Price Books are the way you define prices for products; each product in the price book can have multiple price tables in which you define prices for varying quantities. The price tables are associated with a valid period and only one price table can be valid at any given time.
Validate at least one Price Book exists, is assigned to the site and activated. A common approach is to have two Price Books assigned to a site; one defines the list and one defines the sale pricing. This approach allows you to leverage the ‘was/now’ pricing feature, also known as strike-through pricing.
Price Books are defined for an entire organization. As such, the same Price Book can be shared between multiple sites. Therefore you can assign one or more Price Books to a storefront. You can also assign the same Price Book to multiple storefronts in an organization.
Inventory Configurations
Validate that at least one Inventory List exists and assigned to the site. Salesforce Commerce Cloud is not intended to be a system of record for inventory data. However, it is used to track inventory levels and integrate with backend inventory systems in real time. Multiple sites can share the same inventory list and each site will have only one Inventory List assigned.
Search Configuration
It is critically important to ensure your site allows your customers find the products they are looking for. Therefore, it is very important to configure your search properly, simple search should accept product IDs, product names, etc.
As a Merchant and with the help of your Functional Architect, you will need to validate the following regarding the Search Configurations:
- Searchable attributes for both products and content have been defined: Searchable attributes are important for both product and content to return in the search result while searching. Confine your searchable attributes to the minimum number necessary for customer searches. Searchable attributes contribute greatly to the size of indexes, which affect the speed of your search.
- The search index and index schedule are configured properly: Search index settings determine how the index is rebuilt as such you need to validate the following:
- Search index are built on staging and replicated from staging to production.
- Search index is disabled in production.
- Incremental indexing is enabled on staging to account for merchant activity in that environment.
- Index is scheduled to be built daily, scheduled rebuilding is recommended for all production instances, even if incremental indexing is enabled.
- Scheduled indexing is turned off during data replication.
- Stop words, Synonyms, hypernyms, suggestions, search driven redirects, common phrases and stemming exceptions have been configured.
- Search preferences like availability and search settings are reviewed.
- Sorting rules, default sorting roles and search refinements have been configured: Sorting option allows customers to sort search results already returned by a category or keyword search. There is only one list of storefront sorting rules for your entire storefront, so any sorting rules you select as sorting options must apply to all product categories. You can create up to 100 sorting options. Customers can also refine the search results using multiple attributes, such as price, promotion, category, or a product attribute.
Sorting rules can be assigned to a specific campaign which can be used to define a schedule for multiple experiences and to define qualifiers. For example, customer groups or coupons, for multiple promotions or sorting rules.
These tools can help drive your Online Marketing strategy, our next topic.
Online Marketing
With the help of your Functional Architect, validate that the launch campaigns and promotions are working as intended. You will also need to validate, if applicable, the legacy coupons have been imported into SFCC and functioning as expected.
Now will review the Ordering Configuration to ensure seamless shopping experience for your customers throughout their checkout journey.
Ordering Configuration
Below is a list of items you need to review with the help of your Functional Architect to minimize friction within your Checkout Workflow:
- Shipping methods are setup right and appears on the storefront.
- Payment methods are setup right and appears on the storefront.
- Tax calculation are setup right and appears on the storefront, tax tables are configured properly.
- Confirm Payment Capture is being done asynchronously.
- No iFrame is used during checkout process.
- Order Data Settings, in particular the following items:
- How many days the system stores orders.
- How many days the system stores failed orders.
- If to retain non-exported orders.
- Payment Information Settings to specify the number of days after which the system will mask order payment information.
- Order Creation Settings to specify if the system should generate customer number for unregistered customers.
Site Preferences
Site preferences control the behavior of individual Salesforce Commerce Cloud site. As such it is very important with the help of your Functional Architect to check, validate and verify the following items as part of the Site Readiness review:
- The required locales have been added.
- The organization’s default language is set properly.
- If the client uses the gift certificates feature ensure all test data is purged.
- Site-specific sequence numbers are configured for order number, invoice number, shipment number, and gift certificate, if used in the storefront.
Data Security
Securing sensitive customer information is paramount in ensuring compliance and protecting against data breaches. Review this section with your Technical Architect to ensure you customers sensitive information is secure.
Validate the following items:
- No unencrypted credit card numbers is printed in log files.
- Cardholder data storage like card number, cardholder name, expiration information and service code are kept to minimum by implementing data retention and disposal policies.
- Sensitive authentication information like CVV are not stored to the system even if encrypted.
- PAN is masked when displayed (the first six and last four digits are the maximum number of digits to be displayed).
- No PCI sensitive PII information (CVV/CC ) information stored in session.
- No storage for PCI data (CC or CVV) even not encrypted in Custom Objects.
- Checkout processing is accomplished over SSL.
- Secure code against Cross Site Scripting. Cross-site request forgery checks are used with all forms; all CSRF protection schemes can be defeated using Cross Site Scripting (XSS) attacks. Customer developers need to properly validate and encode all user input so that their storefronts are not exposed to CSRF threats.
- POST method is used over https for forms submission; both browser and server logs GET request content and attackers might easily intercept HTTP requests.
Data Integration and Jobs
Data integration is an essential part of any e-commerce site where data needs to be exchanged with external systems like PIM and OMS systems. This section covers the associated Salesforce B2C Commerce Cloud jobs which should be reviewed as part of your Readiness Assessment.
Within Salesforce B2C Commerce there are three types of jobs:
- Scheduled
- Import/export
- Batch
Make sure to review and validate the following items with your Technical Architect before going live:
- Export orders job is scheduled on production, it is good to export orders every 5 minutes.
- Import inventory jobsare scheduled on production, it is good to import delta inventory every hour and full inventory every day.
- Import Price Books job is scheduled on staging, and replication is scheduled into production. This should run every hour.
- Data replication is scheduled to run on daily basis from staging into production.
- Only Delta Feed is used on production to update SFCC objects specially during peak hours, delta feeds are:
- Smaller to archive
- Faster to import
- Easier to troubleshoot
- Secure connection is setup for file transfer on both production and staging.
- No custom code is used to import or export data into or from SFCC objects, standard import and export are used.
- CSVFileReader is not used to do translation between CSV and XML within the Salesforce Commerce Cloud platform, Salesforce recommend that you use a third-party program to process .csv files into the required XML format.
- Review jobs log files and make sure it is clean with no timeouts.
- Jobs are scheduled during off-peak hours.
- Application server utilization is kept to minimum; job load factor is below 0.20.
- Ensure multiple jobs are not started at the same time. Instead, disperse job start times to balance the job load.
Quota Status
Quotas help you monitor resource usage in custom code; memory usage, resource consumption, API calls and number of business objects. As such make sure to review status for object, object relation and API quotas.
In particular:
- Quota log files are capturing information about quota violations.
- No deprecated API alerts have been found in the deprecation log files.
- No violation on session object quota limits.
- Object quotas; up to 400,000 records in one instance group.
- HTTPClient quota; no more than 5 real API calls from a storefront template, the limit is at 8 but you will start getting warnings at 5.
eCDN Configuration
Last but not least is to review embedded Content Delivery Network (eCDN) setup which is designed to accelerate site speed access and content delivery.
Make sure to review the following items related to the eCDN configuration:
- Zone(s) configurations.
- DNS TXT verification.
- Hostname(s) configurations.
- SSL certificates and keys.
- HTTPs is switched on for the site.
I would like also to highlight Salesforce B2C Commerce offers 2-3 day Launch Readiness Boot Camp (LRBC). Your LRBC will occur 4 weeks prior to launch and prepares Merchants to efficiently manage their B2C Commerce storefront. Myself and Salesforce highly recommend you take advantage of this additional training.
Salesforce will provide the following as part of your LRBC:
- A hands-on workshop led by your B2C Commerce Functional Architect.
- Materials and processes to prepare for the site’s launch and to set up the storefront.
- Training for how to assemble merchandising production data.