<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>scandiweb</title>
	<atom:link href="https://scandiweb.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://scandiweb.com/blog</link>
	<description>Success Stories &#124; scandiweb blog</description>
	<lastBuildDate>Thu, 29 Oct 2026 13:23:14 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.8</generator>

<image>
	<url>https://scandiweb.com/blog/wp-content/uploads/2022/08/6277b7d3d3ca4eb3c978a38c_favicon-1.png</url>
	<title>scandiweb</title>
	<link>https://scandiweb.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Magento Full Page Cache: How It Works, What It Can&#8217;t Cache, and How to Fix Misses</title>
		<link>https://scandiweb.com/blog/magento-full-page-cache/</link>
		
		<dc:creator><![CDATA[Rolands Jermolajevs]]></dc:creator>
		<pubDate>Thu, 29 Oct 2026 14:17:00 +0000</pubDate>
				<category><![CDATA[Collection]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[adobe commerce]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[magento 2]]></category>
		<category><![CDATA[magento optimization]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[site performance]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26506</guid>

					<description><![CDATA[<p>See how the Magento full page cache works, Varnish vs built-in, the key settings, and which requests still reach PHP: filters, search, logins and deploys.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/magento-full-page-cache/">Magento Full Page Cache: How It Works, What It Can&#8217;t Cache, and How to Fix Misses</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-magen wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/solutions/magento/expedio" target=_blank >
        2x Faster Magento with Expedio
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/magento-performance-optimization" target=_blank >
        Magento Performance
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/aws-hosting-services-readymage" target=_blank >
        Magento Hosting (ReadyMage)
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">Magento (Adobe Commerce) builds every page from scratch: it runs PHP code, queries the database and assembles the HTML, and all of that takes time. The Magento full page cache saves a finished copy of each page and hands that copy to the next shopper, so Magento can skip the build.</p>



<p class="wp-block-paragraph">Most stores keep that cache in Varnish, a caching server placed in front of Magento. Varnish answers repeat requests itself, so they never reach Magento at all, and Adobe strongly recommends it for live stores.</p>



<p class="wp-block-paragraph">A saved copy helps only when one exists for that exact page and that kind of visitor. The first shopper after a deploy or a cleared cache waits for Magento to build the page. So do shoppers who tick two filters on a category, B2B buyers with their own price list when nobody from their customer group has visited since the cache was cleared, and anyone searching for a rare term. Cart, checkout and account pages skip the cache entirely. Slow catalog pages for logged-in customers and slow category pagination both came up in Magento support requests we handled over the past year.</p>



<h2 class="wp-block-heading">What is the Magento full page cache?</h2>



<p class="wp-block-paragraph">The Magento full page cache stores the finished HTML of a page so the next visitor with the same context gets it without Magento building the page again. It holds category, product and CMS pages, keyed by URL and context, for guests and logged-in shoppers alike. Cart, checkout and account pages are always built fresh.</p>



<p class="wp-block-paragraph">The rest of Magento caching stores smaller pieces, such as merged configuration. The admin grid lists this one as Page Cache.</p>



<h3 class="wp-block-heading">How Magento cache works on a single request</h3>



<p class="wp-block-paragraph">A shopper requests a category URL. Varnish, or the built-in cache, builds a key from that URL and a hash of the HTTP context: customer group, store, language, currency and whether the shopper is logged in. Magento carries that context in the <code>X-Magento-Vary</code> cookie, and Adobe&#8217;s page on <a href="https://developer.adobe.com/commerce/php/development/cache/page/public-content" target="_blank" rel="noopener">HTTP context variables</a> lists the full set.</p>



<p class="wp-block-paragraph">If a saved page matches the key, the cache returns its HTML and Magento does not run. If nothing matches, the request goes to Magento, which builds the page in PHP: it loads the layout, renders each block and runs the database queries behind them. The finished HTML is saved with its cache tags and a TTL, then returned. The next visitor with the same URL and context gets the saved copy.</p>



<p class="wp-block-paragraph">Only <code>GET</code> and <code>HEAD</code> requests can be cached. A form post goes to PHP every time.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow.png" alt="Magento full page cache request flow: Varnish answers a hit, a miss goes to Magento to build the page in PHP" class="wp-image-26502" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-request-flow-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">A hit is answered by Varnish. A miss goes to Magento, which builds the page in PHP and saves a copy for the next visitor with the same context.</figcaption></figure></div>



<h3 class="wp-block-heading">Public and private content: hole punching in Magento 2</h3>



<p class="wp-block-paragraph">Everyone in the same context gets the same cached HTML, so Magento keeps personal data out of it. Public content, the page itself, is stored server side in the cache. Private content such as the customer name, cart, wishlist and address is stored client side and loads in the browser after the page arrives, from customer-data sections. A POST or PUT request invalidates those sections, so the cart updates after an add to cart without touching the cached page.</p>



<p class="wp-block-paragraph">With Varnish, a block can also carry its own TTL. The top menu in the default theme is marked <code>ttl="3600"</code>, so Varnish can cache it apart from the page through ESI and refresh it on its own schedule.</p>



<p class="wp-block-paragraph">Adobe warns against adding a context variable per user. Every context variable is part of the cache key, so a per-user variable gives each user a separate copy of every page, and the cache stops sharing anything.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>Two shoppers on the same category URL share one cached copy only when their customer group, store, currency and login state match. Every other combination is built and saved separately.</p></div>



<h2 class="wp-block-heading">Magento full page cache vs Varnish</h2>



<p class="wp-block-paragraph">Magento&#8217;s built-in full page cache is a PHP reverse proxy that stores pages in the file system, the database or Valkey/Redis, so every hit still runs PHP. Varnish is a separate caching server in front of the web server, and a hit never reaches the web server. Adobe strongly recommends Varnish in production. Commerce Cloud uses Fastly.</p>



<p class="wp-block-paragraph">The table shows where the two options differ.</p>



<figure class="wp-block-table"><table><thead><tr><th></th><th>Built-in full page cache</th><th>Varnish</th></tr></thead><tbody><tr><td>Where it runs</td><td>Inside Magento, as a PHP reverse proxy</td><td>Separate server in front of the web server</td></tr><tr><td>A cache hit</td><td>Still runs PHP</td><td>Never reaches the web server</td></tr><tr><td>Storage</td><td>File system, database or Valkey/Redis</td><td>Varnish&#8217;s own cache storage</td></tr><tr><td>Purging</td><td>Magento cleans entries by cache tag</td><td>Magento sends purges, VCL bans by tag</td></tr><tr><td>Setup</td><td>Works out of the box</td><td>Install Varnish, export the VCL, set purge hosts</td></tr><tr><td>Adobe&#8217;s guidance</td><td>Development and testing</td><td>Strongly recommended in production</td></tr></tbody></table><figcaption class="wp-element-caption">Magento built-in full page cache vs Varnish</figcaption></figure>



<p class="wp-block-paragraph">The built-in option is fine on a laptop or a staging server. Production gets Varnish: a repeat request for a cacheable page costs no PHP, database or web server time, and Adobe&#8217;s <a href="https://experienceleague.adobe.com/en/docs/commerce-operations/configuration-guide/cache/varnish/config-varnish" target="_blank" rel="noopener">Varnish configuration page</a> calls the built-in cache much slower.</p>



<p class="wp-block-paragraph">Magento Varnish is a separate HTTP cache that Magento purges by tag whenever it cleans, flushes or refreshes its own cache. The Caching Application setting is the only switch between the two.</p>



<h3 class="wp-block-heading">Where Fastly fits on Adobe Commerce Cloud</h3>



<p class="wp-block-paragraph">On Adobe Commerce Cloud, full page caching uses Fastly instead of Varnish, so there is no Varnish to install or configure. The cache key and the private-content rules in this article still apply, because Magento sets the headers and the context cookie in the same way.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>Open Stores &gt; Settings &gt; Configuration &gt; Advanced &gt; System &gt; Full Page Cache on production. If Caching Application says Built-in, every cache hit still runs PHP.</p></div>



<h2 class="wp-block-heading">Magento cache management: cache types, clean and flush</h2>



<p class="wp-block-paragraph">Magento cache management happens in System &gt; Tools &gt; Cache Management or with <code>bin/magento cache</code> commands. The admin lists every cache type, such as Configuration, Layouts, Blocks HTML output and Page Cache, with its status. Refresh any type marked invalidated, clean caches after code or configuration changes, and flush the whole storage only when cleaning fails.</p>



<h3 class="wp-block-heading">The cache types that matter for page speed</h3>



<p class="wp-block-paragraph">Five types decide most of what a shopper waits for in Magento 2 cache management.</p>



<figure class="wp-block-table"><table><thead><tr><th>Admin name</th><th>CLI code</th><th>What it holds</th><th>Clean it after</th></tr></thead><tbody><tr><td>Configuration</td><td><code>config</code></td><td>Merged configuration</td><td>Configuration changes</td></tr><tr><td>Layouts</td><td><code>layout</code></td><td>Compiled layouts</td><td>Layout XML changes</td></tr><tr><td>Blocks HTML output</td><td><code>block_html</code></td><td>HTML fragments per block</td><td>Template changes</td></tr><tr><td>Page Cache</td><td><code>full_page</code></td><td>Whole pages</td><td>Code changes that affect HTML output</td></tr><tr><td>Translations</td><td><code>translate</code></td><td>Translation files</td><td>Translation changes</td></tr></tbody></table><figcaption class="wp-element-caption">The Magento cache types that matter for page speed</figcaption></figure>



<p class="wp-block-paragraph">The Cache Management grid lists more types than these, and the exact set depends on the edition and the modules installed. Adobe&#8217;s <a href="https://experienceleague.adobe.com/en/docs/commerce-admin/systems/tools/cache-management" target="_blank" rel="noopener">Cache Management page</a> describes each one.</p>



<h3 class="wp-block-heading">Clean vs flush: which one to run</h3>



<p class="wp-block-paragraph">The two buttons at the top of the grid do different things. Flush Magento Cache runs <code>cache:clean</code>: it removes items by their Commerce tag, from enabled types only, and leaves anything else in the storage alone. Flush Cache Storage runs <code>cache:flush</code>: it empties the whole storage, including files that other applications keep in the same place.</p>



<p class="wp-block-paragraph">Clean after routine changes, such as a template or configuration edit. Flush only when cleaning does not fix the problem, and schedule it off-peak, because Adobe warns that clearing caches at peak can raise the load enough to take the site down until the operation completes. If you need to clear the cache in Magento 2 from the admin, refresh the affected type rather than everything, and read our post on when to <a href="https://scandiweb.com/blog/sometimes-flushing-the-whole-cache-storage-is-the-only-option/" target="_blank" rel="noopener">flush the whole cache storage</a> before doing it on a live store.</p>



<h3 class="wp-block-heading">What &#8220;One or more of the Cache Types are invalidated&#8221; means</h3>



<p class="wp-block-paragraph">The red banner in the admin reads &#8220;One or more of the Cache Types are invalidated&#8221;, followed by the list of types, and asks you to go to Cache Management and refresh them. It means the stored data for those types may no longer match the database. Catalog changes are the usual cause, because an edit to one entity can affect other pages and invalidate several caches at once. Configuration saves and deploys do the same.</p>



<p class="wp-block-paragraph">To fix it, open Cache Management, tick the invalidated types, set Actions to Refresh and click Submit, or run <code>bin/magento cache:clean full_page</code>. Reindexing does not require a cache flush, so leave the cache alone when you reindex. If the banner comes back every few minutes, find what keeps invalidating it, such as an import, a cron job or frequent product saves, instead of refreshing all day. Keeping the <a href="https://scandiweb.com/blog/magento-indexers-known-issues-and-fixes/" target="_blank" rel="noopener">Magento indexers</a> on Update on Schedule, which Adobe recommends for performance, removes one common cause.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>Flush Magento Cache runs <code>cache:clean</code>. Flush Cache Storage runs <code>cache:flush</code> and empties the whole storage, including anything other applications keep there.</p></div>



<h2 class="wp-block-heading">How to enable, disable and configure full page cache in Magento 2</h2>



<p class="wp-block-paragraph">To enable full page cache in Magento 2:</p>



<ol class="wp-block-list">
<li>Go to System &gt; Tools &gt; Cache Management, select Page Cache, set Actions to Enable and click Submit.</li>


<li>Or run <code>bin/magento cache:enable full_page</code>.</li>


<li>Under Stores &gt; Settings &gt; Configuration &gt; Advanced &gt; System &gt; Full Page Cache, set Caching Application to Varnish Caching.</li>


<li>Save the configuration.</li>

</ol>



<h3 class="wp-block-heading">Enable full page cache in the admin</h3>



<p class="wp-block-paragraph">Go to System &gt; Tools &gt; Cache Management, tick Page Cache, set Actions to Enable and click Submit. Then open Stores &gt; Settings &gt; Configuration &gt; Advanced &gt; System &gt; Full Page Cache and set Caching Application to Built-in or Varnish Caching.</p>



<p class="wp-block-paragraph">If Enable and Disable are missing from the Actions dropdown, the store is in production mode. Since Magento 2.2, production mode allows enabling and disabling cache types from the command line only, so the admin offers Refresh and nothing else.</p>



<h3 class="wp-block-heading">Enable or disable full page cache from the command line</h3>



<p class="wp-block-paragraph">Run the commands as the file system owner, from the Magento root:</p>



<pre class="wp-block-code"><code>bin/magento cache:status
bin/magento cache:enable full_page
bin/magento cache:disable full_page</code></pre>



<p class="wp-block-paragraph"><code>cache:status</code> lists every type with 1 for enabled and 0 for disabled. Enabling a type clears it, so expect the first requests after <code>cache:enable</code> to miss. Omitting the type applies the command to all types.</p>



<p class="wp-block-paragraph">Disable full page cache in Magento 2 only to turn off the cache during development, when every change has to show at once. Never do it on a live store: every request then goes to PHP, and the server carries the full build cost for every page. Adobe&#8217;s <a href="https://experienceleague.adobe.com/en/docs/commerce-operations/configuration-guide/cli/manage-cache" target="_blank" rel="noopener">Manage the cache</a> page lists the remaining options.</p>



<h3 class="wp-block-heading">Magento full page cache settings worth checking</h3>



<p class="wp-block-paragraph">All of these live under Stores &gt; Settings &gt; Configuration &gt; Advanced &gt; System &gt; Full Page Cache.</p>



<p class="wp-block-paragraph">Caching Application: Varnish Caching for production. From the CLI, run <code>bin/magento config:set --scope=default --scope-code=0 system/full_page_cache/caching_application 2</code>.</p>



<p class="wp-block-paragraph">TTL for public content: 86400 seconds by default, the longest a page stays in the cache without a purge.</p>



<p class="wp-block-paragraph">Varnish Configuration: access list and backend host (both default to localhost), backend port (8080), grace period (300 seconds, how long Varnish may serve an expired copy while Magento builds a fresh one) and handles param size (100, the most layout handles the ESI endpoint processes). Export the VCL from the same screen and install it on the Varnish host. Then set purge hosts with <code>bin/magento setup:config:set --http-cache-hosts</code> so Magento can purge Varnish when its own cache cleans. Varnish 8 is the version for Magento 2.4.9.</p>



<p class="wp-block-paragraph">If you stay on the built-in cache, give it its own storage. Adobe recommends a dedicated instance each for sessions, the default cache and the full page cache. To use Redis for the full page cache on 2.4.8 and earlier, run <code>bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1</code>, with a database number no other cache uses. On 2.4.9, Valkey replaced Redis in the CLI tooling, so use the Valkey options in Adobe&#8217;s CLI reference.</p>



<h2 class="wp-block-heading">What the Magento full page cache can&#8217;t serve</h2>



<p class="wp-block-paragraph">The Magento full page cache never serves cart, checkout or customer account pages, POST requests, or any page with a block marked <code>cacheable="false"</code>. It can hold filtered category pages, search results and customer-group versions, but each URL and context needs its own entry, so many of them miss. Every miss goes to PHP.</p>



<h3 class="wp-block-heading">Requests that always skip the cache</h3>



<p class="wp-block-paragraph">Three groups never touch the cache. Cart, checkout and customer account pages: the <a href="https://raw.githubusercontent.com/magento/magento2/2.4-develop/app/code/Magento/PageCache/etc/varnish6.vcl" target="_blank" rel="noopener">default Varnish configuration</a> that comes with Magento passes any URL containing <code>/customer</code> or <code>/checkout</code> straight to the backend, and Adobe&#8217;s own examples of uncacheable pages are cart, checkout and compare. POST and every other method besides GET and HEAD: the same VCL only caches those two, so an add to cart or a form submit always runs PHP. Any page with one block marked <code>cacheable="false"</code>: Adobe&#8217;s rule is that one uncacheable block makes the whole page uncacheable, and that attribute often arrives in a third-party module&#8217;s layout file rather than your own code.</p>



<p class="wp-block-paragraph">The first two groups are by design. The third is the one to check, because it can quietly turn a category or CMS page into one that builds in PHP on every request.</p>



<h3 class="wp-block-heading">Requests the cache can hold but often misses</h3>



<p class="wp-block-paragraph">Four kinds of request are cacheable and still miss often.</p>



<p class="wp-block-paragraph">The first request after a deploy, flush or TTL expiry. Cleaning, flushing and refreshing the Magento cache all purge Varnish too, and so does editing a category, price, product or promotional pricing rule. After each one, the first shopper on each page waits for the build and the second gets the copy.</p>



<p class="wp-block-paragraph">Filtered category pages. Each filter combination is its own URL, so it gets its own cache entry, and combinations multiply with every attribute you expose in <a href="https://scandiweb.com/blog/layered-navigation-causing-problems-deal-with-it/" target="_blank" rel="noopener">layered navigation</a>. The default VCL strips gclid, gbraid, gclsrc and utm_ parameters, so an ad click shares the cache with a direct visit. Filter parameters stay in the key because they change the page.</p>



<p class="wp-block-paragraph">Search results. In Magento 2.4 the default VCL has no bypass for search URLs and the search results layout has no uncacheable block, so results pages are cacheable, one entry per search term. Popular terms hit. Rare terms miss, and a first-time search always does.</p>



<p class="wp-block-paragraph">Logged-in customers and B2B customer groups. The context hash gives each customer group, store and currency its own copy of every page. A B2B store that puts companies or price lists in separate customer groups fills many small caches rather than one big one, and a buyer in a quiet group gets a miss on pages that guests see from the cache all day.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php.png" alt="Which Magento requests always skip the full page cache, which often miss it, and which are usually cache hits" class="wp-image-26503" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-what-reaches-php-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Cart, checkout and account pages never use the cache. Filtered pages, rare searches, customer-group versions and post-deploy requests can be cached, but each needs its own entry, so many of them miss.</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>One block marked <code>cacheable="false"</code> makes the whole page uncacheable. Search your custom modules and theme layouts for it before you tune anything else.</p></div>



<h2 class="wp-block-heading">How to find and fix full page cache misses</h2>



<p class="wp-block-paragraph">To fix Magento full page cache misses:</p>



<ol class="wp-block-list">
<li>Confirm Page Cache is enabled and set to Varnish.</li>


<li>Check the <code>X-Magento-Cache-Debug</code> header for MISS, then HIT.</li>


<li>Remove <code>cacheable="false"</code> from catalog and CMS layouts.</li>


<li>Stop flushing caches at peak hours.</li>


<li>Warm key URLs after deploys.</li>


<li>Make the uncached page build faster.</li>

</ol>



<h3 class="wp-block-heading">Check whether a page came from the cache</h3>



<p class="wp-block-paragraph">Magento adds its debug headers in developer mode only, so run this on staging or in a short developer-mode window, never on a live production store. Request the page twice with <code>curl -I</code> and read two headers. <code>X-Magento-Cache-Debug</code> shows MISS on the first request and HIT on the second. If the Magento 2 full page cache is not working at all, it shows MISS every time. <code>X-Magento-Cache-Control</code> shows the TTL, for example <code>max-age=86400, public, s-maxage=86400</code>. Adobe&#8217;s <a href="https://experienceleague.adobe.com/en/docs/commerce-operations/configuration-guide/cache/varnish/config-varnish-final" target="_blank" rel="noopener">Verify Varnish configuration</a> page says a cacheable page should load in less than 150 ms when Varnish works, and that <code>var/page_cache</code> should stay empty.</p>



<p class="wp-block-paragraph">Then test the miss path: log in, open a filtered category URL right after a cache clean, and run a rare search. Compare those timings with field data from <a href="https://scandiweb.com/blog/how-to-and-how-not-to-use-google-pagespeed-insights/" target="_blank" rel="noopener">PageSpeed Insights</a> and Google&#8217;s guide of 0.8 seconds or less for a good TTFB. If the header says HIT and the page is still slow, the wait is in the browser, in the theme, images or JavaScript, and a frontend such as <a href="https://scandiweb.com/blog/how-to-work-with-hyva/" target="_blank" rel="noopener">Hyvä</a> is the place to look.</p>



<h3 class="wp-block-heading">Fix the misses you can remove</h3>



<p class="wp-block-paragraph">Work through these in order.</p>



<ol class="wp-block-list">
<li>Remove <code>cacheable="false"</code> from blocks on catalog, product and CMS pages. Move whatever personal data the block showed into private content, so it loads in the browser.</li>


<li>Switch production from Built-in to Varnish Caching. A built-in hit still runs PHP.</li>


<li>Clean by type instead of flushing, and schedule any flush off-peak.</li>


<li>Find what keeps invalidating the cache. Imports, mass product saves and cron jobs that touch the catalog purge pages all day.</li>


<li>Keep custom cookies and context variables out of the cache key. Each new variable multiplies the number of copies.</li>


<li>Warm the top URLs after each deploy, briefly. A warmer refills the most visited pages so the first shoppers get hits, and it has done its job once the cache is full.</li>

</ol>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree.png" alt="Decision tree for fixing Magento full page cache misses, from checking the cache header to speeding up the page build" class="wp-image-26504" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-full-page-cache-miss-decision-tree-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Start with the X-Magento-Cache-Debug header. A page that never caches needs a layout or setup fix, a page that is purged too often needs a better deploy routine, and a page with too many versions needs a faster build.</figcaption></figure></div>



<h3 class="wp-block-heading">Make the uncached page build faster</h3>



<p class="wp-block-paragraph">Some misses stay. Rare searches, filter combinations and customer groups cannot all be warmed, because there are too many of them and the list changes every day. For those requests, the time Magento takes to build the page is the time the shopper waits, and no cache setting changes it.</p>



<p class="wp-block-paragraph"><a href="https://scandiweb.com/solutions/magento/expedio" target="_blank" rel="noopener">Expedio</a> is scandiweb&#8217;s software for that part of the request. It speeds up how Magento builds each page on the server by applying Liquid, the open-source template language created at Shopify, and its core is open source. It works on Magento 2 Open Source, Adobe Commerce and Commerce Cloud, with Luma, Hyvä or a custom theme, on any hosting, and it leaves the theme, design, data, admin, catalog, prices, checkout and orders as they are. The page build gets at least 2x faster, and the same server handles 3x the traffic before response times start to rise. In a benchmark on one merchant&#8217;s Hyvä store, measured as server response time with no full page cache, category pages opened with all caches empty took a median of 57 ms instead of 181 ms, 3.2x faster. At peak traffic, filtered category pages answered 3.0x faster and search results 3.8x faster. The method and caveats are in the <a href="https://scandiweb.com/blog/expedio-benchmark/" target="_blank" rel="noopener">Expedio benchmark</a>.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster.png" alt="The Expedio page on scandiweb.com with the headline Magento. 2x faster. and buttons to get Expedio or try the demo" class="wp-image-25972" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Expedio makes Magento at least 2x faster without changing your theme or data</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>Test a page twice: once as a guest on a cached URL, once logged in on a filtered URL right after a cache clean. The gap between the two is the work the cache was hiding.</p></div>



<h2 class="wp-block-heading">Frequently asked questions about Magento full page cache</h2>



<h3 class="wp-block-heading">Does the Magento full page cache work for logged-in customers?</h3>



<p class="wp-block-paragraph">Yes, for catalog and CMS pages. Magento keys each cached page by URL plus a context hash from the X-Magento-Vary cookie, which covers the customer group, store, currency and whether the shopper is logged in. Personal details such as the name and cart load separately in the browser. Each customer group fills its own copy, so stores with many B2B groups see more misses.</p>



<h3 class="wp-block-heading">Should I use Varnish or the built-in full page cache in production?</h3>



<p class="wp-block-paragraph">Use Varnish. Adobe strongly recommends Varnish in production and calls the built-in full page cache, whether it writes to the file system or the database, much slower. A Varnish hit is answered without reaching the web server, while the built-in cache still runs PHP for every hit. On Adobe Commerce Cloud, Fastly does the full page caching instead.</p>



<h3 class="wp-block-heading">How long does Magento keep a page in the full page cache?</h3>



<p class="wp-block-paragraph">For 86,400 seconds, or 24 hours, by default. That is the TTL for public content under Stores &gt; Settings &gt; Configuration &gt; Advanced &gt; System &gt; Full Page Cache. A page can leave the cache sooner: editing a product, category, price or promotional pricing rule purges the related pages, and cleaning or flushing the Magento cache purges Varnish too.</p>



<h3 class="wp-block-heading">Are search results pages cached in Magento 2?</h3>



<p class="wp-block-paragraph">They can be. In Magento 2.4, the default Varnish configuration does not bypass search URLs, and the search results layout has no uncacheable block. Each search term is a separate URL, though, so only repeated searches find a cached copy. A rare or first-time search misses, and Magento builds the results page in PHP.</p>



<h3 class="wp-block-heading">Does flushing the Magento cache slow the store down?</h3>



<p class="wp-block-paragraph">For a while, yes. After a flush, PHP has to build every page again until shoppers or a cache warmer refill the cache, so server load and response times rise. Adobe advises scheduling cache flushes for non-peak times. Use <code>cache:clean</code> for routine changes, and keep <code>cache:flush</code>, which empties the whole cache storage, for cases where cleaning does not help.</p>



<h3 class="wp-block-heading">Do I need a cache warmer if I already run Varnish?</h3>



<p class="wp-block-paragraph">A warmer helps after deploys and flushes, when Varnish starts empty. It requests your most visited URLs so the first shoppers get cached pages. It adds server load while it runs and cannot reach every filter combination, search term or customer group. For those requests, shoppers wait for the uncached page build, so its speed still matters.</p>



<h2 class="wp-block-heading">Magento full page cache: what to fix first</h2>



<p class="wp-block-paragraph">The Magento full page cache is the first speed fix for any store with real traffic, and the order of work after turning it on matters more than any single setting. Run Varnish in production rather than the built-in cache. Remove the misses you cause yourself: uncacheable blocks that a module added, flushes at peak, imports that invalidate the cache every few minutes. Warm the pages that matter after each deploy. Then look at the requests that will always miss, filtered pages, rare searches and quiet customer groups, and make the uncached build itself faster, because that is the time those shoppers wait.</p>



<p class="wp-block-paragraph">The full page cache is one layer of the work to <a href="https://scandiweb.com/blog/magento-2-performance-optimization-with-js-bundling/" target="_blank" rel="noopener">speed up Magento</a>, alongside the server, database and frontend.</p>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Does the Magento full page cache work for logged-in customers?", "acceptedAnswer": {"@type": "Answer", "text": "Yes, for catalog and CMS pages. Magento keys each cached page by URL plus a context hash from the X-Magento-Vary cookie, which covers the customer group, store, currency and whether the shopper is logged in. Personal details such as the name and cart load separately in the browser. Each customer group fills its own copy, so stores with many B2B groups see more misses."}}, {"@type": "Question", "name": "Should I use Varnish or the built-in full page cache in production?", "acceptedAnswer": {"@type": "Answer", "text": "Use Varnish. Adobe strongly recommends Varnish in production and calls the built-in full page cache, whether it writes to the file system or the database, much slower. A Varnish hit is answered without reaching the web server, while the built-in cache still runs PHP for every hit. On Adobe Commerce Cloud, Fastly does the full page caching instead."}}, {"@type": "Question", "name": "How long does Magento keep a page in the full page cache?", "acceptedAnswer": {"@type": "Answer", "text": "For 86,400 seconds, or 24 hours, by default. That is the TTL for public content under Stores > Settings > Configuration > Advanced > System > Full Page Cache. A page can leave the cache sooner: editing a product, category, price or promotional pricing rule purges the related pages, and cleaning or flushing the Magento cache purges Varnish too."}}, {"@type": "Question", "name": "Are search results pages cached in Magento 2?", "acceptedAnswer": {"@type": "Answer", "text": "They can be. In Magento 2.4, the default Varnish configuration does not bypass search URLs, and the search results layout has no uncacheable block. Each search term is a separate URL, though, so only repeated searches find a cached copy. A rare or first-time search misses, and Magento builds the results page in PHP."}}, {"@type": "Question", "name": "Does flushing the Magento cache slow the store down?", "acceptedAnswer": {"@type": "Answer", "text": "For a while, yes. After a flush, PHP has to build every page again until shoppers or a cache warmer refill the cache, so server load and response times rise. Adobe advises scheduling cache flushes for non-peak times. Use cache:clean for routine changes, and keep cache:flush, which empties the whole cache storage, for cases where cleaning does not help."}}, {"@type": "Question", "name": "Do I need a cache warmer if I already run Varnish?", "acceptedAnswer": {"@type": "Answer", "text": "A warmer helps after deploys and flushes, when Varnish starts empty. It requests your most visited URLs so the first shoppers get cached pages. It adds server load while it runs and cannot reach every filter combination, search term or customer group. For those requests, shoppers wait for the uncached page build, so its speed still matters."}}]}</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em>If the cache is on and logged-in, filtered or search pages are still slow, </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>ask our Magento team</em></a><em> to measure which requests miss and what each one costs your store.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/magento-full-page-cache/">Magento Full Page Cache: How It Works, What It Can&#8217;t Cache, and How to Fix Misses</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Black Friday Code Freeze: 2026 Timeline, Load Testing, and Incident Plan</title>
		<link>https://scandiweb.com/blog/black-friday-code-freeze/</link>
		
		<dc:creator><![CDATA[Aigars Pavlovics]]></dc:creator>
		<pubDate>Thu, 29 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Digital Growth]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[24/7 support]]></category>
		<category><![CDATA[Black Friday]]></category>
		<category><![CDATA[code freeze]]></category>
		<category><![CDATA[cyber monday]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[ecommerce]]></category>
		<category><![CDATA[eCommerce operations]]></category>
		<category><![CDATA[load testing]]></category>
		<category><![CDATA[peak traffic]]></category>
		<category><![CDATA[site performance]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26181</guid>

					<description><![CDATA[<p>Plan your Black Friday code freeze with 2026 dates, load testing targets, an incident runbook, on-call cover, and safe test orders.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/black-friday-code-freeze/">Black Friday Code Freeze: 2026 Timeline, Load Testing, and Incident Plan</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-BfCfz wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/ecommerce-support-services" target=_blank >
        eCommerce Support
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/performance-optimization" target=_blank >
        Performance Optimization
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/magento-support" target=_blank >
        Magento Support
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">If your team is still merging features in late October and someone has just asked when the code freeze starts, the answer for Black Friday 2026 is: new features stop on Monday, November 2, and the last planned deployment goes out on Friday, November 13. Black Friday falls on November 27 and Cyber Monday on November 30. Count back the time you need to load test, fix what breaks, and test again, and the window for risky changes closes in early November.</p>



<p class="wp-block-paragraph">The outage you&#8217;re trying to prevent rarely comes from a big release. One of our support clients launched a large campaign on a Friday, traffic climbed, and the whole site went down. Restarts didn&#8217;t help. The cause was a product label rule meant to cover the whole catalog except five products, set up by selecting every brand, and it made the platform fetch items in a loop. Nobody had deployed code that day.</p>



<p class="wp-block-paragraph">That&#8217;s why this guide treats Black Friday readiness as three engineering jobs: a code freeze that also covers configuration, a load test with a target you can defend, and an incident plan with named people on call. Marketing, merchandising, and promo planning are covered in our <a href="https://scandiweb.com/blog/black-friday-checklist/" target="_blank" rel="noopener">Black Friday and Cyber Monday checklist</a>.</p>



<h2 class="wp-block-heading">What is a code freeze, and what should it cover?</h2>



<p class="wp-block-paragraph">A code freeze is a period when a team stops deploying changes to production, so the live system stays in a known, tested state. For an online store before Black Friday, a code freeze should cover more than application code: configuration, extension and app updates, infrastructure changes, tracking scripts, and price or promotion rules can all take a store down, and none of them needs a developer to deploy.</p>



<p class="wp-block-paragraph">Software teams use the term in two ways. Before a release, a code freeze means no new features, only bug fixes. Before a peak, it means no changes to production at all unless an agreed process approves them. Some teams call the second one a change freeze, which is the more accurate name for eCommerce, because outages like the one above start with changes that never go through a code review.</p>



<p class="wp-block-paragraph">The freeze also protects your test results. A load test only describes the store you tested. Every change after it, even a small one, makes the result less true.</p>



<h3 class="wp-block-heading">What the freeze allows, and what it blocks</h3>



<p class="wp-block-paragraph">A freeze that blocks everything gets ignored by the third day. Agree in writing which changes are allowed, who approves them, and how they&#8217;re tested.</p>



<figure class="wp-block-table"><table><thead><tr><th>Change</th><th>During the freeze</th><th>How it goes live</th></tr></thead><tbody><tr><td>New features, refactoring, dependency upgrades</td><td>Blocked</td><td>After Cyber Monday</td></tr><tr><td>Extension, app, and plugin updates</td><td>Blocked</td><td>After Cyber Monday, unless it&#8217;s a security fix</td></tr><tr><td>Infrastructure, CDN, DNS, and hosting changes</td><td>Blocked</td><td>Only the agreed scale-up, on a scheduled date</td></tr><tr><td>Tag manager containers and third-party scripts</td><td>Blocked</td><td>Publish final versions before the freeze</td></tr><tr><td>Security patches and hotfixes for live bugs</td><td>Allowed</td><td>Emergency change process: staging test, approval, rollback ready</td></tr><tr><td>Catalog, price, and promotion rules</td><td>Allowed, with limits</td><td>Built and tested on staging, applied at an agreed time</td></tr><tr><td>CMS content, banners, and landing pages</td><td>Allowed</td><td>Through the CMS, with no new templates or scripts</td></tr></tbody></table><figcaption class="wp-element-caption">What a Black Friday code freeze blocks and what it allows</figcaption></figure>



<p class="wp-block-paragraph">Tag manager containers belong on the blocked list. A new marketing pixel is code running in every shopper&#8217;s browser, and a slow third-party script can hold up the checkout as effectively as a bad deploy.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes.png" alt="Two columns listing changes blocked by the code freeze and changes allowed through an emergency change process" class="wp-image-26176" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/code-freeze-frozen-vs-allowed-changes-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">What a Black Friday code freeze blocks and what it allows through a process</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>The changes that break stores in November often come from the admin panel and the tag manager, with no deploy at all. If your freeze only stops the deployment pipeline, it covers the smaller risk.</p></div>



<h2 class="wp-block-heading">When should the code freeze start for Black Friday 2026?</h2>



<p class="wp-block-paragraph">For Black Friday 2026, start the feature freeze on Monday, November 2, and allow no major deployments after Friday, November 13, two weeks before Black Friday. That leaves two weeks for load testing and fixes before the strict freeze, and two weeks of stable production before the peak. Keep the freeze in place through Cyber Monday, November 30, and lift it no earlier than Tuesday, December 1.</p>



<p class="wp-block-paragraph">These dates match what our team has seen work for years. In a scandiweb Black Friday panel, Glebs Vrevskis described the usual pattern: &#8220;A common thing we see is code freeze starting from the first days of November, with no new features being released.&#8221; Reinis Groskops added that &#8220;the latest time to do any major deployments is probably 2 weeks before Black Friday.&#8221; The full <a href="https://scandiweb.com/blog/black-friday-how-not-to-f-up-q-and-a/" target="_blank" rel="noopener">Black Friday Q&amp;A with our team</a> covers the rest of their advice.</p>



<figure class="wp-block-table"><table><thead><tr><th>Date (2026)</th><th>Milestone</th><th>What happens</th></tr></thead><tbody><tr><td>Thu–Fri, Oct 29–30</td><td>Scope locked, load testing starts</td><td>Last features picked, everything else moves to December. First test round on a production-sized environment</td></tr><tr><td>Mon, Nov 2</td><td>Feature freeze</td><td>No new features. Bug fixes and test findings only</td></tr><tr><td>Fri, Nov 6</td><td>Capacity booked</td><td>Hosting scale-up requested (Adobe Commerce on cloud: 10 business days ahead is Nov 12 at the latest)</td></tr><tr><td>Fri, Nov 13</td><td>Strict freeze</td><td>Last planned deployment. After this, emergency changes only</td></tr><tr><td>Mon–Fri, Nov 16–20</td><td>Rehearsal week</td><td>Final verification test, runbook walk-through, on-call rota confirmed</td></tr><tr><td>Wed, Nov 25</td><td>Rules applied</td><td>Pre-tested price and promotion rules switched on in the evening</td></tr><tr><td>Thu, Nov 26 – Mon, Nov 30</td><td>Peak</td><td>War room, 24/7 on-call, hourly checks</td></tr><tr><td>Tue, Dec 1</td><td>Review and thaw</td><td>Post-peak review, then the release backlog opens again</td></tr></tbody></table><figcaption class="wp-element-caption">Code freeze timeline for Black Friday 2026</figcaption></figure>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026.png" alt="Timeline of the 2026 Black Friday code freeze with feature freeze on November 2 and strict freeze on November 13" class="wp-image-26177" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-code-freeze-timeline-2026-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Code freeze timeline for Black Friday 2026, from scope lock to review</figcaption></figure></div>



<p class="wp-block-paragraph">Two dates in the table are easy to miss. If you&#8217;re on Adobe Commerce on cloud infrastructure, <a href="https://experienceleague.adobe.com/en/docs/support-resources/adobe-support-tools-guide/adobe-commerce-support/adobe-commerce-holiday-readiness/holiday-readiness-overview" target="_blank" rel="noopener">Adobe recommends</a> requesting a temporary compute upsize at least 10 business days before a major promotion, and finishing all patching before the code freeze. Promotions don&#8217;t count as emergencies, and Adobe notes that capacity during Black Friday and Cyber Monday is limited, so book early. If you&#8217;re still on a release line close to end of support, check our <a href="https://scandiweb.com/blog/magento-end-of-life/" target="_blank" rel="noopener">Magento end-of-life guide</a> before the freeze, because a patch you can&#8217;t apply in November waits until December.</p>



<p class="wp-block-paragraph">The other date is November 25. Our support team recommends building price and promotion rules on staging, testing them there, and switching them on the evening before the sale, without a customer email going out at the same moment. On high-load stores, that gives the platform a night to reindex before the traffic arrives, and any problem shows up while there&#8217;s still time to fix it. It&#8217;s the lesson from the outage in the introduction: once the rule was rebuilt to exclude five SKUs, it applied in two to three minutes instead of taking the site down for about an hour, and the fix was worth $500,000 in extra sales for that client.</p>



<p class="wp-block-paragraph"><strong>Read more:</strong> <a href="https://scandiweb.com/blog/how-scandiweb-support-saved-sales-event/" target="_blank" rel="noopener">How scandiweb Support Saved a Client&#8217;s Sales Event</a></p>



<p class="wp-block-paragraph">If your sales start earlier, as many now do, move the whole calendar back by the same number of days. Date the freeze from the first day of heavy traffic, whatever the banner says.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>Set the freeze date from the load-testing plan. Two test rounds with fixes in between take about two weeks, so a store that starts testing in mid-November has already run out of time.</p></div>



<h2 class="wp-block-heading">Black Friday load testing: targets, scenarios, and pass criteria</h2>



<p class="wp-block-paragraph">eCommerce load testing for Black Friday means simulating your expected peak traffic, measured at the busiest minute, on an environment sized like production, and checking that shoppers can still search, add to cart, and pay within agreed response times. Set the target from your own data, script the full buying journey including checkout, and run at least two rounds with fixes in between.</p>



<h3 class="wp-block-heading">Can the site take 5× traffic?</h3>



<p class="wp-block-paragraph">It depends on what the 5 multiplies. Five times an average day is often below a real Black Friday peak. On one Black Friday we supported, visits were up 10,955% on an average day, and concurrent visitors went from a couple of hundred to more than 17,000 as the first campaigns went out.</p>



<p class="wp-block-paragraph">Build the target from numbers you already have:</p>



<ol class="wp-block-list">
<li><strong>Find last year&#8217;s peak minute.</strong> Take the busiest hour from GA4 or your server logs, then look for the minute-level spikes inside it. Email sends and campaign launches create bursts that an hourly average hides.</li>


<li><strong>Apply this year&#8217;s forecast.</strong> Multiply by the growth the business expects and add any new traffic sources, such as a bigger email list or paid budget.</li>


<li><strong>Translate it into load.</strong> Express the target as concurrent sessions, page requests per second, and orders per minute. Orders per minute is the number that matters most, because checkout is the most expensive journey to serve.</li>


<li><strong>Add headroom.</strong> Test at the forecast peak, then at double it, then keep raising the load until something breaks, so you know where the ceiling is and what fails first.</li>

</ol>



<p class="wp-block-paragraph">Black Friday traffic is also different from normal traffic. Most days, shoppers browse cached category pages. On Black Friday, they add to cart and check out, and those pages aren&#8217;t cached, so the same number of visitors puts far more load on the application and the database.</p>



<h3 class="wp-block-heading">Which scenarios to test</h3>



<p class="wp-block-paragraph">A test that hammers the homepage measures your CDN, and not much else. Script the journeys that make money and the background jobs that run at the same time:</p>



<figure class="wp-block-table"><table><thead><tr><th>Scenario</th><th>Share of simulated users</th><th>Why it matters</th></tr></thead><tbody><tr><td>Browse category and product pages</td><td>50–60%</td><td>Checks caching, images, and search under load</td></tr><tr><td>Search and filtered navigation</td><td>15–20%</td><td>Search and faceted filters often skip the page cache</td></tr><tr><td>Add to cart and view cart</td><td>15–20%</td><td>Uncached, writes to the database</td></tr><tr><td>Checkout with payment</td><td>5–10%</td><td>The slowest journey, plus calls to payment, tax, and shipping services</td></tr><tr><td>Log in and view account or orders</td><td>5%</td><td>Session and customer data under load</td></tr><tr><td>Background: order export, stock sync, imports, cron</td><td>Running throughout</td><td>Shows whether back-office jobs slow the storefront</td></tr><tr><td>Back office: staff processing orders in the admin</td><td>A realistic number of users</td><td>Admin queries compete with shoppers for the same database</td></tr></tbody></table><figcaption class="wp-element-caption">Load testing scenarios and a starting traffic split</figcaption></figure>



<p class="wp-block-paragraph">Point payments at a sandbox or a stub. A load test that sends thousands of real authorizations to your payment provider may trip its fraud checks, and nobody wants to explain that on November 20.</p>



<h3 class="wp-block-heading">Pass criteria that make the result useful</h3>



<p class="wp-block-paragraph">Agree the pass criteria before the first run, so the result is a clear pass or fail. The thresholds below are a starting point to adapt, not a standard:</p>



<figure class="wp-block-table"><table><thead><tr><th>Measure</th><th>Example pass criterion at forecast peak</th></tr></thead><tbody><tr><td>Orders per minute</td><td>Sustained at the forecast peak for at least 30 minutes</td></tr><tr><td>Checkout and cart response time</td><td>95th percentile under 2 seconds per step</td></tr><tr><td>Error rate</td><td>Under 1% of requests, and zero failed orders that the store accepted</td></tr><tr><td>Apdex (Adobe Commerce on cloud, New Relic)</td><td>0.85 or higher, Adobe&#8217;s own target</td></tr><tr><td>Database and application CPU</td><td>Headroom left at the forecast peak, not pinned at 100%</td></tr><tr><td>Queues (orders, emails, stock updates)</td><td>Drain as fast as they fill, with no growing backlog</td></tr></tbody></table><figcaption class="wp-element-caption">Example pass criteria for a Black Friday load test</figcaption></figure>



<p class="wp-block-paragraph">The last row is the one teams forget. On the Black Friday above, the servers held, but orders arrived faster than the order queue could process them, and confirmation emails would have been delayed by days. The fix was a script that moved orders into separate batches on a dedicated instance. A queue-depth check in the load test would have found it earlier.</p>



<p class="wp-block-paragraph"><strong>Read more:</strong> <a href="https://scandiweb.com/blog/scaling-up-to-accommodate-a-40000-increase-in-sales/" target="_blank" rel="noopener">Scaling Up to Accommodate a 40000% Increase in Sales</a></p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak.png" alt="Chart of a load test ramping from forecast peak to double and then to failure, with checkout response time against a 2-second limit" class="wp-image-26178" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ecommerce-load-testing-ramp-forecast-peak-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">A stepped eCommerce load test, from forecast peak to the break point</figcaption></figure></div>



<h3 class="wp-block-heading">Where to run the load test</h3>



<p class="wp-block-paragraph">Run the main rounds on an environment with the same size, configuration, and CDN setup as production. A staging server with half the CPU tells you little about Black Friday.</p>



<p class="wp-block-paragraph">How you test depends on the platform:</p>



<ul class="wp-block-list">
<li><strong>Adobe Commerce on cloud:</strong> test on a production-sized environment, watch the results in New Relic, and request the temporary upsize you need for the peak. Adobe&#8217;s checklist also covers read replicas, indexers set to Update on Schedule, and asynchronous order processing.</li>


<li><strong>Self-hosted Magento or headless:</strong> you own every layer, so the test has to cover the web servers, database, cache, search engine, message queue, and CDN. Agree any test against production with your host first, and run it at night.</li>


<li><strong>Shopify and Shopify Plus:</strong> Shopify runs and scales the platform, so your test surface is everything you added, such as a headless storefront, custom apps, checkout extensions, and the middleware that connects Shopify to your ERP. Ask Shopify before you point a load generator at the live storefront.</li>

</ul>



<p class="wp-block-paragraph">If the test exposes a slow storefront, our <a href="https://scandiweb.com/blog/magento-2-performance-optimization-with-js-bundling/" target="_blank" rel="noopener">guide to speeding up Magento</a> and <a href="https://scandiweb.com/blog/shopify-performance-optimization/" target="_blank" rel="noopener">Shopify performance playbook</a> cover the usual fixes. For drops and limited releases where demand can exceed any capacity you&#8217;d buy, a <a href="https://scandiweb.com/blog/the-waiting-room-virtual-queuing-for-ecommerce/" target="_blank" rel="noopener">virtual waiting room</a> keeps checkout working for the shoppers already inside.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>A load test that passes on the first run usually tested too little. Plan for the first round to find the bottleneck, the second to confirm the fix, and the third to find the ceiling.</p></div>



<h3 class="wp-block-heading">What to do when the test finds the ceiling</h3>



<p class="wp-block-paragraph">The ceiling is the traffic level where response times climb and errors start. You can move it before Black Friday in two ways: add capacity, so more servers share the work, or make each request cheaper, so the same servers handle more shoppers.</p>



<p class="wp-block-paragraph">Adding capacity is the quicker lever on most hosting. On Shopify, the platform handles this part for you. On Adobe Commerce on cloud, it is the temporary upsize in the timeline above. On self-hosted Magento, it means more web servers behind the load balancer, and our guide to <a href="https://scandiweb.com/blog/server-autoscaling-in-magento-2/" target="_blank" rel="noopener">server autoscaling in Magento 2</a> explains how to add them automatically. Extra servers cost money for as long as they run, and the database still has to keep up with all of them.</p>



<p class="wp-block-paragraph">Making each request cheaper raises the ceiling without new hardware. Many Black Friday requests reach Magento uncached, such as filtered category pages, searches and the first visits after a cache flush, and Magento builds each of those pages on the server. <a href="https://scandiweb.com/solutions/magento/expedio" target="_blank" rel="noopener">Expedio</a> makes that page build at least 2x faster, so the same servers handle 3x the traffic before response times start to rise. The <a href="https://scandiweb.com/blog/expedio-benchmark/" target="_blank" rel="noopener">Expedio benchmark</a> shows how we measured it on one merchant&#8217;s Hyvä store.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster.png" alt="The Expedio page on scandiweb.com with the headline Magento. 2x faster. and buttons to get Expedio or try the demo" class="wp-image-25972" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-to-shopify-migration-expedio-magento-2x-faster-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Expedio makes Magento at least 2x faster without changing your theme or data</figcaption></figure></div>



<p class="wp-block-paragraph">Treat Expedio like any other release. It installs as a module without changing your theme or data, but it still needs a load test, so put it in before the strict freeze on November 13. If that&#8217;s too tight, plan it for the next peak.</p>




<h2 class="wp-block-heading">The incident plan: runbook, roles, and on-call rotation</h2>



<p class="wp-block-paragraph">An eCommerce incident plan for Black Friday is a short document that says who is on call, how an incident is declared, who decides, and what the first action is for each likely failure. It should name people, list phone numbers for every outside provider, define severity levels, and include a tested rollback, so that at 9 p.m. on Black Friday nobody has to work out the process while the checkout is down.</p>



<p class="wp-block-paragraph">The order of steps matters more than the detail. During an incident, restore sales first, through a rollback, a disabled extension, or a switched payment method. Find the root cause afterward.</p>



<h3 class="wp-block-heading">Roles to name before the peak</h3>



<p class="wp-block-paragraph">Each role needs a named person and a backup for every shift:</p>



<ul class="wp-block-list">
<li><strong>Incident lead:</strong> declares the incident, sets the severity, and keeps the timeline. This person coordinates and doesn&#8217;t debug.</li>


<li><strong>On-call developer:</strong> investigates and applies the fix or rollback.</li>


<li><strong>Infrastructure or hosting contact:</strong> scales, restarts, or fails over servers, and talks to the host.</li>


<li><strong>Business owner:</strong> decides on trade-offs, such as pausing a campaign email or switching off a payment method.</li>


<li><strong>Communications:</strong> posts updates to the team every 30 minutes and decides what customers see, such as a site banner.</li>

</ul>



<h3 class="wp-block-heading">On-call rotation from Thanksgiving to Cyber Monday</h3>



<p class="wp-block-paragraph">Write the on-call rotation down, with names, shifts, and phone numbers, and keep a copy outside Slack, because the person you need may be offline. For the peak weekend, plan for 24/7 cover with handovers at fixed times, a second person on call for severity 1 incidents, and no one on call for more than 12 hours in a row.</p>



<p class="wp-block-paragraph">List the outside contacts in the runbook too: hosting, CDN, payment provider, ERP and warehouse integrations, search, and your agency, each with an emergency number and the account ID they&#8217;ll ask for. If you&#8217;re agreeing response times with an agency for the first time, our guide to <a href="https://scandiweb.com/blog/website-maintenance-cost/">support SLA tiers and 24/7 cover</a> explains what to ask for.</p>



<h3 class="wp-block-heading">Playbooks for the failures you can predict</h3>



<p class="wp-block-paragraph">Most Black Friday website crashes follow a few patterns. Write a first action for each one before the peak:</p>



<figure class="wp-block-table"><table><thead><tr><th>Failure</th><th>First signal</th><th>First action</th></tr></thead><tbody><tr><td>Checkout or payments failing</td><td>Payment success rate drops, checkout errors rise</td><td>Switch to a backup payment method, check the provider&#8217;s status page</td></tr><tr><td>Site slow or down under load</td><td>Response time and error rate climb</td><td>Scale up, switch non-essential extensions and recommendations off, enable the waiting room</td></tr><tr><td>A promo rule misfires</td><td>Wrong prices, or load spikes right after a rule change</td><td>Disable the rule, restore the tested version</td></tr><tr><td>Stock sync or ERP integration stops</td><td>Orders oversell, export queue grows</td><td>Pause the affected products, switch the sync to batch mode</td></tr><tr><td>Order or email queue backs up</td><td>Queue depth grows, confirmation emails delayed</td><td>Add workers or move processing to a separate instance</td></tr><tr><td>Bot traffic or card testing</td><td>Traffic spike with no orders, many failed payments</td><td>Turn on CDN bot rules and rate limits, add a checkout challenge</td></tr></tbody></table><figcaption class="wp-element-caption">Incident playbooks for predictable Black Friday failures</figcaption></figure>



<p class="wp-block-paragraph">Each playbook needs a kill switch: a configuration flag or admin setting that turns the risky feature off without a deploy. Test every one of them during rehearsal week.</p>



<h3 class="wp-block-heading">What to watch on the dashboard</h3>



<p class="wp-block-paragraph">Put the measures that show lost revenue on one screen, compared with the forecast for that hour:</p>



<ul class="wp-block-list">
<li>Orders per minute against the forecast</li>


<li>Payment success rate by method</li>


<li>Checkout and cart error rate</li>


<li>Server response time and error rate</li>


<li>Queue depth for orders, emails, and stock updates</li>


<li>Purchase events arriving in GA4 and your ad platforms</li>

</ul>



<p class="wp-block-paragraph">The last line catches a quiet failure. If purchase events stop arriving, the ad platforms keep spending on the busiest days of the year with no conversion data. If your tracking runs through a <a href="https://scandiweb.com/blog/server-side-tracking/" target="_blank" rel="noopener">server-side tracking setup</a>, add the server container&#8217;s error rate to the same screen.</p>



<p class="wp-block-paragraph">Practice the plan once before it&#8217;s needed. In rehearsal week, simulate one incident, such as a failed payment provider on staging, and time how long it takes from the alert to the workaround.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation.png" alt="Escalation path from a checkout alert to the on-call developer, incident lead, business owner, hosting contact and payment provider" class="wp-image-26179" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/black-friday-incident-runbook-roles-escalation-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">How an incident is escalated during the Black Friday peak</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>The incident lead and the person fixing the problem should be two different people. When one person does both, nobody updates the business, and nobody decides whether to pause the email that is still sending traffic to a broken checkout.</p></div>



<h2 class="wp-block-heading">Test orders on production during peak</h2>



<p class="wp-block-paragraph">Yes, you can place test orders on production during the peak, and you should, as long as they follow agreed rules. A small number of real test orders each morning of the peak and after every approved change is the most direct proof that checkout, payment, stock, and order export still work end to end. Agree who places them, how they&#8217;re marked, and how they&#8217;re cancelled and refunded.</p>



<figure class="wp-block-table"><table><thead><tr><th>Method</th><th>Best for</th><th>Watch for</th></tr></thead><tbody><tr><td>Real card, small order, then cancel and refund</td><td>Confirming the live payment path end to end</td><td>Processor fees, and the order reaching the warehouse unless it&#8217;s flagged</td></tr><tr><td>Hidden test product or test customer group</td><td>Order export, emails, and ERP sync</td><td>It must stay hidden from search, feeds, and sitemaps</td></tr><tr><td>Payment provider test mode</td><td>Staging, not live stores</td><td>Shopify says not to switch Shopify Payments test mode on in a store that&#8217;s in production</td></tr><tr><td>Shopify Bogus Gateway</td><td>Shopify test stores</td><td>Other card providers have to be deactivated first, which isn&#8217;t practical on a live store</td></tr></tbody></table><figcaption class="wp-element-caption">Ways to place test orders on a live store</figcaption></figure>



<p class="wp-block-paragraph">Mark every test order clearly, for example with a test customer email and an order note, and tell the warehouse and finance teams which orders to ignore. Exclude them from reporting, or your peak-day numbers will be slightly wrong in every dashboard.</p>



<h2 class="wp-block-heading">FAQ about the Black Friday code freeze</h2>



<h3 class="wp-block-heading">What is a code freeze?</h3>



<p class="wp-block-paragraph">A code freeze is a set period when no changes are deployed to a production system, so it stays in a tested, known state. Before Black Friday, eCommerce teams use a code freeze to protect the store during the peak. A good one also covers configuration, extension updates, tag manager changes, and infrastructure, with an emergency process for security fixes.</p>



<h3 class="wp-block-heading">When should the code freeze start for Black Friday?</h3>



<p class="wp-block-paragraph">For Black Friday 2026, on November 27, start a feature freeze on November 2 and make the last planned deployment on November 13, two weeks before the peak. Use the time in between for load testing and fixes. If your sales start earlier in November, move each date back by the same number of days.</p>



<h3 class="wp-block-heading">How long should a Black Friday code freeze last?</h3>



<p class="wp-block-paragraph">Most stores keep the strict freeze for about two to three weeks: from two weeks before Black Friday until the day after Cyber Monday. For 2026, that means November 13 to December 1. Stores with heavy December trade often keep a lighter freeze until their last Christmas delivery date.</p>



<h3 class="wp-block-heading">Can we deploy a fix during the code freeze?</h3>



<p class="wp-block-paragraph">Yes, through an emergency change process. Security patches (such as the October 2026 <a href="https://scandiweb.com/blog/php2shell/">PHP2Shell fix</a>) and fixes for bugs that hurt sales can go live during the freeze if they&#8217;re tested on staging, approved by a named person, deployed at a quiet hour, and have a rollback ready. Everything else waits until the freeze lifts.</p>



<h3 class="wp-block-heading">Can the site take 5× traffic?</h3>



<p class="wp-block-paragraph">Only a load test can answer that, and only once you define what 5× means. Base the target on last year&#8217;s busiest minute, multiplied by this year&#8217;s forecast, then test at that level, at double it, and up to the break point. Five times an average day is often less than a real Black Friday peak.</p>



<h3 class="wp-block-heading">Should we load test on production?</h3>



<p class="wp-block-paragraph">Run the main load tests on an environment that matches production in size and configuration. Test production itself only with your hosting provider&#8217;s agreement, at a low-traffic hour, with payments pointed at a sandbox. On Shopify, check with Shopify before running load against the live storefront.</p>



<h3 class="wp-block-heading">Can we place test orders on production?</h3>



<p class="wp-block-paragraph">Yes, with rules. Place a few real test orders each morning of the peak and after any approved change, using a small real payment you cancel and refund, or a hidden test product. Mark the orders clearly, tell the warehouse and finance teams, and exclude them from reporting. Don&#8217;t switch payment test modes on in a live store.</p>



<h3 class="wp-block-heading">Who should be on call during Black Friday?</h3>



<p class="wp-block-paragraph">At minimum, an incident lead, an on-call developer, a hosting or infrastructure contact, and a business owner who can pause campaigns or switch payment methods. Cover the full Thanksgiving to Cyber Monday window around the clock, name a backup for each shift, and keep phone numbers for every outside provider in the runbook.</p>



<h2 class="wp-block-heading">Plan the code freeze this week</h2>



<p class="wp-block-paragraph">A Black Friday code freeze works when it starts from the load-testing plan, covers configuration as well as code, and ends with a team that knows who answers the phone. For 2026, that means locking scope this week, testing from late October, freezing features on November 2, and keeping production stable from November 13 through Cyber Monday. Write the runbook now, while there&#8217;s time to rehearse it.</p>



<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@type": "FAQPage",
 "mainEntity": [
  {
   "@type": "Question",
   "name": "What is a code freeze?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "A code freeze is a set period when no changes are deployed to a production system, so it stays in a tested, known state. Before Black Friday, eCommerce teams use a code freeze to protect the store during the peak. A good one also covers configuration, extension updates, tag manager changes, and infrastructure, with an emergency process for security fixes."
   }
  },
  {
   "@type": "Question",
   "name": "When should the code freeze start for Black Friday?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "For Black Friday 2026, on November 27, start a feature freeze on November 2 and make the last planned deployment on November 13, two weeks before the peak. Use the time in between for load testing and fixes. If your sales start earlier in November, move each date back by the same number of days."
   }
  },
  {
   "@type": "Question",
   "name": "How long should a Black Friday code freeze last?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Most stores keep the strict freeze for about two to three weeks: from two weeks before Black Friday until the day after Cyber Monday. For 2026, that means November 13 to December 1. Stores with heavy December trade often keep a lighter freeze until their last Christmas delivery date."
   }
  },
  {
   "@type": "Question",
   "name": "Can we deploy a fix during the code freeze?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Yes, through an emergency change process. Security patches and fixes for bugs that hurt sales can go live during the freeze if they're tested on staging, approved by a named person, deployed at a quiet hour, and have a rollback ready. Everything else waits until the freeze lifts."
   }
  },
  {
   "@type": "Question",
   "name": "Can the site take 5× traffic?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Only a load test can answer that, and only once you define what 5× means. Base the target on last year's busiest minute, multiplied by this year's forecast, then test at that level, at double it, and up to the break point. Five times an average day is often less than a real Black Friday peak."
   }
  },
  {
   "@type": "Question",
   "name": "Should we load test on production?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Run the main load tests on an environment that matches production in size and configuration. Test production itself only with your hosting provider's agreement, at a low-traffic hour, with payments pointed at a sandbox. On Shopify, check with Shopify before running load against the live storefront."
   }
  },
  {
   "@type": "Question",
   "name": "Can we place test orders on production?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Yes, with rules. Place a few real test orders each morning of the peak and after any approved change, using a small real payment you cancel and refund, or a hidden test product. Mark the orders clearly, tell the warehouse and finance teams, and exclude them from reporting. Don't switch payment test modes on in a live store."
   }
  },
  {
   "@type": "Question",
   "name": "Who should be on call during Black Friday?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "At minimum, an incident lead, an on-call developer, a hosting or infrastructure contact, and a business owner who can pause campaigns or switch payment methods. Cover the full Thanksgiving to Cyber Monday window around the clock, name a backup for each shift, and keep phone numbers for every outside provider in the runbook."
   }
  }
 ]
}
</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em>Not sure your store will hold at the peak? </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>Talk to our team about load testing and on-call cover</em></a><em> before the freeze starts.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/black-friday-code-freeze/">Black Friday Code Freeze: 2026 Timeline, Load Testing, and Incident Plan</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>We Ranked 5,548 Baltic Brands for AI Search: Meet the Winners</title>
		<link>https://scandiweb.com/blog/baltic-ai-brand-ranking-winners/</link>
		
		<dc:creator><![CDATA[Lina Ivanova]]></dc:creator>
		<pubDate>Wed, 28 Oct 2026 16:04:56 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Digital Growth]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[AEO]]></category>
		<category><![CDATA[AI search optimization]]></category>
		<category><![CDATA[answer engine optimization]]></category>
		<category><![CDATA[AnswerRank]]></category>
		<category><![CDATA[Baltic AI Brand Ranking]]></category>
		<category><![CDATA[Baltic Brand Forum]]></category>
		<category><![CDATA[chatgpt]]></category>
		<category><![CDATA[perplexity]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26463</guid>

					<description><![CDATA[<p>scandiweb's Baltic AI brand ranking scored 5,548 brands by how often ChatGPT, Gemini and Perplexity recommend them. See the top 10 and country winners.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/baltic-ai-brand-ranking-winners/">We Ranked 5,548 Baltic Brands for AI Search: Meet the Winners</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-BaltR wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/solutions/aeo-rankings" target=_blank >
        Baltic AI Brand Ranking
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/ai-search-optimization" target=_blank >
        AI Search Optimization
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/ai-content-strategy-for-ecommerce" target=_blank >
        AI Content Strategy
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">When a buyer asks ChatGPT, Gemini or Perplexity which bank, airline or pharmacy to choose, the answer names a short list of brands, and the order of that list decides who gets chosen. Knowing where your brand stands in those answers is the first step to being recommended more often.</p>



<p class="wp-block-paragraph">To see where Baltic brands stand, we built the Baltic AI brand ranking. We asked the three assistants 3,419 buyer questions over a month and scored 5,548 companies in 113 industries across Latvia, Estonia and Lithuania, using AnswerRank. Lina Ivanova, our Head of Traffic Acquisition, presented the results at Baltic Brand Forum 2026 in Riga and announced the winners on the main stage.</p>



<p class="wp-block-paragraph">Banks, an airline, a bookstore and a fuel retailer are among this year&#8217;s winners and finalists, and one brand came out on top in three of the four rankings.</p>




<h2 class="wp-block-heading">The top 10 most AI recommended brands in the Baltics</h2>



<p class="wp-block-paragraph">Circle K leads the Baltic list with a score of 92.6, followed by Swedbank at 88.1 and Revolut at 87.8. The Baltic list only includes brands AI names in all three countries. A company that ChatGPT recommends in Latvia alone appears in the Latvian ranking instead. Two banks, a fuel retailer, a car rental company and an airline make up the top five.</p>



<figure class="wp-block-table"><table><thead><tr><th>#</th><th>Company</th><th>Industry</th><th>LV</th><th>EE</th><th>LT</th><th>Score</th></tr></thead><tbody><tr><td>1</td><td>Circle K</td><td>Fuel Retail</td><td>91.5</td><td>93.3</td><td>93.2</td><td>92.6</td></tr><tr><td>2</td><td>Swedbank</td><td>Banking</td><td>89.8</td><td>84.8</td><td>87.8</td><td>88.1</td></tr><tr><td>3</td><td>Revolut</td><td>Digital Banking</td><td>88.4</td><td>83.4</td><td>91.6</td><td>87.8</td></tr><tr><td>4</td><td>SIXT</td><td>Car Rental</td><td>84.0</td><td>89.2</td><td>81.0</td><td>84.7</td></tr><tr><td>5</td><td>airBaltic</td><td>Airlines</td><td>80.0</td><td>86.8</td><td>83.8</td><td>83.5</td></tr><tr><td>6</td><td>DPD</td><td>Parcel Delivery</td><td>88.9</td><td>90.9</td><td>–</td><td>83.3</td></tr><tr><td>7</td><td>Bolt</td><td>Taxi</td><td>87.2</td><td>83.8</td><td>89.0</td><td>82.3</td></tr><tr><td>8</td><td>ERGO</td><td>Insurance</td><td>78.6</td><td>81.2</td><td>86.4</td><td>82.1</td></tr><tr><td>9</td><td>Red Bull</td><td>Energy Drinks</td><td>78.5</td><td>84.3</td><td>82.7</td><td>81.9</td></tr><tr><td>10</td><td>adidas</td><td>Sportswear Manufacturing</td><td>87.5</td><td>70.5</td><td>87.5</td><td>81.8</td></tr></tbody></table><figcaption class="wp-element-caption">Top 10 brands in the Baltic AI Brand Ranking (scores out of 100)</figcaption></figure>



<p class="wp-block-paragraph">DPD has no Lithuania score in the published table, so its LT cell shows a dash.</p>



<p class="wp-block-paragraph">The list continues past these ten, and every industry has its own page with results per country. You can <a href="https://scandiweb.com/solutions/aeo-rankings" target="_blank" rel="noopener">see the full Baltic AI Brand Ranking</a> and search it for any company.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart.png" alt="Bar chart of the top 10 brands in the Baltic AI Brand Ranking, led by Circle K at 92.6" class="wp-image-26459" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/baltic-ai-brand-ranking-top-10-chart-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">The top 10 brands in the Baltic AI Brand Ranking, by score out of 100</figcaption></figure></div>



<h2 class="wp-block-heading">Winners and finalists in Latvia, Estonia and Lithuania</h2>



<p class="wp-block-paragraph">Circle K won in Latvia and Lithuania. Rahva Raamat, a bookstore, won in Estonia with 93.5, the highest score among the four winners. The winner of each ranking is the brand ChatGPT, Gemini and Perplexity recommend most, and the finalists hold places 2 to 5. The country lists also include brands AI names in only one or two countries, so the finalists differ from the Baltic top 10.</p>



<h3 class="wp-block-heading">Latvia</h3>



<p class="wp-block-paragraph">Circle K won Latvia with 91.5. The finalists follow.</p>



<ul class="wp-block-list">
<li>2nd place: Jānis Roze, Bookstore, 90.2</li>


<li>3rd place: Swedbank, Banking, 89.8</li>


<li>4th place: Stockmann, Department Store, 89.5</li>


<li>5th place: Tet, IPTV, 89.2</li>

</ul>



<h3 class="wp-block-heading">Estonia</h3>



<p class="wp-block-paragraph">Rahva Raamat won Estonia with 93.5. The finalists follow.</p>



<ul class="wp-block-list">
<li>2nd place: Circle K, Fuel Retail, 93.3</li>


<li>3rd place: DPD, Parcel Delivery, 90.9</li>


<li>4th place: Benu, Pharmacy, 89.7</li>


<li>5th place: Selver, Online Grocery Delivery, 89.4</li>

</ul>



<h3 class="wp-block-heading">Lithuania</h3>



<p class="wp-block-paragraph">Circle K won Lithuania with 93.2. The finalists follow.</p>



<ul class="wp-block-list">
<li>2nd place: Revolut, Digital Banking, 91.6</li>


<li>3rd place: Pigu, eCommerce Platform, 91.1</li>


<li>4th place: Maxima, Grocery / Supermarket, 90.7</li>


<li>5th place: Verslo Žinios, Business News, 90.6</li>

</ul>



<p class="wp-block-paragraph">Two things stand out in the country results. Circle K won three of the four rankings and finished second in Estonia, 0.2 points behind Rahva Raamat. Bookstores also do well: Rahva Raamat won Estonia, Jānis Roze is second in Latvia and Pegasas leads the Lithuanian bookstore category with 86.5. You can see <a href="https://scandiweb.com/solutions/aeo-rankings/winners" target="_blank" rel="noopener">all winners and finalists</a>, including the company AI names first in each of the 113 industries, on the winners page.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="1114" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement.png" alt="Lina Ivanova and the event host on the Baltic Brand Forum stage in front of the Baltic Brand Forum screen" class="wp-image-26481" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement-300x200.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement-1024x682.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement-150x100.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement-768x512.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement-1536x1023.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-ai-ranking-winners-announcement-1600x1066.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Lina Ivanova and the host announcing the AI ranking winners on stage at Baltic Brand Forum in Riga</figcaption></figure></div>



<h2 class="wp-block-heading">How the Baltic AI Brand Ranking was measured</h2>



<p class="wp-block-paragraph">We ran the study in <a href="https://scandiweb.com/blog/answerrank-brand-visibility-ai-search-leaderboard/" target="_blank" rel="noopener">AnswerRank</a>, our AI search monitoring tool. Over a month, AnswerRank put the same buyer questions to ChatGPT, Gemini and Perplexity for each industry in Latvia, Estonia and Lithuania, 3,419 questions across 113 industries, and recorded every company named in the answers. For each company it tracks how often the answers mention it, how they describe it and where in the answer it appears. A brand only appears in the ranking if AI named it, and the questions behind each industry are listed on that industry&#8217;s page of the ranking.</p>



<h3 class="wp-block-heading">Three measures in one score</h3>



<p class="wp-block-paragraph">Each company gets one score out of 100, built from three measures.</p>



<figure class="wp-block-table"><table><thead><tr><th>Measure</th><th>What it means</th><th>Weight</th></tr></thead><tbody><tr><td>Visibility</td><td>Share of answers that name the brand</td><td>Counts most</td></tr><tr><td>Sentiment</td><td>How favorably the answers describe the brand</td><td>Second</td></tr><tr><td>Average position</td><td>Where the brand appears in the answer, 1 = first</td><td>Separates close scores</td></tr></tbody></table><figcaption class="wp-element-caption">The three measures behind the AI brand score</figcaption></figure>



<p class="wp-block-paragraph">The ranking is independent and built by scandiweb. Baltic Brand Forum does not operate the ranking, and it is separate from the forum&#8217;s own Baltic Brand Awards, which are based on Norstat&#8217;s Brand Capital research.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position.png" alt="Diagram of visibility, sentiment and average position combining into one AI brand score out of 100" class="wp-image-26460" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/ai-brand-score-visibility-sentiment-position-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">How the AI brand score combines visibility, sentiment and position</figcaption></figure></div>



<h2 class="wp-block-heading">Why AI recommendations matter for your brand</h2>



<p class="wp-block-paragraph">When a buyer asks an assistant which bank or pharmacy to use, the answer is a short list, and the order of that list decides who gets seen. Across our industry rankings, the brand named first appears in 67% of answers on average. The brand in fifth place appears in 22%. First place is close to the default answer, while fifth place is an occasional mention.</p>



<p class="wp-block-paragraph">The ranking page breaks results down by industry and by country, and the same question often gets a different answer in each market. Maxima is the grocery chain AI names first in Latvia and Lithuania, while Prisma leads in Estonia. In parcel delivery, Omniva leads Latvia, DPD leads Estonia and Venipak leads Lithuania. A brand that is well placed in one country needs its own check in the other two.</p>



<p class="wp-block-paragraph">Visibility in AI answers is the subject of answer engine optimization, or AEO. If the term is new to you, read our post on <a href="https://scandiweb.com/blog/what-is-answer-engine-optimization-aeo/" target="_blank" rel="noopener">what answer engine optimization is</a> first. The short version is that assistants build answers from the pages and third-party sources they can read, and a brand can change what those sources say about it.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>If ChatGPT, Gemini or Perplexity leave your brand out of an answer, the buyer who asked never sees it as an option. Being named at all is the first thing to check, before position or sentiment.</p></div>



<h2 class="wp-block-heading">Announced on stage at Baltic Brand Forum</h2>



<p class="wp-block-paragraph">scandiweb was an official partner of Baltic Brand Forum 2026, held on September 24–25, 2026 at Riga Circus under the theme &#8220;Stand Out&#8221;. Lina Ivanova, our Head of Traffic Acquisition, spoke on the main stage with the talk &#8220;When Buyers Ask AI What to Buy, Is Your Brand in the Answer?&#8221; and announced the winners of the AI ranking from that stage.</p>



<p class="wp-block-paragraph">Brands that heard their name in the hall can find their full industry results on the ranking page.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="1115" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum.png" alt="Lina Ivanova on stage at Baltic Brand Forum in front of a slide on the battle for brand visibility" class="wp-image-26468" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum-300x200.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum-1024x683.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum-150x100.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum-768x512.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum-1536x1024.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/lina-ivanova-speaking-baltic-brand-forum-1600x1067.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Lina Ivanova speaking about AI search on the main stage at Baltic Brand Forum in Riga</figcaption></figure></div>



<h2 class="wp-block-heading">How to move your brand up in AI answers</h2>



<p class="wp-block-paragraph">AI search optimization builds on SEO. Assistants that search the web read pages that search engines can find, so the technical work you already do for Google still counts. Two more things need attention on top of it: the full-sentence questions buyers ask and the third-party sources AI quotes. Our guide on <a href="https://scandiweb.com/solutions/aeo-rankings/how-to-rank-in-ai-search" target="_blank" rel="noopener">how to rank in AI search</a> covers each step in detail. The short version follows.</p>



<ol class="wp-block-list">
<li>Find the questions buyers ask, such as which bank in Lithuania has the lowest fees.</li>


<li>Check where AI places you today by searching the ranking for your company and noting your visibility, sentiment, average position and the competitors named ahead of you.</li>


<li>Answer those questions on your own site, covering what you sell, where you deliver and what it costs, with one page per market in its own language.</li>


<li>Get mentioned in the sources AI reads, including review sites, comparison articles, directories and news coverage.</li>


<li>Make your site readable for AI crawlers, with key content in HTML, structured data in place and a robots.txt that does not block GPTBot, OAI-SearchBot, PerplexityBot or Google-Extended.</li>


<li>Keep your facts the same everywhere, so your company name, address and product details match across your site, Google Business Profile, social profiles and directories.</li>


<li>Work on what AI says about you by answering reviews, fixing the problems customers keep mentioning and correcting outdated facts on third-party pages.</li>


<li>Measure the same questions every month, because AI answers change as the assistants update their sources.</li>

</ol>



<p class="wp-block-paragraph">For the measurement in step 8, see our post on <a href="https://scandiweb.com/blog/tracking-brand-mentions-in-llm-ai-generated-answers/" target="_blank" rel="noopener">tracking brand mentions in AI-generated answers</a>.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Quick takeaway</strong></p>  <p>Open your robots.txt and check that it does not block GPTBot, OAI-SearchBot, PerplexityBot or Google-Extended. It is the quickest item on the list to verify.</p></div>



<h2 class="wp-block-heading">Where does your brand stand?</h2>



<p class="wp-block-paragraph">Search the <a href="https://scandiweb.com/solutions/aeo-rankings" target="_blank" rel="noopener">Baltic AI Brand Ranking</a> for your company name. The result shows your visibility, sentiment and average position, and the competitors named ahead of you. If your brand is missing from the Baltic list, check the country rankings first, since they include brands named in fewer than three countries. If it is still not there, use the <a href="https://scandiweb.com/solutions/aeo-rankings/dont-see-your-brand" target="_blank" rel="noopener">Don&#8217;t see your brand?</a> page.</p>



<h2 class="wp-block-heading">FAQ</h2>



<h3 class="wp-block-heading">What is the Baltic AI Brand Ranking?</h3>



<p class="wp-block-paragraph">It is an independent ranking of 5,548 companies in 113 industries across Latvia, Estonia and Lithuania, ordered by how often ChatGPT, Gemini and Perplexity recommend them. scandiweb built it and gathered the data with AnswerRank, asking 3,419 buyer questions over a month. Each company gets one score out of 100 based on visibility, sentiment and average position.</p>



<h3 class="wp-block-heading">Which brand does AI recommend most in the Baltics?</h3>



<p class="wp-block-paragraph">Circle K, with a Baltic score of 92.6. Swedbank is second at 88.1 and Revolut third at 87.8. By country, Circle K also won Latvia with 91.5 and Lithuania with 93.2, while Rahva Raamat won Estonia with 93.5. Each of the 113 industries has its own leader per country, listed on the winners page.</p>



<h3 class="wp-block-heading">How is the AI brand score calculated?</h3>



<p class="wp-block-paragraph">Visibility is the share of answers that mention the company. Sentiment is how favorably the answers describe it. Average position is where the company appears in the answer, with 1 meaning first. The score rolls the three into one number out of 100. Visibility is weighted most, sentiment second, and position separates brands whose scores are close.</p>



<h3 class="wp-block-heading">Is the ranking connected to the Baltic Brand Awards?</h3>



<p class="wp-block-paragraph">No. The Baltic AI Brand Ranking is independent, built by scandiweb and announced at Baltic Brand Forum, where scandiweb was an official partner. The forum&#8217;s Baltic Brand Awards are a separate program based on Norstat&#8217;s Brand Capital research. A brand can win one and not appear in the other, so the two should not be read as a single result.</p>



<h3 class="wp-block-heading">Why is my brand not in the ranking?</h3>



<p class="wp-block-paragraph">There are four common reasons. AI did not name your brand for your industry&#8217;s questions. Your brand is listed under another name, as Rimi Eesti Food is in Estonia. Your brand is named in only one or two countries, which keeps it off the Baltic list but still in the country rankings. Or your industry was not among the 113 tested.</p>



<h3 class="wp-block-heading">How long does it take to move up in AI answers?</h3>



<p class="wp-block-paragraph">There is no fixed timeline. Each assistant refreshes its sources at its own pace, so a change on your site or in a third-party source shows up in ChatGPT, Gemini and Perplexity at different times. That is why the last step in our guide is to measure the same questions every month and compare the results.</p>



<h2 class="wp-block-heading">What the ranking means for your brand</h2>



<p class="wp-block-paragraph">The Baltic AI brand ranking gives you a measured answer to a question most brand teams have only guessed at: whether ChatGPT, Gemini and Perplexity name you when a buyer in Latvia, Estonia or Lithuania asks what to choose. Circle K, Swedbank and Revolut lead the Baltic list, Rahva Raamat leads Estonia, and 113 industries have their own leaders in each country. The gap between first and fifth place, 67% of answers against 22%, is the number to keep in mind. Congratulations again to the winners and finalists. For everyone else, the eight steps above are where to start, and the ranking page is where to check your position today.</p>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "Article", "headline": "We Ranked 5,548 Baltic Brands for AI Search: Meet the Winners", "author": {"@type": "Person", "name": "Lina Ivanova", "jobTitle": "Head of Traffic Acquisition"}, "publisher": {"@type": "Organization", "name": "scandiweb", "url": "https://scandiweb.com"}, "about": {"@type": "Dataset", "name": "Baltic AI Brand Ranking", "url": "https://scandiweb.com/solutions/aeo-rankings"}, "mainEntityOfPage": "https://scandiweb.com/blog/baltic-ai-brand-ranking-winners/"}</script>
<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "What is the Baltic AI Brand Ranking?", "acceptedAnswer": {"@type": "Answer", "text": "It is an independent ranking of 5,548 companies in 113 industries across Latvia, Estonia and Lithuania, ordered by how often ChatGPT, Gemini and Perplexity recommend them. scandiweb built it and gathered the data with AnswerRank, asking 3,419 buyer questions over a month. Each company gets one score out of 100 based on visibility, sentiment and average position."}}, {"@type": "Question", "name": "Which brand does AI recommend most in the Baltics?", "acceptedAnswer": {"@type": "Answer", "text": "Circle K, with a Baltic score of 92.6. Swedbank is second at 88.1 and Revolut third at 87.8. By country, Circle K also won Latvia with 91.5 and Lithuania with 93.2, while Rahva Raamat won Estonia with 93.5. Each of the 113 industries has its own leader per country, listed on the winners page."}}, {"@type": "Question", "name": "How is the AI brand score calculated?", "acceptedAnswer": {"@type": "Answer", "text": "Visibility is the share of answers that mention the company. Sentiment is how favorably the answers describe it. Average position is where the company appears in the answer, with 1 meaning first. The score rolls the three into one number out of 100. Visibility is weighted most, sentiment second, and position separates brands whose scores are close."}}, {"@type": "Question", "name": "Is the ranking connected to the Baltic Brand Awards?", "acceptedAnswer": {"@type": "Answer", "text": "No. The Baltic AI Brand Ranking is independent, built by scandiweb and announced at Baltic Brand Forum, where scandiweb was an official partner. The forum's Baltic Brand Awards are a separate program based on Norstat's Brand Capital research. A brand can win one and not appear in the other, so the two should not be read as a single result."}}, {"@type": "Question", "name": "Why is my brand not in the ranking?", "acceptedAnswer": {"@type": "Answer", "text": "There are four common reasons. AI did not name your brand for your industry's questions. Your brand is listed under another name, as Rimi Eesti Food is in Estonia. Your brand is named in only one or two countries, which keeps it off the Baltic list but still in the country rankings. Or your industry was not among the 113 tested."}}, {"@type": "Question", "name": "How long does it take to move up in AI answers?", "acceptedAnswer": {"@type": "Answer", "text": "There is no fixed timeline. Each assistant refreshes its sources at its own pace, so a change on your site or in a third-party source shows up in ChatGPT, Gemini and Perplexity at different times. That is why the last step in our guide is to measure the same questions every month and compare the results."}}]}</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em> </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>Get a measurement of where AI places your brand</em></a><em>, and we will show you which questions it is missing from.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/baltic-ai-brand-ranking-winners/">We Ranked 5,548 Baltic Brands for AI Search: Meet the Winners</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP2Shell: What the Critical PHP Vulnerability Means for Your Online Store</title>
		<link>https://scandiweb.com/blog/php2shell/</link>
		
		<dc:creator><![CDATA[Rolands Jermolajevs]]></dc:creator>
		<pubDate>Tue, 27 Oct 2026 15:45:13 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[adobe commerce]]></category>
		<category><![CDATA[adobe commerce security]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[magento 2]]></category>
		<category><![CDATA[magento 2 security]]></category>
		<category><![CDATA[Magento security]]></category>
		<category><![CDATA[Magento Support]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP2Shell]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26409</guid>

					<description><![CDATA[<p>PHP2Shell explained for eCommerce teams: which stores are exposed, the PHP versions that fix it, what to do if you can't patch yet, and how to prepare.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/php2shell/">PHP2Shell: What the Critical PHP Vulnerability Means for Your Online Store</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-Php2S wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/ecommerce-support-services" target=_blank >
        eCommerce Support Services
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/magento-support" target=_blank >
        Magento Support
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/magento-upgrade-services" target=_blank >
        Magento Upgrade
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">At 14:00 UTC on October 21, 2026, PHP released fixes for PHP2Shell, two flaws that can let a stranger with no login run code on a PHP web server. Cloudflare&#8217;s CEO counted thousands of exploit attempts in the ten hours before the fixes went out, tens of thousands in the 45 minutes after, and millions after that.</p>



<p class="wp-block-paragraph">Magento, Adobe Commerce, WooCommerce and Shopware all run on PHP, and this PHP security vulnerability is below the store code, where no store patch reaches. The fix is a PHP update on the server, so your store is only as safe as whoever runs that server: your host, Adobe, your agency or your own team. For most store owners, this week&#8217;s question is easy to ask and slow to answer: which PHP version is each of our servers running, and who confirmed it?</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>The fixed releases are PHP 8.5.12, 8.4.27, 8.3.36 and 8.2.35. A server on a lower number for its branch, or on PHP 8.1 or older, is still exposed unless its vendor backported the fix, and the package changelog will say so.</p></div>



<h2 class="wp-block-heading">What is PHP2Shell?</h2>



<p class="wp-block-paragraph">PHP2Shell is the name for two flaws in PHP itself, CVE-2026-109618 and CVE-2026-109619, each rated CVSS v4.0 9.2. A crafted web request can trigger them without a login and let an attacker run their own code on the server. PHP fixed both in versions 8.5.12, 8.4.27, 8.3.36 and 8.2.35 on October 21, 2026. Magento, WooCommerce and WordPress have no patch for it, because the fault is in PHP.</p>



<p class="wp-block-paragraph">PHP is both the language most store software is written in and the program that runs it on the server. The flaws are in how that program handles memory while it reads an incoming request, before your store&#8217;s own code starts. An attacker who gets code running at that point can do what a developer with server access could: add a card skimmer to checkout, copy passwords and API keys out of memory, or take the site offline.</p>



<p class="wp-block-paragraph"><a href="https://www.php.net/archive/2026.php" target="_blank" rel="noopener">PHP&#8217;s advisory</a> calls the first flaw remote code execution through out-of-memory corruption, and the second remote code execution through stale state left behind by an earlier request. It covers every PHP setup that serves web requests (PHP-FPM, Apache with mod_php, php-cgi, FrankenPHP and LiteSpeed) and rates mod_php highest, with a demonstrated exploit that fires before any application code runs. <a href="https://sansec.io/research/php2shell" target="_blank" rel="noopener">Sansec traced the vulnerable code</a> back to PHP 5.4.0 from 2012, and Wiz researchers said the findings <a href="https://www.helpnetsecurity.com/2026/10/21/php2shell-php-vulnerabilities-patched-cve-2026-109618-cve-2026-109619/" target="_blank" rel="noopener">rank among the most severe vulnerabilities discovered in PHP</a>, a language behind about 69.7% of websites whose server-side language is known, according to W3Techs figures cited by <a href="https://www.infosecurity-magazine.com/news/php2shell-exploitation-attempt" target="_blank" rel="noopener">Infosecurity Magazine</a>.</p>



<h2 class="wp-block-heading">PHP2Shell timeline: what happened in October 2026</h2>



<p class="wp-block-paragraph">The flaws went from private bug report to internet-wide scanning in about ten weeks. Researchers reported them to PHP in August, the first exploit attempt hit a honeypot on October 17, details leaked on October 20, and PHP released the fixes at 14:00 UTC on October 21. CISA listed both CVEs as known exploited on October 26.</p>



<figure class="wp-block-table"><table><thead><tr><th>Date (UTC)</th><th>What happened</th></tr></thead><tbody><tr><td>August 1–24, 2026</td><td>Researchers at Calif find the flaws and report them to PHP from August 11, and Wiz Research reports them on August 24</td></tr><tr><td>October 17</td><td>Amazon&#8217;s MadPot honeypot logs the first exploitation attempt, four days before disclosure</td></tr><tr><td>October 20</td><td>Details leak in a Hacker News post, watchTowr confirms code execution, and PHP announces a critical release for the next day</td></tr><tr><td>October 21, 07:43</td><td>Cloudflare reports early attacks</td></tr><tr><td>October 21, 14:00</td><td>PHP releases 8.5.12, 8.4.27, 8.3.36 and 8.2.35</td></tr><tr><td>October 21</td><td>Cloudflare&#8217;s CEO counts tens of thousands of attempts in the first 45 minutes, hundreds of thousands within two hours, then millions</td></tr><tr><td>October 21</td><td>CISA tells organizations to patch now, or take PHP systems offline until they can</td></tr><tr><td>October 22</td><td>Sansec updates its advisory: mass exploitation is less likely than first expected</td></tr><tr><td>October 26</td><td>CISA adds both CVEs to its Known Exploited Vulnerabilities catalog</td></tr></tbody></table><figcaption class="wp-element-caption">PHP2Shell timeline, August to October 26, 2026 (UTC)</figcaption></figure>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026.png" alt="PHP2Shell timeline from August to October 26, 2026, with the October 21 PHP release highlighted" class="wp-image-26402" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-timeline-october-2026-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">PHP2Shell from the first bug report to CISA&#x27;s known-exploited listing</figcaption></figure></div>



<h3 class="wp-block-heading">Three critical flaws in seven weeks for Magento stores</h3>



<p class="wp-block-paragraph">This was the third critical flaw Magento stores had to deal with in seven weeks, and each one needed a different fix from a different place:</p>



<ul class="wp-block-list">
<li>StyleSmuggler, CVE-2026-75650, CVSS 10.0: a Magento zero-day <a href="https://sansec.io/research/stylesmuggler-0day" target="_blank" rel="noopener">under attack from September 4</a>, fixed by Adobe&#8217;s hotfix APSB26-146 on September 7 (see <a href="https://scandiweb.com/blog/adobe-magento-stylesmuggler-patch/" target="_blank" rel="noopener">which versions the StyleSmuggler patch covers</a>)</li>


<li>BlockStrap, CVE-2026-103849, CVSS 10.0: a template-engine injection fixed in <a href="https://www.adobe.com/trust/security/products/commerce/apsb26-153.html" target="_blank" rel="noopener">Adobe&#8217;s APSB26-153</a> on October 13, which <a href="https://sansec.io/research/blockstrap-magento-rce" target="_blank" rel="noopener">Sansec named</a> and rates higher than Adobe&#8217;s priority 2</li>


<li>PHP2Shell, October 21: a flaw in PHP itself, closed only by a PHP update</li>

</ul>



<p class="wp-block-paragraph">A store that installed the October Magento patch and stopped there is still exposed to the PHP flaw, and a store that updated PHP still needs the October Magento patch.</p>



<h2 class="wp-block-heading">Is your store affected by PHP2Shell?</h2>



<p class="wp-block-paragraph">Your store is affected if any part of it runs PHP and serves web requests, until that PHP is updated or rebuilt with a vendor backport. That covers Magento, Adobe Commerce, WooCommerce, Shopware, WordPress and Drupal, plus the PHP systems around a store, such as a Pimcore or Akeneo PIM, a blog or a custom tool. Clean store code makes no difference.</p>



<p class="wp-block-paragraph">Sansec confirmed that Magento, Shopware and WooCommerce stores are affected &#8220;even when their own code is clean,&#8221; and Calif showed unauthenticated code execution on Magento 2.4.9, WordPress 7.1.2 and Drupal 11.4.3, among others. Who installs the fix depends on how you host:</p>



<figure class="wp-block-table"><table><thead><tr><th>Setup</th><th>Who updates PHP</th><th>What to ask or check</th></tr></thead><tbody><tr><td>Your own servers or cloud account</td><td>Your team or your agency</td><td>PHP version and build date on every web, cron and queue worker</td></tr><tr><td>Managed hosting</td><td>The host</td><td>The fixed PHP build and the date it was applied, in writing</td></tr><tr><td>Adobe Commerce on cloud infrastructure</td><td>Adobe, through its PHP image</td><td>A support case confirming the patched image reached production</td></tr><tr><td>SaaS: Shopify, BigCommerce, Adobe Commerce as a Cloud Service</td><td>The platform</td><td>Nothing for the store itself, so check what you host outside it</td></tr><tr><td>Blog, PIM, middleware and custom tools you host yourself</td><td>Whoever runs each one</td><td>A list of them, with the same questions for each</td></tr></tbody></table><figcaption class="wp-element-caption">Who updates PHP for PHP2Shell, by hosting setup</figcaption></figure>



<p class="wp-block-paragraph">On Adobe Commerce on cloud infrastructure, Adobe Support told us on October 21 that it would deploy updated PHP images as soon as the patches were available, staging before production, and that no customer action was needed. We found no public Adobe bulletin on PHP2Shell, so a support case is how you confirm it for your own environment.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup.png" alt="Diagram of who patches PHP on your own servers, managed hosting, Adobe Commerce cloud, SaaS and self-hosted extras" class="wp-image-26403" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/who-patches-php-by-hosting-setup-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Who updates PHP for PHP2Shell depends on how your store is hosted</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>&#8220;The host handles it&#8221; only counts as an answer once you have the PHP version, the build date and the date it was applied, in writing, for every server, including the PIM and the blog.</p></div>



<h3 class="wp-block-heading">Which PHP version fixes it on each Magento line</h3>



<p class="wp-block-paragraph">Each Magento line supports a fixed set of PHP branches, listed in our <a href="https://scandiweb.com/blog/magento-end-of-life/" target="_blank" rel="noopener">Magento end of life guide</a>. Matched against PHP&#8217;s fixed releases:</p>



<figure class="wp-block-table"><table><thead><tr><th>Magento line</th><th>Supported PHP</th><th>Fixed PHP to run</th></tr></thead><tbody><tr><td>2.4.9</td><td>8.5</td><td>8.5.12</td></tr><tr><td>2.4.8</td><td>8.4, 8.3</td><td>8.4.27 or 8.3.36</td></tr><tr><td>2.4.7</td><td>8.3, 8.2</td><td>8.3.36 or 8.2.35</td></tr><tr><td>2.4.6</td><td>8.2, 8.1</td><td>8.2.35, or a vendor 8.1 backport</td></tr><tr><td>2.4.5 and 2.4.4</td><td>8.1</td><td>A vendor 8.1 backport only</td></tr></tbody></table><figcaption class="wp-element-caption">Fixed PHP version for each Magento 2.4 line</figcaption></figure>



<p class="wp-block-paragraph">PHP no longer releases 8.1 or older, so stores on 8.1 depend on a Linux distribution or hosting vendor that applied PHP&#8217;s source backport, and they need an upgrade plan. Our <a href="https://scandiweb.com/blog/how-to-upgrade-magento-version-step-by-step-guide/" target="_blank" rel="noopener">step-by-step Magento upgrade guide</a> covers the path.</p>



<h3 class="wp-block-heading">How to check which PHP version your store runs</h3>



<p class="wp-block-paragraph">On a server you control, run:</p>



<pre class="wp-block-code"><code>php -v</code></pre>



<p class="wp-block-paragraph">The first line shows the version and build date. Anything built before October 21, 2026 can&#8217;t contain the fix. Distribution packages sometimes keep an older version number with the fix backported, so check the package changelog for both CVE IDs. The command line and the web server can also run different builds, so check PHP-FPM or mod_php, not only the terminal. On managed hosting, ask for the version and build date in writing.</p>



<h2 class="wp-block-heading">What PHP2Shell means for your business</h2>



<p class="wp-block-paragraph">An attacker who gets this flaw to work has the access of a developer on your server, about five weeks before Black Friday on November 27. For a store, that can mean a card skimmer in checkout, stolen customer data or a site that&#8217;s down in peak season. Exploit attempts are confirmed at internet scale, and as of October 27, 2026, no successful break-in at a specific store had been publicly confirmed.</p>



<p class="wp-block-paragraph">The sources disagree on how dangerous the attempts are. Amazon described PHP2Shell as broadly exploited in the wild, while saying it was unclear whether the attempts would have worked against real systems. Sansec found the public exploits don&#8217;t work against a default PHP installation and that an attack &#8220;needs specific knowledge of the target server and specific conditions on it.&#8221; CISA still added both CVEs to its known-exploited catalog.</p>



<p class="wp-block-paragraph">An unpatched server is exposed, which is different from breached, and a patch only stops new attempts. Sansec notes that leaked memory can contain &#8220;passwords, session tokens, API keys and TLS private keys from other requests,&#8221; so the checks in the next section are what tell you whether anyone got in between October 17 and your patch date.</p>



<p class="wp-block-paragraph">Outside parties watch the same dates. PCI DSS requirement 6.3.3 expects critical security patches within one month of release (our <a href="https://scandiweb.com/blog/pci-dss-saq-2025-updates-for-ecommerce-merchants/" target="_blank" rel="noopener">PCI DSS SAQ guide</a> covers who is responsible for what), and cyber insurers read the bulletins too. The day after PHP2Shell, the CTO of one retail client forwarded us an alert their insurer had sent about BlockStrap, saying they hadn&#8217;t seen an update on it yet. Our team had been working on it for two days.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized.png" alt="Anonymized client email about an insurer alert on CVE-2026-103849, and a client reply saying everything was in control" class="wp-image-26404" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-insurer-reply-anonymized-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">A client&#x27;s insurer flagged BlockStrap, and another client on our communication (names removed)</figcaption></figure></div>



<h2 class="wp-block-heading">What to do now if PHP2Shell is not patched yet</h2>



<p class="wp-block-paragraph">Update PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 on every server that runs it, restart every PHP process, then check for signs of compromise and rotate credentials. PHP&#8217;s release notes are blunt about the alternatives: &#8220;There are no complete mitigations, updating is the only safe choice.&#8221;</p>



<ol class="wp-block-list">
<li>Update PHP everywhere it serves requests: staging first, then production, then the PIM, the blog and any custom tools. The package changelog should list both CVE IDs.</li>


<li>Restart every PHP process, including PHP-FPM or Apache, cron and Magento&#8217;s queue consumers. A process that wasn&#8217;t restarted still runs the old PHP.</li>


<li>On PHP 8.1 or older, get a backported build from your Linux distribution or LTS vendor, or build from the PHP team&#8217;s source backports for 7.4, 8.0 and 8.1, then plan the move to a supported branch.</li>


<li>Check for compromise before cleaning anything, and keep the logs. Look for unknown admin users, script tags in <code>core_config_data</code>, <code>cms_block</code> and <code>cms_page</code>, unexpected PHP files in <code>pub/media</code>, recently changed PHP files, and PHP processes that started shells, in logs from October 17 onward. A <a href="https://scandiweb.com/blog/magento-code-audit-by-certified-magento-developers/" target="_blank" rel="noopener">Magento code audit</a> is the thorough version.</li>


<li>Rotate payment gateway credentials, integration and API tokens, and database and admin passwords.</li>


<li>Test checkout end to end with every live payment method.</li>

</ol>



<h3 class="wp-block-heading">If you can&#8217;t patch PHP today</h3>



<p class="wp-block-paragraph"><a href="https://www.cisa.gov/news-events/alerts/2026/10/21/critical-vulnerabilities-php-require-immediate-patching" target="_blank" rel="noopener">CISA&#8217;s alert</a> says to take PHP systems offline until they&#8217;re patched, while Sansec&#8217;s view is that stores don&#8217;t need to go offline. If you keep the store up, PHP lists partial measures that &#8220;reduce exposure to specific attack paths but do not make an installation safe.&#8221; Set them in php.ini, the FPM pool or the server config, because <code>ini_set()</code> and <code>.user.ini</code> apply too late:</p>



<pre class="wp-block-code"><code>memory_limit = -1
post_max_size = 8M
session.upload_progress.enabled = 0
fatal_error_backtraces = 0</code></pre>



<p class="wp-block-paragraph">Set <code>memory_limit</code> where applications can&#8217;t override it, such as <code>php_admin_value</code> in the FPM pool, and add a container or cgroup memory cap, because one request can now take all of the server&#8217;s memory. If the site needs uploads, use 32M for <code>post_max_size</code> and keep <code>upload_max_filesize</code> below it. <code>fatal_error_backtraces</code> exists on PHP 8.5 only. Restart every worker afterward.</p>



<p class="wp-block-paragraph">Sansec&#8217;s other stopgap is blocking <code>multipart/form-data</code> requests at the web server, which breaks uploads, so test checkout afterward. Magento maintenance mode doesn&#8217;t help. A web application firewall gives interim cover: Cloudflare pushed rules for the known exploit vectors to every plan, including free ones. Remove each stopgap once PHP is updated, and put the memory limit back.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>The partial settings count only in php.ini, the FPM pool or the server config, and only after a restart. Set through <code>ini_set()</code> or <code>.user.ini</code>, they arrive after PHP has already parsed the request.</p></div>



<h2 class="wp-block-heading">How we handled PHP2Shell across our clients&#8217; stores</h2>



<p class="wp-block-paragraph">By 09:00 UTC on October 21, five hours before PHP published the fix, more than 40 of our client projects each had a critical-priority ticket. On one client&#8217;s own AWS setup, PHP 8.5.12 was running in production at 16:38 UTC, under three hours after the release. Every store went through the same steps in between: alert, ticket, temporary protection, patch, test and monitoring.</p>



<p class="wp-block-paragraph">PHP&#8217;s advance notice on October 20 gave us a day to prepare. At 08:23 UTC on October 21, our Executive Board emailed clients that the fix was due at 14:00 UTC and that a successful attack could take a site down, wipe data or leak customer data. The email also said, in these words: &#8220;This alert does not mean your store has been compromised. No attacks on our clients have been confirmed so far.&#8221;</p>



<p class="wp-block-paragraph">Each store then got a ticket from one template (what is happening, the hosting, the current PHP version, whether it gets the official fix, the other PHP systems in scope, how to verify) and an eight-hour plan:</p>



<ul class="wp-block-list">
<li>Preparation, 1.5 hours: review every PHP system in scope, back up code and database, write the rollback plan</li>


<li>Applying the fix, 2 hours: staging, then production, then the other PHP systems</li>


<li>Testing, 3.5 hours: confirm the flaw can no longer be exploited, run checkout with every live payment method, check that ERP, PIM, shipping, search and marketing integrations still sync, and smoke test the admin, order emails and scheduled jobs</li>


<li>Aftercare, 1 hour: 24 hours of production monitoring and a summary for the client</li>

</ul>



<p class="wp-block-paragraph">Before the fix was out, we applied temporary protections with no downtime: upload-progress tracking off, stricter session settings, and file uploads blocked before they reached PHP. One client&#8217;s PIM ran PHP 8.0, which gets no official fix, so we rebuilt PHP with the PHP team&#8217;s backport where no fixed package existed, kept a rollback copy on each server, and sent an estimate for a supported version. For Adobe Commerce cloud clients, we opened Adobe Support cases that morning and kept following up. For stores on other hosts, we asked each host for the fixed build and the date it went on. One client&#8217;s site went offline behind a redirect and came back once patched. September&#8217;s StyleSmuggler response has <a href="https://scandiweb.com/blog/rapid-response-to-stylesmuggler/" target="_blank" rel="noopener">its own write-up</a>.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized.png" alt="Anonymized client messages about taking the site offline, bringing it back live and confirming the patch worked" class="wp-image-26405" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-patch-replies-anonymized-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Client replies after the PHP2Shell patching (names removed)</figcaption></figure></div>



<h3 class="wp-block-heading">What clients told us</h3>



<p class="wp-block-paragraph">Most replies were about being told early. A beauty brand thanked us for being &#8220;so quick to react with the PHP vulnerabilities,&#8221; and a retailer on Adobe&#8217;s cloud wrote: &#8220;I just want to sincerely thank you for all your efforts in chasing this update.&#8221; Our Executive Board&#8217;s note to the team the next day drew the lesson: react fast, and keep clients informed before they have to start asking.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized.png" alt="Anonymized client emails thanking the team for a quick reaction to the PHP vulnerabilities and the timely update" class="wp-image-26406" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-email-replies-anonymized-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Client email replies to our PHP2Shell alert (names removed)</figcaption></figure></div>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized.png" alt="Anonymized client chat messages thanking the team for chasing Adobe and for the early heads-up" class="wp-image-26407" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/php2shell-client-chat-replies-anonymized-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Client chat messages during the PHP2Shell response (names removed)</figcaption></figure></div>



<h2 class="wp-block-heading">How to prepare for the next critical PHP or Magento vulnerability</h2>



<p class="wp-block-paragraph">Preparing for the next critical vulnerability is work you do before the bulletin arrives: supported PHP on every system, a written answer to who patches what and how fast, a list of every PHP system you run, and a patch routine your team has practiced. Three critical flaws in seven weeks is the pace to plan for.</p>



<p class="wp-block-paragraph">Start with <a href="https://www.php.net/supported-versions.php" target="_blank" rel="noopener">PHP&#8217;s support calendar</a>:</p>



<figure class="wp-block-table"><table><thead><tr><th>PHP</th><th>Active support until</th><th>Security support until</th></tr></thead><tbody><tr><td>8.2</td><td>December 31, 2024</td><td><strong>December 31, 2026</strong></td></tr><tr><td>8.3</td><td>December 31, 2025</td><td>December 31, 2027</td></tr><tr><td>8.4</td><td>December 31, 2026</td><td>December 31, 2028</td></tr><tr><td>8.5</td><td>December 31, 2027</td><td>December 31, 2029</td></tr></tbody></table><figcaption class="wp-element-caption">PHP support dates (php.net, checked October 27, 2026)</figcaption></figure>



<p class="wp-block-paragraph">PHP 8.2 stops getting security fixes on December 31, 2026, and it is the newest PHP that Magento 2.4.6 supports. Then work through the rest:</p>



<ol class="wp-block-list">
<li>Keep every system on a supported PHP branch, including the ones nobody logs into often.</li>


<li>Write down who patches what: for each system, the owner (host, Adobe, agency or in-house team), the response time for a critical bulletin, and who covers nights and weekends, which a <a href="https://scandiweb.com/magento-support" target="_blank" rel="noopener">Magento support retainer</a> should spell out.</li>


<li>Keep a list of every PHP system. CISA warns that PHP &#8220;is often a component of other software and prevalence may not be directly observable,&#8221; and PIMs, blogs and internal tools are the ones that get forgotten.</li>


<li>Practice a same-day patch routine: backup, rollback plan, staging first, a scripted checkout test with every payment method, and a check that the exploit no longer works.</li>


<li>Put a web application firewall or CDN in front of the store, with skimmer and file-change monitoring behind it, so you would know if someone got in before the patch.</li>


<li>Write the messages in advance, for stakeholders and for customers. Our 08:23 UTC alert went out before the fix existed because the template already did.</li>


<li>Agree that security fixes override the Black Friday code freeze. An unpatched critical flaw is a bigger risk to peak-season revenue than the patch, and our <a href="https://scandiweb.com/blog/black-friday-code-freeze/" target="_blank" rel="noopener">code freeze guide</a> covers how to plan the exception.</li>


<li>Decide how many servers you want to patch yourself. <a href="https://scandiweb.com/services/magento-hosting" target="_blank" rel="noopener">Managed Magento hosting</a> or <a href="https://scandiweb.com/blog/adobe-commerce-as-a-cloud-service/" target="_blank" rel="noopener">Adobe Commerce as a Cloud Service</a> moves PHP updates to the provider, and you give up control over timing: on October 21, our client on its own AWS was patched within three hours, while cloud clients waited for Adobe&#8217;s rollout.</li>

</ol>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>A Magento 2.4.6 or 2.4.7 store on PHP 8.2 that patched this week has until December 31, 2026, before 8.2 stops getting fixes. Plan that PHP move now, so the next critical flaw doesn&#8217;t land on a branch with no fix.</p></div>



<h2 class="wp-block-heading">What CTOs, heads of eCommerce, and heads of marketing should each own</h2>



<p class="wp-block-paragraph">Security incidents tend to go wrong at the handoffs, when the host assumes the agency has it and the agency assumes the host patched. Give each role a short list before the next bulletin, so everyone knows what they own.</p>



<h3 class="wp-block-heading">For CTOs and technical leads</h3>



<ul class="wp-block-list">
<li>A runtime inventory with every PHP version and build on every server, kept current</li>


<li>An ownership matrix for patching, with a response time for critical bulletins</li>


<li>A test that proves the exploit no longer works, run after every patch</li>


<li>An end-of-life roadmap with a budget, since PHP 8.1 is already unsupported and 8.2 follows on December 31</li>


<li>Logs kept long enough to look back, since the first attempts came four days before disclosure</li>

</ul>



<h3 class="wp-block-heading">For heads of eCommerce</h3>



<ul class="wp-block-list">
<li>A checkout test list with every live payment method, plus the integrations to check after a patch</li>


<li>A maintenance page that returns a 503 status, so search engines treat a short outage as temporary</li>


<li>A code-freeze exception for security fixes, agreed before Black Friday</li>


<li>Host and vendor contracts that name a response time for critical bulletins</li>

</ul>



<h3 class="wp-block-heading">For heads of marketing</h3>



<ul class="wp-block-list">
<li>A tag inventory, because third-party scripts and tags are where card skimmers hide, and marketing owns most of them</li>


<li>A pre-approved holding statement, used only when there is something to tell customers</li>


<li>Campaigns you can pause within minutes if the store goes into maintenance</li>

</ul>



<h3 class="wp-block-heading">For store owners and CEOs</h3>



<p class="wp-block-paragraph">Five questions to ask your team or agency this week:</p>



<ol class="wp-block-list">
<li>Which PHP version and build date does each of our servers run today?</li>


<li>Who installed the fix on each one, and when? Do we have that in writing?</li>


<li>Which other PHP systems do we run, and who checked them?</li>


<li>What did we check for compromise, and which credentials did we rotate?</li>


<li>Who gets the next security bulletin first, and how fast do they act on it?</li>

</ol>



<p class="wp-block-paragraph">Take the answers to your insurer and your board before either asks. Then budget upgrades on a calendar instead of as emergencies: our <a href="https://scandiweb.com/blog/website-maintenance-cost/" target="_blank" rel="noopener">website maintenance cost guide</a> shows what planned support work includes, and a <a href="https://scandiweb.com/services/magento-tech-audit" target="_blank" rel="noopener">Magento technical audit</a> gives you the baseline.</p>



<h2 class="wp-block-heading">PHP2Shell FAQ</h2>



<h3 class="wp-block-heading">Is PHP2Shell being exploited?</h3>



<p class="wp-block-paragraph">Exploit attempts are confirmed. Amazon logged the first on October 17, Cloudflare counted millions after disclosure, and CISA added both CVEs to its Known Exploited Vulnerabilities catalog on October 26. Sansec expects mass exploitation to be less likely than it first thought, because the public exploits need specific conditions on the target server. As of October 27, 2026, no break-in at a specific store had been publicly confirmed.</p>



<h3 class="wp-block-heading">Do I need a Magento patch for PHP2Shell?</h3>



<p class="wp-block-paragraph">No. The flaw is in PHP, so the fix is updating PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 and restarting every PHP process. You still need Adobe&#8217;s October security update, APSB26-153, which fixes BlockStrap and other Magento flaws, but it does nothing for this one.</p>



<h3 class="wp-block-heading">Does Magento maintenance mode protect against PHP2Shell?</h3>



<p class="wp-block-paragraph">No. Magento handles maintenance mode, and PHP reads the request before Magento runs, which matches the PHP advisory&#8217;s warning that the attack can trigger before any application code. Sansec says the same of its own store-level Shield. Taking the server offline or blocking requests at the web server works, while maintenance mode leaves the server just as exposed.</p>



<h3 class="wp-block-heading">Is Shopify affected by PHP2Shell?</h3>



<p class="wp-block-paragraph">Shopify, BigCommerce and Adobe Commerce as a Cloud Service run and patch their own servers, so the store itself needs nothing from you. Anything you host separately still does: a WordPress blog, a PIM such as Pimcore or Akeneo, custom tools or middleware. Find out which PHP version each one runs, and get the same written confirmation you would ask of a host.</p>



<h3 class="wp-block-heading">What if my server runs PHP 8.1 or older?</h3>



<p class="wp-block-paragraph">PHP no longer releases updates for 8.1 and older, so there is no official fixed version. Linux distributions and LTS vendors received the patches in advance, and the PHP security team published source backports for 7.4, 8.0 and 8.1. Get a backported build, as we did for one client&#8217;s PIM on 8.0, then plan the upgrade. CISA&#8217;s advice for systems that can&#8217;t be patched is to take them offline.</p>



<h3 class="wp-block-heading">Does a web application firewall stop PHP2Shell?</h3>



<p class="wp-block-paragraph">A WAF buys time. Cloudflare deployed rules for the known exploit vectors to all its customers, including free plans, and CISA says a WAF may offer interim protection but is not a substitute for patching. It blocks the attack patterns it recognizes, and the flaw stays open behind it until PHP is updated.</p>



<h2 class="wp-block-heading">Check your PHP version before the next bulletin</h2>



<p class="wp-block-paragraph">PHP2Shell was fixed on October 21, 2026, and the fix only counts on servers where someone installed it, restarted every PHP process and confirmed the build. This week, find out which PHP version and build date each of your systems runs, the store, the PIM, the blog and anything else on PHP, and get the answer in writing from whoever owns each server. Anything below 8.5.12, 8.4.27, 8.3.36 or 8.2.35, or on 8.1 without a backport, goes through the steps above in order. Then use the weeks before Black Friday to fix the handoffs and put PHP 8.2&#8217;s December 31 deadline on the plan. StyleSmuggler, BlockStrap and PHP2Shell arrived within seven weeks of each other, so plan for the next one at the same pace.</p>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Is PHP2Shell being exploited?", "acceptedAnswer": {"@type": "Answer", "text": "Exploit attempts are confirmed. Amazon logged the first on October 17, Cloudflare counted millions after disclosure, and CISA added both CVEs to its Known Exploited Vulnerabilities catalog on October 26. Sansec expects mass exploitation to be less likely than it first thought, because the public exploits need specific conditions on the target server. As of October 27, 2026, no break-in at a specific store had been publicly confirmed."}}, {"@type": "Question", "name": "Do I need a Magento patch for PHP2Shell?", "acceptedAnswer": {"@type": "Answer", "text": "No. The flaw is in PHP, so the fix is updating PHP to 8.5.12, 8.4.27, 8.3.36 or 8.2.35 and restarting every PHP process. You still need Adobe's October security update, APSB26-153, which fixes BlockStrap and other Magento flaws, but it does nothing for this one."}}, {"@type": "Question", "name": "Does Magento maintenance mode protect against PHP2Shell?", "acceptedAnswer": {"@type": "Answer", "text": "No. Magento handles maintenance mode, and PHP reads the request before Magento runs, which matches the PHP advisory's warning that the attack can trigger before any application code. Sansec says the same of its own store-level Shield. Taking the server offline or blocking requests at the web server works, while maintenance mode leaves the server just as exposed."}}, {"@type": "Question", "name": "Is Shopify affected by PHP2Shell?", "acceptedAnswer": {"@type": "Answer", "text": "Shopify, BigCommerce and Adobe Commerce as a Cloud Service run and patch their own servers, so the store itself needs nothing from you. Anything you host separately still does: a WordPress blog, a PIM such as Pimcore or Akeneo, custom tools or middleware. Find out which PHP version each one runs, and get the same written confirmation you would ask of a host."}}, {"@type": "Question", "name": "What if my server runs PHP 8.1 or older?", "acceptedAnswer": {"@type": "Answer", "text": "PHP no longer releases updates for 8.1 and older, so there is no official fixed version. Linux distributions and LTS vendors received the patches in advance, and the PHP security team published source backports for 7.4, 8.0 and 8.1. Get a backported build, as we did for one client's PIM on 8.0, then plan the upgrade. CISA's advice for systems that can't be patched is to take them offline."}}, {"@type": "Question", "name": "Does a web application firewall stop PHP2Shell?", "acceptedAnswer": {"@type": "Answer", "text": "A WAF buys time. Cloudflare deployed rules for the known exploit vectors to all its customers, including free plans, and CISA says a WAF may offer interim protection but is not a substitute for patching. It blocks the attack patterns it recognizes, and the flaw stays open behind it until PHP is updated."}}]}</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em>Send us a list of your systems and who hosts each one, and we&#x27;ll </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>check the PHP and patch status of all of them</em></a><em>, then tell you what we found and what to fix first.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/php2shell/">PHP2Shell: What the Critical PHP Vulnerability Means for Your Online Store</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Top Magento Agencies in Canada (2026)</title>
		<link>https://scandiweb.com/blog/top-magento-agencies-canada/</link>
		
		<dc:creator><![CDATA[Aigars Pavlovics]]></dc:creator>
		<pubDate>Tue, 27 Oct 2026 07:58:22 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[adobe commerce]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[Magento Development]]></category>
		<category><![CDATA[Magento Enterprise]]></category>
		<category><![CDATA[Magento Services]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26358</guid>

					<description><![CDATA[<p>Looking for a Magento agency in Canada? Seven agencies with real Canadian offices, Adobe and Hyvä tiers checked, and questions to ask.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/top-magento-agencies-canada/">Top Magento Agencies in Canada (2026)</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-Ca4nW wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/services/magento-agency-canada" target=_blank >
        Magento Agency in Canada
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/adobe-commerce-magento" target=_blank >
        Adobe Commerce and Magento Development
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/hyva-themes" target=_blank >
        Hyvä Theme Development
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">Picking a Magento agency in Canada usually starts with two questions. Does it have an office in your time zone that you can visit, and is Magento its main platform or one more logo on its services page?</p>



<p class="wp-block-paragraph">We started from about 40 agencies that sell Magento work to Canadian merchants and kept seven. For each one we found the office on its own contact page, looked up its tier in Adobe&#8217;s and Hyvä&#8217;s directories, and read its Canadian case studies. Where a claim could not be checked, the entry says so.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Hyvä&#8217;s directory lists two agencies under Canada: Kinex Media (Silver) and TWO DEV (Bronze). Any other Hyvä badge on a Canadian agency&#8217;s site is either listed under another country or not listed at all.</p></div>



<h2 class="wp-block-heading">Top Magento agencies in Canada at a glance</h2>



<p class="wp-block-paragraph">The top Magento agencies in Canada are scandiweb, Valtech, MageMontreal, Kinex Media, TWO DEV, Northern, and Rootways. Each one has an office in Quebec or Ontario that you can find on its own contact page. They differ in partner tier, in how much of their work is Magento, and in whether they publish Canadian case studies with numbers.</p>



<figure class="wp-block-table"><table><thead><tr><th>#</th><th>Agency</th><th>Canadian office</th><th>Head office</th><th>Adobe tier</th><th>Hyvä tier (hyva.io)</th><th>Best for</th></tr></thead><tbody><tr><td>1</td><td>scandiweb</td><td>Montreal</td><td>Riga, Latvia</td><td>Gold (as stated), 894+ certifications</td><td>Platinum (not under Canada)</td><td>Enterprise and mid-market builds, Hyvä, upgrades, SEO</td></tr><tr><td>2</td><td>Valtech</td><td>Montreal, Toronto</td><td>Global consultancy</td><td>Platinum</td><td>Not listed</td><td>Headless Adobe Commerce for enterprise retail</td></tr><tr><td>3</td><td>MageMontreal</td><td>Sainte-Agathe-des-Monts, QC</td><td>Sainte-Agathe-des-Monts, QC</td><td>Silver</td><td>Not listed</td><td>Quebec B2B, SAP integration, rescues</td></tr><tr><td>4</td><td>Kinex Media</td><td>Mississauga, Toronto</td><td>Mississauga, ON</td><td>Silver</td><td>Silver (Canada)</td><td>Ontario B2B, Hyvä, ERP sync</td></tr><tr><td>5</td><td>TWO DEV</td><td>Montreal</td><td>Montreal, QC</td><td>Not listed</td><td>Bronze (Canada)</td><td>Quebec retail on Adobe Commerce with Akeneo</td></tr><tr><td>6</td><td>Northern</td><td>London ON, Toronto, Edmonton</td><td>London, ON</td><td>Gold</td><td>Not listed</td><td>Adobe Commerce with content and data work</td></tr><tr><td>7</td><td>Rootways</td><td>Mississauga</td><td>Mississauga, ON</td><td>Bronze (as stated by the agency)</td><td>Not listed</td><td>Smaller stores, Canadian shipping extensions</td></tr></tbody></table><figcaption class="wp-element-caption">Top Magento agencies in Canada compared by office, Adobe tier, and Hyvä tier</figcaption></figure>



<p class="wp-block-paragraph">Adobe tiers without a note come from Adobe&#8217;s directory (searched October 26, 2026). &#8220;As stated&#8221; means the tier appears only on the agency&#8217;s site, and &#8220;Not listed&#8221; means the search returned nothing. The Hyvä column shows the country each listing is filed under.</p>



<h2 class="wp-block-heading">How we chose these Magento agencies</h2>



<p class="wp-block-paragraph">We kept an agency when it passed four checks, in this order. An Adobe Commerce partner in Canada with a Platinum tier still fell off if Magento is a sideline or its only Canadian presence is a phone number.</p>



<ul class="wp-block-list">
<li>Magento comes first. Magento or Adobe Commerce leads the agency&#8217;s services, and its case studies show Magento builds.</li>


<li>A Canadian office on the agency&#8217;s own contact page. A Canadian phone number on a landing page did not count.</li>


<li>Named Canadian Magento work or a tier you can check. Canadian Magento clients, a tier in <a href="https://partners.adobe.com/s/directory/solution" target="_blank" rel="noopener">Adobe&#8217;s Solution Partner Directory</a>, a tier on <a href="https://www.hyva.io/find-an-agency" target="_blank" rel="noopener">Hyvä&#8217;s agency finder</a>, or a mix.</li>


<li>A support plan. Adobe Commerce 2.4.6 left support on August 11, 2026, and every later version has a fixed end date, so someone has to own upgrades after launch.</li>

</ul>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks.png" alt="Funnel showing four checks that cut about 40 Canadian Magento agencies down to seven" class="wp-image-26353" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-shortlist-checks-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">How about 40 Canadian Magento agencies became a shortlist of seven</figcaption></figure></div>



<p class="wp-block-paragraph">Most of the 40 fell at the first two checks: Shopify-first studios that keep a Magento page for older clients, general web agencies that list Magento next to WordPress, and offshore firms with a Canadian phone number and no Canadian address. Two well-known names no longer exist as brands: Valtech bought Absolunet in January 2022, and Bounteous absorbed Demac Media in 2018. For agencies outside the country, see our list of <a href="https://scandiweb.com/blog/top-magento-development-companies/" target="_blank" rel="noopener">global Magento development companies</a>. Our lists for <a href="https://scandiweb.com/blog/top-magento-agencies-uk/">the UK</a> and <a href="https://scandiweb.com/blog/top-magento-agencies-australia/">Australia</a> apply the same checks to other markets.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Open the contact page before the case studies. If the only Canadian detail there is a phone number, ask which office your account will be run from.</p></div>



<h2 class="wp-block-heading">The 7 best Magento agencies in Canada, profiled</h2>



<p class="wp-block-paragraph">The seven profiles below are in the order we would shortlist them for a mid-market or enterprise Magento store. Each ends with the type of merchant the agency fits best.</p>



<h3 class="wp-block-heading">1. scandiweb</h3>



<p class="wp-block-paragraph">scandiweb is the world&#8217;s most certified Adobe Commerce agency, with 894+ Adobe certifications, Adobe Gold Solution Partner status, and Hyvä Platinum Partner status. It has been an Adobe partner since 2009 and has delivered 2,100+ projects since 2003 for 700+ clients, who rate it at 95 NPS. scandiweb is certified to ISO 9001, ISO 27001, and ISO 27017 and is PCI DSS compliant. Its Hyvä listing is filed under another country on hyva.io, so you will not find it in the Canada section.</p>



<p class="wp-block-paragraph">In Canada, scandiweb works from a Montreal office. Michael Bliah, VP North America, is based there and is the named contact for Canadian clients, and the Canada team works on Eastern Time. Developers come from the wider certified team, so backend, frontend, and integration work can run at the same time. Our <a href="https://scandiweb.com/services/magento-agency-canada" target="_blank" rel="noopener">Canada page</a> explains how the team works with Canadian merchants.</p>



<p class="wp-block-paragraph">Canadian clients named publicly include JYSK Canada and Moose Knuckles, the Canadian outerwear brand. The published Canadian number is PUMA&#8217;s: scandiweb&#8217;s SEO program grew <a href="https://scandiweb.com/blog/enterprise-seo-case-study-how-puma-grew-organic-revenue-in-4-markets/" target="_blank" rel="noopener">PUMA&#8217;s organic revenue in Canada</a> by 73.98% year over year. JYSK&#8217;s Hyvä rebuild is covered in our <a href="https://scandiweb.com/blog/hyva-case-studies-impressive-cwv-pagespeed-scores/" target="_blank" rel="noopener">Hyvä case studies</a>.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1200" height="162" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-3.png" alt="Adobe, Hyvä, Google, and ISO partner and certification badges held by scandiweb" class="wp-image-26354" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-3.png 1200w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-3-300x41.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-3-1024x138.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-3-150x20.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-3-768x104.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">scandiweb&#x27;s Adobe, Hyvä, and ISO credentials in one row</figcaption></figure></div>



<p class="wp-block-paragraph">Best for: mid-market and enterprise brands that want the deepest certified bench with a Montreal contact, for <a href="https://scandiweb.com/services/hyva-themes" target="_blank" rel="noopener">Hyvä builds</a>, upgrades, and SEO run alongside development.</p>



<h3 class="wp-block-heading">2. Valtech</h3>



<p class="wp-block-paragraph">Valtech is a global multi-platform consultancy with Canadian offices in Montreal, at 7236 Waverly Street, and Toronto, at 100 University Avenue. In January 2022 it bought Absolunet, the Montreal commerce consultancy with about 300 staff, so Absolunet no longer exists as a brand. Adobe&#8217;s directory lists Valtech as a Platinum Solution Partner. It is not on hyva.io, and it also works on Salesforce, commercetools, SAP, and Shopify.</p>



<p class="wp-block-paragraph">Its strongest Canadian Magento case is Structube, the Montreal furniture retailer with 70+ stores, built as headless Adobe Commerce. Valtech reports a 38% increase in pages viewed per session, a 35% increase in mobile conversion rate, and a 13% increase in desktop conversion rate. For Fountain Tire it built Adobe Commerce with Edge Delivery Services, with the B2B catalog first and B2C after it. We did not find a dedicated support offer on its pages, so ask how support is staffed after launch.</p>



<p class="wp-block-paragraph">Best for: enterprise Canadian retailers that want headless Adobe Commerce and the wider Adobe stack from one global consultancy.</p>



<h3 class="wp-block-heading">3. MageMontreal</h3>



<p class="wp-block-paragraph">Despite the name, MageMontreal works from Sainte-Agathe-des-Monts, Quebec, about 100 km north of Montreal. It says it has 19+ years of experience. Adobe&#8217;s directory lists it as a Silver Solution Partner working exclusively on Magento, though its own site now also markets Shopify, BigCommerce, and WooCommerce. It is not on hyva.io.</p>



<p class="wp-block-paragraph">Its Quebec Magento cases come with numbers. For Biron, the Quebec sleep-health and medical equipment company, a Magento 2 rebuild is credited with revenue up 205% from 2024 to 2025. Momo Sports moved to Adobe Commerce Cloud in a Magento 2 rebuild and reports over 300% more sessions. FLB Solution, a Quebec food distributor, had an inherited Magento store rescued with PIM and ERP integration and reports a 35% higher average order value. MageMontreal also sells a dedicated maintenance and improvement service.</p>



<p class="wp-block-paragraph">Best for: Quebec mid-market and B2B merchants that need Magento with SAP integration, a rescue of an inherited store, or an improvement retainer.</p>



<h3 class="wp-block-heading">4. Kinex Media</h3>



<p class="wp-block-paragraph">Kinex Media has its head office in Mississauga at 25 Watline Avenue, a Toronto office at 250 University Avenue, and has been in business since 2008. Adobe&#8217;s directory lists it as a Silver Solution Partner, and hyva.io lists it as Hyvä Silver, the highest Hyvä tier under Canada. It is a full-service agency, and many of its case studies are WordPress builds, but Magento 2, Adobe Commerce, migration, support, and Hyvä each have their own service page.</p>



<p class="wp-block-paragraph">Its best Magento case is Ontario Medical Supply, a client since 2013, for which it built a B2B ordering portal on Adobe Commerce 2.4.7 B2B integrated with Pronto ERP. Kinex reports that 100% of online orders transfer to Pronto automatically, that orders reach the ERP about 10 to 20 seconds after checkout, and that the mobile usability score rose from 54 to 93.</p>



<p class="wp-block-paragraph">Best for: Ontario B2B and B2C brands that want a Hyvä frontend or Adobe Commerce B2B with ERP sync, plus design and marketing from one team.</p>



<h3 class="wp-block-heading">5. TWO DEV</h3>



<p class="wp-block-paragraph">TWO DEV works from 4000 Saint-Ambroise in Montreal and calls itself an &#8220;Alternative eCommerce Agency&#8221; built on Adobe Commerce and Akeneo PIM. Every case study on its site is Magento or Adobe Commerce. We found no entry for it in Adobe&#8217;s directory, so its Adobe tier is not listed. On hyva.io it is Hyvä Bronze under Canada.</p>



<p class="wp-block-paragraph">Its Quebec projects are mostly migrations. For Avril Supermarché Santé, the Quebec health-food chain, it moved the store from Magento 1 to Adobe Commerce with a PWA, SAP, and click and collect, and says the full migration took nine months. For SHAN, the Canadian haute-couture brand, it migrated Magento 1 to 2 with Cegid, Mirakl, and a Canada Post integration. For Bicycles Quilicot, the Montreal bike store founded in 1915, it took over maintenance first and then rebuilt the store on Magento 2 with Lightspeed and Akeneo. None publishes metrics, so ask for numbers. Its site promises the team is available 24/7, all year.</p>



<p class="wp-block-paragraph">Best for: Quebec retailers on Adobe Commerce with Akeneo PIM who want a small senior team and round-the-clock support.</p>



<h3 class="wp-block-heading">6. Northern</h3>



<p class="wp-block-paragraph">Northern, formerly Northern Commerce, has its head office in London, Ontario, with offices in Toronto and Edmonton. Adobe&#8217;s directory lists it as a Gold Solution Partner. It is not on hyva.io. The agency now positions itself around content, data, and operations, so Magento is one practice among several.</p>



<p class="wp-block-paragraph">Its published Magento 2 case is Andrew Peller, the Canadian winery group, for which Northern reports a 132% increase in mobile revenue and a 28% increase in conversion rate. We could not confirm a support offer on its site, so ask what the support model looks like.</p>



<p class="wp-block-paragraph">Best for: Canadian brands that want Adobe Commerce alongside content and data work from one Ontario team.</p>



<h3 class="wp-block-heading">7. Rootways</h3>



<p class="wp-block-paragraph">Rootways works from 2970 Drew Road in Mississauga and has done Magento-led development and support since 2010. It describes itself as an Adobe Bronze Solution Partner, a tier we could not find in Adobe&#8217;s directory, so treat it as stated by the agency. It is not on hyva.io.</p>



<p class="wp-block-paragraph">It sells its own Magento extensions for Canada Post, Purolator, and Day &amp; Ross shipping. Its portfolio includes Canadian Magento stores such as Dimar Canada, a B2B store on Magento 2, Firearms Outlet Canada, and The Pacific Smoke, with no published metrics.</p>



<p class="wp-block-paragraph">Best for: smaller Canadian Magento stores that need Canadian shipping extensions and affordable support.</p>



<p class="wp-block-paragraph">Two more names deserve a line. Novatize in Quebec City, an Adobe Silver partner, built a Magento 2 B2B platform for Groupe LD but now leads with Shopify Plus. Bounteous, an Adobe Platinum partner, absorbed Demac Media in 2018, but we found no current Canadian Adobe Commerce case on its site.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Ask every agency who your Canadian contact will be and which hours the delivery team overlaps with Eastern Time.</p></div>



<h2 class="wp-block-heading">Magento agencies in Montreal, Toronto, and the rest of Canada</h2>



<p class="wp-block-paragraph">Six of the seven agencies have an office in Montreal or the Greater Toronto Area. Montreal has scandiweb, Valtech, and TWO DEV, with MageMontreal about 100 km north. The GTA has Valtech, Kinex Media, Rootways, and Northern&#8217;s Toronto office. The rest of Canada is served remotely from those two regions, plus Northern&#8217;s offices in London, Ontario and Edmonton.</p>



<h3 class="wp-block-heading">Montreal and Quebec</h3>



<p class="wp-block-paragraph">Four of the seven are in or near Montreal. scandiweb&#8217;s Montreal office is the base for its VP North America, Valtech is on Waverly Street, and TWO DEV is on Saint-Ambroise. A workshop with MageMontreal means a drive to Sainte-Agathe-des-Monts. If you need a Magento agency in Montreal with Quebec case studies, Valtech, TWO DEV, and MageMontreal all publish them.</p>



<h3 class="wp-block-heading">Toronto and the GTA</h3>



<p class="wp-block-paragraph">For Magento developers in Toronto or Magento website development in Mississauga, there are four agencies with offices: Valtech and Kinex Media on University Avenue, Kinex&#8217;s head office and Rootways in Mississauga, and Northern&#8217;s Toronto office. scandiweb has no Toronto office and serves the GTA from Montreal on the same Eastern Time, as our <a href="https://scandiweb.com/services/magento-agency-canada/toronto" target="_blank" rel="noopener">Magento agency in Toronto</a> page explains.</p>



<h3 class="wp-block-heading">Elsewhere in Canada</h3>



<p class="wp-block-paragraph">Northern is the only agency on this list with offices outside Quebec and the GTA, in London, Ontario and Edmonton. None of the seven has a Vancouver or Calgary office, so a Magento developer in Calgary or Vancouver on this list means working remotely with an Ontario or Quebec team.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map.png" alt="Diagram of Canadian cities from west to east with the Magento agencies that have offices in each" class="wp-image-26355" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-canada-office-map-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Where the seven agencies on this list have Canadian offices</figcaption></figure></div>



<h2 class="wp-block-heading">What a Magento agency in Canada should handle</h2>



<p class="wp-block-paragraph">A Canadian Magento agency should handle six things a US or European build does not, and raise them before you do: French for Quebec, sales tax by province, Law 25 consent, AODA accessibility, Canadian payment gateways, and Canadian carriers. Statistics Canada puts retail eCommerce sales at $5.6 billion in August 2026, 7.6% of total retail trade, seasonally adjusted, according to its <a href="https://www150.statcan.gc.ca/n1/daily-quotidien/261023/dq261023a-eng.htm" target="_blank" rel="noopener">Retail trade, August 2026</a> release.</p>



<ul class="wp-block-list">
<li>French in Quebec. Under the Charter of the French Language as amended by Bill 96, commercial websites must be available at least in French, with no other language more prominent, since June 1, 2022. Online terms must be provided in French first since June 1, 2023, and new product-labeling rules for trademarks started June 1, 2025, with a sell-through period for older stock to June 1, 2027, according to the <a href="https://www.oqlf.gouv.qc.ca/francisation/entreprises/Aide_memoire_FaireDesAffaires.pdf" target="_blank" rel="noopener">OQLF</a>. In Magento that means a French store view, French checkout emails, and French terms rather than a translated banner.</li>


<li>Sales tax by province. GST is 5% in Alberta, BC, Manitoba, Quebec, Saskatchewan, and the territories. HST is 13% in Ontario, 15% in New Brunswick, Newfoundland and Labrador, and PEI, and 14% in Nova Scotia since April 1, 2025. On top of GST, BC charges 7% PST, Saskatchewan 6% PST, Manitoba 7% RST, and Quebec 9.975% QST, per the <a href="https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/gst-hst-businesses/charge-collect-which-rate/calculator.html" target="_blank" rel="noopener">Canada Revenue Agency</a>. Ask to see a test order into each province.</li>


<li>Privacy. Quebec&#8217;s Law 25 phased in from September 22, 2022 to September 22, 2024. Since September 2023, consent must be explicit for each purpose, tracking and profiling tools must be off by default, and penalties reach $10 million or 2% of worldwide turnover, according to the <a href="https://www.cai.gouv.qc.ca/protection-renseignements-personnels/sujets-et-domaines-dinteret/principaux-changements-loi-25" target="_blank" rel="noopener">Commission d&#8217;accès à l&#8217;information</a>. This changes how analytics, pixels, and personalization load on a Quebec storefront.</li>


<li>Accessibility. In Ontario, businesses with 50+ employees must meet WCAG 2.0 Level AA on public websites under the AODA, and organizations with 20+ employees file their next accessibility compliance report by December 31, 2026, per the <a href="https://www.ontario.ca/page/how-make-websites-accessible" target="_blank" rel="noopener">Government of Ontario</a>.</li>


<li>Payments. Interac Online has been discontinued in favor of Interac Debit for online payments and the Konek wallet, and PayBright is now Affirm. Moneris and Worldline (formerly Bambora) are common gateways. Ask which module the agency uses for each and who maintains it.</li>


<li>Shipping. Canada Post and Purolator both offer developer APIs, and their Magento modules come from third parties rather than the carriers. Ask which module the agency uses and who updates it when the carrier API changes.</li>

</ul>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Ask for a French store view the agency has launched and a Quebec cookie banner it has built. Tracking and profiling tools on a Quebec store must be off by default.</p></div>



<h2 class="wp-block-heading">How to choose a Magento agency in Canada</h2>



<p class="wp-block-paragraph">Choose a local Magento specialist when your store serves Canada with one main workstream and an ERP that already works. Choose a larger certified Adobe Commerce partner when several workstreams run at once, when you sell outside Canada too, or when one developer leaving would stop your launch.</p>



<p class="wp-block-paragraph">Choose a local Magento specialist if:</p>



<ul class="wp-block-list">
<li>You run one Canadian store, with English and French store views at most</li>


<li>The project has one main workstream, such as a Hyvä rebuild or a 2.4.x upgrade</li>


<li>Your ERP or PIM is already connected and stable</li>


<li>You want the same people in every meeting and a short drive to the office</li>


<li>Your budget fits a small team better than an enterprise program</li>

</ul>



<p class="wp-block-paragraph">Choose a larger certified Adobe Commerce partner if:</p>



<ul class="wp-block-list">
<li>You need backend, frontend, integrations, and SEO running at the same time</li>


<li>You sell in the US or Europe as well as Canada and want one instance for all of it</li>


<li>A developer leaving or on vacation cannot delay your launch</li>


<li>You want tiers and certifications you can check in Adobe&#8217;s and Hyvä&#8217;s directories</li>


<li>You need support cover for incidents outside Eastern Time business hours</li>

</ul>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner.png" alt="Side-by-side comparison of choosing a local Magento specialist or a larger certified Adobe Commerce partner in Canada" class="wp-image-26356" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-canada-specialist-vs-certified-partner-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">When a local Magento specialist fits and when a larger certified partner does</figcaption></figure></div>



<p class="wp-block-paragraph">If the answer depends on what your ERP and PIM should do after launch, we can <a href="https://scandiweb.com/services/enterprise-architecture" target="_blank" rel="noopener">map your target architecture</a> first, so every agency quotes against the same picture.</p>



<h2 class="wp-block-heading">Questions to ask before you sign</h2>



<p class="wp-block-paragraph">A Magento development company in Canada that has done this before will answer these on the first call, with links.</p>



<ul class="wp-block-list">
<li>Which Adobe Solution Partner tier do you hold, and can you send the directory link?</li>


<li>What is your Hyvä tier, and which country is it listed under on hyva.io?</li>


<li>Which office will run our account, and which hours does the delivery team overlap with Eastern Time?</li>


<li>Which French storefronts have you launched for Quebec, and can we see one live?</li>


<li>How will you set up GST, HST, PST, RST, and QST, and can we see a test order into each province?</li>


<li>How do you handle Law 25 consent, and what loads before the shopper accepts cookies?</li>


<li>Which Adobe Commerce version will we run? Under <a href="https://experienceleague.adobe.com/en/docs/commerce-operations/release/planning/lifecycle-policy" target="_blank" rel="noopener">Adobe&#8217;s lifecycle policy</a>, 2.4.7 leaves support on May 31, 2027, 2.4.8 on May 31, 2028, and 2.4.9 on May 31, 2029.</li>


<li>Who owns the code, the repository, and the hosting account when the contract ends?</li>

</ul>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Write the Adobe Commerce version into the contract. A store built today on 2.4.7 needs an upgrade before May 31, 2027, and the agency that builds it should quote that upgrade now.</p></div>



<h2 class="wp-block-heading">What does Magento development in Canada cost?</h2>



<p class="wp-block-paragraph">Magento development in Canada is priced in three ways: fixed quotes for builds, migrations, and Hyvä projects, monthly retainers for support, and hourly or daily rates for open-ended work. The drivers that move a Canadian quote most are a French store view, ERP or PIM integration, B2B features, provincial tax setup, and the Adobe Commerce license. Send the same scope to three agencies. The one that itemizes the French store view and the tax setup has probably done it before. Our <a href="https://scandiweb.com/blog/magento-pricing/" target="_blank" rel="noopener">Magento pricing guide</a> covers license, build, and support costs in detail.</p>



<h2 class="wp-block-heading">Frequently asked questions about Magento agencies in Canada</h2>



<h3 class="wp-block-heading">What are the best Magento agencies in Canada?</h3>



<p class="wp-block-paragraph">The strongest picks with a Canadian office you can check are scandiweb, Valtech, MageMontreal, Kinex Media, TWO DEV, Northern, and Rootways. scandiweb leads on certifications and Hyvä, Valtech on headless enterprise builds, MageMontreal and TWO DEV on Quebec work, and Kinex Media on Ontario B2B with the only Hyvä Silver tier in Canada.</p>



<h3 class="wp-block-heading">How much does Magento development in Canada cost?</h3>



<p class="wp-block-paragraph">It depends on the scope. Canadian agencies quote fixed prices for builds, migrations, and Hyvä projects, monthly retainers for support, and hourly or daily rates for ongoing work. Send every agency the same written brief so the quotes compare like for like.</p>



<h3 class="wp-block-heading">Which Canadian agencies are Hyvä partners?</h3>



<p class="wp-block-paragraph">Hyvä&#8217;s directory lists two agencies under Canada: Kinex Media at Silver and TWO DEV at Bronze. Larger Hyvä partners serve Canadian stores from elsewhere. scandiweb, for example, is a Hyvä Platinum Partner with a Montreal office, but its hyva.io listing is filed under another country. Ask any agency which country its listing shows before you count the badge.</p>



<h3 class="wp-block-heading">Does my Magento store need a French version for Quebec?</h3>



<p class="wp-block-paragraph">Yes, if you sell to consumers in Quebec. Since June 1, 2022, commercial websites must be available at least in French under the Charter of the French Language, and since June 1, 2023, online terms must be provided in French first. In Magento, that means a French store view with French checkout emails and French terms.</p>



<h3 class="wp-block-heading">Do I need a Magento agency with an office in Canada?</h3>



<p class="wp-block-paragraph">Not always, because most development runs remotely. A Canadian office helps with Eastern Time overlap, in-person workshops, and Quebec language and privacy questions. Ask for a named Canadian contact and the hours the delivery team overlaps with yours.</p>



<h3 class="wp-block-heading">What is the difference between a Magento agency and an Adobe Commerce agency?</h3>



<p class="wp-block-paragraph">The skills are the same. Adobe Commerce is the licensed edition of Magento and Magento Open Source is the free one, both built on the same codebase, so an agency that works on one works on the other. Our guide to <a href="https://scandiweb.com/blog/adobe-commerce-vs-magento-open-source/" target="_blank" rel="noopener">Magento Open Source vs Adobe Commerce</a> explains the trade-offs.</p>



<h2 class="wp-block-heading">Choosing from the top Magento agencies in Canada</h2>



<p class="wp-block-paragraph">The top Magento agencies in Canada fit different stores. scandiweb fits brands that want the deepest certified bench and Hyvä with a Montreal contact, and Valtech fits enterprise retailers on headless Adobe Commerce. MageMontreal and TWO DEV fit Quebec merchants with SAP or Akeneo, Kinex Media fits Ontario B2B with a Hyvä frontend, Northern fits brands that want content and data work, and Rootways fits smaller stores that need Canadian shipping extensions. Pick three, send them the same brief, and check every tier yourself. If you also sell in the UK, our list of <a href="https://scandiweb.com/blog/top-magento-agencies-uk/" target="_blank" rel="noopener">Magento agencies in the UK</a> covers that market the same way.</p>



<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@type": "FAQPage",
 "mainEntity": [
  {
   "@type": "Question",
   "name": "What are the best Magento agencies in Canada?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "The strongest picks with a Canadian office you can check are scandiweb, Valtech, MageMontreal, Kinex Media, TWO DEV, Northern, and Rootways. scandiweb leads on certifications and Hyvä, Valtech on headless enterprise builds, MageMontreal and TWO DEV on Quebec work, and Kinex Media on Ontario B2B with the only Hyvä Silver tier in Canada."
   }
  },
  {
   "@type": "Question",
   "name": "How much does Magento development in Canada cost?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "It depends on the scope. Canadian agencies quote fixed prices for builds, migrations, and Hyvä projects, monthly retainers for support, and hourly or daily rates for ongoing work. Send every agency the same written brief so the quotes compare like for like."
   }
  },
  {
   "@type": "Question",
   "name": "Which Canadian agencies are Hyvä partners?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Hyvä's directory lists two agencies under Canada: Kinex Media at Silver and TWO DEV at Bronze. Larger Hyvä partners serve Canadian stores from elsewhere. scandiweb, for example, is a Hyvä Platinum Partner with a Montreal office, but its hyva.io listing is filed under another country. Ask any agency which country its listing shows before you count the badge."
   }
  },
  {
   "@type": "Question",
   "name": "Does my Magento store need a French version for Quebec?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Yes, if you sell to consumers in Quebec. Since June 1, 2022, commercial websites must be available at least in French under the Charter of the French Language, and since June 1, 2023, online terms must be provided in French first. In Magento, that means a French store view with French checkout emails and French terms."
   }
  },
  {
   "@type": "Question",
   "name": "Do I need a Magento agency with an office in Canada?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Not always, because most development runs remotely. A Canadian office helps with Eastern Time overlap, in-person workshops, and Quebec language and privacy questions. Ask for a named Canadian contact and the hours the delivery team overlaps with yours."
   }
  },
  {
   "@type": "Question",
   "name": "What is the difference between a Magento agency and an Adobe Commerce agency?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "The skills are the same. Adobe Commerce is the licensed edition of Magento and Magento Open Source is the free one, both built on the same codebase, so an agency that works on one works on the other. Our guide to Magento Open Source vs Adobe Commerce explains the trade-offs."
   }
  }
 ]
}
</script>
<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@type": "ItemList",
 "name": "Top Magento agencies in Canada",
 "itemListOrder": "https://schema.org/ItemListOrderAscending",
 "numberOfItems": 7,
 "itemListElement": [
  {
   "@type": "ListItem",
   "position": 1,
   "item": {
    "@type": "Organization",
    "name": "scandiweb",
    "url": "https://scandiweb.com/"
   }
  },
  {
   "@type": "ListItem",
   "position": 2,
   "item": {
    "@type": "Organization",
    "name": "Valtech",
    "url": "https://www.valtech.com/en-ca/"
   }
  },
  {
   "@type": "ListItem",
   "position": 3,
   "item": {
    "@type": "Organization",
    "name": "MageMontreal",
    "url": "https://magemontreal.com/"
   }
  },
  {
   "@type": "ListItem",
   "position": 4,
   "item": {
    "@type": "Organization",
    "name": "Kinex Media",
    "url": "https://www.kinexmedia.com/"
   }
  },
  {
   "@type": "ListItem",
   "position": 5,
   "item": {
    "@type": "Organization",
    "name": "TWO DEV",
    "url": "https://twodev.com/en/"
   }
  },
  {
   "@type": "ListItem",
   "position": 6,
   "item": {
    "@type": "Organization",
    "name": "Northern",
    "url": "https://www.northern.co/"
   }
  },
  {
   "@type": "ListItem",
   "position": 7,
   "item": {
    "@type": "Organization",
    "name": "Rootways",
    "url": "https://www.rootways.com/"
   }
  }
 ]
}
</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em> </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>Talk to our Montreal team</em></a><em> about your shortlist, and a Magento lead will tell you which agency fits your store, including when that is another name on this list.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/top-magento-agencies-canada/">Top Magento Agencies in Canada (2026)</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Top Magento Agencies in Australia (2026)</title>
		<link>https://scandiweb.com/blog/top-magento-agencies-australia/</link>
		
		<dc:creator><![CDATA[Aigars Pavlovics]]></dc:creator>
		<pubDate>Tue, 27 Oct 2026 07:57:47 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[adobe commerce]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[Magento Development]]></category>
		<category><![CDATA[Magento Enterprise]]></category>
		<category><![CDATA[Magento Services]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26352</guid>

					<description><![CDATA[<p>Eight Magento agencies in Australia compared on Adobe tier, Hyvä listing, office city and named work, plus questions to ask first.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/top-magento-agencies-australia/">Top Magento Agencies in Australia (2026)</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-Au7mQ wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/services/magento-developers-australia" target=_blank >
        Magento Developers in Australia
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/adobe-commerce-magento" target=_blank >
        Adobe Commerce and Magento Development
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/hyva-themes" target=_blank >
        Hyvä Theme Development
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">Adobe Commerce 2.4.6 left support on August 11, 2026, and 2.4.7 follows on May 31, 2027. A store on either version needs an upgrade soon, and the Magento agency in Australia that runs it will probably look after the store for years afterwards.</p>



<p class="wp-block-paragraph">We checked about 45 agencies that sell Magento work in Australia, each against Adobe&#8217;s Solution Partner Directory and Hyvä&#8217;s directory, then against the agency&#8217;s own contact and case study pages. Eight passed. Every fact below comes from those sources, and where something could not be checked, we say so.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Hyvä&#8217;s directory lists five Australian agencies: 23 Digital, Gold Coast Ecommerce, Rival Ecommerce, and webqem at Bronze, and Netable Australia at Partner tier. None is Silver or higher, so a higher Hyvä badge on an Australian agency&#8217;s site takes a minute to check.</p></div>



<h2 class="wp-block-heading">Top Magento agencies in Australia at a glance</h2>



<p class="wp-block-paragraph">The top Magento agencies in Australia are scandiweb, Aligent, Balance Internet, Acidgreen, Overdose, OSE, Netable Australia, and Magenable. They differ in Adobe tier, Hyvä listing, office city, how much Australian Magento work each one publishes, and where the developers work.</p>



<figure class="wp-block-table"><table><thead><tr><th>#</th><th>Agency</th><th>Australian office</th><th>Head office</th><th>Adobe tier (Adobe directory)</th><th>Hyvä tier (hyva.io)</th><th>Best for</th></tr></thead><tbody><tr><td>1</td><td>scandiweb</td><td>Remote, same-day AEST window</td><td>Riga, Latvia</td><td>Gold (as stated), 894+ certifications</td><td>Platinum (not under Australia)</td><td>Hyvä builds, upgrades, deepest certified bench</td></tr><tr><td>2</td><td>Aligent</td><td>Adelaide</td><td>Adelaide</td><td>Silver, Adobe APAC Partner of the Year 2025</td><td>Not listed</td><td>Enterprise retail, headless, OMS</td></tr><tr><td>3</td><td>Balance Internet</td><td>Melbourne</td><td>Melbourne (Publicis Groupe)</td><td>Platinum</td><td>Not listed</td><td>Large retail, education, government</td></tr><tr><td>4</td><td>Acidgreen</td><td>Sydney</td><td>Sydney (owned by DATASOLUTION, France)</td><td>Silver</td><td>Not listed</td><td>B2B and multi-brand with PIM and ERP</td></tr><tr><td>5</td><td>Overdose</td><td>Melbourne, Sydney, Brisbane</td><td>Auckland, New Zealand</td><td>Silver</td><td>Not listed</td><td>ANZ retail with growth marketing</td></tr><tr><td>6</td><td>OSE</td><td>Brisbane</td><td>Brisbane</td><td>Not stated</td><td>Not listed</td><td>Adobe Commerce with Pronto ERP, SLA support</td></tr><tr><td>7</td><td>Netable Australia</td><td>Melbourne (Moorabbin)</td><td>Melbourne</td><td>Bronze (as stated by the agency)</td><td>Partner (Australia)</td><td>Mid-market B2B and B2C with ERP integration</td></tr><tr><td>8</td><td>Magenable</td><td>South Melbourne</td><td>Melbourne, development team overseas</td><td>Not stated</td><td>Not listed</td><td>Director-led B2B consultancy</td></tr></tbody></table><figcaption class="wp-element-caption">Top Magento agencies in Australia compared by office, Adobe tier, and Hyvä tier</figcaption></figure>



<p class="wp-block-paragraph">Adobe tiers for Aligent, Balance Internet, Acidgreen, and Overdose come from Adobe&#8217;s directory (checked October 26, 2026), scandiweb&#8217;s and Netable&#8217;s from their own sites, and the Hyvä column from hyva.io. Ask every agency for its directory link before you sign.</p>



<h2 class="wp-block-heading">How we chose these Magento agencies</h2>



<p class="wp-block-paragraph">We kept the agencies that pass four checks, in this order. About 45 went in, and most fell out at the first or second check.</p>



<ul class="wp-block-list">
<li>Magento comes first. Magento or Adobe Commerce leads the agency&#8217;s services, and its published case studies are Magento builds.</li>


<li>A way to work in Australian hours. An office on the agency&#8217;s own contact page or a stated same-day AEST working window, with named people behind it.</li>


<li>Named Australian Magento work or a tier you can check. Australian Magento clients, an Adobe Solution Partner tier in <a href="https://partners.adobe.com/s/directory/solution" target="_blank" rel="noopener">Adobe&#8217;s directory</a>, a Hyvä tier on <a href="https://www.hyva.io/find-an-agency" target="_blank" rel="noopener">hyva.io</a>, or a mix.</li>


<li>A support plan after launch, so every later upgrade has an owner.</li>

</ul>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1.png" alt="Funnel showing four checks that cut about 45 Australian Magento agencies down to eight" class="wp-image-26360" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-shortlist-checks-1-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">How about 45 Australian Magento agencies became a shortlist of eight</figcaption></figure></div>



<p class="wp-block-paragraph">The names that dropped out were general web studios that list Magento next to WordPress and Webflow, agencies that now lead with Shopify (Convert Digital is a Shopify Platinum partner), and eWave, which Globant absorbed. For agencies outside Australia, our list of <a href="https://scandiweb.com/blog/top-magento-development-companies/" target="_blank" rel="noopener">global Magento development companies</a> applies the same checks. For other markets, see our lists for <a href="https://scandiweb.com/blog/top-magento-agencies-uk/">the UK</a> and <a href="https://scandiweb.com/blog/top-magento-agencies-canada/">Canada</a>.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Among Australian-headquartered commerce agencies, Adobe&#8217;s directory shows Balance Internet at Platinum and Aligent, Acidgreen, and webqem at Silver. If an agency&#8217;s badge says Gold and the directory says Silver, go with the directory.</p></div>



<h2 class="wp-block-heading">The 8 best Magento agencies in Australia, profiled</h2>



<p class="wp-block-paragraph">Each profile gives the office from the agency&#8217;s own site, the partner tiers we could check, the Australian Magento work it publishes, and the kind of merchant it fits.</p>



<h3 class="wp-block-heading">1. scandiweb</h3>



<p class="wp-block-paragraph">scandiweb is the world&#8217;s most certified Adobe Commerce agency, with 894+ Adobe certifications, Adobe Gold Solution Partner status, and Hyvä Platinum Partner status. We have been an Adobe partner since 2009 and have delivered 2,100+ projects since 2003 for 700+ clients, who rate us at 95 NPS. We hold ISO 9001, ISO 27001, and ISO 27017 certifications and are PCI DSS compliant.</p>



<p class="wp-block-paragraph">Australian merchants work with our global team remotely, with a same-day working window on AEST and delivery in English, as our page for <a href="https://scandiweb.com/services/magento-developers-australia" target="_blank" rel="noopener">Magento Developers in Australia</a> explains. Our Hyvä Platinum listing is not under Australia, so a search of hyva.io by country will not show it.</p>



<p class="wp-block-paragraph">Our published proof is international. When Scouting America moved from a legacy Luma storefront to Hyvä, average order value rose 27.3% year on year, checkout starts rose 23.9%, and LCP improved by 12–13%. The full numbers are in <a href="https://scandiweb.com/blog/scouting-america-legacy-to-hyva-transformation/" target="_blank" rel="noopener">Scouting America&#8217;s Hyvä rebuild</a>.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1200" height="162" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-2.png" alt="Adobe, Hyvä, Google, and ISO partner and certification badges held by scandiweb" class="wp-image-26348" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-2.png 1200w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-2-300x41.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-2-1024x138.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-2-150x20.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/certification-badges-strip-hyva-adobe-google-iso-2-768x104.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">scandiweb&#x27;s Adobe, Hyvä, and ISO credentials in one row</figcaption></figure></div>



<p class="wp-block-paragraph">Best for: merchants that want the deepest certified bench, a <a href="https://scandiweb.com/services/hyva-themes" target="_blank" rel="noopener">Hyvä theme build</a>, or an upgrade run by a large team, and are comfortable with remote delivery.</p>



<h3 class="wp-block-heading">2. Aligent</h3>



<p class="wp-block-paragraph">Aligent is an Adelaide agency at Level 1, 212 Pirie Street, working since 2008. Adobe&#8217;s directory shows it at Silver with the award Adobe APAC Partner of the Year 2025. It is not listed on hyva.io.</p>



<p class="wp-block-paragraph">Aligent is multi-platform: Adobe Commerce is listed first, then BigCommerce, Shopify Plus, and Fluent Commerce order management. For The Athlete&#8217;s Foot in Australia and New Zealand, a headless Adobe Commerce build, Aligent reports +26% conversion, +$10 AOV, and 21% faster average page load. For Rockwear, a headless PWA on Adobe Commerce, it reports click and collect adoption above 30% and real-time inventory across almost 100 stores. Aligent offers ongoing 24/7 support and BAU support.</p>



<p class="wp-block-paragraph">Best for: enterprise retailers and B2B merchants on Adobe Commerce, headless builds, and OMS integration.</p>



<h3 class="wp-block-heading">3. Balance Internet</h3>



<p class="wp-block-paragraph">Balance Internet is in Southbank, Melbourne, at the address on its Adobe directory profile. It was founded in 2008 with roots in Magento and has been part of Publicis Groupe since 2021. Adobe&#8217;s directory lists it at Platinum, the only Australian-headquartered commerce agency at that tier, and its profile lists health checks, technical support, implementation, integration, and hosting. It is not listed on hyva.io.</p>



<p class="wp-block-paragraph">Its own website could not be read on our research date, so this profile has no named client or metric. Ask for recent Australian references.</p>



<p class="wp-block-paragraph">Best for: large retail, education, and government programs that want a Platinum partner with a global network behind it.</p>



<h3 class="wp-block-heading">4. Acidgreen</h3>



<p class="wp-block-paragraph">Acidgreen is at 100 Market Street, Sydney, with a Melbourne contact by phone. It was established in 2000, has been owned by France&#8217;s DATASOLUTION since 2019, and says it was one of the first Magento partners in Australia. Adobe&#8217;s directory lists it at Silver, and its profile cites over 60 Magento 2 builds, upgrades, or replatforming projects. It is not on hyva.io. It also sells Shopify, BigCommerce, OroCommerce, and Pimcore and Akeneo PIM.</p>



<p class="wp-block-paragraph">For Legend Corporation, an electrical and industrial products group, Acidgreen launched 13 websites in six months on a single Magento 2 backend, integrated with SAP, a PIM, Salesforce, and Mirakl. For Woolworths Plus Club, a members-only portal on Magento Open Source for 250k+ eligible employees, it reports four to five years of continuous maintenance with zero major security incidents.</p>



<p class="wp-block-paragraph">Best for: B2B and multi-brand Magento estates that need PIM and ERP integration.</p>



<h3 class="wp-block-heading">5. Overdose</h3>



<p class="wp-block-paragraph">Overdose has three Australian offices: South Yarra in Melbourne, 388 George Street in Sydney, and 200 Adelaide Street in Brisbane. Its headquarters are in Auckland, where it was founded in 2016. Adobe&#8217;s directory lists it at Silver (its own profile text still says Gold). It is not on hyva.io. Overdose lists Shopify Plus first, then Adobe Commerce, commercetools, and BigCommerce, and its Adobe page says &#8220;The answer is not always another Adobe build.&#8221;</p>



<p class="wp-block-paragraph">On Adobe Commerce it reports a 45% increase in conversion rate and a 20% increase in average order value for Camera House, and it lists Petbarn and Signet as Adobe Commerce clients.</p>



<p class="wp-block-paragraph">Best for: ANZ retailers that want Adobe Commerce alongside growth marketing, and an honest stay-or-move recommendation.</p>



<h3 class="wp-block-heading">6. OSE</h3>



<p class="wp-block-paragraph">OSE is an Australian-owned agency at 4/110 Eagle Street, Brisbane. Its site does not state an Adobe tier, and it is not on hyva.io, so ask for both. Adobe Commerce is its first service, with Shopify Plus second, and all three of its published case studies are Adobe Commerce builds. For Pedders, on Adobe Commerce with Pronto ERP, OSE reports a 150% increase in brake, steering, and suspension check inquiries across 120+ stores. For Unique Health Products, an Adobe Commerce B2B store, it reports 52% of total sales processed online and about a 4.4% increase in average order value. It publishes four support tiers with agreed service levels.</p>



<p class="wp-block-paragraph">Best for: mid-market and enterprise retailers and wholesalers on Adobe Commerce with Pronto ERP who want SLA-backed support.</p>



<h3 class="wp-block-heading">7. Netable Australia</h3>



<p class="wp-block-paragraph">Netable Australia is in Moorabbin, Melbourne, and has been in business for about 21 years. It is the one agency on this list with a Hyvä listing under Australia, at the entry Partner tier. Its site shows an Adobe Bronze Partner badge, which we could not confirm in Adobe&#8217;s directory. Netable is Magento-led, covering support, integrations, migrations, hosting, and B2B, and it takes over existing Magento stores from other agencies.</p>



<p class="wp-block-paragraph">Its published work includes Minidisc on Hyvä with Cin7, with a PageSpeed score above 90, and Build-A-Bear Workshop, supported for over 12 years including the Magento 1 to 2 move.</p>



<p class="wp-block-paragraph">Best for: mid-market B2B and B2C merchants that need ERP integration with NetSuite, SAP Business One, or Pronto, and long-term support.</p>



<h3 class="wp-block-heading">8. Magenable</h3>



<p class="wp-block-paragraph">Magenable is in South Melbourne, with management and consulting in Melbourne and the development team overseas. It does not state an Adobe tier, is not on hyva.io, and focuses on Magento, Adobe Commerce, and BigCommerce. Published work includes Access Hardware, a B2B store on Adobe Commerce Cloud, Bondi Sands, for maintenance and development, and Dahlsens, a data center migration with close to zero downtime. Magenable publishes no metrics, so ask for numbers from a comparable project.</p>



<p class="wp-block-paragraph">Best for: B2B merchants that want a small, director-led Magento consultancy.</p>



<p class="wp-block-paragraph">A few more names are worth knowing. webqem in North Sydney is Hyvä Bronze and Adobe Silver and reports revenue up 110% for 99 Bikes on Adobe Commerce, but it now sells Shopify, Webflow, and WooCommerce as widely as Magento. Rival Ecommerce in Sydney is Hyvä Bronze and Magento-first, but publishes no client metrics. Krish TechnoLabs (Sydney) and 18th DigiTech (Baulkham Hills) are both Adobe Gold with Australian offices and delivery teams in India.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Ask every agency on your shortlist which hours its delivery team overlaps with AEST before you compare quotes.</p></div>



<h2 class="wp-block-heading">Magento agencies in Sydney, Melbourne, Brisbane, and Adelaide</h2>



<p class="wp-block-paragraph">Melbourne and Sydney have the most Magento agencies on this list, Brisbane has two, and Adelaide has one. The city matters for workshops and launch week. Day-to-day development matters less by city, because most Magento work in Australia runs remotely.</p>



<h3 class="wp-block-heading">Magento agencies in Sydney</h3>



<p class="wp-block-paragraph">Sydney has Acidgreen, established in 2000, and Overdose&#8217;s George Street office, plus the two Hyvä Bronze partners Rival Ecommerce and webqem. For a Magento developer in Sydney working on a B2B or multi-brand estate, Acidgreen&#8217;s Legend Corporation project is the published reference.</p>



<h3 class="wp-block-heading">Magento agencies in Melbourne</h3>



<p class="wp-block-paragraph">Melbourne has four: Balance Internet in Southbank (Adobe Platinum), Netable Australia in Moorabbin (the Hyvä-listed pick for ERP work), Magenable in South Melbourne, and Overdose in South Yarra. For a Magento developer in Melbourne, that is a Platinum partner, a Hyvä partner, a consultancy, and a growth agency to compare on one brief.</p>



<h3 class="wp-block-heading">Magento agencies in Brisbane</h3>



<p class="wp-block-paragraph">Brisbane has OSE on Eagle Street and Overdose on Adelaide Street. If you are looking for Magento developers in Brisbane with agreed service levels after launch, OSE publishes four support tiers.</p>



<h3 class="wp-block-heading">Magento agencies in Adelaide</h3>



<p class="wp-block-paragraph">Adelaide has Aligent on Pirie Street, whose headless builds for The Athlete&#8217;s Foot and Rockwear are the references for enterprise retail. None of the agencies on this list has a Perth office, so a Magento developer in Perth usually means working remotely with an east-coast team.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map.png" alt="Map of Australia showing Magento agency offices in Sydney, Melbourne, Brisbane, and Adelaide" class="wp-image-26349" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agencies-australia-office-map-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Where the agencies on this list have offices</figcaption></figure></div>



<h2 class="wp-block-heading">What a Magento agency in Australia should handle</h2>



<p class="wp-block-paragraph">An Australian store has rules that a build for another market does not, and a good agency will raise them in the first call. Australians spent $82.6 billion online in 2025, up 14% year on year, and 24% of all retail spend is now online, according to the <a href="https://auspost.com.au/business/ecommerce/ecommerce-report" target="_blank" rel="noopener">Australia Post 2026 eCommerce Report</a>. The points below are the ones to check.</p>



<ul class="wp-block-list">
<li>GST. Australian GST is 10% on most goods and services, and overseas sellers have collected GST on goods worth A$1,000 or less sold into Australia since July 1, 2018 (<a href="https://www.ato.gov.au/businesses-and-organisations/international-tax-for-business/gst-for-non-resident-businesses/gst-on-low-value-imported-goods" target="_blank" rel="noopener">ATO</a>). Magento&#8217;s tax rules need to match.</li>


<li>Buy now, pay later. Zip publishes an open-source Magento 2 plugin. For Afterpay, confirm with the agency and with Afterpay which Afterpay integration your store will use.</li>


<li>Delivery. 69% of shoppers want a range of delivery options at checkout, including parcel lockers, per the same Australia Post report. Australia Post offers shipping and tracking APIs for eParcel contract customers, and there are Australia Post extensions on the Adobe Commerce Marketplace.</li>


<li>Checkout pricing from July 1, 2027. The Competition and Consumer Amendment (Unfair Trading Practices) Act 2026 bans drip pricing, where mandatory fees are added late in checkout, from that date (<a href="https://www.aph.gov.au/Parliamentary_Business/Bills_Legislation/bd/bd2526/26bd058" target="_blank" rel="noopener">Parliament of Australia bills digest</a>). Mandatory fees must show up front in cart and checkout.</li>


<li>Privacy. From December 10, 2026, privacy policies must explain the kinds of personal information used in computer-made decisions that could significantly affect people (<a href="https://www.oaic.gov.au/news/media-centre/new-resources-on-transparency-for-use-of-ai-and-automated-decision-making" target="_blank" rel="noopener">OAIC</a>). That covers personalization and fraud rules.</li>


<li>Selling to government. Commonwealth entities pay Peppol eInvoices within 5 days, versus 20 for other invoices, which matters if your B2B store sells to government.</li>


<li>Accessibility. The Disability Discrimination Act covers online services. Aim for WCAG 2.2 AA as practice, and ask the agency which of its live stores it has tested against it.</li>

</ul>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Mandatory fees must appear in cart and checkout from July 1, 2027. Ask the agency to show you where a mandatory fee appears on a store it has already built.</p></div>



<h2 class="wp-block-heading">How to choose a Magento agency in Australia</h2>



<p class="wp-block-paragraph">Choose a local Magento specialist when the project has one main workstream and you want a team you can meet in person. Choose a larger certified Adobe Commerce partner when backend, frontend, and integrations run in parallel, or when one developer leaving would put your launch at risk.</p>



<p class="wp-block-paragraph"><strong>Choose a local Magento specialist if:</strong></p>



<ul class="wp-block-list">
<li>You run one Australian store, or Australia plus New Zealand</li>


<li>The project has one main workstream, such as a Hyvä frontend or a 2.4.x upgrade</li>


<li>Your ERP is already connected and stable</li>


<li>You want the same people in every meeting, in your time zone</li>


<li>Your budget fits a small team better than an enterprise program</li>

</ul>



<p class="wp-block-paragraph"><strong>Choose a larger certified Adobe Commerce partner if:</strong></p>



<ul class="wp-block-list">
<li>You need backend, frontend, integrations, and SEO running at the same time</li>


<li>You plan to add markets or brands on the same Adobe Commerce instance</li>


<li>A developer leaving or going on leave cannot delay your launch</li>


<li>You want tiers and certifications you can check in Adobe&#8217;s and Hyvä&#8217;s directories</li>


<li>You need support that covers AEST business hours and out-of-hours incidents</li>

</ul>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner.png" alt="Side-by-side comparison of choosing a local Magento specialist or a larger certified Adobe Commerce partner in Australia" class="wp-image-26350" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/magento-agency-australia-specialist-vs-certified-partner-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">When a local Magento specialist fits and when a certified partner does</figcaption></figure></div>



<p class="wp-block-paragraph">If the choice depends on how your ERP, payments, and marketplaces connect today, we can <a href="https://scandiweb.com/services/enterprise-architecture" target="_blank" rel="noopener">map your target architecture</a> before any agency quotes.</p>



<h2 class="wp-block-heading">Questions to ask before you sign</h2>



<p class="wp-block-paragraph">A good Magento development company in Australia will answer these in the first call and send links where it can. Compare the answers across your three.</p>



<ul class="wp-block-list">
<li>Which Adobe Solution Partner tier do you hold, and can you send the directory link?</li>


<li>What is your Hyvä tier, and which country is it listed under?</li>


<li>Where does the team on our project work, and which hours overlap with AEST?</li>


<li>Which Australian stores have you launched in the last two years, and can we see one live?</li>


<li>Which ERPs (Pronto, NetSuite, SAP Business One) have you integrated with Magento, and can we talk to the merchant?</li>


<li>Which Adobe Commerce version will we run? 2.4.7 leaves support on May 31, 2027, 2.4.8 on May 31, 2028, and 2.4.9 on May 31, 2029.</li>


<li>How will mandatory fees show in cart and checkout before July 1, 2027?</li>


<li>Who owns the code, the repository, and the hosting account?</li>

</ul>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Adobe Commerce 2.4.7 leaves support on May 31, 2027. If an agency proposes a 2.4.7 build now, ask who pays for the upgrade seven months later.</p></div>



<h2 class="wp-block-heading">What does Magento development in Australia cost?</h2>



<p class="wp-block-paragraph">Agencies price Magento work three ways: fixed quotes for builds, migrations, and Hyvä projects, monthly retainers for support, and hourly or daily rates for open-ended development. The total depends on catalog size, store views, integrations, and your edition, because Adobe Commerce carries its own license.</p>



<p class="wp-block-paragraph">Send two or three agencies the same written scope, including GST, BNPL, Australia Post, and the July 2027 checkout changes, and compare how precisely each one answers. Our <a href="https://scandiweb.com/blog/magento-pricing/" target="_blank" rel="noopener">Magento pricing guide</a> breaks down license, build, and support costs line by line.</p>



<h2 class="wp-block-heading">Frequently asked questions about Magento agencies in Australia</h2>



<h3 class="wp-block-heading">What are the best Magento agencies in Australia?</h3>



<p class="wp-block-paragraph">The eight that passed our checks are scandiweb, Aligent, Balance Internet, Acidgreen, Overdose, OSE, Netable Australia, and Magenable. Balance Internet is the only Australian-headquartered Adobe Platinum partner, Aligent and Acidgreen are Silver, Netable is the one Hyvä partner listed under Australia, and scandiweb has the deepest certified bench and works remotely. The right pick depends on your edition, your ERP, and how much of the team you need on AEST.</p>



<h3 class="wp-block-heading">How much does Magento development in Australia cost?</h3>



<p class="wp-block-paragraph">It depends on scope. Agencies quote fixed prices for builds and migrations, retainers for support, and hourly or daily rates for ongoing work, and catalog size, integrations, and the Adobe Commerce license set the total. Give each agency the same written brief so the quotes compare like for like.</p>



<h3 class="wp-block-heading">Which Australian agencies are Hyvä partners?</h3>



<p class="wp-block-paragraph">Hyvä&#8217;s directory lists five agencies under Australia: 23 Digital, Gold Coast Ecommerce, Rival Ecommerce, and webqem at Bronze, and Netable Australia at Partner tier. No Silver, Gold, or Platinum Hyvä agency is listed under Australia, so the larger Hyvä partners, scandiweb at Platinum among them, serve Australian merchants remotely. Our list of <a href="https://scandiweb.com/blog/top-hyva-theme-development-companies-for-magento-stores/" target="_blank" rel="noopener">Hyvä theme development companies</a> covers the global tiers.</p>



<h3 class="wp-block-heading">Do I need a Magento agency with an office in Australia?</h3>



<p class="wp-block-paragraph">Not always. An Australian office helps with workshops, launch week, and same-day contact, but most Magento development runs remotely, and several agencies with Sydney or Melbourne addresses deliver from other countries. Ask where the developers work and which hours overlap with AEST. A remote team with a same-day window can serve you as well as a local office with an offshore bench.</p>



<h3 class="wp-block-heading">Is Magento still a good choice for Australian retailers?</h3>



<p class="wp-block-paragraph">Yes, if your store needs catalog depth, B2B features, or ERP integration. Adobe Commerce 2.4.9 is supported to May 31, 2029 under <a href="https://experienceleague.adobe.com/en/docs/commerce-operations/release/planning/lifecycle-policy" target="_blank" rel="noopener">Adobe&#8217;s lifecycle policy</a>, and Magento Open Source is free to license, with the cost in build, hosting, and support. Our piece on <a href="https://scandiweb.com/blog/is-magento-dying/" target="_blank" rel="noopener">whether Magento is dying</a> covers the question in detail.</p>



<h3 class="wp-block-heading">What is the difference between a Magento agency and an Adobe Commerce agency?</h3>



<p class="wp-block-paragraph">There is no difference in skills. Adobe Commerce is the licensed edition of Magento and Magento Open Source is the free edition, and both run on the same codebase. Our guide to <a href="https://scandiweb.com/blog/adobe-commerce-vs-magento-open-source/" target="_blank" rel="noopener">Magento Open Source vs Adobe Commerce</a> covers the differences between the two editions.</p>



<h2 class="wp-block-heading">Choosing from the top Magento agencies in Australia</h2>



<p class="wp-block-paragraph">The top Magento agencies in Australia fit different stores. scandiweb fits a Hyvä build or a large upgrade with a certified remote team, Aligent fits enterprise retail on headless Adobe Commerce, and Balance Internet fits large programs that want a Platinum partner. Acidgreen fits multi-brand B2B estates, Overdose fits ANZ retail with growth marketing, and OSE fits Adobe Commerce with Pronto. Netable Australia fits ERP-heavy mid-market stores, and Magenable fits merchants that want a small consultancy. Pick three, send them the same brief, and check every tier yourself. If you also sell in the UK, our list of <a href="https://scandiweb.com/blog/top-magento-agencies-uk/" target="_blank" rel="noopener">Magento agencies in the UK</a> runs the same checks there.</p>



<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@type": "FAQPage",
 "mainEntity": [
  {
   "@type": "Question",
   "name": "What are the best Magento agencies in Australia?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "The eight that passed our checks are scandiweb, Aligent, Balance Internet, Acidgreen, Overdose, OSE, Netable Australia, and Magenable. Balance Internet is the only Australian-headquartered Adobe Platinum partner, Aligent and Acidgreen are Silver, Netable is the one Hyvä partner listed under Australia, and scandiweb has the deepest certified bench and works remotely. The right pick depends on your edition, your ERP, and how much of the team you need on AEST."
   }
  },
  {
   "@type": "Question",
   "name": "How much does Magento development in Australia cost?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "It depends on scope. Agencies quote fixed prices for builds and migrations, retainers for support, and hourly or daily rates for ongoing work, and catalog size, integrations, and the Adobe Commerce license set the total. Give each agency the same written brief so the quotes compare like for like."
   }
  },
  {
   "@type": "Question",
   "name": "Which Australian agencies are Hyvä partners?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Hyvä's directory lists five agencies under Australia: 23 Digital, Gold Coast Ecommerce, Rival Ecommerce, and webqem at Bronze, and Netable Australia at Partner tier. No Silver, Gold, or Platinum Hyvä agency is listed under Australia, so the larger Hyvä partners, scandiweb at Platinum among them, serve Australian merchants remotely. Our list of Hyvä theme development companies covers the global tiers."
   }
  },
  {
   "@type": "Question",
   "name": "Do I need a Magento agency with an office in Australia?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Not always. An Australian office helps with workshops, launch week, and same-day contact, but most Magento development runs remotely, and several agencies with Sydney or Melbourne addresses deliver from other countries. Ask where the developers work and which hours overlap with AEST. A remote team with a same-day window can serve you as well as a local office with an offshore bench."
   }
  },
  {
   "@type": "Question",
   "name": "Is Magento still a good choice for Australian retailers?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "Yes, if your store needs catalog depth, B2B features, or ERP integration. Adobe Commerce 2.4.9 is supported to May 31, 2029 under Adobe's lifecycle policy, and Magento Open Source is free to license, with the cost in build, hosting, and support. Our piece on whether Magento is dying covers the question in detail."
   }
  },
  {
   "@type": "Question",
   "name": "What is the difference between a Magento agency and an Adobe Commerce agency?",
   "acceptedAnswer": {
    "@type": "Answer",
    "text": "There is no difference in skills. Adobe Commerce is the licensed edition of Magento and Magento Open Source is the free edition, and both run on the same codebase. Our guide to Magento Open Source vs Adobe Commerce covers the differences between the two editions."
   }
  }
 ]
}
</script>
<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@type": "ItemList",
 "name": "Top Magento agencies in Australia",
 "itemListOrder": "https://schema.org/ItemListOrderAscending",
 "numberOfItems": 8,
 "itemListElement": [
  {
   "@type": "ListItem",
   "position": 1,
   "item": {
    "@type": "Organization",
    "name": "scandiweb",
    "url": "https://scandiweb.com/"
   }
  },
  {
   "@type": "ListItem",
   "position": 2,
   "item": {
    "@type": "Organization",
    "name": "Aligent",
    "url": "https://www.aligent.com.au/"
   }
  },
  {
   "@type": "ListItem",
   "position": 3,
   "item": {
    "@type": "Organization",
    "name": "Balance Internet",
    "url": "https://www.balanceinternet.com.au/"
   }
  },
  {
   "@type": "ListItem",
   "position": 4,
   "item": {
    "@type": "Organization",
    "name": "Acidgreen",
    "url": "https://www.acidgreen.com.au/"
   }
  },
  {
   "@type": "ListItem",
   "position": 5,
   "item": {
    "@type": "Organization",
    "name": "Overdose",
    "url": "https://overdose.digital/"
   }
  },
  {
   "@type": "ListItem",
   "position": 6,
   "item": {
    "@type": "Organization",
    "name": "OSE",
    "url": "https://www.ose.com.au/"
   }
  },
  {
   "@type": "ListItem",
   "position": 7,
   "item": {
    "@type": "Organization",
    "name": "Netable Australia",
    "url": "https://www.netable.com.au/"
   }
  },
  {
   "@type": "ListItem",
   "position": 8,
   "item": {
    "@type": "Organization",
    "name": "Magenable",
    "url": "https://magenable.com.au/"
   }
  }
 ]
}
</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em>If you have a shortlist of Australian agencies and want a straight answer, </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>send us the names and your brief</em></a><em>. A Magento lead will reply with the one that fits, even when it is another agency.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/top-magento-agencies-australia/">Top Magento Agencies in Australia (2026)</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Webinar Recap: What Fragmented Product Data Costs You &#038; How to Fix It</title>
		<link>https://scandiweb.com/blog/pimcore-webinar-recap/</link>
		
		<dc:creator><![CDATA[Aigars Pavlovics]]></dc:creator>
		<pubDate>Mon, 26 Oct 2026 12:38:55 +0000</pubDate>
				<category><![CDATA[Pimcore]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[PIM]]></category>
		<category><![CDATA[Product Information]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[webinar]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26416</guid>

					<description><![CDATA[<p>Highlights from our Pimcore webinar on what scattered product data costs in hours and lost sales, with real cases and a free PIM prototype.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/pimcore-webinar-recap/">Webinar Recap: What Fragmented Product Data Costs You &amp; How to Fix It</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-1iaDe8 wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/services/pimcore" target=_blank >
        Pimcore Development
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/pimcore-support" target=_blank >
        Pimcore Support
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/akeneo-pim-implementation" target=_blank >
        Akeneo PIM Implementation
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">We recently hosted a webinar on product data – what it costs a business when product information is spread across spreadsheets, inboxes, the ERP, and the eCommerce backend, and what the fix looks like on real projects. </p>



<p class="wp-block-paragraph">One story from the session shows the problem better than any definition. A retailer&#8217;s eCommerce team kept learning about new products from customers tagging them on Instagram. The products were already on the shelves and the data was already in the ERP, but nobody told the eCommerce team. Three to five days later someone retyped the details by hand into a spreadsheet, then waited for copy and images from a third party. About 40% of that retailer&#8217;s range was not for sale online. We&#8217;ll recap the main points of what this means in this article, or you can watch the recording here:</p>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Slow product launches, hours of data entry, and returns you could have avoided | Webinar" width="688" height="387" src="https://www.youtube.com/embed/ZRm1x6UqlhA?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">How many places is your product data in</h2>



<p class="wp-block-paragraph">Two to five, for most webinar attendees, according to the poll result when Ana asked how many places they store or manage product information today. When you need a product detail, how many places do you go to get it? Usually more than one.</p>



<p class="wp-block-paragraph">Product data arrives from suppliers, factories, the ERP, content teams, and translators. It lands in spreadsheets, inboxes, shared drives, and the eCommerce backend. Every copy drifts a little from the others, and after a while nobody is sure which version is right. Each new sales channel adds one more place to keep updated.</p>



<h2 class="wp-block-heading">Where the cost shows up</h2>



<h3 class="wp-block-heading">Manual work</h3>



<p class="wp-block-paragraph">There are usually teams of one to five people whose only job is managing product data by hand. That is a payroll cost before anything else, and it grows with every new market and channel.</p>



<h3 class="wp-block-heading">Late launches</h3>



<p class="wp-block-paragraph">During the webinar, hosts used an example of a North American manufacturer with a large store network. One full-time employee creates products in the eCommerce system. For each product he contacts roughly nine departments. He asks marketing for photos, content for descriptions, and the product team for ingredients and manufacturing data, then goes back to marketing to turn those ingredients into language a shopper understands. The company adds few products a season, and launching one is still a project.</p>



<p class="wp-block-paragraph">Often the information exists. It is in a manufacturing format that cannot go straight onto a product page, and the enrichment step gets stuck between approvals, marketing, legal, and translation.</p>



<h3 class="wp-block-heading">Lost sales</h3>



<p class="wp-block-paragraph">The retailer above was missing 40% of its range online. A US distributor of packaging and industrial supplies had only 10% of a large catalog on its site before its PIM project, with descriptions and images missing on part of that. Its full range is online now. Every day a product is on the shelf and not on the site is a day of revenue the business does not get.</p>



<h3 class="wp-block-heading">Returns</h3>



<p class="wp-block-paragraph">Wrong or missing product information means customers get something they did not expect, and they send it back. The return is a lost sale plus the cost of handling it.</p>



<p class="wp-block-paragraph">The reverse holds too. For Sportland, user research showed product pages were short on descriptions. scandiweb redesigned the pages, expanded the attribute sets in the PIM, reworked the size guides, and A/B tested the result. The new product page, which the team calls the super PDP, lifted sales by 39%.</p>



<h3 class="wp-block-heading">Growth and AI</h3>



<p class="wp-block-paragraph">Every new market, channel, or product multiplies the places that need updating, so a setup that works today becomes a brake as the catalog grows. AI has the same problem. It handles messy data better than it used to, but with three versions of the same product it cannot tell which one is true.</p>



<h2 class="wp-block-heading">What the fix looks like</h2>



<p class="wp-block-paragraph">One record per product, with the descriptions, images, documents, translations, and approval workflows attached to it. Every channel reads from that record.</p>



<p class="wp-block-paragraph">It&#8217;s like a spreadsheet row with anywhere from 20 to several hundred fields, where each department owns its own cells. The photographer uploads images in their own view. The designer assigns images to products. The content team writes the descriptions. Teams can work inside the PIM or keep the tools they already use and connect them through an API, as long as the PIM holds the master copy.</p>



<p class="wp-block-paragraph">Companies are organized by function, and product information does not belong to any one function. It is between several teams, so it needs a shared place where each team adds its part without making a mess somewhere else.</p>



<h2 class="wp-block-heading">A product&#8217;s journey through a PIM</h2>



<p class="wp-block-paragraph">Here are the four stages a product passes on its way from a supplier file to a customer&#8217;s screen, with screens from live projects.</p>



<h3 class="wp-block-heading">Getting data in</h3>



<p class="wp-block-paragraph">One client takes product data from many suppliers, each in a different format, and did not want to change how those suppliers work. So each supplier got an SFTP folder. They drop in their XML files, the client&#8217;s team runs the import, and the products appear in the PIM.</p>



<p class="wp-block-paragraph">Not every supplier sends XML or has an API. Some send PDFs. Maris said AI extraction now pulls product data from those with good accuracy.</p>



<p class="wp-block-paragraph">The PIM then normalizes what came in. A US packaging distributor sells box tape that suppliers list as either 5 centimeter or 2 inch. Its customers search in inches, so every tape now shows as 2 inch and sits in the same results. The same applies to shoe sizes or clothing sizes, and to any attribute that arrives in more than one standard.</p>



<p class="wp-block-paragraph">Attribute sets define which fields every product of a type needs, with validation, so a new team member creates a product the same way as everyone else. Variants inherit everything from the parent product except what makes them different, such as color and size.</p>



<p class="wp-block-paragraph">A food, drink, and restaurant equipment supplier in Latvia and Estonia ran several domains on two platforms, with ERP data moved between them by hand. scandiweb consolidated the domains into one store, added a Pimcore PIM with a two-way sync to SAP, and gave suppliers a file upload with automated product creation behind it. Over 20,000 products moved into the new setup, and the suppliers kept working the way they were used to.</p>



<h3 class="wp-block-heading">Enriching it</h3>



<p class="wp-block-paragraph">In Pimcore, the asset management and the PIM are linked, so a size guide or spec sheet is dragged in once and connected to its product. Nobody hunts for the right file later.</p>



<p class="wp-block-paragraph">Descriptions can be generated from the product&#8217;s attributes and images with AI, at least as a draft, and editing a draft is faster than starting from a blank page.</p>



<p class="wp-block-paragraph">Translations run per language, get reviewed and approved, and update the main product and every variant that inherits the text. scandiweb has also built scheduled AI translation across an entire catalog for some clients.</p>



<h3 class="wp-block-heading">Controlling it</h3>



<p class="wp-block-paragraph">Once data is in and enriched, user roles, permissions, and workflows decide what goes out. If a product is not approved, it does not reach the customer.</p>



<p class="wp-block-paragraph">A Lithuanian cosmetics retailer had product data in its eCommerce platform and ERP, plus a few spreadsheets, with several teams needing to sign off before anything went live. In Pimcore, scandiweb set up roles for supplier managers, product data managers, the eCommerce team, and the translation team. A new product arrives from the ERP with its SKU, price, and stock level, and the right person gets notified. They fill in the attribute set, the supplier manager adds what they know about the brand, translations are reviewed and approved, and the product goes live. Price and stock changes from the ERP update the record on their own.</p>



<p class="wp-block-paragraph">Reports show what is pending approval and which products are missing which fields in which language, so the person responsible opens the right product straight from the list.</p>



<h3 class="wp-block-heading">Distributing it</h3>



<p class="wp-block-paragraph">The record feeds the website, marketplaces, print catalogs, distributors, and franchisees. For external partners, a brand or partner portal is safer than a backend login. They see the data and assets you choose, download what they need, and build collections for their own team.</p>



<p class="wp-block-paragraph">One <a href="https://scandiweb.com/blog/school-photography-commerce-accelerator/" target="_blank" rel="noreferrer noopener">school photography</a> company used the same approach for more than product data. Student and staff records and the photos themselves lived in different repositories and went out by email. scandiweb built a master data backbone in Pimcore with single sign-on, plus a portal where each school logs in, downloads its photos, and edits or uploads student and staff records without seeing anyone else&#8217;s.</p>



<h2 class="wp-block-heading">What a PIM project takes</h2>



<p class="wp-block-paragraph">Discovery first. Every team has different data, workflows, stakeholders, and output channels, so scandiweb starts by mapping how the business works today and how it wants to work. Only then come the data model, the data cleanup, the system connections, and the training and rollout. scandiweb uses Pimcore for many of these projects because it bends to the way a team already works.</p>



<p class="wp-block-paragraph">Our rule is to find the gap the PIM fills and shape the PIM around the existing teams. If the goal is only to put product data in one place, the project can be fairly simple. If the content has to be created inside the system, as with a fashion brand where photo shoots and image approvals need defined roles at each stage, it is more involved. Most projects land somewhere between the two.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box wp-block-paragraph"><em>If you want to see how a PIM would handle your own catalog, request a <a href="https://scandiweb.com/solutions/webinars/pimcore" target="_blank" rel="noreferrer noopener">free PIM prototype</a>. Upload a sample spreadsheet if you have one, and our team will build the prototype on your data and walk you through it, including how different roles see different parts of the catalog.</em></p>



<p class="wp-block-paragraph"></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/pimcore-webinar-recap/">Webinar Recap: What Fragmented Product Data Costs You &amp; How to Fix It</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Downgrade Adobe Commerce to Magento Open Source: What You Lose and What You Save</title>
		<link>https://scandiweb.com/blog/downgrade-adobe-commerce-to-magento-open-source/</link>
		
		<dc:creator><![CDATA[Rolands Jermolajevs]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[Platform Comparisons]]></category>
		<category><![CDATA[adobe commerce]]></category>
		<category><![CDATA[Adobe Commerce as a Cloud Service]]></category>
		<category><![CDATA[Adobe Commerce pricing]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[magento 2]]></category>
		<category><![CDATA[magento open source]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26187</guid>

					<description><![CDATA[<p>Planning to downgrade Adobe Commerce to Magento Open Source? See the features you lose, the project steps, and a 3-year cost check.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/downgrade-adobe-commerce-to-magento-open-source/">Downgrade Adobe Commerce to Magento Open Source: What You Lose and What You Save</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-AcDwn wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/magento-consulting" target=_blank >
        Magento Consulting
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/adobe-commerce-and-magento-open-source" target=_blank >
        Adobe Commerce and Magento Open Source
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/magento-support" target=_blank >
        Magento Support
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">If your Adobe Commerce renewal is coming up and someone has asked why you pay for software that also comes in a free edition, the honest answer starts with an inventory. You can downgrade Adobe Commerce to Magento Open Source, because both editions share the same core. The license line disappears. What you get back depends on how many Commerce-only features your team uses every week, and on whether you also leave Adobe&#8217;s cloud hosting.</p>



<p class="wp-block-paragraph">It&#8217;s one of the questions our clients ask most often this year, usually together with a second one: Cloud, on-premise, or ACCS, what are we paying for? Both have the same starting point. List the Commerce-only features your team uses, find a replacement for each, and set the total cost against three more years of license fees, well before the renewal date.</p>



<h2 class="wp-block-heading">What you lose when you downgrade Adobe Commerce to Magento Open Source</h2>



<p class="wp-block-paragraph">When you downgrade Adobe Commerce to Magento Open Source, you lose the B2B suite, content staging and scheduled updates, customer segments, Live Search, Product Recommendations, gift cards, store credit, reward points, and returns management. You keep the catalog, customers, orders, checkout, Page Builder, multi-store setup, and most of your custom code. Data stored by the removed features has to be exported or migrated first.</p>



<p class="wp-block-paragraph">These are the features that change the decision. For the full edition-by-edition feature list, see our <a href="https://scandiweb.com/blog/adobe-commerce-vs-magento-open-source/" target="_blank" rel="noopener">Magento Open Source vs Adobe Commerce comparison</a>.</p>



<figure class="wp-block-table"><table><thead><tr><th>Adobe Commerce feature</th><th>After the downgrade</th><th>Usual replacement</th></tr></thead><tbody><tr><td>B2B: company accounts, shared catalogs, negotiable quotes, purchase order approvals</td><td>Removed with its data</td><td>B2B extension suite or custom build</td></tr><tr><td>Content staging and scheduled updates</td><td>Removed, scheduled campaigns are lost</td><td>Scheduling extension or manual publishing</td></tr><tr><td>Customer segments, dynamic blocks, related product rules</td><td>Removed</td><td>Segmentation extension or a CDP</td></tr><tr><td>Live Search and Product Recommendations</td><td>Not available on Open Source</td><td>OpenSearch (built in) or a search service</td></tr><tr><td>Gift cards, store credit, reward points</td><td>Removed with customer balances</td><td>Extensions, with balances migrated</td></tr><tr><td>Returns (RMA), email reminders, sales order archive</td><td>Removed</td><td>Extensions or your helpdesk</td></tr><tr><td>Adobe support and Cloud hosting</td><td>Ends with the license</td><td>Your agency, your host, your CDN</td></tr></tbody></table><figcaption class="wp-element-caption">What a downgrade from Adobe Commerce to Magento Open Source removes, and the usual replacements</figcaption></figure>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept.png" alt="Downgrade Adobe Commerce map listing removed Commerce-only features beside the catalog, orders and checkout features that stay" class="wp-image-26182" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-features-lost-vs-kept-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">What a downgrade from Adobe Commerce to Magento Open Source removes and keeps</figcaption></figure></div>



<h3 class="wp-block-heading">B2B features: company accounts, quotes, and approvals</h3>



<p class="wp-block-paragraph">If you sell to companies through Adobe Commerce, the B2B suite is the first thing to check. Company accounts with buyer roles, shared catalogs with customer-specific prices, negotiable quotes, purchase order approvals, requisition lists, and company credit are all part of B2B for Adobe Commerce, which installs on top of the Commerce license. Our overview of <a href="https://scandiweb.com/blog/top-9-adobe-commerce-b2b-features/" target="_blank" rel="noopener">Adobe Commerce B2B features</a> covers what each one does.</p>



<p class="wp-block-paragraph">On Open Source, these come from third-party extensions or custom work, and the data does not move by itself. Open quotes, approval rules, and company hierarchies have to be exported and rebuilt in the new module. A B2C store with a wholesale price list in a customer group usually loses nothing here. A distributor whose buyers request quotes every day loses a working sales process.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Run a report of quotes and purchase orders created in the last 90 days. If the count is close to zero, the B2B suite is not a reason to keep paying for Adobe Commerce.</p></div>



<h3 class="wp-block-heading">Content staging and scheduled updates</h3>



<p class="wp-block-paragraph">Content staging lets merchandisers schedule price changes, banners, and category updates for a future date and preview them before they go live. Open Source has no staging, so scheduled campaigns stop running after the switch, and marketing goes back to publishing changes by hand or through an extension.</p>



<p class="wp-block-paragraph">Staging also changes the database. To keep versions, Adobe Commerce stores products, categories, CMS pages, and blocks under a row_id key with several rows per entity, where Open Source uses one row per entity_id. That difference makes the move a database project as well as a code change, which the project section below covers.</p>



<h3 class="wp-block-heading">Live Search and Product Recommendations</h3>



<p class="wp-block-paragraph">Adobe lists Live Search as supported on Adobe Commerce on Cloud and on-premises, version 2.4.4 and later, according to the <a href="https://experienceleague.adobe.com/en/docs/commerce/live-search/install" target="_blank" rel="noopener">Live Search installation guide</a>. Magento Open Source isn&#8217;t on that list, and Product Recommendations has the same scope. After a downgrade, storefront search goes back to OpenSearch, which comes with Magento, and your synonyms, merchandising rules, and recommendation units need rebuilding in whatever you choose next.</p>



<p class="wp-block-paragraph">For a store with a small catalog, OpenSearch with good attribute setup is often enough. For a large catalog where search drives most sales, budget for a third-party search service, which is a subscription priced by usage.</p>



<h3 class="wp-block-heading">What you keep after a downgrade</h3>



<p class="wp-block-paragraph">The core stays the same, so most of the store survives:</p>



<ul class="wp-block-list">
<li>Catalog, customers, order history, and CMS content, once the database is converted</li>


<li>Checkout, payment and shipping integrations, and multi-store setup</li>


<li>Page Builder, which has been in Magento Open Source since version 2.4.3</li>


<li>Adobe Payment Services, which Adobe lists as compatible with Open Source 2.4.4 and later</li>


<li>A Hyvä storefront, since the <a href="https://scandiweb.com/blog/hyva-theme-goes-open-source/" target="_blank" rel="noopener">Hyvä Theme became free and open source</a> in November 2025</li>


<li>Custom modules, unless they extend Commerce-only classes</li>

</ul>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Count balances as well as features. Gift card balances, store credit, and reward points are money or value your customers already hold, so they have to move to the replacement module before the old one is removed.</p></div>



<h2 class="wp-block-heading">Adobe Commerce Cloud vs on-premise vs ACCS: what you pay Adobe for</h2>



<p class="wp-block-paragraph">With Adobe Commerce on-premise, you pay Adobe for the Commerce code and support, and you run the hosting. With Adobe Commerce on Cloud, the license also covers managed infrastructure: hosting environments, Fastly CDN with WAF and DDoS protection, and New Relic monitoring, while your team still owns the codebase and upgrades. With Adobe Commerce as a Cloud Service (ACCS), Adobe runs the application as well and upgrades it for you.</p>



<figure class="wp-block-table"><table><thead><tr><th>Option</th><th>What the fee covers</th><th>Who runs hosting</th><th>Who upgrades the application</th><th>Custom PHP in the app</th></tr></thead><tbody><tr><td>Magento Open Source</td><td>No license fee</td><td>You or your host</td><td>You</td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td></tr><tr><td>Adobe Commerce on-premise</td><td>Commerce code and Adobe support</td><td>You or your host</td><td>You</td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td></tr><tr><td>Adobe Commerce on Cloud</td><td>Code, support, infrastructure, CDN, monitoring</td><td>Adobe</td><td>You</td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td></tr><tr><td>Adobe Commerce as a Cloud Service</td><td>A SaaS subscription</td><td>Adobe</td><td>Adobe</td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td></tr></tbody></table><figcaption class="wp-element-caption">Adobe Commerce Cloud vs on-premise vs ACCS: what the fee covers and who runs what</figcaption></figure>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership.png" alt="Four stacked columns showing which layers you or Adobe own on Open Source, Commerce on-premise, Commerce on Cloud and ACCS" class="wp-image-26183" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-cloud-vs-on-premise-vs-accs-ownership-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Adobe Commerce Cloud vs on-premise vs ACCS: who owns each layer</figcaption></figure></div>



<p class="wp-block-paragraph">Our guide to <a href="https://scandiweb.com/blog/adobe-commerce-optimizer-vs-saas-paas-on-prem/" target="_blank" rel="noopener">Adobe Commerce Optimizer, SaaS, PaaS, and on-premise</a> compares the four Adobe editions in detail. For a downgrade decision, two of them matter most.</p>



<h3 class="wp-block-heading">Moving from Cloud to on-premise keeps the features</h3>



<p class="wp-block-paragraph">If the license is the problem and the features are not, moving from Adobe Commerce on Cloud to Adobe Commerce on-premise may solve it with less work. Based on aggregated partner estimates, the on-premise license runs roughly $22,000 to $125,000 a year, against roughly $40,000 to $190,000 for Cloud. Adobe doesn&#8217;t publish prices, so treat these as planning anchors.</p>



<p class="wp-block-paragraph">You keep B2B, staging, and Live Search, the database stays as it is, and the project is a hosting move. In exchange, you pay for the infrastructure yourself, and someone has to run it. <a href="https://scandiweb.com/services/aws-hosting-services-readymage" target="_blank" rel="noopener">Managed Magento hosting</a> is one way to avoid building that team.</p>



<h3 class="wp-block-heading">Is moving to ACCS a downgrade?</h3>



<p class="wp-block-paragraph">No. Adobe Commerce as a Cloud Service is a different product, and moving to it is closer to a rebuild. The storefront moves to Edge Delivery Services, customization moves out of the application into App Builder, and neither Luma nor Hyvä storefronts carry over. Adobe&#8217;s contract also caps a subscription at 250,000 SKUs. Our guide to <a href="https://scandiweb.com/blog/adobe-commerce-as-a-cloud-service/" target="_blank" rel="noopener">Adobe Commerce as a Cloud Service</a> covers who it fits, and our breakdown of <a href="https://scandiweb.com/blog/adobe-commerce-saas-migration-cost/" target="_blank" rel="noopener">ACCS migration cost</a> prices the move.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Ask which part of the bill you want to stop paying. If it&#8217;s the hosting premium, Cloud to on-premise keeps every feature. If it&#8217;s the license itself, only Open Source removes it.</p></div>



<h2 class="wp-block-heading">What a downgrade from Adobe Commerce to Magento Open Source involves</h2>



<p class="wp-block-paragraph">A downgrade from Adobe Commerce to Magento Open Source runs in seven steps: audit the Commerce features and data you use, export the data you&#8217;ll lose, choose replacements, swap the Composer packages, convert the database, move hosting if you leave Cloud, then test and cut over. The database conversion is the risky part, so it runs on a copy first.</p>



<ol class="wp-block-list">
<li><strong>Audit what you use.</strong> List every Commerce-only feature with live data behind it: staging updates, customer segments, B2B companies and quotes, gift card accounts, reward point balances, and returns. Check extensions and custom modules for dependencies on Commerce classes.</li>


<li><strong>Export what you&#8217;ll lose.</strong> Customer balances, open quotes, company structures, and return history need a destination before anything is removed.</li>


<li><strong>Choose and install replacements.</strong> Pick an extension or custom build per feature, and test that it can import the exported data.</li>


<li><strong>Swap the code.</strong> Replace the Adobe Commerce metapackage with the Open Source one in Composer, and remove or rewrite modules that depend on Commerce code.</li>


<li><strong>Convert the database.</strong> Remove the Commerce-only tables and convert row_id back to entity_id for products, categories, CMS pages, and blocks.</li>


<li><strong>Move hosting, if you leave Cloud.</strong> Set up the new environment, CDN, WAF, monitoring, backups, and a deployment pipeline to replace the Cloud tooling.</li>


<li><strong>Test and cut over.</strong> Run a full regression on staging, freeze catalog changes, migrate, and switch DNS in a low-traffic window.</li>

</ol>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps.png" alt="Seven-step timeline for a downgrade Adobe Commerce project, with the row_id to entity_id database conversion highlighted" class="wp-image-26184" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/downgrade-adobe-commerce-project-steps-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">The seven steps of a downgrade from Adobe Commerce to Magento Open Source</figcaption></figure></div>



<p class="wp-block-paragraph">The database step is where downgrades go wrong. Adobe Commerce adds around 90 tables that Open Source doesn&#8217;t have, plus the staging key structure. Deploy eCommerce, a UK agency, published an open-source command-line tool for this conversion in March 2026 and warns that it makes irreversible changes to the database. Whatever tool you use, run it on a production copy, compare row counts before and after, and keep the backup until the store has run cleanly for a few weeks.</p>



<p class="wp-block-paragraph">URLs, product data, and customer accounts stay where they are. Compared with a replatform, SEO risk is low, and customers don&#8217;t need to reset passwords.</p>



<h3 class="wp-block-heading">How long a downgrade takes</h3>



<p class="wp-block-paragraph">The timeline depends on how many Commerce features you replace and how much data moves with them, plus a hosting move if you leave Cloud. The database conversion and its rehearsal on a copy set the critical path, and each replaced feature adds its own build and test time.</p>



<p class="wp-block-paragraph">Start early enough to finish before the renewal date. If the project runs late, you either renew for another term or run a store you no longer have a license for. Check your contract&#8217;s renewal and notice terms first.</p>



<h3 class="wp-block-heading">Which Magento version to downgrade on</h3>



<p class="wp-block-paragraph">Downgrade on a supported version. Adobe&#8217;s October 2026 security bulletin offered Magento Open Source patch files only for 2.4.7 and later, and 2.4.8 is supported until May 31, 2028. If you run 2.4.6 or older, combine the downgrade with an upgrade. Our guide to <a href="https://scandiweb.com/blog/magento-end-of-life/" target="_blank" rel="noopener">Magento end of life</a> lists the support dates for every 2.4 version.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Plan the project backward from the renewal date. The database conversion needs at least one full rehearsal on a copy, and that rehearsal is what usually moves the timeline.</p></div>



<h2 class="wp-block-heading">Adobe Commerce vs Magento Open Source: the 3-year cost check</h2>



<p class="wp-block-paragraph">A downgrade pays off when the license fees you stop paying are larger than everything the move adds. Over three years, the license is the ceiling. The one-time project, the replacement features, and any hosting the Cloud license used to cover have to come in under it. A B2C store that uses few Commerce-only features usually clears that bar. A store that depends on B2B or staging may not.</p>



<figure class="wp-block-table"><table><thead><tr><th>Cost line over 3 years</th><th>Stay on Adobe Commerce on Cloud</th><th>Downgrade to Magento Open Source</th></tr></thead><tbody><tr><td>License</td><td>About $120,000–$570,000</td><td>$0</td></tr><tr><td>Hosting, CDN, and monitoring</td><td>Included in the Cloud license</td><td>Priced with your host</td></tr><tr><td>One-time project</td><td>None</td><td>Depends on the features you replace, data migration, and hosting</td></tr><tr><td>Replacement features</td><td>None</td><td>One extension, service, or custom build per Commerce feature you use</td></tr><tr><td>Search</td><td>Live Search included</td><td>OpenSearch included, or a paid search service</td></tr><tr><td>Upgrades and patches</td><td>Your team or agency</td><td>Your team or agency</td></tr></tbody></table><figcaption class="wp-element-caption">3-year cost lines: stay on Adobe Commerce on Cloud vs downgrade to Magento Open Source</figcaption></figure>



<p class="wp-block-paragraph">The license range comes from our <a href="https://scandiweb.com/blog/magento-pricing/" target="_blank" rel="noopener">Magento pricing guide</a>, which breaks down all seven cost categories of running Magento. It is an estimate from aggregated partner data, because Adobe quotes privately and by GMV.</p>



<p class="wp-block-paragraph">Take a B2C retailer with $5–10 million in annual GMV on Adobe Commerce on Cloud. Partner estimates put that license at about $80,000 a year, or $240,000 over three years. That $240,000 is the ceiling. The downgrade project, the replacements for staging and Live Search, and three years of hosting together have to cost less than that for the move to pay off. The project cost depends on which features you replace, how much data has to migrate, and whether you move hosting, so it has to be priced against your store.</p>



<p class="wp-block-paragraph">scandiweb gives you a detailed quote for the downgrade after a <a href="https://scandiweb.com/contact" target="_blank" rel="noopener">short scoping call</a>.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year.png" alt="Break-even chart: a $240,000 three-year Adobe Commerce Cloud license as the ceiling for project, replacement and hosting costs" class="wp-image-26196" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/adobe-commerce-downgrade-break-even-3-year-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">The 3-year Adobe Commerce license is the ceiling for the downgrade cost</figcaption></figure></div>



<h3 class="wp-block-heading">Where the saving disappears</h3>



<p class="wp-block-paragraph">Four things eat into the saving, and none of them shows up in a license comparison:</p>



<ul class="wp-block-list">
<li>B2B rebuilds: recreating quotes, approval flows, and company accounts as custom work can cost more than three years of license fees for a store that sells mostly to companies.</li>


<li>Running infrastructure: leaving Cloud means someone handles scaling for peak traffic, incidents, and server security, either in-house or through a managed host.</li>


<li>Card data and compliance: Adobe&#8217;s Cloud infrastructure comes with PCI-certified hosting. On your own hosting, keeping the environment in scope for PCI DSS is your job and your host&#8217;s.</li>


<li>Adobe support: escalations to Adobe end with the license, so your agency or team becomes the only line of support.</li>

</ul>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Price the replacement for each Commerce feature you use before you count the saving. One feature with no good extension, usually negotiable quotes or staging, can decide the whole case.</p></div>



<h2 class="wp-block-heading">Who should downgrade Adobe Commerce, and who shouldn&#8217;t</h2>



<p class="wp-block-paragraph">Downgrade Adobe Commerce to Magento Open Source if you sell mostly to consumers, use few Commerce-only features, and have a team or agency that can run hosting and patching. Stay on Adobe Commerce if your B2B sales depend on its native quotes and company accounts, your marketing team relies on staging, or the license is a small share of your total platform cost.</p>



<p class="wp-block-paragraph"><strong>Downgrade to Magento Open Source if:</strong></p>



<ul class="wp-block-list">
<li>You sell mostly to consumers and don&#8217;t use the B2B suite</li>


<li>Your team rarely schedules content or price changes in staging</li>


<li>Your catalog search works well enough on OpenSearch or a search service you&#8217;d pay for anyway</li>


<li>You have an in-house team or agency that already handles <a href="https://scandiweb.com/blog/website-maintenance-cost/">upgrades and security patches</a></li>


<li>The license is one of your three largest platform costs</li>

</ul>



<p class="wp-block-paragraph"><strong>Stay on Adobe Commerce if:</strong></p>



<ul class="wp-block-list">
<li>Your buyers use negotiable quotes, purchase order approvals, or company accounts every day</li>


<li>Your merchandisers schedule campaigns and price changes in staging every week</li>


<li>Live Search and Product Recommendations drive a measurable share of revenue</li>


<li>You have no team to run servers and a CDN outside Adobe&#8217;s Cloud</li>


<li>The renewal is due before the project could finish</li>

</ul>



<p class="wp-block-paragraph">If you land in the middle, there are other options. Moving from Cloud to on-premise keeps the features and lowers the license band. The renewal is also the time to renegotiate your GMV tier. And if the platform itself is the problem, our guide to <a href="https://scandiweb.com/blog/magento-to-shopify-migration/" target="_blank" rel="noopener">Magento to Shopify migration</a> compares that path over three years.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>One true &#8220;stay&#8221; condition can change the answer on its own. Price the replacement for that feature first, before you add up the rest.</p></div>



<h2 class="wp-block-heading">Frequently asked questions about a downgrade from Adobe Commerce</h2>



<h3 class="wp-block-heading">Can you downgrade from Adobe Commerce to Magento Open Source?</h3>



<p class="wp-block-paragraph">Yes. Both editions share the same Magento core, so you can move from Adobe Commerce to Magento Open Source without changing platforms. The project removes the Commerce modules, replaces the Commerce metapackage in Composer, converts the database from the row_id structure back to entity_id, and replaces any Commerce-only features you still need with extensions. It needs a full rehearsal on a copy of production.</p>



<h3 class="wp-block-heading">Do I lose my data if I downgrade Adobe Commerce?</h3>



<p class="wp-block-paragraph">You keep products, categories, customers, orders, and CMS content, as long as the database conversion runs correctly. You lose the data that belongs to Commerce-only features: scheduled staging updates, customer segments, B2B companies and quotes, gift card accounts, reward points, store credit, and returns. Export each of these before the conversion and import them into the replacement modules.</p>



<h3 class="wp-block-heading">What happens to gift card balances, store credit, and reward points?</h3>



<p class="wp-block-paragraph">They are removed with the Adobe Commerce modules, so you have to migrate them. Export each customer&#8217;s balance, install replacement extensions, and import the balances before go-live. Gift cards and store credit are value customers already paid for or were promised, so check the totals before and after the move and keep the export as a record.</p>



<h3 class="wp-block-heading">Is Magento Open Source still supported by Adobe?</h3>



<p class="wp-block-paragraph">Yes. Adobe still releases Magento Open Source, with 2.4.9 out since May 2026, and publishes security patches for it. Support is narrower than for Adobe Commerce: the October 2026 security bulletin offered Open Source patch files only for 2.4.7 and later. Open Source also comes without Adobe&#8217;s ticket support, so your team or agency handles issues directly.</p>



<h3 class="wp-block-heading">How much does Adobe Commerce cost compared to Magento Open Source?</h3>



<p class="wp-block-paragraph">Magento Open Source has no license fee. Adobe doesn&#8217;t publish Adobe Commerce prices, but aggregated partner estimates put the on-premise license at about $22,000 to $125,000 a year and Adobe Commerce on Cloud at about $40,000 to $190,000 a year, scaled by GMV. Hosting, development, extensions, and maintenance apply to both editions.</p>



<h3 class="wp-block-heading">Can I downgrade Magento Enterprise to Community?</h3>



<p class="wp-block-paragraph">Yes. Magento Enterprise Edition is today&#8217;s Adobe Commerce, and Community Edition is today&#8217;s Magento Open Source, so it is the same project under the old names. On Magento 2, you swap the Composer metapackage, convert the database, and replace Enterprise-only features. Magento 1 Enterprise stores have no supported version to move to, because Magento 1 support ended in June 2020.</p>



<h3 class="wp-block-heading">Does Hyvä work on Magento Open Source?</h3>



<p class="wp-block-paragraph">Yes. The Hyvä Theme runs on both Magento Open Source and Adobe Commerce, and it has been free and open source since November 10, 2025. If your Adobe Commerce store already uses Hyvä, the storefront carries over in a downgrade. Check any Hyvä compatibility modules for Commerce-only features you&#8217;re removing, such as gift cards or B2B.</p>



<h3 class="wp-block-heading">Is ACCS cheaper than Adobe Commerce on Cloud?</h3>



<p class="wp-block-paragraph">Not always, and moving to it costs more than a downgrade. ACCS replaces hosting, upgrades, and the license with one subscription, which removes upgrade projects. Getting there means rebuilding the storefront on Edge Delivery Services and moving customizations to App Builder, and Adobe caps a subscription at 250,000 SKUs. Compare that one-time cost with several years of upgrade spending first.</p>



<h2 class="wp-block-heading">Decide on an Adobe Commerce downgrade before the renewal date</h2>



<p class="wp-block-paragraph">A downgrade from Adobe Commerce to Magento Open Source pays off when the license buys features your team doesn&#8217;t use. Start with the inventory: every Commerce-only feature with live data behind it, and what replacing it would cost. Then set the one-time project and the new running costs against three years of fees, and leave enough time for a database rehearsal before the renewal is due.</p>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Can you downgrade from Adobe Commerce to Magento Open Source?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. Both editions share the same Magento core, so you can move from Adobe Commerce to Magento Open Source without changing platforms. The project removes the Commerce modules, replaces the Commerce metapackage in Composer, converts the database from the row_id structure back to entity_id, and replaces any Commerce-only features you still need with extensions. It needs a full rehearsal on a copy of production."}}, {"@type": "Question", "name": "Do I lose my data if I downgrade Adobe Commerce?", "acceptedAnswer": {"@type": "Answer", "text": "You keep products, categories, customers, orders, and CMS content, as long as the database conversion runs correctly. You lose the data that belongs to Commerce-only features: scheduled staging updates, customer segments, B2B companies and quotes, gift card accounts, reward points, store credit, and returns. Export each of these before the conversion and import them into the replacement modules."}}, {"@type": "Question", "name": "What happens to gift card balances, store credit, and reward points?", "acceptedAnswer": {"@type": "Answer", "text": "They are removed with the Adobe Commerce modules, so you have to migrate them. Export each customer's balance, install replacement extensions, and import the balances before go-live. Gift cards and store credit are value customers already paid for or were promised, so check the totals before and after the move and keep the export as a record."}}, {"@type": "Question", "name": "Is Magento Open Source still supported by Adobe?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. Adobe still releases Magento Open Source, with 2.4.9 out since May 2026, and publishes security patches for it. Support is narrower than for Adobe Commerce: the October 2026 security bulletin offered Open Source patch files only for 2.4.7 and later. Open Source also comes without Adobe's ticket support, so your team or agency handles issues directly."}}, {"@type": "Question", "name": "How much does Adobe Commerce cost compared to Magento Open Source?", "acceptedAnswer": {"@type": "Answer", "text": "Magento Open Source has no license fee. Adobe doesn't publish Adobe Commerce prices, but aggregated partner estimates put the on-premise license at about $22,000 to $125,000 a year and Adobe Commerce on Cloud at about $40,000 to $190,000 a year, scaled by GMV. Hosting, development, extensions, and maintenance apply to both editions."}}, {"@type": "Question", "name": "Can I downgrade Magento Enterprise to Community?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. Magento Enterprise Edition is today's Adobe Commerce, and Community Edition is today's Magento Open Source, so it is the same project under the old names. On Magento 2, you swap the Composer metapackage, convert the database, and replace Enterprise-only features. Magento 1 Enterprise stores have no supported version to move to, because Magento 1 support ended in June 2020."}}, {"@type": "Question", "name": "Does Hyvä work on Magento Open Source?", "acceptedAnswer": {"@type": "Answer", "text": "Yes. The Hyvä Theme runs on both Magento Open Source and Adobe Commerce, and it has been free and open source since November 10, 2025. If your Adobe Commerce store already uses Hyvä, the storefront carries over in a downgrade. Check any Hyvä compatibility modules for Commerce-only features you're removing, such as gift cards or B2B."}}, {"@type": "Question", "name": "Is ACCS cheaper than Adobe Commerce on Cloud?", "acceptedAnswer": {"@type": "Answer", "text": "Not always, and moving to it costs more than a downgrade. ACCS replaces hosting, upgrades, and the license with one subscription, which removes upgrade projects. Getting there means rebuilding the storefront on Edge Delivery Services and moving customizations to App Builder, and Adobe caps a subscription at 250,000 SKUs. Compare that one-time cost with several years of upgrade spending first."}}]}</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em>Weighing a downgrade before your next Adobe Commerce renewal? </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>Send us your feature list and renewal date</em></a><em>, and after a short scoping call we&#x27;ll send a detailed quote, with what you&#x27;d lose and what you&#x27;d keep.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/downgrade-adobe-commerce-to-magento-open-source/">Downgrade Adobe Commerce to Magento Open Source: What You Lose and What You Save</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Three Way Matching: How AI Matches 87% of Invoices Without a Human</title>
		<link>https://scandiweb.com/blog/three-way-matching/</link>
		
		<dc:creator><![CDATA[Glebs Vrevsky]]></dc:creator>
		<pubDate>Fri, 23 Oct 2026 10:48:00 +0000</pubDate>
				<category><![CDATA[AI]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[AI agents]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[B2B eCommerce]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[OperaLayer]]></category>
		<category><![CDATA[three way matching]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26043</guid>

					<description><![CDATA[<p>Three way matching checks each invoice against the PO and delivery note. See how a wholesaler made AI match 87% of them on its own.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/three-way-matching/">Three Way Matching: How AI Matches 87% of Invoices Without a Human</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-Tw3mB wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/solutions/operalayer" target=_blank >
        OperaLayer
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/services/ai" target=_blank >
        AI Strategy Consulting
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/integrations" target=_blank >
        eCommerce Integrations
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">If two people on your team start every morning matching supplier invoices to purchase orders, you already know what three way matching costs when it&#8217;s done by hand. Every invoice gets checked against the order and the delivery note, line by line, before anyone pays it. The check itself is simple, but with dozens of suppliers whose documents never look the same twice, it fills the morning.</p>



<p class="wp-block-paragraph">The numbers show how common this is. In Ardent Partners&#8217; State of ePayables 2025, a survey of 204 accounts payable teams, 18.4% of invoices hit an exception, and only 35.4% were processed straight through without anyone touching them.</p>



<p class="wp-block-paragraph">This guide explains what three way matching is, how it differs from two way and four way matching, and why it breaks down for wholesalers. Then it walks through how AI does the matching, using one of our own rollouts: a Baltic electrical wholesaler with 100+ suppliers that now matches 87% of its invoices with nobody touching them.</p>



<h2 class="wp-block-heading">What is three way matching?</h2>



<p class="wp-block-paragraph">Three way matching is an accounts payable control that checks a supplier invoice against two other documents before it is paid: the purchase order and the goods receipt, usually based on the supplier&#8217;s delivery note. If the items, quantities, and prices agree within set tolerances, the invoice is approved for payment. If they don&#8217;t, it goes to a person as an exception.</p>



<p class="wp-block-paragraph">Each document answers a different question:</p>



<ul class="wp-block-list">
<li><strong>The purchase order</strong> shows what you agreed to buy, at what price.</li>


<li><strong>The goods receipt or delivery note</strong> shows what actually arrived. For cross-border road freight, the CMR consignment note is often part of that proof.</li>


<li><strong>The invoice</strong> shows what the supplier wants to be paid for.</li>

</ul>



<p class="wp-block-paragraph">A three way match catches the mistakes that cost money quietly: paying for 100 cable reels when 80 arrived, paying last quarter&#8217;s price after a discount was agreed, or paying the same invoice twice. Ardent&#8217;s benchmark shows how much of the work starts from orders: 65.4% of invoices are linked to a purchase order, and those are the invoices this check can cover.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents.png" alt="Three way matching diagram comparing a purchase order, delivery note, and invoice before posting or flagging an exception" class="wp-image-26038" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-documents-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Three way matching compares the order, the delivery, and the invoice line by line</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>The rule is easy to write down. The work is in finding the right order and the right delivery for every invoice line, and that is the part people spend their mornings on.</p></div>



<h2 class="wp-block-heading">Two way vs three way vs four way matching</h2>



<p class="wp-block-paragraph">Two way matching compares only the invoice and the purchase order. Three way matching adds proof of delivery. Four way matching adds an inspection or quality check on top. The more documents you compare, the more errors you catch, and the more exceptions you create when one document is missing or late.</p>



<figure class="wp-block-table"><table><thead><tr><th></th><th>Two way matching</th><th>Three way matching</th><th>Four way matching</th></tr></thead><tbody><tr><td>Documents compared</td><td>Invoice + purchase order</td><td>Invoice + purchase order + goods receipt</td><td>Invoice + purchase order + goods receipt + inspection</td></tr><tr><td>Catches</td><td>Wrong prices, items not ordered</td><td>Wrong prices, short or missing deliveries</td><td>All of these, plus goods that failed inspection</td></tr><tr><td>Typical use</td><td>Services, subscriptions, low-value orders</td><td>Physical goods, most wholesale and distribution</td><td>Regulated or high-value goods, quality-critical parts</td></tr><tr><td>Main risk</td><td>Paying for goods that never arrived</td><td>Exceptions when the receipt is missing or late</td><td>Slow approvals waiting for inspection results</td></tr></tbody></table><figcaption class="wp-element-caption">Two way vs three way vs four way matching</figcaption></figure>



<p class="wp-block-paragraph">For a distributor or wholesaler buying physical stock, three way matching is the sensible default. Two way matching misses short deliveries, and those are the most common problem when goods arrive by pallet from many suppliers.</p>



<h2 class="wp-block-heading">Why three way matching breaks down for wholesalers</h2>



<p class="wp-block-paragraph">The documents rarely line up on their own. A supplier invoice describes the goods in the supplier&#8217;s words, and your ERP describes them in yours. Most of the time in manual matching goes into translating between the two.</p>



<p class="wp-block-paragraph">These are the exceptions we see most often:</p>



<ul class="wp-block-list">
<li><strong>Item codes don&#8217;t match.</strong> The supplier invoices &#8220;W-5G4-H07RNF&#8221; and your order says &#8220;CC-CBL-5X4.&#8221; A person has to know they are the same cable.</li>


<li><strong>Units differ.</strong> You ordered 10 boxes, and the supplier invoices 500 pieces.</li>


<li><strong>Deliveries arrive in parts.</strong> One order is delivered on three delivery notes and billed on two invoices.</li>


<li><strong>Prices changed.</strong> A discount agreed by phone never reached the purchase order.</li>


<li><strong>Every supplier has its own layout.</strong> With 100 suppliers, you get roughly 100 invoice formats, in different languages, as PDFs, scans, and phone photos.</li>


<li><strong>The receipt is missing.</strong> The goods arrived, but the warehouse hasn&#8217;t booked the delivery note yet, so the match can&#8217;t finish.</li>

</ul>



<p class="wp-block-paragraph">Microsoft Dynamics NAV, like most ERPs, stores purchase orders and posts invoices. It doesn&#8217;t read 100 different PDF layouts or match supplier lines to your items, so people do both. According to Ardent, only 51.4% of invoices reach accounts payable teams electronically, which means about half still have to be read before anyone can match them.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Exceptions are mostly translation problems. The supplier and your ERP describe the same goods differently, and someone on your team holds the dictionary in their head.</p></div>



<h2 class="wp-block-heading">How AI three way matching works</h2>



<p class="wp-block-paragraph">AI invoice processing for three way matching follows six steps: read every document, find the matching order and delivery, match each line, score how confident the match is, post the result to the ERP, and learn only from corrections that repeat. People review only the invoices the software is unsure about.</p>



<p class="wp-block-paragraph">This is the sequence we built for the wholesaler with <a href="https://scandiweb.com/solutions/operalayer" target="_blank" rel="noopener">OperaLayer</a>, our product for the work that falls between business systems.</p>



<h3 class="wp-block-heading">1. Read every document, in any layout</h3>



<p class="wp-block-paragraph">The software extracts the supplier, invoice number, dates, lines, quantities, units, and prices from each PDF, scan, or photo, and gives every field a confidence score. Invoices, delivery notes, and CMR documents all go through the same reader, so the delivery evidence is available when the invoice arrives.</p>



<h3 class="wp-block-heading">2. Find the order and the delivery</h3>



<p class="wp-block-paragraph">Each invoice is linked to its purchase order in the ERP and to the delivery notes booked against it. When one order spans several deliveries or invoices, the software keeps track of what has already been received and billed, so a partial delivery doesn&#8217;t look like an error.</p>



<h3 class="wp-block-heading">3. Match line by line: barcode, SKU, alias, then fuzzy</h3>



<p class="wp-block-paragraph">Line matching is where most of the manual time goes, so it runs in a fixed order, from the most reliable signal to the least:</p>



<ol class="wp-block-list">
<li><strong>Barcode.</strong> If the supplier line carries an EAN or GTIN that exists in your item data, that is the match.</li>


<li><strong>SKU.</strong> The supplier&#8217;s item number is compared with your item numbers and the supplier item numbers already stored in the ERP.</li>


<li><strong>Known alias.</strong> A table of supplier codes your team has already confirmed, such as &#8220;W-5G4-H07RNF is our CC-CBL-5X4.&#8221;</li>


<li><strong>Fuzzy match.</strong> If nothing else works, the description, unit, and price are compared with open order lines to suggest the closest candidate.</li>

</ol>



<p class="wp-block-paragraph">A match from step 1 is almost always right. A match from step 4 is a suggestion and counts for less in the confidence score.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order.png" alt="Four-step line matching order for an invoice line, from barcode to SKU to known alias to fuzzy match, with confidence levels" class="wp-image-26039" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-line-match-order-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Each invoice line is matched by barcode first and by fuzzy description last</figcaption></figure></div>



<h3 class="wp-block-heading">4. Score confidence and send only exceptions to people</h3>



<p class="wp-block-paragraph">Every invoice gets an overall confidence score built from the extraction, the line matches, and the quantity and price checks. Above the threshold, it goes through. Below it, it lands in a review queue with the reason shown: an unknown item code, a price above tolerance, or a delivery not yet booked. The reviewer fixes one line instead of rechecking the whole invoice.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review.png" alt="Invoice review queue with confidence scores, auto-matched invoices posted and two exceptions flagged with their reasons" class="wp-image-26040" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-exception-review-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Only low-confidence invoices reach the review queue, each with its reason shown</figcaption></figure></div>



<h3 class="wp-block-heading">5. Send matched invoices to the ERP</h3>



<p class="wp-block-paragraph">Purchase orders are read from the ERP, and matched invoices go back to it as a batch ready to post. For the wholesaler, that means Dynamics NAV: purchase orders come in, and approved invoices go out as a Navision-ready journal batch. The ERP stays the system of record, and nothing is migrated.</p>



<h3 class="wp-block-heading">6. Learn from corrections, but only when they repeat</h3>



<p class="wp-block-paragraph">A reviewer&#8217;s correction becomes a standing rule only after the same correction recurs, so one mistaken click can&#8217;t change how every future invoice from that supplier is matched.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Put exact signals first and fuzzy guesses last. That order keeps the auto-matched share high without letting weak matches through to the ERP.</p></div>



<h2 class="wp-block-heading">Case: a Baltic electrical wholesaler with 100+ suppliers</h2>



<p class="wp-block-paragraph">The wholesaler buys from about 100 suppliers and runs on Microsoft Dynamics NAV. Before the project, two people checked every supplier invoice against orders by hand, every morning, together with the delivery notes and CMR documents. NAV could store the orders, but it couldn&#8217;t read 100 different PDF formats or match lines to purchase orders.</p>



<p class="wp-block-paragraph">We built the matching app on OperaLayer, on top of NAV. A first working version ran on the wholesaler&#8217;s own documents in about two weeks. As we wrote in <a href="https://scandiweb.com/blog/why-custom-software-is-becoming-cheaper-than-saas/" target="_blank" rel="noopener">why custom software is becoming cheaper than SaaS</a>, AI has changed how fast software can be built around a single workflow: work that once took years can now take weeks.</p>



<p class="wp-block-paragraph">Earning the team&#8217;s trust took another month. The people who had matched invoices for years needed to see the software get the hard cases right before they let it send anything to NAV. During that month, they checked its suggestions against their own work and corrected the mistakes. Corrections that came up again turned into rules. Those were the same people who knew which supplier codes meant what, and their knowledge went into the alias table.</p>



<p class="wp-block-paragraph">The results:</p>



<ul class="wp-block-list">
<li><strong>87% of invoices are matched with nobody touching them.</strong> People see the rest.</li>


<li><strong>Around 100 supplier formats</strong> are read without templates.</li>


<li><strong>About 2,000 documents a month</strong> go through the system: invoices, delivery notes, and CMR documents.</li>

</ul>



<p class="wp-block-paragraph">The next phase is scoped: supplier documents will come in straight from email instead of being uploaded, and approved invoices will go into NAV through its API instead of an export batch.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2.png" alt="OperaLayer AI invoice matching screen with an 87% auto-match rate, line-by-line PO matching and an exception queue" class="wp-image-26283" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/three-way-matching-operalayer-invoice-matching-v2-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">The wholesaler&#8217;s invoice matching in OperaLayer: 87% auto-matched across about 100 supplier formats</figcaption></figure></div>



<p class="wp-block-paragraph">The same approach works on other old systems. When LegacyBridge joined OperaLayer, its first IBM i (AS/400) workflow went live in two weeks and now processes more than 10,000 documents a month, each in under 10 seconds instead of 10 to 15 minutes by hand. The details are in our post on <a href="https://scandiweb.com/blog/legacybridge-joins-operalayer/" target="_blank" rel="noopener">LegacyBridge joining OperaLayer</a>.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Building the first version was the short part. The month spent earning the team&#8217;s trust is what turned it into something they rely on, so plan for that month from the start.</p></div>



<h2 class="wp-block-heading">Why seller-side automation comes before buyer-side AI agents</h2>



<p class="wp-block-paragraph">Most talk about AI agents in B2B is about the buyer&#8217;s side: an agent that searches suppliers, compares prices, and places the order. Those agents still struggle with B2B basics such as contract prices and purchase orders, as we cover in our <a href="https://scandiweb.com/blog/b2b-ecommerce-trends/" target="_blank" rel="noopener">B2B eCommerce trends for 2027</a> and our guide to the <a href="https://scandiweb.com/blog/universal-commerce-protocol/" target="_blank" rel="noopener">Universal Commerce Protocol</a>.</p>



<p class="wp-block-paragraph">The seller&#8217;s own side is ready now. Invoice matching repeats every day and follows rules your team can already write down, using data the ERP holds. The outcome is easy to measure: the share of invoices nobody touched. That makes it a good first job for AI inside a distributor or wholesaler.</p>



<p class="wp-block-paragraph">The same pattern covers the other paperwork that arrives in many formats:</p>



<ul class="wp-block-list">
<li><strong>Purchase order automation</strong> on the buying side: reading order confirmations and checking them against your POs before the goods arrive.</li>


<li><strong>Sales order automation</strong> on the selling side: customer orders that arrive by email or PDF, read and checked against price lists and stock.</li>


<li><strong>Order entry automation</strong> for the ERP: entering what was read into the right screens, with a person approving anything unusual.</li>

</ul>



<p class="wp-block-paragraph">AI order entry and invoice matching use the same parts: a reader, a matcher, a confidence score, and a review queue. Once the first one is live, the next one starts with most of the work done.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>The first AI agents worth building work for your own team. Invoice matching runs on your data, and one number tells you whether it works.</p></div>



<h2 class="wp-block-heading">How to prepare for automated invoice matching</h2>



<p class="wp-block-paragraph">You don&#8217;t need clean data to start, but a few decisions speed up the first weeks. Collect these before the project begins:</p>



<ul class="wp-block-list">
<li><strong>Tolerances.</strong> How far can price and quantity differ before an invoice becomes an exception? Write the rule down, per supplier if needed.</li>


<li><strong>A sample of real documents.</strong> A month of invoices, delivery notes, and CMR documents from your largest and messiest suppliers.</li>


<li><strong>Your alias knowledge.</strong> The supplier codes your team already translates in their heads. Even a rough spreadsheet saves weeks.</li>


<li><strong>ERP access.</strong> Read access to purchase orders and receipts, and a way to post invoices back. For Dynamics NAV, plan around the <a href="https://scandiweb.com/blog/dynamics-nav-to-business-central-ecommerce/" target="_blank" rel="noopener">move to Business Central</a>, and see our guide to <a href="https://scandiweb.com/blog/ecommerce-erp-integration/" target="_blank" rel="noopener">ERP integration</a> for the options.</li>


<li><strong>One owner.</strong> Someone from accounts payable or purchasing who reviews exceptions in the first month and decides which corrections become rules.</li>

</ul>



<p class="wp-block-paragraph">E-invoicing mandates will make part of this easier. Belgium has required structured B2B e-invoices since January 2026, France started in September 2026, and Germany requires larger companies to issue them from January 2027, as our guide to the <a href="https://scandiweb.com/blog/digital-product-passport/" target="_blank" rel="noopener">digital product passport</a> lists. Structured invoices remove the reading step, but the line matching and the exceptions stay, and so do suppliers from outside those countries.</p>



<h2 class="wp-block-heading">FAQ about three way matching</h2>



<h3 class="wp-block-heading">What is the difference between two way and three way matching?</h3>



<p class="wp-block-paragraph">Two way matching compares an invoice with the purchase order: the items and prices must agree. Three way matching adds the goods receipt or delivery note, so you only pay for what actually arrived. It catches short and missing deliveries that two way matching misses, which is why most wholesalers and distributors use it for physical goods.</p>



<h3 class="wp-block-heading">What are common three way matching errors?</h3>



<p class="wp-block-paragraph">The most common three way matching errors are supplier item codes that differ from yours, different units of measure, partial deliveries spread across several delivery notes, prices that changed after the order, missing goods receipts, and duplicate invoices. Most of them are translation problems between the supplier&#8217;s documents and your ERP, which is why a confirmed alias table removes so many exceptions.</p>



<h3 class="wp-block-heading">Can AI do three way matching?</h3>



<p class="wp-block-paragraph">Yes. AI reads invoices, delivery notes, and orders in any layout, matches each line to your items, and scores how confident each match is. Invoices above the confidence threshold go to the ERP without a manual check, and the rest go to a person with the reason shown. At one Baltic electrical wholesaler, this matches 87% of invoices with nobody touching them.</p>



<h3 class="wp-block-heading">What auto-match rate is realistic for invoice matching automation?</h3>



<p class="wp-block-paragraph">It depends on your suppliers and data, but well above the market average is realistic. Ardent Partners&#8217; 2025 benchmark puts straight-through processing at 35.4% of invoices on average. A wholesaler we work with reached 87% across about 100 supplier formats. Expect a lower rate in the first weeks, rising as repeated corrections become rules.</p>



<h3 class="wp-block-heading">Does AI invoice processing replace the accounts payable team?</h3>



<p class="wp-block-paragraph">No. It removes the routine matching and leaves the decisions to people. The team reviews exceptions, approves anything unusual, and confirms which corrections become rules. In our wholesaler rollout, the people who used to match every invoice by hand now review only the exceptions, and their knowledge of supplier codes is what made the high match rate possible.</p>



<h3 class="wp-block-heading">How long does it take to automate three way matching?</h3>



<p class="wp-block-paragraph">With an operational layer on top of your existing ERP, a first working version can run on your own documents in about two weeks. Plan for roughly another month of side-by-side review before your team trusts it to post invoices on its own. The ERP stays in place, so there is no migration to schedule.</p>



<h2 class="wp-block-heading">Three way matching works when your team trusts it</h2>



<p class="wp-block-paragraph">Three way matching is a simple control that takes hours when the documents come in 100 layouts and the item codes don&#8217;t line up. AI can now read the documents and match the lines, then send people only the invoices that need a decision. At our wholesaler, the first version took about two weeks. The month of side-by-side review that followed is what made the team trust it to run on its own.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em>Still matching supplier invoices by hand every morning? </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>Tell us which documents your team checks</em></a><em>, and we&#x27;ll show you what automated matching would look like on your own data.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/three-way-matching/">Three Way Matching: How AI Matches 87% of Invoices Without a Human</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Faceted Navigation SEO: Which Filter Pages to Index and Which to Block</title>
		<link>https://scandiweb.com/blog/faceted-navigation-seo/</link>
		
		<dc:creator><![CDATA[Lina Ivanova]]></dc:creator>
		<pubDate>Thu, 22 Oct 2026 14:00:00 +0000</pubDate>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[canonical tag]]></category>
		<category><![CDATA[crawl budget]]></category>
		<category><![CDATA[eCommerce SEO]]></category>
		<category><![CDATA[faceted navigation]]></category>
		<category><![CDATA[indexing]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[robotstxt]]></category>
		<category><![CDATA[Shopify]]></category>
		<category><![CDATA[technical SEO]]></category>
		<guid isPermaLink="false">https://scandiweb.com/blog/?p=26193</guid>

					<description><![CDATA[<p>Faceted navigation SEO for eCommerce: which filter pages to index, which to block, and how to set both up on Magento and Shopify.</p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/faceted-navigation-seo/">Faceted Navigation SEO: Which Filter Pages to Index and Which to Block</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="lazyblock-related-FcNav wp-block-lazyblock-related"><div class="related-services">
  <h3>Related Services</h3>
  <ul>
    
    <li>
      <a  href="https://scandiweb.com/seo-services" target=_blank >
        eCommerce SEO
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/magento-seo-services" target=_blank >
        Magento SEO
      </a>
    </li>
    
    <li>
      <a  href="https://scandiweb.com/shopify-services/development" target=_blank >
        Shopify Development
      </a>
    </li>
    
  </ul>
</div>
</div>


<p class="wp-block-paragraph">If your developer says the filter pages are wasting crawl budget and someone in marketing wants every filtered URL indexed for long-tail traffic, you&#8217;re probably waiting to find out which of them is right. Faceted navigation SEO usually gets argued as a choice between those two camps: block every filter URL, or let Google have them all.</p>



<p class="wp-block-paragraph">Neither works on a real catalog. One category with six filters can produce over half a million URL combinations, and almost none of them match anything a shopper types. A few do, and &#8220;black leather ankle boots&#8221; alone gets about 1,200 searches a month in the US. The job is to find those few, give them proper pages, and keep Google away from everything else, on Magento, Shopify, or any other platform.</p>



<h2 class="wp-block-heading">What faceted navigation SEO decides</h2>



<p class="wp-block-paragraph">Faceted navigation SEO, sometimes called faceted search SEO, is the set of rules that decides which filter combinations on your category pages search engines may crawl and which they may index. Filters for color, size, brand, or price each add a parameter or path to the URL, and filters combine. The SEO work is choosing the small set of filtered pages that deserve to rank and keeping crawlers out of the rest.</p>



<p class="wp-block-paragraph">Those are two separate decisions. Crawling is whether Googlebot fetches the URL at all. Indexing is whether the page can appear in search results. robots.txt controls the first, while canonical tags and noindex act on the second, and mixing them up causes many of the problems we find in store audits.</p>



<p class="wp-block-paragraph">The scale is what makes it urgent. Take one category with six filters: 12 colors, 10 sizes, 20 brands, 5 price bands, 6 materials, and 4 sort orders. If a shopper can pick one value per filter, that category alone has about 630,000 possible URLs. Allow two colors at once, or let the parameters appear in any order, and the number keeps growing. Google&#8217;s own guidance on faceted navigation says filters can generate &#8220;infinite URL spaces&#8221;, and that crawlers often fetch many of these URLs before they recognize them as low value.</p>



<h2 class="wp-block-heading">Crawl waste vs long-tail opportunity</h2>



<p class="wp-block-paragraph">Both arguments in your team are about real effects. Filter URLs do use up crawling that could go to new products, and some filter combinations do match searches your main categories can&#8217;t win. The answer is to measure each side on your own store before choosing.</p>



<h3 class="wp-block-heading">Are filter pages wasting crawl budget?</h3>



<p class="wp-block-paragraph">They can be, once enough filter URLs are open to crawlers. Google&#8217;s crawl budget guide is written for sites with more than a million pages that change weekly, sites with 10,000+ pages that change daily, and sites with many URLs in &#8220;Discovered – currently not indexed&#8221;. A store with layered navigation can land in that last group with only a few thousand products, because the filters multiply the URL count far past the catalog size.</p>



<p class="wp-block-paragraph">Three checks tell you whether it&#8217;s happening on your store:</p>



<ol class="wp-block-list">
<li>In Search Console, open Settings and then the Crawl stats report. Compare the number of daily requests with the number of products and categories you sell, and look for filter parameters in the example URLs under each response type</li>


<li>In the Page indexing report, a large and growing &#8220;Discovered – currently not indexed&#8221; count full of filter URLs means Google keeps putting off crawling them. Our guide to <a href="https://scandiweb.com/blog/duplicate-without-user-selected-canonical/" target="_blank" rel="noopener">Search Console statuses like duplicate without user-selected canonical</a> explains how to read each status</li>


<li>In your server logs, group Googlebot requests by URL pattern. If filter and sort URLs take a bigger share of requests than product pages, crawling is going to the wrong place</li>

</ol>



<p class="wp-block-paragraph">The cost shows up as slower discovery. New products and price changes take longer to reach search, because Googlebot is busy with URLs like ?color=black&amp;size=9&amp;sort=price_asc.</p>



<h3 class="wp-block-heading">Where the long-tail demand is</h3>



<p class="wp-block-paragraph">The opportunity is also real, but it shrinks fast as filters stack up. Here is the US search volume ladder for one footwear category, from Ahrefs in October 2026:</p>



<ul class="wp-block-list">
<li>ankle boots: 27,000 searches a month</li>


<li>black ankle boots: 5,400</li>


<li>black leather ankle boots: 1,200</li>


<li>black leather ankle boots size 8: 0</li>

</ul>



<p class="wp-block-paragraph">The same pattern repeats in other categories. &#8220;Mens linen shirts&#8221; gets 8,200 searches and &#8220;blue linen shirt men&#8221; gets 300. &#8220;Green velvet sofa&#8221; gets 3,300. One attribute on top of a category often carries real demand, a second one sometimes does, and size, price, or availability on top of that almost never does.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder.png" alt="Bar chart of faceted navigation SEO demand: ankle boots 27,000, black 5,400, black leather 1,200, plus size 8 zero searches" class="wp-image-26189" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-search-demand-ladder-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Search demand drops sharply as filters stack on a category page</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>The two camps are usually arguing about different URLs. Crawl waste comes from deep combinations nobody searches for, and the long-tail value comes from shallow ones, so one rule can satisfy both.</p></div>



<h2 class="wp-block-heading">The decision rule: which filter combinations deserve an indexable URL</h2>



<p class="wp-block-paragraph">A filter combination deserves an indexable URL when people search for it as a phrase, the parent category doesn&#8217;t already answer that search, enough products stay on the page, it adds no more than one or two filters to the category, and you can give it a stable page of its own. Every combination that fails any of these tests stays out of the index, and most should stay out of the crawl.</p>



<p class="wp-block-paragraph">Run each candidate through the five tests in order. The first two decide most cases.</p>



<ol class="wp-block-list">
<li>Search demand: check the phrase a shopper would type, such as &#8220;black leather ankle boots&#8221;, in a keyword tool for your main market. Pick one threshold for the whole catalog, for example 50 searches a month, and apply it the same way to every candidate</li>


<li>Different intent from the parent: someone searching &#8220;green velvet sofa&#8221; wants green velvet sofas and would be let down by the full sofa category. Someone searching &#8220;sofas under $1,000&#8221; is usually happy on the sofa category with a price filter. Color, material, style, brand, and use case tend to pass. Size, price, and availability tend to fail</li>


<li>Enough products, consistently: the page needs enough products to fill at least the first screen, in a range that doesn&#8217;t empty out every few weeks. A filter page that drops to zero products turns into a soft 404</li>


<li>One or two filters deep: a category plus one attribute, or plus two at most, like brand and type. Three or more filters almost never pass test 1</li>


<li>A stable page you can own: one clean URL, its own title, H1, and short intro copy, and links from the parent category. If your platform can only produce the combination as a parameter URL whose order changes, build a dedicated page for it instead</li>

</ol>



<p class="wp-block-paragraph">Everything that fails goes into one of two groups. Single filters with no demand can stay crawlable with a canonical tag pointing to the category, as long as their number stays small. Deeper combinations, sort orders, page-size options, and price ranges should be blocked from crawling.</p>



<figure class="wp-block-table"><table><thead><tr><th>Filter type</th><th>Example</th><th>What to do</th></tr></thead><tbody><tr><td>Category plus one high-demand attribute</td><td>black leather ankle boots</td><td>Give it its own indexable page</td></tr><tr><td>Category plus two attributes with demand</td><td>Nike running shoes for women</td><td>Own page, only if it passes all five tests</td></tr><tr><td>Single filter with no search demand</td><td>in stock only, 4 stars and up</td><td>Canonical to the category, or block</td></tr><tr><td>Two or more filters with no demand</td><td>black, size 8, under $100</td><td>Block in robots.txt</td></tr><tr><td>Sort order, page size, grid or list view</td><td>price low to high, 48 per page</td><td>Block in robots.txt</td></tr><tr><td>Combination with no products</td><td>red boots in size 15</td><td>Return a 404</td></tr><tr><td>Internal search results</td><td>/search?q=boots</td><td>Block in robots.txt</td></tr></tbody></table><figcaption class="wp-element-caption">Faceted navigation SEO decision table: what to do with each type of filter URL</figcaption></figure>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow.png" alt="Decision flow for faceted navigation SEO with five tests leading to index, canonical to category, or block in robots.txt" class="wp-image-26190" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-decision-rule-flow-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Five tests decide which filter combinations get an indexable URL</figcaption></figure></div>



<h3 class="wp-block-heading">Should filtered URLs be indexed?</h3>



<p class="wp-block-paragraph">Only the few that pass all five tests, and usually as dedicated pages. Next to the number of possible filter URLs, that list is short. Leaving the rest out of the index doesn&#8217;t cost traffic, because nobody searches for them, and it keeps the category pages as the clear target for their head terms. Our <a href="https://scandiweb.com/blog/duplicate-content-seo-ecommerce-complete-guide/" target="_blank" rel="noopener">duplicate content guide</a> covers what happens when thousands of near-identical filter pages compete with the category instead.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Write the list of indexable combinations down and give it an owner. Without a list, every new filter the merchandising team adds becomes a crawl and index decision that nobody made.</p></div>



<h2 class="wp-block-heading">Index, noindex, canonical or robots.txt: what each does to filter URLs</h2>



<p class="wp-block-paragraph">Use robots.txt to stop crawling of filter URLs you never want in search, a canonical tag for small sets of single-filter pages that should pass their signals to the category, and a self-referencing canonical on the pages you chose to index. Noindex is rarely the right tool for faceted navigation, because Google still has to crawl a page to see the tag.</p>



<figure class="wp-block-table"><table><thead><tr><th>Method</th><th>Stops crawling</th><th>Stops indexing</th><th>Passes signals to the category</th><th>Best use</th></tr></thead><tbody><tr><td>robots.txt disallow</td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">Generally no</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td><td>Deep combinations, sort and view parameters</td></tr><tr><td>Canonical tag to the category</td><td>Only over time</td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Likely yes</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td><td>A small set of single-filter URLs</td></tr><tr><td>Meta robots noindex</td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td><td>Rarely, for pages that must stay crawlable</td></tr><tr><td>Nofollow on filter links</td><td>Only if every link has it</td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td><td>A support measure, never the main control</td></tr><tr><td>404 for empty combinations</td><td>Over time</td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td><td>Filters that return no products</td></tr><tr><td>Filters without a URL change</td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#e7e9f8;color:#3f4aaf;border-radius:4px;font-weight:600;">Yes</span></td><td><span style="display:inline-block;padding:4px 8px;background-color:#d4edda;color:#1e7e34;border-radius:4px;font-weight:600;">No</span></td><td>Facets you never want as pages</td></tr></tbody></table><figcaption class="wp-element-caption">What robots.txt, canonical tags, noindex and other methods do to filter URLs</figcaption></figure>



<p class="wp-block-paragraph">A few details from Google&#8217;s documentation matter here. A URL blocked in robots.txt can still be indexed without its content if other pages link to it. Google says a canonical tag on filter URLs may reduce crawling of them over time, but it calls robots.txt the more effective long-term control. Its crawl budget guide is direct about noindex: Google &#8220;will still request, but then drop the page&#8221;, so noindex saves no crawling at all.</p>



<h3 class="wp-block-heading">Combinations that send mixed signals</h3>



<p class="wp-block-paragraph">A broken faceted navigation setup often has the right tools in the wrong combination.</p>



<ul class="wp-block-list">
<li>A robots.txt block plus noindex: Google can&#8217;t crawl the page, so it never sees the noindex</li>


<li>Noindex plus a canonical to the category: one tag says drop the page, the other says merge it into the category. Google advises against noindex for canonicalization, so use the canonical alone</li>


<li>A canonical to the category on a filter URL that&#8217;s in your sitemap or main menu: your internal signals point at the filter URL while the tag points away from it, and Google may ignore the tag</li>


<li>Blocking filter URLs that are already indexed: they can stay in the index without content. If you need them gone first, allow crawling with noindex until they drop out, then add the robots.txt rule</li>

</ul>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Once a filter URL is blocked in robots.txt, its canonical and noindex tags have no effect, because Google never reads the page. Decide crawling first, then indexing.</p></div>



<h2 class="wp-block-heading">How to build a filter page worth indexing</h2>



<p class="wp-block-paragraph">A filter combination that passed the five tests needs to work like a real category page. Otherwise Google may treat it as a near-duplicate of the parent and index the parent instead.</p>



<ol class="wp-block-list">
<li>A clean, stable URL. A path such as /boots/black-leather-ankle-boots is easiest to keep stable. If you use parameters, keep one fixed order and the standard &#8220;&amp;&#8221; separator, as Google recommends</li>


<li>A self-referencing canonical tag, never one pointing to the parent category</li>


<li>Its own title, H1, and meta description built on the phrase people search, such as &#8220;Black Leather Ankle Boots&#8221;</li>


<li>A short intro that helps shoppers choose between the products shown, with a few sentences on materials, fit, or care</li>


<li>Internal links from the parent category, for example a row of popular styles above or below the product grid, plus breadcrumbs back to the category</li>


<li>A place in the XML sitemap next to your regular categories</li>


<li>A plan for when stock runs out. Keep the page live with related products while the range is seasonal, and return a 404 or redirect to the parent if it&#8217;s gone for good</li>

</ol>



<p class="wp-block-paragraph">Filter UX still matters for shoppers on every other combination. Our guide to <a href="https://scandiweb.com/blog/best-practices-for-product-listing-pages/" target="_blank" rel="noopener">product listing page best practices</a> covers filter order, labels, and mobile layouts.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Links from the parent category matter as much as the copy. Google counts a sitemap entry as a weak signal, so a filter page that only the sitemap points to gives Google little reason to rank it over its parent.</p></div>



<h2 class="wp-block-heading">Magento and Adobe Commerce implementation notes</h2>



<p class="wp-block-paragraph">By default, Magento adds each filter to the category URL as a query parameter with a numeric option ID, so a filtered page looks like /women/boots.html?color=49&amp;material=148. That makes the parameters easy to block with robots.txt and hard to turn into pages worth indexing. The usual setup has three parts.</p>



<h3 class="wp-block-heading">Canonical tags for filtered category URLs</h3>



<p class="wp-block-paragraph">Go to Stores &gt; Settings &gt; Configuration &gt; Catalog &gt; Catalog &gt; Search Engine Optimization and set &#8220;Use Canonical Link Meta Tag For Categories&#8221; to Yes. Filtered URLs then point their canonical to the clean category URL. Adobe recommends enabling the canonical tag for both categories and products.</p>



<h3 class="wp-block-heading">robots.txt rules for filter parameters</h3>



<p class="wp-block-paragraph">Add your rules under Content &gt; Design &gt; Configuration, in the Search Engine Robots section for the right scope. A typical starting set blocks filter, sort, and toolbar parameters:</p>



<pre class="wp-block-code"><code>User-agent: *
Disallow: /*?*color=
Disallow: /*?*material=
Disallow: /*?*price=
Disallow: /*?*product_list_order=
Disallow: /*?*product_list_dir=
Disallow: /*?*product_list_limit=
Disallow: /*?*product_list_mode=</code></pre>



<p class="wp-block-paragraph">Replace the attribute codes with the filterable attributes your store uses, and check the live URLs first. Headless frontends, AJAX filters, and search services such as Adobe&#8217;s Live Search can produce different parameters. Our guide to the <a href="https://scandiweb.com/blog/seo-crash-course-magento-robotstxt/" target="_blank" rel="noopener">Magento 2 robots.txt setup</a> lists the system paths that belong in the same file.</p>



<h3 class="wp-block-heading">Indexable filter pages as categories</h3>



<p class="wp-block-paragraph">Build each combination that passed the five tests as a category. Create a subcategory such as &#8220;Black Leather Ankle Boots&#8221; under Boots, with its own URL key, meta title, meta description, and description, and assign the products. On Adobe Commerce, the Visual Merchandiser can fill the category automatically with &#8220;Match products by rule&#8221;, using attribute conditions such as color and material. Adobe notes the rule is applied when the category is saved, and products that no longer match are removed. Link the new category from Boots, so shoppers and Google reach it from the parent.</p>



<p class="wp-block-paragraph">How to choose filterable attributes, set up anchor categories, and speed up filtering with AJAX or Hyvä is covered in our guide to <a href="https://scandiweb.com/blog/layered-navigation-causing-problems-deal-with-it/" target="_blank" rel="noopener">Magento layered navigation setup</a>.</p>



<div class="wp-block-image aligncenter size-large"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" loading="lazy" width="1672" height="941" src="https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults.png" alt="Comparison of Magento and Shopify default faceted navigation SEO settings for filter URLs, canonical tags and robots.txt" class="wp-image-26191" style="display:block;margin:0 auto;max-width:100%;height:auto;" srcset="https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults.png 1672w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults-300x169.png 300w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults-1024x576.png 1024w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults-150x84.png 150w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults-768x432.png 768w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults-1536x864.png 1536w, https://scandiweb.com/blog/wp-content/uploads/2026/10/faceted-navigation-seo-magento-shopify-defaults-1600x900.png 1600w" sizes="auto, (max-width: 1672px) 100vw, 1672px" /><figcaption style="display:block;position:static;background:none;color:inherit;width:auto;padding:8px 0 0;margin:0.5em 0 1em;font-size:14px;text-align:center;max-height:none;">Magento and Shopify handle filter URLs differently out of the box</figcaption></figure></div>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>On Magento, the indexable version of a filter is a category with its own URL key. The filtered URL keeps its canonical to the parent, so the two pages don&#8217;t compete for the same search.</p></div>



<h2 class="wp-block-heading">Shopify implementation notes</h2>



<p class="wp-block-paragraph">Shopify&#8217;s defaults already handle two of the three outcomes from the decision rule: canonical and block. We checked them on Shopify&#8217;s own Dawn demo store in October 2026. Storefront filters, which you set up in the admin or the Search &amp; Discovery app, add parameters such as ?filter.v.option.color=Black or ?filter.p.vendor=Nike to the collection URL, and a store can have up to 25 filters.</p>



<h3 class="wp-block-heading">What Shopify&#8217;s default robots.txt blocks</h3>



<p class="wp-block-paragraph">The standard file disallows sorted collection URLs, combined tag URLs, and any collection URL with two or more filter parameters:</p>



<pre class="wp-block-code"><code>Disallow: /collections/*sort_by*
Disallow: /collections/*+*
Disallow: /collections/*filter*&amp;*filter*
Disallow: /*/collections/*sort_by*
Disallow: /*/collections/*+*
Disallow: /*/collections/*filter*&amp;*filter*</code></pre>



<p class="wp-block-paragraph">A URL with a single filter stays crawlable. On the Dawn theme, that single-filter URL and even a two-filter one carry a canonical tag pointing to the unfiltered collection. So out of the box, single filters are canonicalized to the collection and combinations are blocked. Custom themes can change the canonical, so check yours with the URL Inspection tool.</p>



<p class="wp-block-paragraph">The second set of lines covers language and market subfolders. If you sell in several countries through <a href="https://scandiweb.com/blog/shopify-markets/">Shopify Markets subfolders</a>, each subfolder repeats the whole filter space, so any rule you add needs the same pair.</p>



<h3 class="wp-block-heading">Indexable filter pages as collections</h3>



<p class="wp-block-paragraph">Shopify has no admin setting that turns a filter URL into an indexable page, and the theme&#8217;s canonical points it at the collection anyway. Build each combination that passed the five tests as its own automated collection, with conditions such as product type equals Boots and a tag or metafield for black leather. It gets its own handle, title, description, and place in the sitemap, and you link to it from the parent collection.</p>



<h3 class="wp-block-heading">Adding your own rules in robots.txt.liquid</h3>



<p class="wp-block-paragraph">To block single filters with no search value, such as availability or price, edit the robots.txt.liquid template and add rules for those parameters. Keep Shopify&#8217;s default rules in the file. Our <a href="https://scandiweb.com/blog/shopify-seo-checklist/" target="_blank" rel="noopener">Shopify SEO checklist</a> covers the rest of the theme-level setup.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Shopify&#8217;s defaults already block most filter combinations. The usual gap on a Shopify store is the missing collections for the filter phrases people search.</p></div>



<h2 class="wp-block-heading">How to check faceted navigation after a release or migration</h2>



<p class="wp-block-paragraph">New filters, a theme update, or a replatforming project can undo a working setup in one deploy. Check four things after each one:</p>



<ol class="wp-block-list">
<li>Fetch the live robots.txt and test a few filter URLs against it. A staging file that blocks everything, or a filter rule lost in the deploy, are both common release mistakes</li>


<li>Inspect one filter URL and one indexable filter page with the URL Inspection tool, and compare the user-declared and Google-selected canonical</li>


<li>Watch &#8220;Indexed, though blocked by robots.txt&#8221; and &#8220;Discovered – currently not indexed&#8221; in the Page indexing report for new filter patterns over the following weeks</li>


<li>Check the Crawl stats report. A jump in daily requests right after the release usually means a new parameter became crawlable</li>

</ol>



<p class="wp-block-paragraph">Migrations need extra care because filter URLs change format between platforms. A Magento ?color=49 URL has no equivalent on Shopify, so every indexable filter page needs a matching page on the new platform and a 301 redirect in the redirect map, and the new robots.txt rules need to be live on launch day. Our <a href="https://scandiweb.com/blog/seo-migration-checklist/" target="_blank" rel="noopener">SEO migration checklist</a> covers the full redirect and launch process.</p>



<style>  .box-new {    background-color: #f8f4ef;    padding: 20px 30px 30px 30px; /* top, right, bottom, left */    border: none;  }  .box-new p {    margin-top: 0;    margin-bottom: 1em;  }  .box-new p:last-child {    margin-bottom: 0;  }</style><div class="box-new">  <p><strong>🚀 Quick takeaway</strong></p>  <p>Before a migration, export the filter URLs that got organic clicks in the last year from Search Console. That list is the set of filter pages the new store has to rebuild and redirect.</p></div>



<p class="wp-block-paragraph">A <a href="https://scandiweb.com/blog/seo-technical-audit-why-and-when-you-need-to-perform-it/" target="_blank" rel="noopener">technical SEO audit</a> checks crawl rules, canonicals, and status codes across every template in one pass. It&#8217;s also where our <a href="https://scandiweb.com/seo-services" target="_blank" rel="noopener">eCommerce SEO team</a> starts when filter URLs outnumber the products on a store.</p>



<h2 class="wp-block-heading">Frequently asked questions about faceted navigation SEO</h2>



<h3 class="wp-block-heading">Are filter pages wasting crawl budget?</h3>



<p class="wp-block-paragraph">They can be, if search engines can crawl every filter combination. Check the Crawl Stats report in Search Console and your server logs for the share of Googlebot requests that go to filter and sort URLs. A growing &#8220;Discovered – currently not indexed&#8221; count full of filter URLs is another sign. Blocking combinations with no search value in robots.txt is the fix Google recommends.</p>



<h3 class="wp-block-heading">Should filtered URLs be indexed?</h3>



<p class="wp-block-paragraph">Only the ones people search for. A filter combination deserves an indexable URL when the phrase has search demand, the intent differs from the parent category, enough products stay on the page, it adds no more than one or two filters, and it has a stable page with its own title and copy. Everything else should stay out of the index.</p>



<h3 class="wp-block-heading">Should I use noindex or a canonical tag on filter pages?</h3>



<p class="wp-block-paragraph">Use a canonical tag pointing to the category for a small set of single-filter pages, and robots.txt for everything deeper. Noindex keeps a page out of search but saves no crawling, because Google still has to fetch the page to read the tag. Never combine noindex with a canonical to another URL, since the two send opposite signals.</p>



<h3 class="wp-block-heading">Is robots.txt or rel=canonical better for faceted navigation?</h3>



<p class="wp-block-paragraph">For filter combinations you never want in search, robots.txt is better, and Google calls it the more effective long-term control. A canonical tag still lets Google crawl the URLs and only reduces crawling over time. Use canonicals for the few single-filter pages that should pass their signals to the category, and robots.txt for the rest.</p>



<h3 class="wp-block-heading">Should sort and page-size URLs be indexed?</h3>



<p class="wp-block-paragraph">No. Sorting by price or showing 48 products per page changes the order and number of products, but the page targets the same search as the category. Block these parameters in robots.txt. Shopify&#8217;s default robots.txt already blocks sort_by URLs on collections, and on Magento you add rules for the product_list parameters yourself.</p>



<h3 class="wp-block-heading">How many filters can a page combine and still be worth indexing?</h3>



<p class="wp-block-paragraph">Usually one, sometimes two. Search demand drops fast as filters stack up. In the US, &#8220;black ankle boots&#8221; gets about 5,400 searches a month, &#8220;black leather ankle boots&#8221; about 1,200, and adding a size brings it to zero. Pages with three or more filters almost never have enough demand to justify their own URL.</p>



<h3 class="wp-block-heading">Do AJAX filters solve faceted navigation SEO?</h3>



<p class="wp-block-paragraph">They solve the crawl side, but they don&#8217;t help the long tail. If filters update the product grid without changing the URL, there are no filter URLs to crawl or index. That also means no filter page can rank, so you still need dedicated category or collection pages for the combinations people search for.</p>



<h3 class="wp-block-heading">What happens to filter pages when you migrate platforms?</h3>



<p class="wp-block-paragraph">Their URLs change, because every platform formats filters differently. List the filter pages that get organic traffic before the migration, build matching category or collection pages on the new platform, and 301 redirect the old URLs to them. Set the new robots.txt filter rules before launch, so the new store doesn&#8217;t open its full filter space to crawlers on day one.</p>



<h2 class="wp-block-heading">Faceted navigation SEO comes down to a short list</h2>



<p class="wp-block-paragraph">Faceted navigation SEO is mostly a list: the filter combinations that earn their own page, and a rule that blocks the rest. Build the list from search demand, give each entry a proper category or collection page, block deep combinations, sort orders, and price ranges in robots.txt, and recheck the setup after every release. Review the list each season too, because new filters and new ranges change which phrases have demand.</p>



<script type="application/ld+json">{"@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [{"@type": "Question", "name": "Are filter pages wasting crawl budget?", "acceptedAnswer": {"@type": "Answer", "text": "They can be, if search engines can crawl every filter combination. Check the Crawl Stats report in Search Console and your server logs for the share of Googlebot requests that go to filter and sort URLs. A growing \"Discovered – currently not indexed\" count full of filter URLs is another sign. Blocking combinations with no search value in robots.txt is the fix Google recommends."}}, {"@type": "Question", "name": "Should filtered URLs be indexed?", "acceptedAnswer": {"@type": "Answer", "text": "Only the ones people search for. A filter combination deserves an indexable URL when the phrase has search demand, the intent differs from the parent category, enough products stay on the page, it adds no more than one or two filters, and it has a stable page with its own title and copy. Everything else should stay out of the index."}}, {"@type": "Question", "name": "Should I use noindex or a canonical tag on filter pages?", "acceptedAnswer": {"@type": "Answer", "text": "Use a canonical tag pointing to the category for a small set of single-filter pages, and robots.txt for everything deeper. Noindex keeps a page out of search but saves no crawling, because Google still has to fetch the page to read the tag. Never combine noindex with a canonical to another URL, since the two send opposite signals."}}, {"@type": "Question", "name": "Is robots.txt or rel=canonical better for faceted navigation?", "acceptedAnswer": {"@type": "Answer", "text": "For filter combinations you never want in search, robots.txt is better, and Google calls it the more effective long-term control. A canonical tag still lets Google crawl the URLs and only reduces crawling over time. Use canonicals for the few single-filter pages that should pass their signals to the category, and robots.txt for the rest."}}, {"@type": "Question", "name": "Should sort and page-size URLs be indexed?", "acceptedAnswer": {"@type": "Answer", "text": "No. Sorting by price or showing 48 products per page changes the order and number of products, but the page targets the same search as the category. Block these parameters in robots.txt. Shopify's default robots.txt already blocks sort_by URLs on collections, and on Magento you add rules for the product_list parameters yourself."}}, {"@type": "Question", "name": "How many filters can a page combine and still be worth indexing?", "acceptedAnswer": {"@type": "Answer", "text": "Usually one, sometimes two. Search demand drops fast as filters stack up. In the US, \"black ankle boots\" gets about 5,400 searches a month, \"black leather ankle boots\" about 1,200, and adding a size brings it to zero. Pages with three or more filters almost never have enough demand to justify their own URL."}}, {"@type": "Question", "name": "Do AJAX filters solve faceted navigation SEO?", "acceptedAnswer": {"@type": "Answer", "text": "They solve the crawl side, but they don't help the long tail. If filters update the product grid without changing the URL, there are no filter URLs to crawl or index. That also means no filter page can rank, so you still need dedicated category or collection pages for the combinations people search for."}}, {"@type": "Question", "name": "What happens to filter pages when you migrate platforms?", "acceptedAnswer": {"@type": "Answer", "text": "Their URLs change, because every platform formats filters differently. List the filter pages that get organic traffic before the migration, build matching category or collection pages on the new platform, and 301 redirect the old URLs to them. Set the new robots.txt filter rules before launch, so the new store doesn't open its full filter space to crawlers on day one."}}]}</script>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><style> p.box { border: 1px solid black; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px; } </style> <p class="box"><em>Not sure which of your filter pages belong in Google? </em><a href="https://scandiweb.com/contact" target="_blank" rel="noreferrer noopener"><em>Send us a category URL</em></a><em>, and we&#x27;ll show you which combinations to index and which to block.</em></p></p>
<p>The post <a rel="nofollow" href="https://scandiweb.com/blog/faceted-navigation-seo/">Faceted Navigation SEO: Which Filter Pages to Index and Which to Block</a> appeared first on <a rel="nofollow" href="https://scandiweb.com/blog">scandiweb</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Object Caching 40/223 objects using Redis
Page Caching using Disk: Enhanced 

Served from: scandiweb.com @ 2026-10-29 14:23:25 by W3 Total Cache
-->