Professional Documents
Culture Documents
PREFACE
You downloaded the most comprehensive study guide for the Magento 2
Certified Solution Specialist certification (testing your knowledge of Magento
Commerce 2.3). This covers the exam which was released in March 2019.
I had the pleasure of helping write this test and can say from first-hand
experience (and in talking to others who have attempted the test), that this is
a difficult exam. It tests practical, real-life situations that you will likely run into
in your career with Magento. It ensures that you are a professional who can
understand client needs and map those to a successful result in Magento.
1. For those who are new to Magento, this guide serves as an overview of
managing Magento projects. Neither the guide nor the test is technical in
that they require knowledge of code. Rather, the guide helps you understand
the areas that practical experience is necessary.
2. For those who are experienced in Magento, this guide will help fill in the
voids to ensure a thorough understanding of how it works.
• your own sandbox where you can get this practical experience for yourself
This is a recipe for success. Our commitment to helping you pass is found
in the 100% pass guarantee. You pass or we reimburse further attempts and
personally help you.
“His training course for the Solution Specialist was thorough and was
instrumental in helping my team pass with flying colors.”
Ben, CEO at 121ecommerce
Acknowledgments
I would like to extend heartfelt gratitude to the following individuals who
contributed by edits or comments to the development of the study guide.
These people graciously donated their time to help others out. If you see them
at a conference or on Twitter, please thank them.
CONTENTS
1 eCommerce................................................................... 7
1.1 Demonstrate ability to configure SEO
features in Magento....................................................... 8
1.2 Demonstrate understanding of securing a
Magento project............................................................. 14
1.3 Demonstrate understanding of how to
measure and analyze the User experience....................... 20
1.4 Demonstrate knowledge of key laws and
regulations impacting eCommerce................................. 23
1.5 Demonstrate ability to use data analytics and testing..... 27
1.6 Demonstrate understanding of
implementing Omnichannel .......................................... 29
2 Magento Architecture..................................................... 38
2.1 Demonstrate ability to design a Cloud solution .............. 39
2.2 Demonstrate understanding of key
concepts of the Magento architecture ............................ 43
2.3 Demonstrate knowledge of how to use the
Magento API for integrating with 3rd party systems........ 48
2.4 Demonstrate ability to design and
administer websites, stores, store views........................ 53
2.6 Demonstrate ability to identify infrastructure
requirements for a Magento project................................ 59
2.7 Demonstrate ability to configure the
Magento storefront functionality.................................... 62
3 Magento Admin and Storefront....................................... 64
Omnichannel, Multichannel
Multichannel is when a company has multiple sales channels, but they are not
integrated. This often leads to customer frustration.
SEO
Search engine optimization is the darling child of online shops. Getting to the
#1 place on the respective search engines is not an overnight task and involves
several concurrent projects. However, getting to page one is often worth the
effort. Additionally, you do not pay per click (unlike paid advertising, such as
Google Ads), so the cost per click is perceived to be less. Whether or not it is, is
another discussion that depends on many factors.
I believe that every Solution Specialist should have a basic working knowledge
of SEO as it is so critical to helping merchants increase revenue.
We are going to present an overly simplified version of SEO with links for you to
gain more understanding.
Key: "Make pages primarily for users, not for search engines." (source:
Basic Principles)
Content
The higher the number, the fewer people are pleased with your page. The lower
the number, the more people find helpful your content.
Google Analytics has several informative reports that utilize the bounce rate:
• Audience > Mobile > Overview (how your visitors perform by device)
• Acquisition > All Traffic > Channels (how traffic performs for each incoming channel)
• Behavior > Site Content > All Pages (how specific pages perform)
Further Reading:
Reduce Bounce Rate in Google Analytics
Backlinks
How many people link to your website? The more links from quality sources
(reputable websites), the better. Google views your website as an authority
and will boost your rankings. SEO firms often utilize link building campaigns to
encourage other people to link to you.
While your job title may not be "SEO expert," you do need to know some
basic troubleshooting tips—ones that will save you and your merchants many
headaches.
• When creating a new website, ensure that every page on the old website
redirects to a page on the new website. This is done by creating redirects
in the Magento admin (Marketing > URL Rewrites) or through web server
configuration. Google has enough trouble browsing a website that has a new
URL and file structure, and by not providing the new versions of these links,
it is a recipe for a major disaster. Sadly, I have seen this impact way too many
websites—all by competent Magento agencies.
• Ensure that all titles and descriptions have unique content. Magento provides
entries for this content on categories, products, and CMS pages.
• Utilize a sitemap and submit this to Google Webmaster tools. You can tell
Magento to generate this on a schedule.
• We have also been seeing a drop in search engine rankings where an old
website is migrated to Magento, but the content structure is not the same.
For example, the old website might have few content-heavy pages (like
combining category and product pages). Magento has many content-light
pages. Utilizing a slow migration can help reduce loss of rankings, and
ultimately, loss of traffic.
Further Reading:
Comparison of Google clickthrough rates by position
Webmaster Guidelines
The canonical link element is an HTML meta tag that resides in the HTML source
(right-click on a page and click View Source).
In Magento, there are pages that can show the same content as other pages.
The best example is a product page (from the Magento Luma store):
1. /gear/bags/push-it-messenger-bag
2. /push-it-messenger-bag
3. /catalog/product/view/id/14
If Google has knowledge of each of these links (#1 and #2 are the biggest
problems), it might not know which items to show to visitors. You might have
search engine results pointing to the #1 scheme and others pointing to the #2
scheme.
This tells Google that the canonical (authoritative) reference to this page is the
'href' link. To enable it, go to Store Configuration > Catalog > Search Engine
Optimization > Use Canonical Link Meta Tag For Products and Use Canonical
Link Meta Tag For Categories.
Note that this feature is quite basic for products. By default, Magento only links
to the product in the website root URL and not the category > product path.
Social merchandising/marketing
Social merchandising is encouraging a customer to take actions on your behalf.
Here are examples:
One reason this is effective is that customers rely on social proof, where others
provide their word about the product or service that you are offering. As you
can encourage your customers to provide more of this proof (through social
merchandising) you and your customers win.
Affiliate marketing
Affiliate marketing is when other people link to you and you give them a cut of
your profits as a "thank you" for the traffic or sales. This can motivate influencers
to send traffic your way.
Magento has no system for tracking this, and you need to use a third-party
module.
• PCI-DSS: data security standards. These cover the entire organization which
accepts payment cards (credit and debit cards).
PCI compliance dictates how an organization must treat payment card data.
The "big idea" is to limit access and availability of cardholder data to the
minimum necessary and establish policies to ensure that this minimum
availability is maintained. This is called minimizing "scope." The less scope
you have to ensure is PCI compliant, the easier your job is. More importantly,
reducing scope reduces the area that you have to protect against data breaches.
Level 1 merchants are not eligible for a Self-Assessment Questionnaire (see next
section). Their compliance must be signed off by a Qualified Security Assessor
who writes up a Report on Compliance.
All other merchant levels have varying requirements for compliance. Most
Magento merchants fit into Level 2 through Level 5.
Further Reading:
A Beginner's Guide to the PCI Compliance Levels
• A-EP: ecommerce merchants who have in-page payment processing, but the
card does NOT proceed through merchant servers. In my interpretation, this
would be Braintree or Stripe or Paypal Express.
Please take time to familiarize yourself with the quick-start guide. I highly
recommend the requirements awareness training: it isn't much money for the
value that you gain.
Further Reading:
Assessing the Security of your Cardholder Data
Further Reading:
Are You Ready for 30 June 2018? Saying Goodbye to SSL/early TLS
What is a firewall?
A firewall monitors incoming traffic. At the basic level, a firewall opens and
closes ports. Typically the http (80) and https (443) ports are open to everyone.
Other ports are often opened to specific IP addresses. At more advanced levels,
Further Reading:
Distributed Denial of Service (DDoS) attack
firewalls watch incoming traffic and can block based on specific packets
(mitigating Magento vulnerabilities).
Further Reading:
What is a Firewall
Further Reading:
What is Spear Phishing?
Further Reading:
Transport Layer Security
As we will discuss later, these same procedures also apply for installing or
updating modules.
One thing to note is that Magento 2 requires time to build. If this is done
on production, the site will be down for that duration of time (longer, if
something breaks).
A good example is driving a car. When you rent a car, there is little to no learning
curve. You push on the gas pedal, switch on/off the blinkers, and press the
brakes. The seat may feel different, the windshield wiper toggle may be in a
different location, and the cruise control might be buttons instead of levers.
Regardless, you get in the car and feel almost instantly comfortable with your
surroundings. That is even though the car might be affordable or a high-end car
(we aren't talking about super-expensive cars).
This is the same way with a website. Things need to be fairly common
and intuitive:
Header with logo (that takes you back to the home page).
• Navigation bar
• Checkout
Within this framework (and some additional points), designers have tremendous
latitude. Yet, this needs to be tempered by what your audience expects.
The audience itself can be a driving factor. For example, if the merchant sells
to a more elderly market, fonts should be bigger, and certainly nothing crazy
should happen on the site.
But, if the merchant is targeting younger generations, the designer can have
more leeway as younger people are more responsive to "cool" things.
Further Reading:
eCommerce usability: The ultimate guide
Analyzing data
Google Analytics is the ubiquitous tool for determining how a website is
performing. Here are some common statistics that are helpful in understanding
how users value a website:
• Bounce rate: the number of visitors that return to the search engine (or
referring website) without clicking to a new page. The lower this is the better.
However, we have run into a number of cases where the bounce rate is very
low because the page view event in Google Analytics was fired twice.
• Average order value: the average amount ordered. The higher, the better.
• Session duration: the length of the average browsing session. The longer this
is, either people are having a hard time finding what they want, or they really
like the content on this page.
• Pages / session: the average number of pages that a visitor goes to during a
given browsing session.
Further Reading:
The Secrets Behind Google Analytics Conversion Rate
What is VAT?
VAT is value-added tax. This is a system of taxation that is utilized in most
countries around the world.
The idea is that tax is paid through layers. Each company remits VAT based on
the difference of the purchasing and selling prices. If a grocery store purchases
a loaf of bread for 1€ and would like a markup of 0.50€, they pay VAT on the
0.50€. VAT rates are often around 20% or more, so the grocery store adds 0.10€
in VAT to the total, sells the loaf of bread for 1.60€ and remits 0.10€ to the
taxation authority.
Further Reading:
VAT rules and rates
Further Reading:
The Ultimate Guide to EU VAT Digital Taxes
ADA compliance
ADA (American Disability Act) compliance ensures that website visitors with
disabilities can properly access your website using assistive devices, such as
screen readers.
While complying with these rules can be very complex (level AAA, for example),
following general guidelines like adding “alt” attributes to image tags and “title”
attributes to links is an important basic step to take.
• Level A: the minimum level to overcome the worst problems in navigating a website.
Further Reading:
Design for All: Accessibility For The Web
GDPR Compliance
I hope you are familiar with GDPR compliance and what that means for
merchants (especially those operating in the EU).
Data protection
Users also have the right to see their stored data and request it be erased.
Company responsibility
GDPR defines a basic framework (aka common sense) for how companies should
treat customer data. If the company is switching technologies or something similar
that could affect the security of their customer's data, they must perform a data
protection impact assessment.
When a data breach occurs, the company must notify the applicable supervisory
authority within 72 hours. They must communicate to their customers the impact.
Further Reading:
What is GDPR? The summary guide to GDPR compliance in the UK
GDPR
Google Analytics
Google Analytics is the primary website usage tracking and aggregation tool.
This is easily configured in Stores > Configuration > Sales > Google API. There
you can enable Google Analytics or Google Tag Manager (GTM). Note that
Magento's GTM integration does not output dataLayer variables.
These tools are an effective way to monitor traffic and usability of a website. It
is helpful for studying user trends. You are able to determine which pages have
a poor bounce rate. Or, see how the conversion rate improves with updates to
the purchase process. You can install a new theme on a website and track the
pages per session to see if customers are more engaged.
Further Reading:
Google Analytics for Beginners
A/B testing
You might want to know which design or piece of content resonates better
with visitors. A/B testing provides the solution for this. Using Google Optimize,
Optimizely or a myriad of other testing software, you can show two or more
versions to customers. These tools then track which has the best engagement
or goal conversions.
The learning from which customers prefer what version should guide future
decisions. This learning should also prevent making massive mistakes (such as
launching a new checkout process that nobody likes).
Further Reading:
A/B Testing
Further Reading:
Ecommerce Personalization
• The old inventory system: one product inventory location per product.
This area will serve as a basic overview of B2B. If you would like additional
information about this module, please consider our guaranteed prep course, as
we delve deeper into B2B features and how to utilize them.
• Define access controls for company accounts so they can create sub-
accounts and manage purchases for these accounts.
• Create quotes that have custom prices: these quotes can then be purchased
by the customer on the frontend.
We will take a look at the features of each of these capabilities. Please note that
no amount of reading substitutes for experience. This test requires advanced
knowledge of Magento Commerce and a good understanding of Open Source.
In the company screen, you can set up all the normal fields (address, tax ID,
comments, who is the point of contact, etc.). You can also configure their
available payment terms and how much they have spent against that.
You can also configure their shared catalog (from Catalog > Shared Catalog, see
following section). This is how you assign the specific catalog of products to
members of a company.
Finally, you can configure if they can have quotes and which payment methods
can be used.
When a company signs up on the frontend (this can be disabled), they go into
the Pending Approval status. An administrator must move these companies into
the Approved status for them to begin purchasing. Once the company is
approved, the primary contact receives an email stating as such (they receive
emails for each company status change).
Further Reading:
Company Accounts
If allowed, anyone can create a company account. The visitor specifies initial
information and can submit the application.
If the visitor already has a user account, that account will be assigned as the
primary contact. Otherwise, Magento will create a new customer, who will
receive an email to set a password.
This allows the procurement manager for a company to have great powers over
how the website is utilized.
Product catalogs
There are many instances where
merchants have custom product offerings
and pricing for companies they sell to.
Magento B2B allows easy customization
of this with Shared Catalogs (Catalog >
Shared Catalogs).
Assigning products and prices happen through the Set Pricing and Structure. You
can disable any category of products. You can also set a fixed price or a discount
for products. You can also do this en masse.
Further Reading:
Shared Catalogs
Further Reading:
Company Structure
Create quotes
The final major feature that we will cover in the Magento B2B module is the
ability to create quotes with custom prices.
Once customers populate their cart with desired products, they can choose to
request a quote (note that this feature can be toggled for all companies and
individual companies). Once they submit the request, they are taken to a list of
quotes in My Account.
Administrators can:
• write notes
• set a new price for the cart, apply a discount percent or apply a discount amount
What is MSI?
Multi-source inventory is a new feature for 2.3. It brings new ideas to the table.
We will provide basic information about the concepts surrounding MSI, but
suggest that you delve into the documentation. We believe that this feature will
become heavily used by merchants and it is important that you are familiar with
its configuration.
Terminology
• Source: fulfillment location, such as a warehouse, physical store, or your garage.
• Stock: the link between a source and a sales channel. A stock can be linked to
multiple sales channels (websites) and multiple sources.
Source
These define where inventory is stored. Each website has a default source.
Sources are configured in Stores > Sources.
You can specify a latitude and longitude for each source. If you also specify
a Google API key in Store Configuration, Magento will calculate the distance
between the shipping address and the source, choosing the closest source to
reduce shipping costs.
Stock
Stocks provide the link between sources and websites. These are configured in
Stores > Stocks. You can configure the sales channels (websites) and sources.
Sources are orderable.
Further Reading:
Quotes
Products
Once multiple sources have been specified, you are now able to set quantities
for each.
One thing to note is that you can specify a “Notify Quantity” per source. This is,
in effect, the safe (reserve) stock quantity at a source location. For example, if a
source is a physical retail store, you would want to keep some level of inventory
on the shelf for walk-in customers.
Orders
When orders are placed for products that have multiple sources, the quantity is
not immediately deducted. Rather, the person creating the shipment can
choose the source. Here is an example:
You are able to change the source algorithm (distance or source priority) and
create a shipment. Shipments are created for each source. If you wish to ship
some inventory from one location and other inventory from another location,
you would create two shipments, specifying the source for each shipment.
Configuration
MSI provides configuration values to select the distance provider (Google Maps
or offline).
This is somewhat off-topic, but in Magento Commerce, you can select "Use
deferred Stock update" in the Catalog Inventory configuration. Enabling this
makes the inventory table updates happen asynchronously after an order is
placed. Not enabling this can lead to errors when two or more orders are placed
at the exact same time.
Further Reading:
Inventory Management overview
Distance priority: use this if you wish to prioritize the closest source
(warehouse). This would be helpful if you ship from multiple warehouses and
wish to reduce shipping costs by shipping from a closer warehouse.
Source priority: use this if you have a preferred source. This would be helpful if
you have a warehouse and a store and wish to preserve stock at your store.
Drop ship
Drop-shipping is when the supplier ships products on a merchant's behalf.
Buy-on-line / pick-up-in-store
Ship-to-store is a common option that merchants offer to local customers.
Many times, this is accomplished through utilizing the Free Shipping
shipment option.
On-premise (hosted)
Magento Cloud
Magento Cloud offers a one-stop approach for Magento. The merchant is still
responsible for applying patches, but they do not have to worry about the
hosting environment. Not only have they written the software, but, with Cloud,
they also host it. The goal is that this provides an exceptional hosting package
with unparalleled support and service.
• Blackfire Profiler to find specific areas of PHP code that are running slow.
Cloud has multiple environments. We won't get into all the details, but here are
a few of the most important:
Further Reading:
Magento Commerce Cloud guide
Pro architecture
3. Assets are pushed to the hosting environment. Note that staging and
production are read-only but the mounts (or locations where the assets are
stored) are not.
4. Code is pushed to the staging environment (again, different for Starter and Pro).
Further Reading:
Go live checklist
Launch steps
All code changes are made on integration branches. These branches represent
website URLs that you can visit to perform UAT and ensure that the changes
meet the expected requirements.
Once these are set, the integration branches are merged into the Staging
environment. Once staging is verified to be working as expected, the code is
merged into the Production environment.
Further Reading:
Manage your Project
• Included 3rd-party tools, such as New Relic APM, BlackFire, FastlyCDN and
SendGrid.
• Long-term backups.
Further Reading:
Magento Commerce Cloud architecture
• Magento contains thousands of PHP files. These files perform the operations
that happen on the server to deliver HTML or JSON (through the WebAPI).
• Magento provides the capability to cache data. What is cached are the
results of expensive (time-consuming) computations. For example, module
configuration is stored all over the Magento file system. There are hundreds
of XML files that need to be merged together to formulate the overall
Magento configuration. Depending on the underlying hardware for a file
system, this could take seconds to read the files and merge them. As such,
caching saves massive amounts of time per load.
• Magento allows saving full HTML responses through the full-page cache.
This is a subset of the above caching topic. Again, loading configuration and
information from the database can be time-consuming. Pages in Magento,
except for the admin panel, cart, checkout and customer account areas, can
be cached in their entirety. This makes response times very fast.
• Magento also combines prices and other information for quick retrieval
through indexes. Loading a category page of products and showing the
unique product prices for each would take a long time.
• Magento's look on the frontend and admin panel is determined by the theme.
The theme provides custom HTML and CSS. Magento ships with the default
Luma theme which is often the base for most custom themes deployed for a
merchant. Here is an example of the Luma theme.
• Cron jobs are part of the Linux system. The system administrator must
configure the Linux cron job to trigger the Magento cron job. A developer
can configure additional cron jobs to handle timed tasks, like cleaning out
unused information every-so-often.
• SOAP
• REST
• GraphQL
The challenge is that this can cause problems with 3rd-party modules who
expect tables to be all in the same database.
Varnish intercepts incoming traffic and checks to see if a cached version exists
for the request. If it does, Varnish returns that.
Varnish is better than the built-in full-page cache. With the built-in cache,
Magento must still process the request. If Varnish-enabled sites respond in
under 100ms, most built-in cached websites respond in approximately 500ms—
a significant difference.
Further Reading:
Configure and use Varnish
Templates are pieces of HTML and PHP mixed together. The PHP adds logic,
and the HTML is what is rendered to the browser.
Layouts are XML instruction sheets that tell Magento what HTML files to render.
For example, most of the Magento checkout utilizes the REST API. Javascript
on the frontend talks through the REST API to the PHP on the server. This
eliminates page reloads and actually utilizes less data to transfer the information
from the client to the server.
SOAP API
REST API
This utilizes JSON (Javascript Object Notation) to send information and retrieve
information. The Magento checkout utilizes the REST API. The REST API is fairly
unstructured and is the easiest (fastest) method for integrating with Magento.
GraphQL
This utilizes a new query and data syntax. The syntax is structured. At the time
of this writing, this is still being finalized.
What are the intended use cases for the different API
types? What are the pros and cons of each type?
SOAP API
• ERP connections
• Pre-built connectors
The SOAP API is strongly typed, so it keeps track of what is a number, a decimal,
a string of text, and different types of objects. This provides a layer of validation
without a developer writing custom validation code.
REST API
The REST API is not strongly typed. This can result in validation problems (i.e.
passing a float where an integer is expected). As such, developers need to keep
this in mind to prevent strange data problems (like rounding a decimal number
to an integer with no decimal places).
With the REST API, there is no defined query language, so formulating selection
criteria is up to the developer to specify.
GraphQL
Because this is a new inclusion in Magento, its full scope of use cases is yet to
be determined.
• Frontend integration
OAuth 1.0
We will not get into the developer-related details of OAuth, as there are plenty.
The nutshell for this type of authentication is that it is a specified flow of
communication between two parties. Essentially a user on one website needs
to be authenticated to use another website.
We will describe how this connection works between the 3rd-party website and
Magento.
• Magento asks you to log in (if you aren't already logged in).
• When you do, you are redirected to the 3rd-party website with a token from
Magento providing authorization.
Further Reading:
OAuth-based authentication
Token
There are two use cases for tokens: public communications and private
communications.
Public communications represent when someone can locate the token being
used. In these cases, the token is typically limited based on the permissions
that the user has (for example an admin user will have more permissions than a
visitor who isn't even logged in). These tokens are usually time-limited as well.
Further Reading:
Token-based authentication
Login credentials
If a customer is logged in, Magento can utilize this login to provide authorization
for areas in the system. For example, a developer can look up the customer's ID
in these cases.
For admin users, a token must first be generated with the admin user's session.
Then, they can access resources with the token.
• System > Integrations: used to configure token and OAuth endpoints. You
can assign specific resources (activities or available data) to a specific token.
If you are developing a mobile app for your store, you likely do not want the
mobile app to have access to create shopping cart rules.
• System > Users: an admin user has API access to everything that they have
admin interface access to. For example, to prevent an admin user from
accessing your customers (in the admin panel or API), simply uncheck their
access in Role Resources.
Note:
The SwiftOtter Solution Specialist Prep Course contains much
more detail about scopes, including practical examples. This
is a core Magento feature, and the test expects you to have a
deep understanding of how this works.
When creating a new attribute, you need to ask yourself the purpose for this
attribute. While one can place all attribute values at the store view scope, this
can create confusion, as described later. Additionally, if an attribute is going to
be used in a configurable product, it must be Global.
Keep in mind that you can change the labels for attribute values per store view,
so you do not need to create an attribute for each locale.
Below each product attribute, you will notice its available scope:
Further Reading:
Attributes
Website
Most configuration and product attributes are available at the Global and
Website configuration levels. This controls aspects such as payment and
shipping methods (active, applicable countries, etc.).
Store
The primary use for the Store scope is to specify the root category. This is
selected in Stores > All Stores.
Store View
Additionally, products are assigned to a website. And the store view controls
the translatable attributes for a product.
Further Reading:
Root Categories
For example, the Store scope is not editable in Stores > Configuration. The
Website and Store scope are not editable in Product management.
Further Reading:
Stores
Product tax classes are assigned and are configured in the website scope.
You can also create a Fixed Product Tax product attribute to set a fixed tax for
each item sold.
Further Reading:
Price Scope
Tax
• Gift registry
• Gift wrapping
• Customer segments
• Magento B2B
• Dynamic blocks
• Gift cards
• Store credit
• Loyalty programs
• Exclusive sales
Further Reading:
Compare Open Source and Magento Commerce
• Cybersource
• eWAY
• Worldpay
Database
This is what provides data persistence to Magento. The PHP web application is
literally booted up for every non-full-page cached request. The application then
looks to the cache, configuration, and database for the information necessary
to process a request. In other words, Magento will present an ugly error if there
is no connection to the database or tables are missing.
Further Reading:
Magento 2.3.x technology stack requirements
Search
Further Reading:
Set up Elasticsearch service
CDN
Content delivery network. This is not a requirement, per se, but rather a
common addition to the Magento hosting environment. Many hosting providers
(including Magento Cloud) include a CDN of one sort or another.
Further Reading:
Fastly
Cache
Magento provides several default storage mechanisms: file system, redis, and
memcached.
Sessions
Each visitor on the site who adds an item to their cart or logs into Magento
(frontend or admin panel) is assigned a session cookie. These usually last a
maximum of 30 days, but their default value is often an hour or so.
The session cookie is linked to session storage in PHP. This storage maintains
information about this particular session, such as their customer ID, cart ID, and
other information. Magento uses these IDs to load their customer profile if they
are logged in.
These cookies store information about each visitor in their browser. One
purpose is to store their session ID (frontend, adminhtml, or PHPSESSID cookie
names). They also provide a caching layer that Magento can update and then
the frontend renders as necessary. For example, the mage-messages cookie
stores messages for the customer as a result of an action they take ("we're
sorry, but that is an invalid login").
If you delete your cookies on a Magento domain, you will be logged out of your
customer and admin accounts.
A developer will run a CLI command to make these files available on the
frontend.
https://swiftotter.com/static/frontend/Magento/luma/en_US/css/styles-m.css
However, when a user downloads the files, they are cached in the browser. This
reduces the download time necessary for future page visits. The problem is
these cached files are then always displayed, even if the version on the server
updates.
The way Magento resolves this is with static content signing. Essentially, this
inserts a random number or a build number into the path. When a new number
is utilized, this "clears the cache." The browser's cache remains for the old path,
but a new path is displayed and there is no cache for that path:
https://swiftotter.com/static/version1550681661/frontend/Magento/
luma/en_US/css/styles-m.css
It is important that you are familiar with each of these and what they do.
The additional reading in this section will mostly come from the user manual:
1. Go into the entity that you are editing, select the update, and click Preview.
2. Go into the content staging dashboard, select the update, and click Preview.
• Categories
• CMS Pages
• CMS Blocks
Restrict checkout to registered customers at Sales > Checkout > Allow Guest
Checkout = No.
Further Reading:
Guest Checkout
The United States excludes tax from prices (and adds it at the time of checkout).
Much of the rest of the world includes tax in the prices as they mostly use a
Value-Added Tax system.
Magento offers the capability to show each total including or excluding tax (see
the Shopping Cart Display Settings configuration). Additionally, you can also
configure these same values for orders, invoices, and credit memos.
You may also specify whether tax includes items such as the shipping price, etc.
You can also enable Fixed Product Taxes (WEEE in the EU, Container Tax
in Canada).
Further Reading:
Taxes
The Magento wishlist allows customers to save products that they wish to
review for later. A visitor must have a customer account in order to add items to
a wishlist.
In Open Source, customers have one wishlist. They can share the wishlist via
email or add items to the cart. People who receive the wishlist can view the
wishlist and add those items to their cart.
In Commerce, customers can have multiple wishlists. Customers can also make
their wishlists public (so they can simply send their friends the link instead of
sending an email).
Further Reading:
Commerce
Open Source
• Customer groups
• Website
Conditions
This section defines the filter parameters to determine whether or not this rule
is eligible for a given cart.
Conditions availability:
• Products in cart:
• Any product attribute that is marked as "Use for Promo Rule Conditions"
is found in the condition list.
• Category
• Attribute Set
Actions
• This tab defines what happens to the cart. There are several options
for Apply:
• Fixed amount discount: the fixed (not a percentage) amount that is reduced
per product. The maximum value will effectively be the total price of
the item.
• Fixed amount discount for whole cart: the fixed amount that is reduced
as applied to the entire cart. If an item sells for $2, and you set a Discount
Amount of $4, $4 will be reduced for each matched item.
• Buy X get Y free: the Discount Amount is how many to credit back as a
discount. The quantity in the user's cart will not increase.
• Maximum Qty Discount is Applied to: this field governs the maximum
number of items that are eligible for a discount. Use this to prevent giving a
customer a free delivery of a merchant's expensive product.
• Free shipping: use this field to select if free shipping is allowed on the order
and if it applies to the entire order or to the matched products in an order.
• Add Reward Points: utilize the loyalty feature in Commerce to add additional
points to a customer's account.
One powerful feature that is often overlooked in Cart Price Rules is the ability to
apply the rule to specific products in the cart. This can be used in conjunction
with the Conditions to provide multiple levels of filtering.
You can create pools of coupon codes that are utilized. The purpose of these is
to track usage from a mail or email campaign.
You can associate Dynamic Blocks with a cart price rule to draw attention to it.
This is helpful if you are requiring the customer to enter a coupon code for free
shipping, as an example.
Further Reading:
Cart Price Rules
• PayPal
• Payments Advanced
• Payments Pro
• Payments Standard
• Payflow Pro
• Payflow Link
• Klarna
• Amazon Pay
• Purchase Order
• Authorize.net Direct Post
• Cybersource (Commerce)
• Worldpay (Commerce)
• eWAY (Commerce)
Online
At the time of order placement, Magento utilizes the chosen payment method's
implementation to connect with the payment processor. The merchant decides
whether transactions are charged immediately, or first authorized.
Otherwise, the card is authorized. This ensures there are enough funds available
and a hold is placed on these funds. At a later date, the merchant can charge
the credit card.
Offline
The way this happens is the payment gateway utilizes a Javascript framework
and an iframe. The iframe is often seamless and almost impossible to detect
(for an example, go to our practice test and see the payment method form). The
Javascript framework interacts with the gateway to produce a token. This token
is configured with the purchase amount and credit card information.
Magento then submits this token to the server and the payment module uses
the token to capture funds.
This is the long story to say that hosted payments eliminate sending credit card
details through the merchant's server.
Examples:
• PayPal Express
• Amazon Pay
• Braintree
With an off-page hosted payment, a visitor chooses the payment type and
clicks a Continue button. They are taken to a different website (instead of an
iframe that seamlessly resides in the checkout screen). Here, they enter in their
card details, and they are then returned to the Magento checkout.
Examples:
• Payflow Pro Express Checkout
• Free Shipping
• Table Rates
• Magento Shipping
• UPS
• USPS
• FedEx
• DHL
• Country
• Region
• Postal code
• Order subtotal
• Shipping price
Note that there is only one table rate that is available per order. In other words,
you cannot use the table rate module to create an Overnight rate and a
Standard rate that are both displayed in the checkout.
Further Reading:
Table Rates
Further Reading:
Magento Shipping
Further Reading:
Sales
In addition to the factors taken into account on the catalog (special price,
catalog price rules) these affect the total price:
• Taxes
• Shipping
For reference, product prices before the product page (category pages, up-sell,
cross-sell and related products) are indexed and stored in the database. Starting
at the product page, Magento uses price calculation classes to determine the
product's price.
With this approach, you can edit all fields on the order.
Once the order is invoiced (and before, too), you can update the shipping and
billing addresses.
The advantage of modules on the Magento marketplace is that they have been
vetted by Magento. This indicates a higher level of quality than otherwise might
be available. Unfortunately, many module vendors write very low-quality code
and others encrypt their code (a potential security hazard as no one knows what
the encrypted code is doing or tracking).
Composer
Files
Developers can download the module package and place it in the 'app/code'
directory.
The problem with this approach is it is harder to keep modules up to date. Most
agencies do not have a practice of periodically checking modules on merchants'
websites to see if there is a new version.
After that…
The developer should test the module on their development machine. Once
this is complete, they will commit code and push to the staging environment.
This is when the developer and the merchant runs UAT to ensure that nothing
is broken.
Finally, create a backup of the production database and code. Then, pull the
code (or apply the module) to production.
Here are some things we look for when evaluating a 3rd-party module before
purchase:
• Open source: is the code encrypted? If so, we believe it is a security risk and
won't consider such a module.
• Module vendor reputation: there are some stellar extension builders, and we
prefer modules from them.
We will not name names for vendors who fail the above checks.
Tiered pricing: customer groups are a selection criteria in the use of product
tiered pricing. This allows a store administrator to give those in a specific
customer group a better (or worse) discount.
Catalog price rules: customer groups are filters to ensure the rules are given to
the correct customers.
Customer groups are assigned a tax class. This tax class can be used to create
tax-exempt customers or configure additional rules.
This is different than customer groups. A customer group is set at the time
when a customer is created. That group can be changed any time.
Customer segments are created after the fact. They are constantly updated on
the fly.
• Customer Address (City, Company, Country, First Name, Last Name, Phone
Number, State/Province)
• Customer
• Created at
• Date of Birth
• First Name
• Last Name
• Gender
• Group
• Last Name
• Newsletter Subscription
• Store Credit
• Shopping Cart
• Products Quantity
• Products
• Product List
• Product History
• Sales
• Order Address
• Sales Amount
• Number of Orders
• Purchased Quantity
There are custom attributes and system attributes (the ones that are
automatically created when installing Magento). The latter attributes cannot be
deleted.
System attributes (and to the extent that custom attributes are created by a
developer) are utilized throughout the Magento application. For example, the
Customer Group attribute is utilized by the Cart Price Rules and Catalog Price
Rules.
• Text field
• Text area
• Multiple Line
• Date
• Dropdown
• Multiple Select
• Yes/No
• File (attachment)
• Image File
Wishlist
This allows customers to save items for later. "Save to Wishlist" is available on
product and category pages. Clicking this link will ask the customer to register/
login (if they haven't done so already).
Further Reading:
Wish Lists
The registry is similar to a glorified wish list. The customer first selects the type
of wish list. Then, they fill out information about the registry:
• Public/private
• Inactive/active
• Event date
• Event details
• Contact information
Further Reading:
Gift Registries
Customers also have the capability to return products at their leisure, from their
account. The link for creating a return is accessible when viewing each order.
Customers can:
• Select item(s) to return, and specify the quantity, resolution, return, etc.
Further Reading:
RMA Customer Experience
CMS Pages
These render HTML on the frontend. As of 2.3.0 (what the test is written for),
PageBuilder has not been released, so the Magento CMS functionality is very
basic.
• Scheduled updates
• Page hierarchy
Page hierarchy
You can also use the Content > Hierarchy tool to create Nodes. A node is a way
to group multiple pages into a logical section. Nodes do not have their own
page, even though you can specify a URL key. For each node, you can specify
the next and start meta links to help SEO.
Further Reading:
Page Hierarchy
Custom variables are set in System > Custom Variables. These are added
through the WYSIWYG editor by clicking the variable button:
Custom Variables are easily injected into Email Templates by clicking the Insert
Variable button when editing an email template.
6. Click OK.
To create language-specific pages for Magento, you create a new page for each
language. That page is assigned to one or more store views (or All Store Views).
The URL Key must be unique for each page + store combination. For example,
if you have two pages with a URL Key of "privacy-policy," you cannot have these
both associated with the same store view.
Ultimately, this is easily confused with CMS content widgets (as I call it).
Content widgets are code directives that are injected into the WYSIWYG editor.
Widgets are managed in Content > Widgets. They are available in both Open
Source and Commerce.
To create a widget, you first specify the type of the widget (this happens to be
the same list as used in the WYSIWYG editor). Then, specify the theme.
The widget is assigned to specific store views (or all store views).
• All Pages
• Specified Page (select page)
Once you determine on what pages to display the widget, the last thing to do is
to determine the container (where on the page to display the widget).
You can also configure the options for the widget in the Widget Options tab.
Further Reading:
Using a Widget
Widgets are used to inject content on a more global basis, instead of one-off
placements. Magento's sample data heavily utilizes widgets to display the image
blocks.
These are different from widgets in that these inject content into specific places
on the entire site:
• Content Area
• Footer
• Header
• Left Column
• Right Column
After selecting where the content will appear, the next thing to select is the
customer segment(s).
Finally, you can use the WYSIWYG editor to add content (including widget and
variables).
Further Reading:
Banners
Cart Price Rules affect prices after they are added to the cart. This type of
rule allows you to apply discounts for a specific coupon or customer group or
website.
In Commerce, though, you can configure rules to display lists of products. The
benefit of this is that an administrator can specify a list of products to apply
the rule to and a list of products to display. Magento then renders this list of
products.
For example, if you have a category of Women's Jackets, you might want
to show Women's Pants as related products and Women's Shirts as up-sell
products. Instead of going through each product in the Women's Jackets
category and selecting related products and up-sell products, you would:
• Create two new related product rules, one for related products and one for
up-sell products.
• Set rule conditions for what products to match (which products the selected
products will display on).
Configuration for this is found in Stores > Configuration > Catalog > Catalog >
Rule-Based Product Relations.
Further Reading:
Related Product Rules
• Registration
• Newsletter Signup
• Review Submission
Additionally, you can set up conversion rates in Stores > Reward Exchange
Rates. Exchange rates are based on the website and customer group.
Further Reading:
Rewards & Loyalty
You can configure a cart price rule to use a specific coupon code (FREESHIP for
free shipping) or auto-generate a pool of codes (useful to track conversion rates
Coupon code pools are generated in the Manage Coupon Codes tab. Set the
number of codes to generate, their length and format (and other parameters),
and click Generate. You can then see a list of generated codes.
Further Reading:
Coupon Codes
• Products
• Customer finances (store credit)
• Customers
• Customer Addresses
• Stock Sources
Import
For each type of import entity, you can download a sample file. This file should
have all columns as a template.
• Replace: deletes the product and re-adds it with the values specified in the
import. This is quite dangerous to do as product IDs are changed AND all
other values are destroyed.
• Add/Update Complex Data: any value that the import row contains is
replaced, all other values are appended.
• Custom Action: the behavior is determined for each row based on the value
in the _action column.
Export
When running exports, you can exclude attributes and add filters for which
entities you want to load. For example, you can export a specific product by
setting the SKU filter to be the SKU of the product to download.
Commerce can import or export on a schedule. These files can be saved to the
local server's file system or uploaded to an FTP server. You can also be notified
by email if an export fails to run.
Further Reading:
Scheduling an Import
Scheduling an Export
It is important to familiarize yourself with the reports and the data that
each displays.
In this admin section, you can refresh several reports' data for the last day
or the lifetime. Note that refreshing the latter may render the admin panel
unresponsive to you and slower on the frontend.
• Orders
• Tax
• Shipping
• Total Invoiced
• Total Refunded
• Coupons
• Bestsellers
• Most Viewed
With BI, you can create custom reports that show the metrics that are
important to your business.
Further Reading:
Magento BI Essentials
Questions
As you might guess, there are probably 50 additional questions that would
be specific to the feature requested. Taking the time to work through these
requirements saves much time in the future.
Having this information, you will be able to give a better estimate for the
discovery phase. Here, you will determine deeper subjects such as:
However, if you are migrating a website to Magento, you will have many more
questions to ask, such as:
Migration discovery phases are usually more complex and take longer.
Most times that a merchant would like to set up a separate instance of Magento,
the same requirements can be accomplished in one instance, with the careful
planning of scopes.
Overview
Further Reading:
All Stores
Multi-site infrastructure
The Magento frontend is browsed at a store view level.
As such, every website must have a store, which must have at least one store
view. Any one of these levels can have multiple children (a store can have
multiple store views). The lowest scope at which you can set a store domain is
the store view. This means that you can register three domains and create one
website, one store and three store views to power each domain.
The above reference is the most basic listing possible. There are many more
complexities that most merchants need.
Website
This is the highest segment of store functionality available. This layer has
almost all of the configuration available at the global level.
• Payment methods
• Shipping methods
Store
This one is confusing as there are so few areas of configuration at this level. The
most important one is that this scope controls the root category. As you might
remember on the category page, you can create multiple root categories. Well,
a store is where you set which root category is chosen.
Store View
Localization
Each store view allows you to select (among other things):
• Locale (language)
You will also notice that most product attributes that are rendered are created
at the store view level.
Currency
There are three types of currency configuration (Stores > Configuration >
General > Currency Setup):
• Base currency: this is the currency in which a product's price is entered. This
value flows through to the order and is the amount and currency that the
order is charged in.
• Default currency: this is the currency that the customer sees on the
frontend.
Further Reading:
Currency Setup
International Taxes
Magento has extensive support for all forms of commerce taxation. These rules
are configured in Stores > Tax Rules. Configuration for tax happens in Stores >
Configuration > Sales > Tax. Most tax calculation settings are configured at the
website scope. Most tax display settings are configured at the store view scope.
To determine the correct tax rate, Magento must have three things:
• The destination
Magento will use the above information to select the applicable tax rate.
A store administrator can import and export these tax rates to simplify the
administration of them.
Multi-site shipping
Shipping methods and the "ship from" address are configured in the website
scope.
Reward Points
Reward point programs are configured in:
Gift Accounts
Gift accounts are the accounting item that tracks the amount available on a
given gift card. You will find this in Marketing > Gift Card Accounts.
A merchant can create a gift card and send it to a recipient. Most commonly,
these are created when a customer purchases a gift card and it is invoiced (by
default, but the gift card can be created when the order is placed).
Customers can then apply a gift card code to the shopping cart or at the
payment method screen. They can also redeem a gift card in their "My
Account" area.
Distance Selling
Distance selling is a UK law that dictates how a merchant must advertise their
products. My understanding is that this law is pretty much common practice for
reputable merchants (see the Further reading links for more details). Here are
the most important points:
• You must display your business name, contact details, and address.
Most websites specify this information explicitly. Depending on the country, tax
must be included in the selling price (UK and the EU are two examples).
It is important to familiarize yourself with the overview of the law (see the
gov.uk link below) as there are some exceptions to these rules.
Further Reading:
Online and distance selling
PCI-DSS
As discussed in Chapter 1, PCI-DSS dictates how you must treat cardholder data
in your organization. These rules cover all aspects of an organization and not
just the website.
The most important part of PCI-DSS is to limit your scope in any way possible.
This reduces the opportunities for cardholder data to be accessed by
unauthorized third-parties.
VAT is collected on all B2C sales. In addition, VAT is collected on all B2B sales
that are in-country OR are out-of-country with a valid VAT ID.
Further Reading:
The Ultimate Guide to EU VAT Digital Taxes
What is VAT?
Further Reading:
Cross-border trade (CBT)
GDPR
This was covered extensively in Chapter 1.
One GDPR-specific feature in Magento is Cookie Restriction Mode (in Stores >
Configuration > Web).
Further Reading:
Magento GDPR FAQ
US
The United States utilizes a sales tax system: the final seller charges a
percentage of the purchase price and remits that to the government.
EU
The European Union uses the VAT system. Each country has its own tax rate. We
will discuss the setup of this in the next section.
To set up VAT for European countries, import the applicable rates into Magento
using System > Import/Export Tax Rates.
1. B2C
• Select a B2C customer group (those that do not have a valid VAT id).
2. B2B
• Select a B2B customer group (customers who have a valid VAT id).
Remember, the above does not constitute tax advice and will certainly not stand
up in a court of law.
Further Reading:
2019 European Union VAT rates
In the United States, as of early 2019, tax is charged for shipments to any state
in which the merchant has nexus (or a presence there). This nexus can be an
employee, retail store, warehouse or headquarters.
US sales tax is calculated on top of the order. US residents know that sales tax
automatically adds 10% (give or take) to whatever they are purchasing.
These rates are configured in roughly the same way as VAT, except:
Further Reading:
General Tax Settings
Cross-border taxes
In most jurisdictions, the tax rate is based on the shipment's destination.
However, there may be some instances where the merchant desires the
delivered price to be the same, regardless of what the destination's tax rate is.
In these cases, the merchant takes the hit (out of their profits) for any extra
taxes paid.
Further Reading:
Cross-Border Price Consistency
After order items are marked complete, eligible items become available for
return. The customer can mark which items they wish to return and specify their
condition (the merchant can add other attributes to this list and customize the
drop-down item entries).
Through the course of handling the RMA, the merchant saves the RMA multiple
times:
• Once the RMA is complete, the merchant creates a credit memo for
the order.
Further Reading:
RMA Workflow
Magento allows merchants the ability to upload videos for products. Magento
supports Vimeo and YouTube videos. Before a merchant can display a YouTube
video, they must configure a YouTube API key.
Videos are injected into the product media gallery. The video thumbnails can be
used in the same way as normal images: base, small, thumbnail, and hide from
product page.
Further Reading:
Adding Product Video
• Must be enabled
• Must not have the Visibility attribute set to Not Visible Individually
Simple
This represents the basic unit of inventory. Most products that are delivered can
be boiled down to a simple product. These are the products that are picked from
stock shelves and shipped to a customer.
Simple products have inventory tracking. With this, product stock is kept up-to-
date (especially with the Multi-Source Inventory features).
Further Reading:
Simple Product
Configurable
At the time of purchase, two products are purchased: the parent configurable
product and the child simple product.
Further Reading:
Configurable Product
Grouped
Further Reading:
Grouped Product
Virtual
Virtual products represent a product that has no physical entity. For example,
this might be a membership or an online ticket.
Further Reading:
Virtual Product
Bundle
Each bundle option's choice can be selected with radio buttons, a drop-down
menu, checkboxes or multiple select.
The bundle product's price is the sum of the chosen bundle products. However,
a merchant can apply a special price discount percentage to reduce the amount
of the chosen products.
Further Reading:
Bundle Product
Downloadable
Magento also allows merchants to create products that the customer can
download.
Links
Samples
Ultimately, there are two types of samples: those associated with links and
those added separately. You can add as many samples as desired.
Further Reading:
Downloadable Product
Gift cards allow a customer to gift value from an online store to someone else.
At least in the United States, these are quite popular to encourage people to
give, even if the giver doesn't know what the recipient would like.
Gift cards are physical or virtual. Physical means that it is mailed (and shipping
is charged). Virtual means that the card is delivered by email. Amounts can be
Open, meaning that the purchaser can specify how much they want to give, or
it can be a fixed amount (whatever you specify on the backend).
Once invoiced (or ordered, if specified in configuration), the gift card's amount
is added to a gift card account and is ready for use.
Further Reading:
Gift Cards
Display Settings
• Static block only: only shows content from the "Add CMS Block" attribute.
Products in Category
Products are added to the category manually (Open Source and Commerce) or
automatically (Commerce).
Further Reading:
Creating Catagories
To add products manually, simply click "Add Products" and choose which
products you would like. Specify the appropriate position for these products.
Note that the lower the position, the higher products are displayed. This can be
troublesome as the default position is "0," meaning, the top of the list.
To make an attribute appear in the list of product conditions, you must add this
in Store > Configuration.
Further Reading:
Visual Merchandiser
• To disable a category, uncheck "Enable Category." Note that this can hurt
search engine optimization as the existing category page will result in a 404.
It is best to create a redirect.
A pre-cursor to the B2B module was category permissions. Each category could
have its own set of permissions to determine whether or not this category (or
features) is available.
The criteria are the Website (can be set to All Websites) and Customer Group
(can be set to All Customer Groups).
The administrator can then configure whether to allow, deny, or use Parent on:
• Add to cart
Further Reading:
Category Permissions
Further Reading:
Root Categories
For this reason, attribute sets display only attributes that are applicable to the
specific product.
In each attribute set, the administrator can create groups of sets (the tabs you
see in the product edit screen).
In most cases, a store will have an attribute set for each "type" of product sold
(apparel, food, tool, etc.). Additional attribute sets may be warranted for more
specific types (like splitting apparel into "top" and "bottom" attributes).
Further Reading:
Attribute Sets
Category pages will be affected either way if there are many attributes.
Categories do not take the attribute set into account when creating the layered
navigation values. Rather, categories look at all attribute values associated with
all products in the category.
Having many but small attribute sets can also be difficult to maintain as the
administrator has to choose the right attribute set.
The frontend might see an increase in the load time as Magento has to build
maps for the configurable product combinations.
The admin panel for editing the product also might become sluggish.
In our experience, always create attributes in the global scope unless it needs to
be translated.
Indexing
Caching
Ensure that all caches are enabled and properly configured. As discussed earlier,
Varnish massively improves a website's performance. If this is not enabled, your
website will not perform as desired.
Search
3rd-party modules
Flat catalog
In Stores > Configuration > Catalog > Catalog, you can enable the use of Flat
Products and Flat Categories.
Background: when we think of a database table, we usually think of one row per
entity (for example, product) and the columns in that row describing that entity
(SKU, name, description, etc.). One of Magento's biggest features is extreme
flexibility. A limitation of using columns to contain information about each
entity is that there could be too many columns and bump up against or exceed
MySQL's column limitation. Additionally, columns can be limiting when it comes
to managing products in different scopes. Instead, Magento uses rows that link
back to a product ID. The downside with this is performance.
Magento can index these rows back into the original idea of one row per product
with multiple columns. This is called flat tables as the attribute structure is
flattened back into a row.
This can help to improve performance. However, it can introduce problems with
3rd-party modules or customizations that have not been written properly.
Further Reading:
How many Products can Magento Handle?
Sharding
Further Reading:
Split database performance solution (Magento Commerce only)
Inventory
This setting delays saving an update to the product inventory table until a later
time (usually within a minute). Updates to this table are one of the biggest
bottlenecks in scaling the order process and this change reduces or eliminates
this problem.
Further Reading:
How to Manage Stock Inventory in Magento 2
Products
Inventory is controlled at the global level for simple products. With the Multi-
Source Inventory features of Magento 2.3, the control for this has become more
complex but more in-tune with many merchant's needs.
Each product must be found in at least one source (by default it is the Default
Source). This specifies where the product will ship from. The administrator must
enter the number of products in stock. The administrator can specify a reserve
quantity at that source by setting (or overriding) the Notify Quantity.
If the merchant wishes to open a new store and ship stock from there, they
must first create the new source. Then, they assign that source to individual
products (Assign Sources button) or with mass actions on the product grid:
• Assign Inventory Source: adds a new inventory source for selected products
• Unassign Inventory Source: removes the inventory source for the selected
products
Stocks
Remember, stocks link websites with sources. These must be configured to tell
the website which source to load inventory information from.