<?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>Dynasort | Dynamic Merchandising Sorting for Shopify</title>
	<atom:link href="https://dynasort.io/feed/" rel="self" type="application/rss+xml" />
	<link>https://dynasort.io</link>
	<description></description>
	<lastBuildDate>Fri, 16 Oct 2026 15:19:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://dynasort.io/wp-content/uploads/2026/01/cropped-icon-32x32.png</url>
	<title>Dynasort | Dynamic Merchandising Sorting for Shopify</title>
	<link>https://dynasort.io</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Are AI Product Recommendations a Black Box?</title>
		<link>https://dynasort.io/ai-recommendations-black-box/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Fri, 16 Oct 2026 15:19:00 +0000</pubDate>
				<category><![CDATA[Quick Notes]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1036</guid>

					<description><![CDATA[Most are. Typical AI recommendation widgets cannot tell you why a specific product appeared in a specific slot, which means you cannot debug an embarrassing suggestion or steer the logic toward business goals like margin. The alternative is explainable ranking: recommendation logic written as rules you can open, read, and edit. The Problem with Black [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Most are. Typical AI recommendation widgets cannot tell you why a specific product appeared in a specific slot, which means you cannot debug an embarrassing suggestion or steer the logic toward business goals like margin. The alternative is explainable ranking: recommendation logic written as rules you can open, read, and edit.</p>
<h2>The Problem with Black Boxes</h2>
<p>Opacity is not just a philosophical complaint; it has operating costs. When a customer sees a bizarre pairing, you cannot find out what produced it, so you cannot prevent the next one. When leadership asks why the cart row favors low-margin items, there is no answer. When you want the home page row to push clearance for two weeks, there is no lever. You are left A/B testing against a system you cannot interrogate, and taking on faith that its objective matches yours.</p>
<h2>Explainable Recommendations</h2>
<ul>
<li><strong>The logic is a readable recipe</strong>: signals and weights you chose, so &#8220;why is this product here&#8221; always has an answer.</li>
<li><strong>Steerable by design.</strong> Want margin favored in the cart and discovery on the home page? Change the weights; the rows follow.</li>
<li><strong>Preview before shipping.</strong> See the exact cards any shopper will get for any seed product, before it goes live.</li>
<li><strong>Still data-driven.</strong> Explainable does not mean manual; rankings refresh automatically as sales, stock, and prices change.</li>
</ul>
<p>Dynasort&#8217;s recommendation recipes work this way on every placement, product page to post-purchase.</p>
<p><em>Dynasort recommendations always answer &#8220;why this product?&#8221; <a href="https://apps.shopify.com/dynasort?utm_source=dynasort_io&amp;utm_medium=website&amp;utm_campaign=quick_notes&amp;utm_content=ai-recommendations-black-box" target="_blank" rel="noopener">Install it from the Shopify App Store</a> or <a href="https://dynasort.io/recommendations/">see explainable recommendations</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Your Home Page&#8217;s Job Is to Route, Not Sell Everything</title>
		<link>https://dynasort.io/home-page-routes-not-sells/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Fri, 16 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Conversion Rate Optimization]]></category>
		<category><![CDATA[Home Page & Navigation]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1140</guid>

					<description><![CDATA[&#8592; All 100 tips &#160;&#183;&#160; Tip 56 of 100 &#160;&#183;&#160; 45 days to Cyber Monday Your home page&#8217;s job is to route, not to sell everything. Nobody adds to cart from the home page; they leave it in the right direction or they leave your site. Yet most Shopify home pages are built like a [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="ds-cm100-nav" style="max-width:760px;margin:0 auto 8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tip 56 of 100 &nbsp;&middot;&nbsp; 45 days to Cyber Monday
</div>



<p class="wp-block-paragraph">Your home page&#8217;s job is to route, not to sell everything. Nobody adds to cart from the home page; they leave it in the right direction or they leave your site. Yet most Shopify home pages are built like a department store where every department head got to bolt their own banner to the front door: a hero, a bestseller carousel, a new arrivals carousel, three promo tiles, a founder story, a lookbook, an Instagram feed. Sixteen screens of scroll, assembled by committee, converting nobody.</p>



<p class="wp-block-paragraph">Here is the reframe: the home page is a train station, not a showroom. Its success metric is not sales, it is how fast each visitor gets onto the right platform. A gift shopper needs &#8220;gifts under $50&#8221;. A regular needs &#8220;new this week&#8221;. A first-timer needs &#8220;start with our bestsellers&#8221;. Every extra section between a visitor and their platform is not merchandising, it is delay, and mobile shoppers experience delay as a reason to leave.</p>



<h2 class="wp-block-heading">The ruthless version</h2>



<ul class="wp-block-list">
  <li><strong>Pick your three or four money paths.</strong> Look at your data: which collections actually produce revenue? Those are the platforms. Everything on the home page either routes to one of them or fights for its life.</li>
  <li><strong>One screen, one decision.</strong> The first viewport keeps its job from tip 10: what you sell, why you, where to go. The very next section is the category router, big tappable tiles to your money paths, above every carousel and story block.</li>
  <li><strong>Kill the tie-breakers.</strong> Two carousels of overlapping products force the visitor to arbitrate between your widgets. If bestsellers is the strongest path, it gets the slot; new arrivals lives one tap away, not one scroll away.</li>
  <li><strong>Let the routed pages do the selling.</strong> Persuasion lives on collections and PDPs, where tips 2 through 54 have been sharpening it. The home page&#8217;s only pitch is &#8220;you are in the right place, go this way&#8221;.</li>
</ul>



<p class="wp-block-paragraph">The ten-minute audit: open your home page on your phone and count the taps and scrolls between landing and your single highest-revenue collection. If the answer is more than one scroll and one tap, your best sales path is buried under sections that exist because someone liked them in a meeting. This matters double before BFCM, when your traffic skews toward strangers in a hurry. Strangers do not browse; they follow signs. Build better signs.</p>



<div class="ds-cm100-nav" style="max-width:760px;margin:28px auto 0;padding-top:18px;border-top:1px solid #e4e2f5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tomorrow, tip 57: ten minutes of watching real shoppers struggle will rewrite your to-do list. The tool is free.
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Handling Products With Many Variants in Shopify Collections</title>
		<link>https://dynasort.io/products-with-many-variants-collections/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Thu, 15 Oct 2026 14:10:00 +0000</pubDate>
				<category><![CDATA[Quick Notes]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=813</guid>

					<description><![CDATA[Products with many variants create two collection problems on Shopify: the 99 variant limit forces some merchants to split one product into several listings, and those split listings then appear as near-duplicates in collections. The fix is combined products: keep separate products behind the scenes, present one tile in the collection, and deduplicate so shoppers [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Products with many variants create two collection problems on Shopify: the 99 variant limit forces some merchants to split one product into several listings, and those split listings then appear as near-duplicates in collections. The fix is combined products: keep separate products behind the scenes, present one tile in the collection, and deduplicate so shoppers see each style once.</p>
<h2>Why do split products hurt collections?</h2>
<p>When one style becomes three or four listings, those listings compete with each other in every collection they share. They crowd the first rows, push genuinely different products below the fold, and make the catalog feel repetitive. Shoppers see what looks like the same product over and over, which adds noise to the page without adding real choice.</p>
<h2>How do combined products work?</h2>
<p>The combined products approach keeps the split listings in Shopify, so every variant stays purchasable, but treats them as one product for merchandising. Dynasort deduplicates the group in collections, shows a single representative listing, and lets the rest step aside. It is the standard workaround for the <a href="https://dynasort.io/breaking-shopifys-99-variant-limit-how-dynasort-empowers-merchants-with-combined-products/">Shopify 99 variant limit</a>, and it sits comfortably alongside Shopify&#8217;s own <a href="https://dynasort.io/shopify-combined-listings-dynasort/">combined listings</a> feature.</p>
<h2>What does this mean for sorting?</h2>
<p>Deduplication and sorting work together. The visible listing earns its position from performance like any other product, the group occupies one slot instead of four, and the rest of the collection gets that space back. Out-of-stock handling still applies, so a group with nothing sellable left can drop down the page instead of holding a prime row it cannot convert.</p>
<p><em>Dynasort handles combined products and deduplication automatically. <a href="https://apps.shopify.com/dynasort?utm_source=dynasort_io&#038;utm_medium=website&#038;utm_campaign=quick_notes&#038;utm_content=products-with-many-variants-collections" target="_blank" rel="noopener">Install it from the Shopify App Store</a> or <a href="https://dynasort.io/features/">see how it works</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Last Call for Big A/B Tests Before BFCM Traffic Shifts</title>
		<link>https://dynasort.io/last-call-ab-tests-before-bfcm/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Thu, 15 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Conversion Rate Optimization]]></category>
		<category><![CDATA[Testing & Experimentation]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1139</guid>

					<description><![CDATA[&#8592; All 100 tips &#160;&#183;&#160; Tip 55 of 100 &#160;&#183;&#160; 46 days to Cyber Monday A/B tests started after mid-October are running on borrowed truth. This is last call: any big test you want to trust through Q4 needs to start this week, because the traffic that will flow through it from here on is [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="ds-cm100-nav" style="max-width:760px;margin:0 auto 8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tip 55 of 100 &nbsp;&middot;&nbsp; 46 days to Cyber Monday
</div>



<p class="wp-block-paragraph">A/B tests started after mid-October are running on borrowed truth. This is last call: any big test you want to trust through Q4 needs to start this week, because the traffic that will flow through it from here on is progressively less like the traffic your store lives on the rest of the year.</p>



<p class="wp-block-paragraph">The contamination is not one event, it is a slow tide. From late October your mix shifts: more gift buyers shopping for someone else, more first-time visitors from holiday ads, more deal-hunters comparison shopping across ten tabs, more mobile sessions squeezed into commutes and couches. These people click differently, carry different intent, and respond to different persuasion than your September regulars. A variant that wins with them has proven it wins with them, in a mix that exists six weeks a year.</p>



<div class="ds-t055-wrap">
  <style>
    .ds-t055-wrap{max-width:760px;margin:36px auto;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif}
    .ds-t055-box{background:#f8f9ff;border:1px solid #e4e2f5;border-radius:14px;padding:26px 28px}
    .ds-t055-title{font-size:15px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#4F46E5;margin:0 0 4px}
    .ds-t055-sub{font-size:14px;color:#6b7280;margin:0 0 22px;line-height:1.5}
    .ds-t055-band{display:flex;border-radius:10px;overflow:hidden;height:56px}
    .ds-t055-seg{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;letter-spacing:.03em;color:#fff;text-align:center;padding:0 6px}
    .ds-t055-s1{flex:2.6;background:#4F46E5}
    .ds-t055-s2{flex:2.6;background:linear-gradient(90deg,#7c76ec,#c9a3e8)}
    .ds-t055-s3{flex:2.2;background:#e0533d}
    .ds-t055-dates{display:flex;margin-top:8px;font-size:11.5px;font-weight:700;color:#8b88b0}
    .ds-t055-d1{flex:2.6}
    .ds-t055-d2{flex:2.6}
    .ds-t055-d3{flex:2.2}
    .ds-t055-foot{font-size:13px;color:#6b7280;margin:20px 0 0;line-height:1.55}
    @media (max-width:620px){
      .ds-t055-band{flex-direction:column;height:auto}
      .ds-t055-seg{padding:12px 8px}
      .ds-t055-dates{display:none}
    }
  </style>
  <div class="ds-t055-box">
    <p class="ds-t055-title">The testing calendar, honestly drawn</p>
    <p class="ds-t055-sub">What a test can tell you depends on when its traffic flowed, not on how well you ran it.</p>
    <div class="ds-t055-band">
      <div class="ds-t055-seg ds-t055-s1">Clean window: start now, trust the result</div>
      <div class="ds-t055-seg ds-t055-s2">Drifting mix: results tilt toward holiday traffic</div>
      <div class="ds-t055-seg ds-t055-s3">BFCM: run the playbook, not the lab</div>
    </div>
    <div class="ds-t055-dates">
      <span class="ds-t055-d1">now &rarr; mid-Oct</span>
      <span class="ds-t055-d2">late Oct &rarr; mid-Nov</span>
      <span class="ds-t055-d3">Thanksgiving &rarr; Cyber Monday</span>
    </div>
    <p class="ds-t055-foot">A two-week test started today still finishes inside the clean window, with a buffer to roll the winner out calmly. A test started November 1 finishes as a study of deal-hunters.</p>
  </div>
</div>



<h2 class="wp-block-heading">Triage your test backlog today</h2>



<ul class="wp-block-list">
  <li><strong>Start now:</strong> anything big, structural, and reversible. Layout changes, PDP restructures, the sort-order test from tip 49. Two full weekly cycles still fit before the tide comes in.</li>
  <li><strong>Park until January:</strong> anything you cannot start this week. An honest backlog beats a contaminated result, and January traffic is the closest thing to a control group you get all winter.</li>
  <li><strong>Exempt from all of this:</strong> obvious fixes and broken things. Those are not tests, just ship them (that argument gets its own tip later in the series).</li>
</ul>



<p class="wp-block-paragraph">The deeper point: a test is a measurement instrument, and instruments are only valid in the conditions they were calibrated for. From here to Cyber Monday your store&#8217;s conditions change weekly, which is why the series keeps splitting testing into two seasons: the lab season, which is ending, and the playbook season, which is about to begin. Tip 80 marks the full freeze. This week is the last comfortable boarding call before it.</p>



<div class="ds-cm100-nav" style="max-width:760px;margin:28px auto 0;padding-top:18px;border-top:1px solid #e4e2f5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tomorrow, tip 56: your home page has one job, and it is probably trying to do six.
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>30 Seconds of Honest Product Video Beats a Produced Ad</title>
		<link>https://dynasort.io/honest-product-video/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Wed, 14 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Conversion Rate Optimization]]></category>
		<category><![CDATA[Product Pages]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1138</guid>

					<description><![CDATA[&#8592; All 100 tips &#160;&#183;&#160; Tip 54 of 100 &#160;&#183;&#160; 47 days to Cyber Monday Product video on your PDP does not need a production budget, it needs 30 honest seconds. A phone, decent daylight, and the product doing its job: held in real hands, used the way a customer will use it, shown next [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="ds-cm100-nav" style="max-width:760px;margin:0 auto 8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tip 54 of 100 &nbsp;&middot;&nbsp; 47 days to Cyber Monday
</div>



<p class="wp-block-paragraph">Product video on your PDP does not need a production budget, it needs 30 honest seconds. A phone, decent daylight, and the product doing its job: held in real hands, used the way a customer will use it, shown next to something familiar for scale. That clip will outsell a polished brand film on the same page, and it is not close.</p>



<p class="wp-block-paragraph">Here is the uncomfortable reason. A produced ad answers the question &#8220;does this brand have a marketing budget?&#8221; The shopper on your product page is asking different questions entirely: how big is it really, what does the material look like when it moves, is the zipper going to feel cheap, will it fit in my bag. Slow-motion drone footage answers none of these. A shaky 30-second clip of a human unscrewing the lid answers all of them, and shoppers know instinctively that footage this unglamorous has nothing to hide. Polish signals effort; honesty signals truth. On a product page, truth converts.</p>



<h2 class="wp-block-heading">The 30-second script</h2>



<ul class="wp-block-list">
  <li><strong>0-5s: in hands.</strong> The product picked up, turned over. Hands are the scale reference everyone has.</li>
  <li><strong>5-20s: in use.</strong> The one thing buyers buy it for, done once, at real speed. Pouring, zipping, folding, wearing.</li>
  <li><strong>20-30s: the doubt.</strong> Whatever your reviews and support tickets say people worry about: the clasp, the thickness, the true color in daylight. Show it, don&#8217;t narrate around it.</li>
</ul>



<p class="wp-block-paragraph">No intro card, no logo animation, no music that needs licensing. Shoot vertical, keep it under 40 seconds, and make sure it plays muted with the point still landing, because most shoppers will never unmute. Put it in the media gallery as the second or third slot, after the first image has done its job from tip 3.</p>



<p class="wp-block-paragraph">One warning: honest does not mean careless. Wipe the lens, clean the product, shoot near a window. The goal is &#8220;a trustworthy person showed me the truth&#8221;, not &#8220;someone filmed this in a dark garage&#8221;. You can hit that bar for your ten bestselling products in a single afternoon, and those ten PDPs will answer more pre-purchase doubt than any copywriting sprint you have planned this quarter.</p>



<p class="wp-block-paragraph">Ship the scrappy version this week. If video moves your add-to-cart rate (watch the metric from tip 33), you have earned the case for doing it properly across the catalog. If it does not, you spent an afternoon and a phone battery finding out. That trade is the whole CRO game in miniature.</p>



<div class="ds-cm100-nav" style="max-width:760px;margin:28px auto 0;padding-top:18px;border-top:1px solid #e4e2f5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tomorrow, tip 55: the testing window is closing. What you start after mid-October, you can no longer trust.
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Agents Shop, Bots Don&#8217;t: How Dynasort Insights Now Filter Bot Traffic</title>
		<link>https://dynasort.io/bot-traffic-shopify-analytics/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Tue, 13 Oct 2026 16:51:30 +0000</pubDate>
				<category><![CDATA[Feature Releases]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Masthead]]></category>
		<category><![CDATA[Metrics & Measurement]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1962</guid>

					<description><![CDATA[About one in six storefront sessions we measure across Shopify stores is a bot, and every one of them pads your session count and pulls your conversion rate down. As of October 13, 2026, Dynasort Insights leave bots out by default, keep shopping agents in, and never let bot visits touch your sort order. This [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">About one in six storefront sessions we measure across Shopify stores is a bot, and every one of them pads your session count and pulls your conversion rate down. As of October 13, 2026, Dynasort Insights leave bots out by default, keep shopping agents in, and never let bot visits touch your sort order. This post covers what the bots look like, how we tell an assistant that shops from a bot that doesn&#8217;t, and what changes on your Insights screen.</p>



<div style="border:1px solid #e6e4f2;border-left:4px solid #4F46E5;border-radius:0 12px 12px 0;padding:18px 22px;margin:4px 0 28px;background:#f6f5ff">
  <div style="font-weight:700;text-transform:uppercase;font-size:12px;letter-spacing:.08em;color:#4F46E5;margin-bottom:10px">Key takeaways</div>
  <ul style="margin:0;padding-left:18px;line-height:1.65;color:#14122b">
    <li>On the first day of live classification, bots were roughly 15% to 18% of storefront sessions across the stores Dynasort runs on. On some stores they were more than half.</li>
    <li>One page-rendering farm alone produced more than 200,000 sessions in nine days, with zero add-to-carts.</li>
    <li>At one fashion store where bots were about 30% of sessions, collection conversion rate moved from 0.27% to 0.39% once they were removed. Same orders, honest denominator.</li>
    <li>Dynasort Insights now count <strong>Shoppers</strong> by default: people plus shopping agents. People only and All traffic are one setting away.</li>
    <li>Sorting never uses bot visits, whatever you choose. Bot filtering is on for every store, on every plan.</li>
  </ul>
</div>



<h2 class="wp-block-heading">Why Is There Bot Traffic in Your Shopify Analytics?</h2>



<p class="wp-block-paragraph">Because the bots that matter don&#8217;t announce themselves. Most analytics tools filter the ones that do: search engine crawlers say who they are, and they are easy to drop. The expensive bots are scrapers watching your prices, rendering services that load full pages in a real browser engine, monitoring tools and link checkers. They run JavaScript, fire page views, and look like a visit.</p>



<p class="wp-block-paragraph">They also never buy. So every bot session lands at the bottom of every rate you care about. Sessions go up, conversion rate goes down, add-to-cart rate goes down, and a collection that bots happen to crawl hard looks like it is failing.</p>



<p class="wp-block-paragraph">This came to a head in early October 2026. A merchant sent us a GA4 report showing a surge in sessions that went nowhere. We traced it to a single rendering farm: the same browser build every time, a screen of exactly 1800&#215;1125, and an outer browser window of 1808&#215;1210. That window is bigger than the screen it runs on, which a real browser can&#8217;t do.</p>



<p class="wp-block-paragraph">It wasn&#8217;t one store&#8217;s problem. Because we see every store we serve, we could follow that one fingerprint across the network, day by day.</p>



<style>@media (max-width:560px){.ds-bot1-wrap .ds-g{gap:3px!important}.ds-bot1-wrap .ds-v{font-size:10px!important}.ds-bot1-wrap .ds-d{font-size:9px!important}.ds-bot3-wrap .ds-n{font-size:30px!important}}</style>
<div class="ds-bot1-wrap" style="margin:8px 0 28px">
  <div style="border:1px solid #e6e4f2;border-radius:18px 18px 18px 3px;padding:20px 22px;background:#fff">
    <p style="margin:0 0 2px;font-weight:700;font-size:17px;color:#14122b">One rendering farm, nine days</p>
    <p style="margin:0 0 16px;font-size:13px;color:#4b4868">Sessions per day from the 1800&#215;1125 fingerprint across the stores Dynasort serves, October 5 to 13, 2026.</p>
    <div class="ds-g" style="display:grid;grid-template-columns:repeat(9,1fr);gap:8px;align-items:end">
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:75%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">20.6k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 5</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:100%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">27.4k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 6</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:73%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">20.0k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 7</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:58%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">15.8k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 8</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:98%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">26.8k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 9</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:88%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">24.0k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 10</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:85%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">23.4k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 11</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:90%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">24.7k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 12</p></div>
      <div style="text-align:center"><div style="height:150px;display:flex;align-items:end;justify-content:center"><div style="width:78%;height:96%;background:#8f8af0;border-radius:8px 8px 2px 2px"></div></div><p class="ds-v" style="margin:6px 0 0;font-weight:700;font-size:13px;color:#14122b">26.3k</p><p class="ds-d" style="margin:0;font-size:11px;color:#4b4868">Oct 13</p></div>
    </div>
    <div style="display:flex;flex-wrap:wrap;gap:10px;margin-top:16px">
      <span style="background:#f6f5ff;border:1px solid #e6e4f2;border-radius:999px;padding:6px 14px;font-size:13px;color:#14122b"><strong>209,121</strong> sessions</span>
      <span style="background:#f6f5ff;border:1px solid #e6e4f2;border-radius:999px;padding:6px 14px;font-size:13px;color:#14122b"><strong>0</strong> add-to-carts</span>
      <span style="background:#f6f5ff;border:1px solid #e6e4f2;border-radius:999px;padding:6px 14px;font-size:13px;color:#14122b"><strong>0</strong> checkouts</span>
    </div>
    <p style="margin:14px 0 0;font-size:12px;color:#4b4868">October 5 starts at midnight, the day the farm first showed up in volume. October 13 runs to the evening of the day filtering went live.</p>
  </div>
</div>



<p class="wp-block-paragraph">One merchant looking at their own analytics sees a traffic spike. Looking across the network, it is plainly one bot.</p>



<h2 class="wp-block-heading">What Does Bot Traffic Do to Your Conversion Rate?</h2>



<p class="wp-block-paragraph">It sinks it. A bot session adds to the denominator and never to the numerator. Take one fashion store from that week: bots were about 30% of its sessions. With them counted, its collection conversion rate was 0.27%. With them removed, 0.39%. Its cart rate moved from 1.30% to 1.85%.</p>



<div class="ds-bot2-wrap" style="margin:8px 0 28px">
  <div style="border:1px solid #e6e4f2;border-radius:18px 18px 18px 3px;padding:20px 22px;background:#fff">
    <p style="margin:0 0 2px;font-weight:700;font-size:17px;color:#14122b">One fashion store, before and after bot filtering</p>
    <p style="margin:0 0 14px;font-size:13px;color:#4b4868">October 6 to 12, 2026. Bots were 29.6% of sessions. Orders and carts are identical in both rows.</p>
    <p style="margin:10px 0 6px;font-size:13px;font-weight:700;color:#14122b">Collection conversion rate</p>
    <div style="display:flex;align-items:center;gap:10px;margin:6px 0"><span style="width:130px;font-size:13px;color:#4b4868">With bots</span><div style="flex:1;background:#f6f5ff;border-radius:6px;height:22px;overflow:hidden"><div style="width:69%;height:100%;background:#cfcdf2"></div></div><span style="width:60px;text-align:right;font-weight:600;color:#14122b">0.27%</span></div>
    <div style="display:flex;align-items:center;gap:10px;margin:6px 0"><span style="width:130px;font-size:13px;color:#4b4868">Bots removed</span><div style="flex:1;background:#f6f5ff;border-radius:6px;height:22px;overflow:hidden"><div style="width:100%;height:100%;background:#4F46E5"></div></div><span style="width:60px;text-align:right;font-weight:600;color:#14122b">0.39%</span></div>
    <p style="margin:16px 0 6px;font-size:13px;font-weight:700;color:#14122b">Cart rate</p>
    <div style="display:flex;align-items:center;gap:10px;margin:6px 0"><span style="width:130px;font-size:13px;color:#4b4868">With bots</span><div style="flex:1;background:#f6f5ff;border-radius:6px;height:22px;overflow:hidden"><div style="width:70%;height:100%;background:#cfcdf2"></div></div><span style="width:60px;text-align:right;font-weight:600;color:#14122b">1.30%</span></div>
    <div style="display:flex;align-items:center;gap:10px;margin:6px 0"><span style="width:130px;font-size:13px;color:#4b4868">Bots removed</span><div style="flex:1;background:#f6f5ff;border-radius:6px;height:22px;overflow:hidden"><div style="width:100%;height:100%;background:#4F46E5"></div></div><span style="width:60px;text-align:right;font-weight:600;color:#14122b">1.85%</span></div>
    <p style="margin:14px 0 0;font-size:12px;color:#4b4868">Nothing about the store changed. The rate stopped counting visitors who were never going to buy.</p>
  </div>
</div>



<p class="wp-block-paragraph">The same goes for every comparison you make. If one collection gets crawled twice as hard as another, its conversion rate looks worse for reasons that have nothing to do with the products on it. Removing bots makes collections comparable again.</p>



<h2 class="wp-block-heading">What Changed in Dynasort Insights?</h2>



<p class="wp-block-paragraph">Every storefront session Dynasort measures now gets one of three labels, and Insights count the first two by default.</p>



<figure class="table-responsive"><table class="table "><thead><tr><th>Label</th><th>What it is</th><th>Counted in Insights by default</th><th>Used for sorting</th></tr></thead><tbody>
<tr><td>Person</td><td>Someone shopping in a browser, however they arrived</td><td>Yes</td><td>Yes</td></tr>
<tr><td>Shopping agent</td><td>An assistant that browses and buys on behalf of a real person, such as ChatGPT&#8217;s agent</td><td>Yes</td><td>Yes</td></tr>
<tr><td>Bot</td><td>Crawlers, scrapers, page-rendering services, monitors</td><td>No</td><td>Never</td></tr>
</tbody></table><figcaption class="wp-element-caption">Labels apply from October 6, 2026 on. Earlier days are unchanged.</figcaption></figure>



<p class="wp-block-paragraph">A fingerprint we identify as a bot today is also removed from the days it visited before we caught it, so Insights get cleaner after the fact, not only going forward.</p>



<h2 class="wp-block-heading">How Does Dynasort Tell Shopping Agents From Bots?</h2>



<p class="wp-block-paragraph">By what they do at the cart. Shopping agents are new, and they are customers. When someone asks an assistant to find and buy a pair of running shoes, the assistant visits your store, browses a collection, and adds to cart on that person&#8217;s behalf. Filtering those visits out would hide real demand. So the hard part of this project wasn&#8217;t spotting automation. It was telling automation that shops from automation that doesn&#8217;t.</p>



<p class="wp-block-paragraph">Our rule is short: <strong>agents shop, bots don&#8217;t.</strong> An agent exists to buy something for a person, so over time its traffic produces carts and checkouts. A bot never does.</p>



<p class="wp-block-paragraph">A single store can&#8217;t apply that rule, because it only sees its own traffic. We can. Every day we group sessions by device fingerprint across every store we serve and compare what each fingerprint did with what it should have done at those stores&#8217; normal add-to-cart rates.</p>



<div class="ds-bot3-wrap" style="margin:8px 0 28px">
  <div style="border:1px solid #e6e4f2;border-radius:18px 18px 18px 3px;padding:20px 22px;background:#fff">
    <p style="margin:0 0 2px;font-weight:700;font-size:17px;color:#14122b">The network test, one day</p>
    <p style="margin:0 0 16px;font-size:13px;color:#4b4868">The 1800&#215;1125 fingerprint on October 13, 2026: 23,223 sessions.</p>
    <div style="display:grid;grid-template-columns:1fr 1fr;gap:14px">
      <div style="background:#f6f5ff;border:1px solid #e6e4f2;border-radius:14px;padding:18px 18px 16px">
        <p style="margin:0;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#4b4868">Carts expected</p>
        <p class="ds-n" style="margin:6px 0 0;font-size:40px;line-height:1;font-weight:800;color:#2E2A9D">1,030</p>
        <p style="margin:8px 0 0;font-size:13px;color:#4b4868">at the normal add-to-cart rates of the stores it visited</p>
      </div>
      <div style="background:#fff;border:2px solid #4F46E5;border-radius:14px;padding:18px 18px 16px">
        <p style="margin:0;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#4b4868">Carts produced</p>
        <p class="ds-n" style="margin:6px 0 0;font-size:40px;line-height:1;font-weight:800;color:#4F46E5">0</p>
        <p style="margin:8px 0 0;font-size:13px;color:#4b4868">so the fingerprint is a bot, on every store, including past days</p>
      </div>
    </div>
    <p style="margin:14px 0 0;font-size:12px;color:#4b4868">A fingerprint needs 200 or more sessions, zero carts, and at least 10 carts expected before the network test calls it a bot. A fingerprint that produces a cart anywhere is kept.</p>
  </div>
</div>



<p class="wp-block-paragraph">The network test sits alongside four other signals:</p>



<ul class="wp-block-list">
<li><strong>Declared identity.</strong> Crawlers that name themselves are bots. Assistants that fetch a page live for a person, and say so, are agents.</li>
<li><strong>Signed agent requests.</strong> Some agent operators sign their requests using Web Bot Auth, so we can check who sent them. A signature from a known shopping-agent operator marks an agent.</li>
<li><strong>Impossible browser geometry.</strong> A browser window bigger than its screen, a window with no screen, or the square screens headless browsers ship with. We allow for rotated tablets and the quirks of phone browsers.</li>
<li><strong>Hosting networks.</strong> People rarely shop from a data center. A session from a hosting network with almost no activity counts against it; the same session with a cart counts as a shopping agent.</li>
</ul>



<p class="wp-block-paragraph">One honest limit: an assistant that hides what it is and browses without ever buying looks exactly like a scraper, so we count it as a bot. It produced no shopper outcome, so leaving it out doesn&#8217;t hide a sale.</p>



<h2 class="wp-block-heading">What Will You See in Insights?</h2>



<p class="wp-block-paragraph">Cleaner numbers, a line telling you how much was left out, and a setting if you want a different view. There is nothing to turn on.</p>



<div class="ds-bot4-wrap" style="margin:8px 0 28px">
  <div style="border:1px solid #e6e4f2;border-radius:18px 18px 18px 3px;padding:20px 22px;background:#f6f5ff">
    <div style="background:#fff;border:1px solid #e6e4f2;border-radius:12px;padding:16px 18px;box-shadow:0 1px 2px rgba(20,18,43,.06)">
      <p style="margin:0 0 4px;font-weight:700;font-size:15px;color:#14122b">Traffic in Insights</p>
      <p style="margin:0 0 12px;font-size:13px;color:#4b4868">Choose which visits your Insights numbers count. Bots are crawlers, scrapers and monitoring tools that never shop.</p>
      <p style="margin:0 0 8px;font-size:13px;font-weight:600;color:#14122b">Count these sessions</p>
      <div style="display:flex;gap:10px;align-items:flex-start;margin:0 0 10px"><span style="flex:none;width:16px;height:16px;border-radius:50%;border:5px solid #4F46E5;margin-top:2px;box-sizing:border-box"></span><span style="font-size:13px;color:#14122b"><strong>Shoppers (recommended)</strong><br><span style="color:#4b4868">People plus shopping agents, the assistants that browse and buy for a person. Bots are left out.</span></span></div>
      <div style="display:flex;gap:10px;align-items:flex-start;margin:0 0 10px"><span style="flex:none;width:16px;height:16px;border-radius:50%;border:1.5px solid #9a97b8;margin-top:2px;box-sizing:border-box"></span><span style="font-size:13px;color:#14122b"><strong>People only</strong><br><span style="color:#4b4868">Leaves out bots and shopping agents.</span></span></div>
      <div style="display:flex;gap:10px;align-items:flex-start"><span style="flex:none;width:16px;height:16px;border-radius:50%;border:1.5px solid #9a97b8;margin-top:2px;box-sizing:border-box"></span><span style="font-size:13px;color:#14122b"><strong>All traffic</strong><br><span style="color:#4b4868">Counts every visit, bots included, like raw pageview tools.</span></span></div>
    </div>
    <div style="background:#fff;border:1px solid #e6e4f2;border-left:4px solid #7C3AED;border-radius:0 12px 12px 0;padding:12px 16px;margin-top:12px;font-size:13px;color:#14122b">Bots excluded: 4,120 sessions (17.8%) in the last 7 days. Shopping agents are counted. <span style="color:#4F46E5;font-weight:600">Change</span></div>
    <p style="margin:12px 0 0;font-size:12px;color:#4b4868">Settings &gt; Traffic in Insights, and the line that appears on Insights. Session figures in the Insights line are illustrative.</p>
  </div>
</div>



<ul class="wp-block-list">
<li><strong>Your numbers count shoppers.</strong> Sessions, conversion rate, add-to-cart rate, exits and bounces now count people and shopping agents.</li>
<li><strong>A marker on your timeline.</strong> The day bot filtering started is marked, so a step up in conversion rate there is easy to read.</li>
<li><strong>A setting if you want a different view.</strong> Settings &gt; Traffic in Insights offers Shoppers (the default), People only, or All traffic, with your last seven days by type shown before you pick.</li>
<li><strong>Sorting doesn&#8217;t change with the setting.</strong> Your sort order never used bot visits and never will. The setting only changes what Insights display.</li>
<li><strong>A flag for traffic that doesn&#8217;t add up.</strong> If a collection&#8217;s sessions at least triple week over week while its cart rate falls by two thirds or more, Insights show &#8220;Traffic jumped without carts following&#8221;. That is the shape of a bot we haven&#8217;t identified yet, and it is worth a look.</li>
</ul>



<h2 class="wp-block-heading">Does Dynasort Store Shopper IP Addresses?</h2>



<p class="wp-block-paragraph">No. To recognize hosting networks we look at where each visit comes from, and we built that so we never keep the address itself. From each visit we keep the country, the network owner (for example, a home internet provider or a hosting company), a truncated address, and a one-way hash of the full address made with a key that changes every day and is deleted soon after. That is enough to spot one machine sending thousands of sessions today, and not enough to follow a person from one day to the next.</p>



<p class="wp-block-paragraph">Country and network data come from <a href="https://db-ip.com" target="_blank" rel="noopener">IP Geolocation by DB-IP</a>, licensed under <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener">CC BY 4.0</a>.</p>



<h2 class="wp-block-heading">Frequently Asked Questions</h2>



<h3 class="wp-block-heading">Does Dynasort count bot traffic in Insights?</h3>



<p class="wp-block-paragraph">No. Since October 13, 2026, Dynasort Insights leave bot sessions out by default. Sessions, conversion rate, add-to-cart rate and every other Insights number count people and shopping agents only. You can switch to People only or All traffic in Settings &gt; Traffic in Insights.</p>



<h3 class="wp-block-heading">Does bot traffic affect how Dynasort sorts my collections?</h3>



<p class="wp-block-paragraph">No. Dynasort sorting never uses bot visits, whatever you pick in the Insights traffic setting. Product views, cart adds and conversion rate used for sorting always come from people and shopping agents.</p>



<h3 class="wp-block-heading">What is the difference between a shopping agent and a bot?</h3>



<p class="wp-block-paragraph">A shopping agent is an assistant that browses and buys on behalf of a real person, such as ChatGPT&#8217;s agent. A bot is a crawler, scraper or page-rendering service that never buys. Dynasort counts shopping agents as shoppers and leaves bots out. The short rule: agents shop, bots don&#8217;t.</p>



<h3 class="wp-block-heading">How does Dynasort tell bots apart from shoppers?</h3>



<p class="wp-block-paragraph">Dynasort sees every storefront it serves, so it judges each device fingerprint by its behavior across the whole network. A fingerprint with many sessions and zero carts, where those stores&#8217; normal rates would predict many carts, is a bot. Dynasort also uses declared identities, signed agent requests (Web Bot Auth), browser windows bigger than the screen they run on, and hosting-network signals.</p>



<h3 class="wp-block-heading">Why did my conversion rate go up in Dynasort Insights?</h3>



<p class="wp-block-paragraph">Because bots no longer pad the session count. Your orders and carts did not change; the number they are divided by got smaller and more honest. At one fashion store where bots were about 30% of sessions, collection conversion rate moved from 0.27% to 0.39%. The Insights timeline marks the day bot filtering started.</p>



<h3 class="wp-block-heading">Are older Insights days filtered too?</h3>



<p class="wp-block-paragraph">Days from October 6, 2026 on are filtered. Earlier days stay as they were, and the Insights timeline marks when filtering began so the change is easy to read.</p>



<h3 class="wp-block-heading">Does Dynasort store shopper IP addresses?</h3>



<p class="wp-block-paragraph">No. Dynasort never stores a shopper&#8217;s raw IP address. It keeps the country, the network owner, a truncated address and a one-way hash that changes every day. Location data comes from DB-IP Lite, licensed CC BY 4.0.</p>



<h3 class="wp-block-heading">Can a real shopper be counted as a bot by mistake?</h3>



<p class="wp-block-paragraph">A person who adds to cart or checks out is counted as a shopper unless the visit also carries strong automation evidence, like a declared bot identity. The one honest gap: an undeclared assistant that browses and never buys looks exactly like a scraper, so it is counted as a bot. It produced no shopper outcome, so leaving it out does not hide a sale.</p>



<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Does Dynasort count bot traffic in Insights?","acceptedAnswer":{"@type":"Answer","text":"No. Since October 13, 2026, Dynasort Insights leave bot sessions out by default. Sessions, conversion rate, add-to-cart rate and every other Insights number count people and shopping agents only. You can switch to People only or All traffic in Settings > Traffic in Insights."}},{"@type":"Question","name":"Does bot traffic affect how Dynasort sorts my collections?","acceptedAnswer":{"@type":"Answer","text":"No. Dynasort sorting never uses bot visits, whatever you pick in the Insights traffic setting. Product views, cart adds and conversion rate used for sorting always come from people and shopping agents."}},{"@type":"Question","name":"What is the difference between a shopping agent and a bot?","acceptedAnswer":{"@type":"Answer","text":"A shopping agent is an assistant that browses and buys on behalf of a real person, such as ChatGPT's agent. A bot is a crawler, scraper or page-rendering service that never buys. Dynasort counts shopping agents as shoppers and leaves bots out. The short rule: agents shop, bots don't."}},{"@type":"Question","name":"How does Dynasort tell bots apart from shoppers?","acceptedAnswer":{"@type":"Answer","text":"Dynasort sees every storefront it serves, so it judges each device fingerprint by its behavior across the whole network. A fingerprint with many sessions and zero carts, where those stores' normal rates would predict many carts, is a bot. Dynasort also uses declared identities, signed agent requests (Web Bot Auth), browser windows bigger than the screen they run on, and hosting-network signals."}},{"@type":"Question","name":"Why did my conversion rate go up in Dynasort Insights?","acceptedAnswer":{"@type":"Answer","text":"Because bots no longer pad the session count. Your orders and carts did not change; the number they are divided by got smaller and more honest. At one fashion store where bots were about 30% of sessions, collection conversion rate moved from 0.27% to 0.39%. The Insights timeline marks the day bot filtering started."}},{"@type":"Question","name":"Are older Insights days filtered too?","acceptedAnswer":{"@type":"Answer","text":"Days from October 6, 2026 on are filtered. Earlier days stay as they were, and the Insights timeline marks when filtering began so the change is easy to read."}},{"@type":"Question","name":"Does Dynasort store shopper IP addresses?","acceptedAnswer":{"@type":"Answer","text":"No. Dynasort never stores a shopper's raw IP address. It keeps the country, the network owner, a truncated address and a one-way hash that changes every day. Location data comes from DB-IP Lite, licensed CC BY 4.0."}},{"@type":"Question","name":"Can a real shopper be counted as a bot by mistake?","acceptedAnswer":{"@type":"Answer","text":"A person who adds to cart or checks out is counted as a shopper unless the visit also carries strong automation evidence, like a declared bot identity. The one honest gap: an undeclared assistant that browses and never buys looks exactly like a scraper, so it is counted as a bot. It produced no shopper outcome, so leaving it out does not hide a sale."}}]}</script>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Document Your Shopify Merchandising Strategy</title>
		<link>https://dynasort.io/document-merchandising-strategy/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Tue, 13 Oct 2026 14:24:00 +0000</pubDate>
				<category><![CDATA[Quick Notes]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=812</guid>

					<description><![CDATA[Document your merchandising strategy as a set of rules, not a slide deck. For each collection type, write down the goal, the signals that should drive ranking (and their relative weight), the exceptions (pinned heroes, excluded products), and how success is measured. If you use a sorting tool, the recipes themselves become the documentation: they [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Document your merchandising strategy as a set of rules, not a slide deck. For each collection type, write down the goal, the signals that should drive ranking (and their relative weight), the exceptions (pinned heroes, excluded products), and how success is measured. If you use a sorting tool, the recipes themselves become the documentation: they state the intent and they execute it.</p>
<h2>What belongs in the document?</h2>
<p>Keep it to one page per collection type. For each, capture:</p>
<ul>
<li><strong>Goal:</strong> what this collection is for (discovery, clearance, campaign support).</li>
<li><strong>Ranking signals and weights:</strong> for example, sales velocity heavily, margin moderately, newness lightly.</li>
<li><strong>Exceptions:</strong> what gets pinned, what gets excluded, and how sold-out items are handled.</li>
<li><strong>Success metric:</strong> usually collection conversion rate, plus <a href="https://dynasort.io/product-position-effectiveness/">position effectiveness</a> as a sanity check.</li>
<li><strong>Review cadence:</strong> when the weights get revisited, and by whom.</li>
</ul>
<h2>Why do recipes beat written documents?</h2>
<p>A written strategy drifts. The person who sorted the collection leaves, the doc goes stale, and six months later nobody knows why the grid looks the way it does. A sorting recipe cannot drift from practice because it is the practice: the weights you wrote down are the weights being applied, on a schedule, to every collection that uses the recipe. New team members read the recipe and see the intent. Auditing your strategy becomes reading configuration instead of interviewing whoever sorted things last.</p>
<p>If you formalize nothing else, name your recipes descriptively (&#8220;Velocity plus margin, sale collections&#8221;) and record one sentence of intent for each. That small habit preserves more institutional knowledge than most strategy decks ever do.</p>
<p><em>Dynasort turns strategy into living configuration. <a href="https://apps.shopify.com/dynasort?utm_source=dynasort_io&#038;utm_medium=website&#038;utm_campaign=quick_notes&#038;utm_content=document-merchandising-strategy" target="_blank" rel="noopener">Install it from the Shopify App Store</a> or <a href="https://dynasort.io/features/">see how it works</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Structured Data: How AI Agents See Your Catalog</title>
		<link>https://dynasort.io/structured-data-ai-agents/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Tue, 13 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[AI & Agentic Commerce]]></category>
		<category><![CDATA[Conversion Rate Optimization]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1137</guid>

					<description><![CDATA[&#8592; All 100 tips &#160;&#183;&#160; Tip 53 of 100 &#160;&#183;&#160; 48 days to Cyber Monday Structured data, the schema.org product markup embedded in your pages, is how LLMs, shopping agents, and search engines actually see your Shopify store. Your theme is for humans. The colors, the typography, the carefully art-directed hero: machines read none of [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="ds-cm100-nav" style="max-width:760px;margin:0 auto 8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tip 53 of 100 &nbsp;&middot;&nbsp; 48 days to Cyber Monday
</div>



<p class="wp-block-paragraph">Structured data, the schema.org product markup embedded in your pages, is how LLMs, shopping agents, and search engines actually see your Shopify store. Your theme is for humans. The colors, the typography, the carefully art-directed hero: machines read none of it. They read the machine-readable layer underneath, and for a growing share of your future customers, that layer is your storefront. When someone asks ChatGPT or Perplexity for &#8220;the best insulated water bottle under $40&#8221;, the systems answering that question shop your data, not your design.</p>



<p class="wp-block-paragraph">Back in tip 26 we made the argument that agentic shopping is coming. This tip is the practical half: audit what the machines currently see, because most merchants have never once looked, and what is there was decided by theme developers and app defaults, not by anyone who cares about your revenue.</p>



<div class="ds-t053-wrap">
  <style>
    .ds-t053-wrap{max-width:760px;margin:36px auto;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif}
    .ds-t053-box{background:#f8f9ff;border:1px solid #e4e2f5;border-radius:14px;padding:26px 28px}
    .ds-t053-title{font-size:15px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#4F46E5;margin:0 0 4px}
    .ds-t053-sub{font-size:14px;color:#6b7280;margin:0 0 20px;line-height:1.5}
    .ds-t053-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
    .ds-t053-card{background:#fff;border:1px solid #e4e2f5;border-radius:12px;overflow:hidden}
    .ds-t053-head{padding:10px 14px;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#8b88b0;border-bottom:1px solid #eeedf6}
    .ds-t053-body{padding:14px}
    .ds-t053-hero{height:64px;border-radius:8px;background:linear-gradient(120deg,#7c76ec,#4F46E5);margin-bottom:10px}
    .ds-t053-bar{height:9px;border-radius:4px;background:#e5e3f3;margin:7px 0}
    .ds-t053-bar.ds-t053-w60{width:60%}
    .ds-t053-bar.ds-t053-w85{width:85%}
    .ds-t053-code{font-family:'SF Mono',SFMono-Regular,Consolas,Menlo,monospace;font-size:11.5px;line-height:1.75;color:#3e3a5e}
    .ds-t053-k{color:#4F46E5;font-weight:700}
    .ds-t053-miss{color:#b23b3b;font-weight:700}
    .ds-t053-foot{font-size:13px;color:#6b7280;margin:18px 0 0;line-height:1.55;text-align:center}
    @media (max-width:620px){ .ds-t053-cols{grid-template-columns:1fr} }
  </style>
  <div class="ds-t053-box">
    <p class="ds-t053-title">One product page, two audiences</p>
    <p class="ds-t053-sub">The right panel is what an agent shops. If a field is missing there, for that audience it is missing everywhere.</p>
    <div class="ds-t053-cols">
      <div class="ds-t053-card">
        <div class="ds-t053-head">What humans see</div>
        <div class="ds-t053-body">
          <div class="ds-t053-hero"></div>
          <div class="ds-t053-bar ds-t053-w60"></div>
          <div class="ds-t053-bar ds-t053-w85"></div>
          <div class="ds-t053-bar ds-t053-w60"></div>
        </div>
      </div>
      <div class="ds-t053-card">
        <div class="ds-t053-head">What agents see</div>
        <div class="ds-t053-body ds-t053-code">
          <span class="ds-t053-k">&#8220;@type&#8221;</span>: &#8220;Product&#8221;<br>
          <span class="ds-t053-k">&#8220;name&#8221;</span>: &#8220;Summit Bottle 32oz&#8221;<br>
          <span class="ds-t053-k">&#8220;price&#8221;</span>: &#8220;38.00&#8221;<br>
          <span class="ds-t053-k">&#8220;availability&#8221;</span>: &#8220;InStock&#8221;<br>
          <span class="ds-t053-k">&#8220;aggregateRating&#8221;</span>: <span class="ds-t053-miss">missing</span><br>
          <span class="ds-t053-k">&#8220;gtin&#8221;</span>: <span class="ds-t053-miss">missing</span>
        </div>
      </div>
    </div>
    <p class="ds-t053-foot">Nobody art-directs the right panel, which is exactly why auditing it is an edge right now.</p>
  </div>
</div>



<h2 class="wp-block-heading">The 20-minute audit</h2>



<ul class="wp-block-list">
  <li><strong>Run your bestseller&#8217;s URL through <a href="https://search.google.com/test/rich-results" target="_blank" rel="noopener">Google&#8217;s Rich Results Test</a>.</strong> It shows exactly what structured data your page emits, plus errors and warnings. Most Shopify themes emit basic <a href="https://schema.org/Product" target="_blank" rel="noopener">Product markup</a> out of the box; the question is whether it is complete and correct.</li>
  <li><strong>Check the fields that sell:</strong> price, currency, availability, review rating and count, brand, identifiers like GTIN or MPN. &#8220;Missing rating&#8221; means every review you collected is invisible to this entire audience. &#8220;Availability: out of stock&#8221; on an in-stock bestseller is a five-alarm bug you would otherwise never notice.</li>
  <li><strong>Test one of each page type</strong>, not just one product: a collection page, a variant-heavy product, a sale product (is the sale price the one in the markup?).</li>
  <li><strong>Check your feeds too.</strong> Your Google Merchant Center feed is structured data with a different hat on, and agents lean on the same product attributes. Clean titles, real categories, filled attribute fields: the boring plumbing is the marketing now.</li>
</ul>



<h2 class="wp-block-heading">Fixing what you find</h2>



<p class="wp-block-paragraph">Gaps usually trace to one of three places: a theme that emits skeleton markup (fix in the theme, or choose a review or SEO app that injects the missing pieces), product data that was never filled in (no markup can emit a GTIN you never entered), or an app conflict double-emitting contradictory markup, which reads as spam to machines. None of these are glamorous fixes. All of them compound: the same clean data feeds Google&#8217;s shopping surfaces today and every agent that shops on your customers&#8217; behalf next year. The stores that treat product data as a first-class asset are the ones the machines will be able to recommend.</p>



<div class="ds-cm100-nav" style="max-width:760px;margin:28px auto 0;padding-top:18px;border-top:1px solid #e4e2f5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tomorrow, tip 54: 30 seconds of unpolished honesty that outsells your best-produced ad.
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Trust Signals at the Money Moment</title>
		<link>https://dynasort.io/trust-signals-money-moment/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Mon, 12 Oct 2026 13:00:00 +0000</pubDate>
				<category><![CDATA[Cart & Checkout]]></category>
		<category><![CDATA[Conversion Rate Optimization]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1136</guid>

					<description><![CDATA[&#8592; All 100 tips &#160;&#183;&#160; Tip 52 of 100 &#160;&#183;&#160; 49 days to Cyber Monday Trust signals in the cart work because doubt has a schedule. A shopper does not worry about payment security while browsing your collection, and does not wonder &#8220;what if it doesn&#8217;t fit&#8221; while watching your product video. The doubt arrives [&#8230;]]]></description>
										<content:encoded><![CDATA[
<div class="ds-cm100-nav" style="max-width:760px;margin:0 auto 8px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tip 52 of 100 &nbsp;&middot;&nbsp; 49 days to Cyber Monday
</div>



<p class="wp-block-paragraph">Trust signals in the cart work because doubt has a schedule. A shopper does not worry about payment security while browsing your collection, and does not wonder &#8220;what if it doesn&#8217;t fit&#8221; while watching your product video. The doubt arrives at the money moment: cart open, checkout button glowing, thumb hovering. That is when the brain runs its final audit: is this site legit, what if it&#8217;s wrong, who do I even call. Around <a href="https://baymard.com/lists/cart-abandonment-rate" target="_blank" rel="noopener">70 percent of carts are abandoned</a>, and while plenty of that is window shopping, a real slice is this audit coming back negative in silence.</p>



<p class="wp-block-paragraph">The fix is placement, not volume. Most stores have all the trust material somewhere: a guarantee on some policy page, payment icons in the footer, a contact form three clicks deep. That is trust filed away in the basement. The signals have to sit where the doubt happens, inside the cart, within eyeshot of the checkout button, so the question and its answer occupy the same glance.</p>



<div class="ds-t052-wrap">
  <style>
    .ds-t052-wrap{max-width:760px;margin:36px auto;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif}
    .ds-t052-box{background:#f8f9ff;border:1px solid #e4e2f5;border-radius:14px;padding:26px 28px}
    .ds-t052-title{font-size:15px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#4F46E5;margin:0 0 4px}
    .ds-t052-sub{font-size:14px;color:#6b7280;margin:0 0 20px;line-height:1.5}
    .ds-t052-cart{background:#fff;border:2px solid #d9d6f0;border-radius:14px;max-width:360px;margin:0 auto;padding:16px}
    .ds-t052-item{display:flex;gap:10px;align-items:center;padding-bottom:12px;border-bottom:1px solid #eeedf6;margin-bottom:12px}
    .ds-t052-thumb{width:44px;height:44px;border-radius:8px;background:#e5e3f3}
    .ds-t052-lines{flex:1}
    .ds-t052-l1{height:9px;border-radius:4px;background:#d9d6f0;width:80%}
    .ds-t052-l2{height:9px;border-radius:4px;background:#eeedf6;width:45%;margin-top:6px}
    .ds-t052-price{font-size:13px;font-weight:800;color:#12102e}
    .ds-t052-total{display:flex;justify-content:space-between;font-size:13px;font-weight:800;color:#12102e;margin-bottom:10px}
    .ds-t052-btn{background:#4F46E5;color:#fff;border-radius:9px;text-align:center;font-size:14px;font-weight:800;padding:12px;letter-spacing:.02em}
    .ds-t052-zone{margin-top:10px;border:2px dashed #4F46E5;border-radius:10px;padding:10px 12px;position:relative}
    .ds-t052-zlabel{position:absolute;top:-9px;left:12px;background:#fff;padding:0 6px;font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#4F46E5}
    .ds-t052-sig{display:flex;align-items:center;gap:8px;font-size:12px;color:#12102e;font-weight:600;margin:6px 0}
    .ds-t052-ico{width:18px;height:18px;border-radius:5px;background:#ecebfc;color:#4F46E5;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;flex:none}
    .ds-t052-foot{font-size:13px;color:#6b7280;margin:18px 0 0;line-height:1.55;text-align:center}
  </style>
  <div class="ds-t052-box">
    <p class="ds-t052-title">Answers next to the doubt</p>
    <p class="ds-t052-sub">The dashed zone is the highest-value trust real estate on your store: one glance from the checkout button.</p>
    <div class="ds-t052-cart">
      <div class="ds-t052-item">
        <div class="ds-t052-thumb"></div>
        <div class="ds-t052-lines"><div class="ds-t052-l1"></div><div class="ds-t052-l2"></div></div>
        <div class="ds-t052-price">$64</div>
      </div>
      <div class="ds-t052-total"><span>Total</span><span>$64</span></div>
      <div class="ds-t052-btn">Checkout</div>
      <div class="ds-t052-zone">
        <span class="ds-t052-zlabel">The money moment</span>
        <div class="ds-t052-sig"><span class="ds-t052-ico">&#10003;</span> 60-day returns, free and easy</div>
        <div class="ds-t052-sig"><span class="ds-t052-ico">&#9993;</span> Questions? help@yourstore.com</div>
        <div class="ds-t052-sig"><span class="ds-t052-ico">&#9679;</span> Secure checkout &middot; Visa, MC, Amex, Shop Pay</div>
      </div>
    </div>
    <p class="ds-t052-foot">Three lines, three doubts answered: what if it&#8217;s wrong, who do I talk to, is my card safe.</p>
  </div>
</div>



<h2 class="wp-block-heading">What earns a slot, and what does not</h2>



<p class="wp-block-paragraph">Each signal earns its place by answering a specific doubt. Payment icons and the padlock answer &#8220;is my card safe&#8221;. A concrete guarantee (&#8220;60-day returns, free and easy&#8221;) answers &#8220;what if it&#8217;s wrong&#8221;, and specific beats vague here by a mile; &#8220;satisfaction guaranteed&#8221; answers nothing. A visible support contact answers &#8220;is anyone home&#8221;, and it is the most underrated of the three, because a store that shows a real way to reach a human reads as a store that expects to be reachable.</p>



<p class="wp-block-paragraph">What does not earn a slot: a wall of twelve badges from certificate vendors nobody recognizes. Unfamiliar seals do not add trust, they add clutter, and clutter next to the checkout button is exactly where you can least afford it. Three signals, recognizable and specific, beat twelve every time. And never let trust widgets crowd the button itself: the cart&#8217;s hierarchy is checkout first, reassurance in its shadow.</p>



<p class="wp-block-paragraph">Ten-minute audit: open your cart on your phone, put your thumb on the checkout button, and ask the three doubts out loud. Wrong-purchase, reachable-human, safe-payment. If the answer to any of them is not on screen, that is your fix this week, and it is a copy-and-placement job, not a development project.</p>



<div class="ds-cm100-nav" style="max-width:760px;margin:28px auto 0;padding-top:18px;border-top:1px solid #e4e2f5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:14px;color:#6b7280">
  <a href="https://dynasort.io/100-shopify-cro-tips-tricks-and-strategies-in-100-days/" style="color:#4F46E5;font-weight:700;text-decoration:none">&larr; All 100 tips</a>
  &nbsp;&middot;&nbsp; Tomorrow, tip 53: your store has a second audience that never sees your theme. Time to check what you look like to them.
</div>

]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Product Recommendations for a New Store with Little Data</title>
		<link>https://dynasort.io/recommendations-new-store-no-data/</link>
		
		<dc:creator><![CDATA[Wade]]></dc:creator>
		<pubDate>Sun, 11 Oct 2026 15:25:00 +0000</pubDate>
				<category><![CDATA[Quick Notes]]></category>
		<guid isPermaLink="false">https://dynasort.io/?p=1035</guid>

					<description><![CDATA[A new store can run useful recommendations from day one by leaning on catalog signals it already has: product recency, price position, stock, margin, and collection relationships. Behavior signals like conversion rate join the ranking automatically as traffic accumulates, so the rows improve gradually instead of guessing from nothing. Start with Catalog Signals Recommendation logic [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A new store can run useful recommendations from day one by leaning on catalog signals it already has: product recency, price position, stock, margin, and collection relationships. Behavior signals like conversion rate join the ranking automatically as traffic accumulates, so the rows improve gradually instead of guessing from nothing.</p>
<h2>Start with Catalog Signals</h2>
<p>Recommendation logic does not need sales history to beat a random order. On day one you already know which products are new, fully stocked, well-margined, and in the same collection as the product being viewed. A row built from those signals, seeded by context (the viewed product, the cart contents), is genuinely helpful: it shows related, buyable products, which is most of the job. What it cannot yet do is distinguish two similar products by which one shoppers prefer, and that is fine, because neither can anything else on a store with no shoppers yet.</p>
<h2>Let Data Take Over Gradually</h2>
<ul>
<li><strong>Blend, do not switch.</strong> Keep catalog signals in the recipe and add behavior signals with real weight as events accumulate; there is no cliff where the logic changes character.</li>
<li><strong>Rankings refresh automatically</strong> as data arrives, so the first bestseller starts earning better positions the week it becomes one.</li>
<li><strong>Watch the serving numbers.</strong> Clicks and adds per row tell you when the data is thick enough to justify heavier behavior weighting.</li>
</ul>
<p>Dynasort seeds new recommendation recipes with sensible starting points, and every signal is a weight you can raise as your store&#8217;s data matures.</p>
<p><em>Dynasort recommendations work from day one and improve with data. <a href="https://apps.shopify.com/dynasort?utm_source=dynasort_io&amp;utm_medium=website&amp;utm_campaign=quick_notes&amp;utm_content=recommendations-new-store-no-data" target="_blank" rel="noopener">Install it from the Shopify App Store</a> or <a href="https://dynasort.io/recommendations/">start with sensible defaults</a>.</em></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
