<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Dugong Field Notes</title>
    <link>https://blog.dugong.live/</link>
    <atom:link href="https://blog.dugong.live/feed.xml" rel="self" type="application/rss+xml" />
    <description>Field notes on workflow automation, AI agents, and the playbooks that run modern teams. From Dugong.</description>
    <language>en-us</language>
    <copyright>© 2026 Dugong AI Inc.</copyright>
    <managingEditor>hello@dugong.live (Dugong Research Desk)</managingEditor>
    <webMaster>hello@dugong.live (Dugong Research Desk)</webMaster>
    <generator>Dugong Field Notes</generator>
    <image>
      <url>https://blog.dugong.live/og-image.png</url>
      <title>Dugong Field Notes</title>
      <link>https://blog.dugong.live/</link>
    </image>
    <lastBuildDate>Sat, 18 Jul 2026 09:00:00 +0000</lastBuildDate>

    <item>
      <title>How to add a gift message and gift wrap option at checkout on Shopify</title>
      <link>https://blog.dugong.live/how-to-add-a-gift-message-and-gift-wrap-at-checkout-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-add-a-gift-message-and-gift-wrap-at-checkout-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 18 Jul 2026 09:00:00 +0000</pubDate>
      <description>A large share of what any store sells is bought for someone else, and the gift buyer wants two simple things every gift shop has offered forever: wrap it nicely, and let me write a note. On Shopify both wishes fall into a gap, and the customer usually does not find out until the gift has already landed wrong. This is one of the steadiest complaints in the Shopify community ("how can I add a gift note to my packing slip," "add a gift message option at checkout," "how do I hide prices on the slip for a gift"), and the answers are always the same short menu: repurpose the order-note box, edit your theme's Liquid, or install an app. Give Shopify its due first: there is one native place for a customer to leave text, the cart order-note field, which you can switch on in the theme, rename to something like "add a gift message here," and read in the admin. The wall is that the order note was built for delivery instructions, not gifting: it is one field for the whole order so a gift message shares the same box as leave-it-with-the-neighbor, it does not attach to a specific item, it is off by default in many themes, it has no length limit or validation, and it carries no toggle that tells the rest of your systems this is a gift. It captures text, not intent. Gift wrap is thinner still: there is no native add-gift-wrap option at checkout for a standard store, the one native path is Checkout Extensibility which is Shopify Plus only, and even there the out-of-the-box result is a bare toggle rather than a wrap that arrives as a fee, a line item your accounting can see, and a clear instruction at the packing bench. The worst failure is the price on the box: Shopify's packing slip is one template for every order and it prints prices, with no native switch that says this order is a gift, hide the totals, so unless you edit the Liquid and branch it by hand the recipient opens their present and sees exactly what the sender paid. Doing it by hand is a chain of small manual steps that breaks the first busy week, because it rests on someone in the admin noticing a note, deciding it is a gift, and remembering to pick the right template, at exactly the moment the fourth-quarter rush makes that impossible, and it cannot hold the judgement a text field never carries: the empty submission, the pasted tracking URL, the abusive note, the gift shipping to a different address, the cart that is half gift and half self-purchase, the split shipment where the message and wrap must travel with the right box. The Dugong playbook treats gifting as its own kind of order: capture the gift toggle, wrap choice, and message as order attributes rather than one buried note; validate the message for length, empties, and anything offensive and tidy the formatting; attach the wrap as a real line item or fee, or a packing instruction where free; tag the order as a gift so every later step can branch on it; build a gift packing slip with the message in and every price and total out, routed to the bench; and hold for review an offensive or oversized message, a multi-address gift, or a split shipment. Framed as a compiler problem, not one more field on the product page, because whether a message is fit to print, whether a gift ships to the buyer or someone else, whether the price is hidden on this box and shown on the next, and whether the wrap instruction reached the bench is judgement that changes per order, which a fixed form handles badly and a busy packing team cannot hold through a peak. By Priya Singh, 2026-07-18.</description>
    </item>

    <item>
      <title>How to set up tiered volume discounts (buy more, save more) on Shopify</title>
      <link>https://blog.dugong.live/how-to-set-up-tiered-volume-discounts-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-set-up-tiered-volume-discounts-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Thu, 16 Jul 2026 09:00:00 +0000</pubDate>
      <description>You want the oldest offer in retail, buy more and save more: buy 3 save 10 percent, buy 6 save 20, buy 12 save 30. You open Shopify's discount screen, build the first tier, go to add the second, and there is nowhere to put it, because a Shopify discount holds one condition and only one. This is one of the most-repeated frustrations in the Shopify community ("tiered discounts based on variant quantity," "tiered buy X get Y discount," "how do I do buy more save more without an app," "why does my tiered discount only apply one tier"). Give Shopify its due first: the native automatic discounts are genuinely good at the simple case, buy 3 get 10 percent off applies cleanly at checkout with no code and no app, and you can gate a discount to a collection, a minimum quantity, or a minimum spend. The wall is that each discount holds a single condition, so buy 3 save 10 is one rule and buy 6 save 20 is a second, separate rule, and there is no way to chain them into one storefront offer that steps the saving up as the cart grows. Faking it with three automatic discounts backfires: a cart with 12 units qualifies for all three, Shopify does not pick the best tier and suppress the rest, so the shopper can land on the smallest saving or the discounts refuse to combine, and there is a hard cap of 25 active automatic discounts so the one-discount-per-tier approach runs out of room fast. The one place Shopify does real quantity tiers is B2B, where quantity pricing on a price list behaves like a proper ladder, but it applies only to customers assigned to a company profile, not to the open storefront, not to tagged retail customers, and not to a cart-total tier a first-time visitor should see. And the old escape hatch is gone: Shopify Scripts, the way Plus merchants faked tiered cart pricing for years, stopped executing on June 30, 2026, so any store that ran buy-more-save-more through a Script now has a broken checkout and is pushed toward Shopify Functions or a discount app built on them. Doing it by hand is a maze of overlapping automatic discounts and coupon codes that turns fragile the moment a sale or a newsletter code is also running, because Shopify's combination settings are coarse and a volume tier stacked on a code can quietly push an item below cost, and no tier table can hold the judgement that margins differ per product, that wholesale and retail should not see the same breaks, and that a deep tier during a promotion is a different decision from a permanent price. The Dugong playbook treats it as a resolver plus a guardrail plus a nudge running on every cart change: read the tier table, the breaks, whether they key off units or spend, and the audience; resolve the single highest tier the cart has actually earned; apply only that tier to the right lines or the whole cart, never a smaller one by accident; guard stacking by enforcing whether it can combine with a code or a live sale and holding each tier above its margin floor; show the shopper the next rung so add two more to save 20 percent does its own upselling; and hold for review a tier that would cross a floor, a code clash, or a new promotion that overlaps an existing ladder. Framed as a compiler problem, not one more grid of quantities and percentages, because whether a cart earned a tier is arithmetic but whether applying it alongside a code crosses the floor, which audience sees the deeper ladder, and whether a new promotion overlaps a live one is a judgement that shifts per product, per audience, and per promotion window. By Priya Singh, 2026-07-16.</description>
    </item>

    <item>
      <title>How to automatically sync bundle inventory with component stock on Shopify</title>
      <link>https://blog.dugong.live/how-to-sync-bundle-inventory-with-component-stock-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-sync-bundle-inventory-with-component-stock-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Wed, 15 Jul 2026 09:00:00 +0000</pubDate>
      <description>You sell a gift set and the candle, the soap, and the bath bomb inside it never move a single unit, because Shopify counts the bundle as its own product with its own stock number, so the parts oversell on their own pages while the bundle keeps selling after the shelf behind it is empty. This is one of the most-repeated complaints in the Shopify community ("bundle inventory not updating," "how do I sell a bundle of two products and make the inventory go down," "my bundle shows sold out but the items are in stock," "components not deducting when the bundle sells"). Give Shopify its due first: the free Shopify Bundles app does link a fixed bundle to its components and shows the bundle as available based on the lowest-stock component, so it will not sell a kit whose parts are gone, and for a store that builds every bundle through that app and keeps them simple that linkage does the core job. The trouble is how narrow that happy path is. The native app caps the number of components and variants, does not track true mix-and-match bundles the same clean way (the very offer that most needs component math), tracks a bundle against overall component stock rather than per location so a store with two warehouses can sell a bundle a location cannot assemble, and does nothing for the many bundles merchants built the older way as a standalone product or a single variant with its own inventory number, which no component sale ever touches. Then the seams break even a linked bundle: edit an order after it is placed and the component math does not re-run, and sync your catalog to a marketplace and the bundle usually travels as one atomic SKU, so selling ten kits on your store leaves the component still showing its full quantity on the channel you were not watching. Doing it by hand collapses the instant a component is shared, because one candle sitting in a starter kit, a deluxe set, a gift box, and its own product page means one sale should drop the real candle count and recompute all four listings, and across a catalog that sells all day you are always one sale behind, which on inventory means always either overselling something you cannot ship or hiding something you could. The Dugong playbook treats it as a source of truth plus a cascade plus a reconciliation that runs both ways: on any sale, return, restock, or order edit that touches a bundle or a component, resolve the bundle to its recipe of which parts and how many; deduct each component's real stock, per location, by what the sale consumed; recompute every bundle's availability as the largest full set its parts can still build; cascade a shared component to every bundle and product page that depends on it; sync the corrected counts to every channel so nothing shows phantom stock; and hold for review a negative component, a partial return where only some parts came back, or a zeroed bundle better sent to backorder than hidden. Framed as a compiler problem, not one more field mapping a bundle to its parts, because whether a bundle is out is arithmetic but whether to hold a reserve for already-promised kits, credit a partial return, or backorder a zeroed set is a judgement that shifts per component, per location, and per order, which a fixed rulebook handles badly and a person cannot hold across a catalog that moves all day. By Priya Singh, 2026-07-15.</description>
    </item>

    <item>
      <title>How to automatically pause ads for out-of-stock products on Shopify</title>
      <link>https://blog.dugong.live/how-to-automatically-pause-ads-for-out-of-stock-products-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-pause-ads-for-out-of-stock-products-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sun, 12 Jul 2026 09:00:00 +0000</pubDate>
      <description>A product sells out at two in the afternoon and your Google and Meta ads keep running it until past midnight, sending paid clicks to a page where the only button says Sold Out. Shopify never paused the ad, because it does not pause ads at all, it syncs a feed on a schedule, and the money keeps going out the door in the gap. This is one of the most-repeated complaints in the Shopify community ("Cant run ads due to out of stock item," "Google advertises my out of stock items," "how do I stop wasting ad money on products that are sold out"). Give Shopify its due first: the Google and Meta sales channels connect your catalog to a product feed that carries an availability attribute, so a sold-out product is eventually marked out of stock, and for a store that never wired a feed by hand that sync is real and useful. The trouble is what it does not do. It runs on a schedule, not the instant stock hits zero, so there is a lag between the sale that empties your shelf and the feed that admits it, and Google and Meta then re-crawl and re-approve on their own clocks on top of that, and through the whole gap the ad keeps serving and the meter keeps running. It updates the feed but never pauses the campaign or ad set on the platform, and for a Performance Max or Advantage+ Shopping campaign the platform decides what to show across your entire feed, so a single out-of-stock item does not stop spend, it just shifts it around, sometimes onto things you did not intend. And when the feed and the live page disagree about availability, which the lag guarantees, Google routinely disapproves the product, and a pile of disapprovals drags on the health of the whole account, so a stale feed wastes spend on the dead product and quietly hurts the ads for the products still selling. None of it touches the thing merchants keep asking for: a rule that lives in the store, watches inventory, and pauses the ads for a specific product the moment it is not worth advertising, then turns them back on when it is. Doing it by hand falls apart on two words, which thing: pausing the whole campaign turns off your in-stock products too, and pausing only the sold-out item means finding its exact placement in each account, the listing group inside a Performance Max campaign, the specific ad in a standard campaign, the catalog item or ad set in Meta, and matching it back to the Shopify product and variant that ran out, then remembering to reverse it the second stock returns. It rewards a fast, reversible decision made per product, per variant, and per hour, which is where a person loses and a fixed rule misfires. The Dugong playbook treats it as detection plus a match across systems plus a judgement plus a reversible action in two ad accounts and a feed: on a product or variant crossing your stock threshold, match it to its ad placements across Google and Meta; read whether it is truly out, low but restocking soon, or out in one variant while others still sell; pause only the affected placement, never the whole campaign; correct the feed availability so the product stops getting disapproved; resume the ad and the listing the moment inventory returns above the threshold; and hold for review a flickering bestseller, a budget worth reallocating, or a restock landing within the hour. Framed as a compiler problem, not one more threshold field, because whether an item is out is arithmetic but whether to pause its ad, hold it, or move the freed budget is a judgement about restock timing, campaign optimization, and media strategy that shifts per product, per platform, and per hour. By Priya Singh, 2026-07-12.</description>
    </item>
    <item>
      <title>How to limit purchase quantity per customer on Shopify</title>
      <link>https://blog.dugong.live/how-to-limit-purchase-quantity-per-customer-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-limit-purchase-quantity-per-customer-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 11 Jul 2026 09:00:00 +0000</pubDate>
      <description>You cap a hot product at two per person, the drop sells out in minutes, and the orders list tells the real story: one buyer took forty units across twenty tidy little orders. The cap you advertised did nothing, because Shopify never counted the customer, it only ever counted the cart. This is one of the most-repeated requests in Shopify merchant communities running drops, flash sales, collabs, and allocation-limited products ("limit quantity per customer," "stop one person buying all my stock," "why does my two-per-order limit let someone place ten orders," "enforce one per customer during a launch"). Give Shopify credit for the part it does: the native add-to-cart limit, set under checkout preferences, caps the maximum quantity of a given product a shopper can put in one cart, and for stopping an obvious over-buy in a single transaction it works. But a per-cart limit is not a per-customer limit, and the native rule hits three walls the moment you are protecting a real allocation: it is per variant, not per product or per customer, so a tee in three colors with a limit of two lets one shopper take two of each color in the same cart; it resets on every order, because the limit lives on the cart, so the instant a checkout completes the counter is gone and the same person starts a fresh cart and buys again; and it does not know who the customer is, never looking at email, address, card, or account, and it does not apply in Shopify POS, on draft orders, or for B2B profiles. The heart of a purchase limit is a move Shopify does not make: recognize the buyer across orders, keep a running count of what they have already taken, and refuse the order that pushes them over. The common workaround, code on the product or cart page that blocks the button, is skipped by the many doors into checkout that never touch that page (the Shop Pay, Apple Pay, and Google Pay wallet buttons, buy-it-now, a saved cart link, a checkout permalink), and underneath sits the harder identity problem, because a limit keyed to a logged-in account is walked around with a guest checkout or a second email and one keyed to a cookie is beaten by an incognito window. The usual moves each cost something: the add-to-cart limit caps the cart and leaves the customer uncapped; cart-page code covers one path and never counts what the same person bought an hour ago; requiring accounts adds friction and still waves through a reseller with a burner email; a Flow reacts after the order is placed and cannot hold a running per-customer total or block checkout before the money moves; and an order-limit app enforces a fixed rulebook that cannot tell a genuine household at one address from a reseller, exempt a wholesale account, or judge an uncertain match. The Dugong playbook treats it as a read plus an identity match plus a decision plus an action at checkout plus a set of corrections: on a new order or checkout, read the items and quantities and the per-customer limit for this product, collection, and launch window; identify the buyer across orders by email, shipping and billing address, payment fingerprint, account, and device; decide if this order takes them over once you add what they already bought in the window; enforce at checkout on every path in, including the wallet buttons and checkout permalinks; clean up what slipped by cancelling or trimming the excess, refunding it, and restocking the units; tell the customer the limit clearly and confirm kindly when an order was trimmed; and hold a shared-address household, a wholesale exempt, a gift, or an uncertain match for a human. Framed as a compiler problem, not one more quantity field, because whether an order is over the cap is arithmetic but whether to cancel it is a judgement about identity, households, wholesale, and gifts that shifts per order, per customer, and per minute of a launch. By Priya Singh, 2026-07-11.</description>
    </item>

    <item>
      <title>How to automatically add a free gift to the cart on Shopify</title>
      <link>https://blog.dugong.live/how-to-automatically-add-a-free-gift-with-purchase-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-add-a-free-gift-with-purchase-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Wed, 08 Jul 2026 09:00:00 +0000</pubDate>
      <description>You set up a spend seventy-five, get a free gift promotion, a customer crosses the threshold, and the free gift never appears in their cart, because a Shopify discount only reduces a price, it never adds the item to the cart. Buy X Get Y has no store-wide cart-value trigger, fires only on specific products or collections, supports one tier per discount, and will not stack under a larger automatic discount, so the gift you promised silently does not happen and the customer either checks out without it or emails asking where it went. Even with a gift app, the auto-add usually fires on the cart page, so a wallet button, a checkout permalink, or a jump straight to checkout skips it, and nothing pulls the gift back out when the cart drops under the threshold or reprices it when the qualifying item is removed. This is one of the most-repeated requests in Shopify merchant communities running promotions ("automatically add a free gift to the cart," "free gift when a customer spends over an amount," "why does my Buy X Get Y not show the gift"). Give Shopify credit for the part it does: the native Buy X Get Y discount genuinely handles a fixed, product-specific bundle, buy this product or something from this collection and get this item free or at a percentage off, and for that shape it prices the cheapest qualifying item to zero cleanly. But most gift offers are not that shape, and the native rule hits three walls: it only reduces a price and never adds the item, so if the gift is not already in the cart there is nothing for the discount to touch and nothing appears; there is no store-wide cart-value trigger, so spend one hundred on anything and get a gift is not expressible; and it supports only one tier per discount and will not stack, so an existing larger discount can silently swallow the gift. The common workaround, cart-page code that adds the gift when the subtotal crosses the line, leaks because a modern store has many doors into checkout that never touch the cart page, the Shop Pay, Apple Pay, and Google Pay wallet buttons, a saved cart link, a buy-it-now button, a checkout permalink, and code that only ever adds also leaves the gift on a cart that has fallen back below the threshold. The usual moves each cost something: Buy X Get Y automates the pricing of a gift the customer still has to find; a Flow reacts after the order is placed, too late to put the gift in the cart before payment; and a free-gift app adds the item and can watch a cart value but applies a fixed rulebook that cannot notice a gift about to sell out, a shopper gaming the offer for multiple gifts, a return that kept its free item, or a stacked promotion that gives away too much. The Dugong playbook treats it as a read plus a decision plus an action on the live cart plus a stream of corrections: on a cart changing, read the subtotal after discounts, the items, and the customer; decide the gift from the threshold crossed, the tier reached, the segment, and any exclusions; add it and price it to zero so the customer never has to find it; hold on every path into checkout including wallet buttons and checkout permalinks; swap or remove the gift when the cart drops, upgrades a tier, or loses the qualifying item; honor stock and tell the customer what they earned and how far to the next tier; and hold a near-empty gift, a gamed cart, a kept-gift return, or a risky stack for a human. Framed as a compiler problem, not one more rules table, because whether to gift a cart right now, and which case to escalate, shifts per cart, per customer, and per hour of a sale. By Priya Singh, 2026-07-08.</description>
    </item>

    <item>
      <title>How to automatically split and route Shopify orders to multiple suppliers</title>
      <link>https://blog.dugong.live/how-to-automatically-split-and-route-shopify-orders-to-multiple-suppliers.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-split-and-route-shopify-orders-to-multiple-suppliers.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Tue, 07 Jul 2026 09:00:00 +0000</pubDate>
      <description>A customer fills one cart and pays once, but the items inside come from three different places: one your own warehouse holds, one a supplier makes to order, one a dropshipper ships direct. To fulfill it, someone has to take that single order apart, decide which line belongs to which vendor, write a separate order for each with only their items and the customer's address, send them off, then days later gather the tracking back and mark the right pieces shipped. Shopify shows you the order but does not split it, route it, or send it anywhere. This is one of the most-repeated requests in Shopify merchant communities running multi-supplier and dropship catalogs. Shopify does split fulfillment across your own stocking locations when one lacks stock, and can split shipping at checkout, which covers a slice of the need, but that split is by location, not supplier: there is no rules engine that routes a line item to a specific vendor, dropshipper, or 3PL by vendor, product type, SKU, or weight; the vendor field on a product is only a label that notifies no one and generates no purchase order; and there is no native action that emails or posts each supplier a document with just their items in the format they accept. Shopify Flow can react to a new order, tag it, and on higher plans move line items between locations, but it has no action that groups lines by supplier, builds a purchase order per vendor, and sends it, then fulfills only their lines when tracking returns. The usual workarounds each cost something: emailing every supplier by hand caps your growth and breaks first during a sale; the native multi-location split routes to a location, not a vendor you can send a PO to; setting the vendor field and building a Flow stops halfway because Flow cannot build and send the per-supplier order or close it out; and an order-routing app applies a fixed rulebook that cannot notice a silent supplier, a backordered line, or a split that fragments a delivery for no reason. The Dugong playbook treats it as a read plus a classification into supplier groups plus a document build per vendor plus a send plus a chain of partial fulfillments: on a paid order, read every line with its vendor, SKU, type, and weight, the destination, and the shipping speed; group the lines by who fulfills each, honoring which location has stock, the region, and cost; build one purchase order per supplier with only their items and the ship-to address; send each supplier their PO in the format they accept and record the split; fulfill only a supplier's lines when their tracking returns, at the right location, as a partial; tell the customer once what ships from where and when; and hold an uncovered item, a backordered line, a bad split, or a silent supplier for a human. Framed as a compiler problem, not one more rules table, because whether to route a line now, and which case to escalate, shifts per order, per supplier, and per day. By Priya Singh, 2026-07-07.</description>
    </item>

    <item>
      <title>How to automatically send invoices to Shopify customers</title>
      <link>https://blog.dugong.live/how-to-automatically-send-invoices-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-send-invoices-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Mon, 06 Jul 2026 09:00:00 +0000</pubDate>
      <description>A business customer buys from you, and a day later the email lands: can I get a proper invoice with our company name and VAT number for our records. What Shopify sent at checkout was an order confirmation, which lists what was bought and paid, and reads like a receipt because that is what it is. It is not an invoice, it does not carry the buyer's tax registration number, and in most countries it is not the document an accountant will accept, so you open a template, retype their details, generate a PDF, and email it back by hand, again for the next business order. This is one of the most-repeated requests in Shopify merchant communities. Shopify does automate the order confirmation email, and Shopify Tax can generate a VAT invoice for orders shipped within the EU and UK and show it on the order status page, which covers a real slice of the need. But that confirmation is a receipt, not an invoice, and carries no tax numbers; the VAT invoice that Shopify Tax produces is never emailed, is region-locked to the EU and UK, and cannot be regenerated after an order is edited; and most fundamental of all, Shopify's checkout has no field for the customer's tax number, collecting only a company name in the billing address, so the one detail a business-to-business invoice legally needs is the detail the platform never captures. The usual workarounds each cost something: renaming the order confirmation to invoice is a receipt in a costume with no tax number, no invoice series, and no credit note; the Shopify Tax VAT invoice automates one region's happy path and leaves the rest of the world and every changed order manual; a PDF invoice app adds a download link (Shopify cannot attach files to its emails) but stamps one fixed template on every order and does not validate the VAT number or know your reverse-charge rules; and regenerating each sale in Xero or QuickBooks gives clean books but doubles the handling. The Dugong playbook treats it as a classification plus a data capture plus a compliant document plus a reversible credit note: on payment and again on refund, read the order and whether it is a consumer or a business; decide a receipt or a full tax invoice; fill the buyer's VAT number from the notes, a past order, or the customer record and ask once if it is truly missing; generate a compliant, sequentially numbered PDF with both parties' details and the tax breakdown; send it automatically in the order email and to the buyer's accounts address; issue a matching credit note when the order is refunded; and hold a failed VAT check, a reverse-charge or export order, or an edited order whose invoice must be reissued for a human. Framed as a compiler problem, not one more template, because whether an order needs a receipt or a tax invoice, and which one to escalate, shifts per order, per customer, and per market. By Priya Singh, 2026-07-06.</description>
    </item>

    <item>
      <title>How to automatically schedule product publishing on Shopify</title>
      <link>https://blog.dugong.live/how-to-schedule-product-publishing-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-schedule-product-publishing-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sun, 05 Jul 2026 12:00:00 +0000</pubDate>
      <description>You plan a drop for midnight, set the product to publish on a future date, and go to bed, and it goes live on the online store and nowhere else, because Shopify's built-in future publishing only reaches the Online Store sales channel and never touches POS, the Buy Button, or your other channels. It also no-ops if the product is still in Draft at the scheduled minute, cannot bulk-schedule across channels, and most tellingly will only ever schedule a product going live, never coming down. This is one of the most-repeated requests in Shopify merchant communities: half of running a catalog is taking things off the shelf on time, a flash-sale product when the sale closes, a collab at the end of its window, a seasonal line the day the season ends, and Shopify has no native scheduled unpublish. The workarounds each cost something: publishing by hand ties a person to a midnight clock; the native future-publish date lulls you into thinking the launch is handled while other channels sit empty; Shopify Flow can run on a schedule and unpublish but is gated to Plus and is a build; and a scheduling app applies its calendar mechanically without checking whether a product is actually ready, whether the drop has stock, or whether the timing clashes with another promotion. The Dugong playbook treats it as a readiness check plus a timed publish across every channel plus a timed take-down that runs both ways: read the whole launch by tag or collection, confirm each product is active, priced, and in stock before it goes live, publish at the exact minute everywhere it belongs, unpublish the set the moment its window closes, redirect the retired URL instead of leaving a dead link, keep the set in sync as products are added or removed, and hold a still-draft product, a stockless drop, or a clashing launch time for a human. Framed as a compiler problem, not one more date picker, because the safe call shifts per launch and per channel. By Priya Singh, 2026-07-05.</description>
    </item>

    <item>
      <title>How to set a minimum order amount on Shopify</title>
      <link>https://blog.dugong.live/how-to-set-a-minimum-order-amount-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-set-a-minimum-order-amount-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sun, 05 Jul 2026 09:00:00 +0000</pubDate>
      <description>A customer adds one low-price item, checks out for a few dollars, and Shopify accepts the order even though the transaction fee, the pick and pack, and the shipping label cost more than the order earns. You want a floor, a cart has to reach some amount before it can check out, and Shopify has no native setting for it on standard plans. This is one of the most-repeated requests in Shopify merchant communities. The minimum purchase field you see lives on discounts and only decides when a discount applies, it never blocks a checkout; Shopify Plus can enforce a minimum at checkout with Functions, and B2B quantity rules apply only to company profiles, not the retail storefront. The two workarounds each cost something: cart-page JavaScript that disables the checkout button is bypassed the moment a customer checks out through a wallet button like Shop Pay or Apple Pay, a saved cart link, or a checkout permalink that never touches the cart page; and most apps enforce one flat number for everyone, unable to tell a retail shopper from a wholesale buyer or to exempt a gift-card order. The usual moves fall short too: a note in the cart is documentation without enforcement; a free-shipping threshold only rewards bigger carts, it never blocks small ones; cart-page code covers one path and misses the rest; and a single store-wide minimum blocks the wholesale customer, the gift-card top-up, and the loyal repeat buyer you wanted to let through. The Dugong playbook treats it as detection plus judgement plus enforcement that holds on every path: read the cart on every route into checkout, decide the floor that fits retail or wholesale, signal the shortfall early on the cart, enforce at checkout itself so wallet buttons cannot slip under it, exempt the carts that should always pass, nudge the borderline cart over the line rather than only blocking it, and hold the real policy calls for a human. Framed as a compiler problem, not one more flat number, because the safe call shifts per cart and per customer. By Priya Singh, 2026-07-05.</description>
    </item>

    <item>
      <title>How to automatically hide sold-out variants on Shopify</title>
      <link>https://blog.dugong.live/how-to-automatically-hide-sold-out-variants-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-hide-sold-out-variants-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Fri, 03 Jul 2026 09:00:00 +0000</pubDate>
      <description>A shopper opens a product page, picks their size or color, and the button flips to Sold Out, because Shopify keeps the out-of-stock variant sitting in the dropdown right next to the ones that are in stock, usually grayed out or crossed off. They read Sold Out as the whole product being gone and leave, even though the sizes on either side were available, which quietly drags down conversion on the items you can still sell, and it is the best-selling size that goes out first. This is one of the most-repeated requests in Shopify merchant communities. Shopify has no native setting to hide unavailable variants: turning off continue selling when out of stock stops the purchase but still shows the variant, and the newer unlisted status hides a whole product, not one variant. The only real options are editing the theme's Liquid by hand, which is brittle, breaks on theme updates, and gets much harder once size and color combine because a color is only truly gone when every size in it is out, or installing a third-party app that hides on a fixed everything-at-zero rule it cannot reason about. The usual workarounds each cost something: leaving it as Sold Out bleeds conversion invisibly; editing the theme does not stay fixed and a hide that fails to un-hide leaves an in-stock size no one can buy; unpublishing the whole product takes the in-stock sizes down with it and loses the page's ranking; and deleting the variant destroys its SKU history and breaks any back-in-stock signup. The Dugong playbook treats it as detection plus judgement plus a reversible action that runs both ways: watch inventory per variant and location, decide whether a sold-out one should be hidden or kept with a back-in-stock signup, hide the value cleanly without unpublishing the product, collapse an option only when every value is gone, capture the demand on the hidden ones, restore the variant the moment stock returns and notify the waitlist, and hold discontinued lines, flickering core sizes, and pages that would be left with nothing to buy for a human. Framed as a compiler problem, not one more toggle, because the safe call shifts per variant and per day. By Priya Singh, 2026-07-03.</description>
    </item>

    <item>
      <title>How to combine multiple orders from the same customer on Shopify</title>
      <link>https://blog.dugong.live/how-to-combine-multiple-orders-from-the-same-customer-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-combine-multiple-orders-from-the-same-customer-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Thu, 02 Jul 2026 09:00:00 +0000</pubDate>
      <description>A repeat customer places a second order before the first one ships, so what should have gone in one box is now two orders, two shipping labels, and two delivery charges the customer paid twice. It is one of the longest-running requests in Shopify merchant communities, and Shopify still has no native merge: every order is a fixed financial record with its own payment, tax, discount, and fulfillment history, so combining two would risk corrupting reporting and reconciliation, and Shopify keeps them immutable on purpose. The official workaround is a manual draft-order routine: rebuild the line items of both orders into one draft, finalize it as the order you ship, buy one label, add the tracking back onto the originals, refund the customer for the duplicate shipping, and cancel the originals while restocking so inventory is not double-counted, all of it by hand and only if you catch the pair before either ships. Shopify Flow cannot merge orders either. The usual fixes each cost something: shipping two boxes wastes a label and a delivery; refunding the second shipping fixes the bill but still packs and sends twice; asking the customer to cancel and re-order adds friction to a repeat purchase; and the draft-order dance is a race the warehouse usually wins. The Dugong playbook treats it as detection plus judgement plus cleanup inside the pre-fulfillment window: match the pair by customer, email, and address while both are unfulfilled; confirm they can safely combine and are not a shared building, a gift, or a paid express upgrade; build one shipment; refund the fair combined shipping; cancel or link the originals with inventory and books kept straight; tell the customer once; and hold anything ambiguous for a human. Framed as a compiler problem, not one more button, because the safe merge depends on shifting per-pair judgement a fixed rule makes badly.</description>
    </item>

    <item>
      <title>How to stop card testing attacks on Shopify</title>
      <link>https://blog.dugong.live/how-to-stop-card-testing-attacks-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-stop-card-testing-attacks-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Wed, 01 Jul 2026 09:00:00 +0000</pubDate>
      <description>Card testing, also called carding, is one of the loudest complaints in every Shopify merchant community, and it arrives all at once: a merchant wakes to hundreds of tiny orders overnight, each a few dollars on one or two cheap products, each a different name, email, billing address, and card, most declined and a few approved, none of them real customers. A bot has found the checkout and is running a list of stolen card numbers through it to learn which ones still work, because your store is a public page that will attempt a real charge for a small amount and a low-value charge is less likely to be noticed by the true cardholder; the bot does not want the product, it wants the one bit of information, this card works or this card is dead, to sell or spend elsewhere. Three concrete walls: the native CAPTCHA fires on Shopify's read, not yours, because for Shopify Payments stores Shopify runs machine-learning models that can show a CAPTCHA when a session looks automated, which blocks some crude bots but is bypassed by one that rotates IPs and spaces out attempts, so waves of card-testing orders and fake abandoned checkouts still get through; the cleanup is entirely manual, since every test order that landed is a real order on a stolen card you must find, cancel, refund before it ships, and restock, one order at a time against a clock, because the small slice that approved becomes chargebacks; and the rule engine is behind a paywall and cannot read the pattern, because auto-cancel and auto-flag live in Shopify Flow on the Advanced and Plus plans, and even there Flow reacts one order at a time and cannot see that forty orders in four minutes share a fingerprint and respond to the burst as a burst. Why it matters: a declined attempt is not free because your processor charges for the attempt, so a flood racks up fees even when nearly all fail, the few approvals become chargebacks with their own dispute fees, and a spike in dispute rate can put your payment account under review, while the flood buries real orders and poisons conversion and fraud metrics. The usual workarounds break: raising the price does not deter a fraudster spending someone else's money, cranking every fraud filter up starts declining real customers, cancelling by hand cannot keep pace with an attack, and waiting only moves tonight's fees, chargebacks, and poisoned metrics into next month. The AI playbook triggers on a burst of orders or checkouts that spikes above the store's normal rate, reads the whole burst (values, card and email spread, IPs, products, decline rate, window) and decides attack versus real spike from the pattern rather than any single order, cancels and refunds the test orders before they ship and restocks the units, tags every test order and checkout so it drops out of revenue, conversion, and fraud metrics, throttles or blocks the offending IPs and sessions and tightens checkout only while the attack runs, alerts a human once with the window, count, and fee exposure with the cleanup already done, and stands down when it stops while surfacing any real customer caught in the net for review. By Priya Singh, 2026-07-01.</description>
    </item>

    <item>
      <title>How to set up pre-orders on Shopify without holding in-stock items</title>
      <link>https://blog.dugong.live/how-to-set-up-pre-orders-on-shopify-without-holding-in-stock-items.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-set-up-pre-orders-on-shopify-without-holding-in-stock-items.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Tue, 30 Jun 2026 09:00:00 +0000</pubDate>
      <description>A pre-order is the good problem until the order lands, because demand showed up before the stock did and the customer paid you anyway, and then Shopify hands you one order with two delivery dates trapped inside it. The hard part was never the selling, it is the stretch of time between purchase and delivery that has to be managed, and a mixed cart runs two of those timelines at once: the in-stock line wants to ship today, the pre-order line cannot ship for weeks, and Shopify models an order as one thing with one status, so the whole order waits on the slowest line in it and the in-stock item the customer could have had this week gets held hostage by the late one. Three concrete walls: there is no real pre-order, only a Continue selling when out of stock checkbox that lets a shopper buy past zero but shows the same Add to Cart button, carries no expected ship date, takes no deposit to charge later, and does not tag the order or line item, so the sale lands looking like a normal in-stock order; nothing splits a mixed cart, the correct handling is a partial fulfillment that ships the in-stock line now and holds the pre-order line, but that is a manual step you take order by order and nothing flags which orders need it, tells the customer the order ships in two parts, or remembers to come back when stock lands; and Shopify Flow, free on every plan, can react when an order is created, tag it, and notify you, but has no action that splits the cart and fulfills only the in-stock lines, charges a held balance later, watches incoming inventory and fulfills the pre-order line the moment it arrives, emails a real ship date, or turns the toggle back off when the run sells out. Why it matters: a customer who bought a now item and a later item and hears nothing assumes the whole order is broken and writes the ticket, and a run left selling after the units are gone oversells real stock and turns buyers into a refund queue. The usual workarounds break: ticking continue selling sells the pre-order silently and keeps overselling once stock lands because the toggle is still on and the orders come in untagged; listing the pre-order as a separate product splinters inventory, reviews, and ranking across two listings; shipping everything together is the held-hostage problem stated as policy; and partial-fulfilling each order by hand does not scale past a launch of a few hundred pre-orders, where the open lines that fall through the cracks become the where-is-my-order emails. The AI playbook triggers on an order with a pre-order or backorder line, labels the order and the specific line items with the promised ship window, ships the in-stock lines now as a partial and holds the pre-order lines open, tells the customer what ships now and what ships later with a real date, watches incoming stock and fulfills each held line the day it lands oldest order first, updates the customer if the date slips and confirms when the held part ships, stops selling once the run is fully committed so it does not keep overselling, and holds oversells beyond the run, mixed refunds, and bad date slips for a human. By Priya Singh, 2026-06-30.</description>
    </item>

    <item>
      <title>How to reconcile Shopify payouts with your sales</title>
      <link>https://blog.dugong.live/how-to-reconcile-shopify-payouts-with-your-sales.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-reconcile-shopify-payouts-with-your-sales.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Mon, 29 Jun 2026 09:00:00 +0000</pubDate>
      <description>Reconciling payouts is the quiet Shopify chore that scales with every order you take, and the platform leaves the matching entirely to a human. The deposit that lands in your bank is never your sales: it is gross sales minus processing fees, minus refunds you issued, minus chargebacks and their fees, minus any held reserve, plus or minus adjustments, so a week that sold four thousand dollars might deposit thirty-seven hundred, and the missing money is fees and a refund and a hold, each of which belongs in a different account. On top of that, Shopify pays in batches on a rolling schedule, so one deposit usually covers part of one day and part of the next rather than a clean calendar day, and a single deposit can represent dozens or hundreds of individual orders and refunds rolled together, which is why no deposit ever equals a day's sales and you cannot match by date. Three concrete walls: the Payouts page reports but does not post, it breaks a payout into gross sales, fees, refunds, and net and lets you export a CSV, but nothing carries those figures into your accounting software as a real entry or matches the net to the bank feed; the official QuickBooks and Xero connectors sync order level data but were not built to split a batched, netted payout into its parts and tie it to the deposit, so either the deposit is recorded as fresh income on top of the order revenue already booked and the same sales are counted twice, or order income and an unmatched bank deposit never reconcile; and Shopify Flow, free on every plan, can react to a payout event and notify you but has no action that decomposes a payout, matches it to a bank deposit, or writes a journal entry, so the one step that matters is the step it cannot take. Why it matters: a deposit booked as fresh income double counts revenue you already recorded, so your profit looks bigger than it is and you may overpay tax on money you never made; a payout forced to balance buries a refund or a fee in the wrong account so your margins lie to you; and a second gateway like PayPal or Shop Pay Installments deposits on its own schedule and nets its own fees, so the problem multiplies rather than adds. The big mistake is clicking Add on the Shopify deposit in the bank feed, the single most common ecommerce bookkeeping error, which records the deposit as a brand new income line and doubles your revenue while hiding the fees and refunds inside it. The usual workarounds break: a spreadsheet reconciliation turns a founder into a part-time bookkeeper and stops tying out the first time a payout spans a month boundary or a refund clears late; running more than one gateway means reconciling two or three streams of batched, netted deposits into one set of books; and the official connector books every deposit the same way, including the wrong ones. The AI playbook triggers when a payout settles or a deposit lands, decomposes it into gross sales, fees, refunds, chargebacks, adjustments, and reserve, matches every line back to the orders and refunds it came from, ties the net to the exact amount that hit the bank to the cent, categorizes sales, fees, refunds, and collected tax to the right accounts, splits each gateway on its own schedule and fees, holds any deposit that does not reconcile or is missing an order for review, and posts a clean matched entry while logging which orders rolled into it so the close is auditable and reversible. By Priya Singh, 2026-06-29.</description>
    </item>

    <item>
      <title>How to bulk edit product prices on Shopify</title>
      <link>https://blog.dugong.live/how-to-bulk-edit-product-prices-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-bulk-edit-product-prices-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sun, 28 Jun 2026 09:00:00 +0000</pubDate>
      <description>Repricing a catalog in bulk is the quiet Shopify chore that scales with the size of your store, and the platform leaves the math entirely to a human. When a supplier cost rises, a tariff lands, or a margin slips, every affected price needs to move, and the native bulk editor only lets you type values: it has no formula, so you cannot say increase by ten percent, add a fixed amount, or round everything to end in .99 and have it compute each new price; it shows products a page at a time, commonly fifty, so a real catalog means batch after batch; and it does not expose variant prices in the same view as the parent, so a store with sizes or colors edits each variant on its own. Two partial fixes each solve only half: a CSV export lets you write a formula in a spreadsheet and import the result, but it turns repricing into a careful re-import job where a wrong column or a stale export can overwrite descriptions, inventory, or other fields, and the spreadsheet becomes the source of truth for your storefront; and Shopify does have a percentage price adjustment, but it lives under Markets and applies one percentage to an entire market's catalog rather than letting you selectively reprice your home catalog by vendor, collection, tag, or margin. Shopify Flow, free on every plan, can react when a product is updated, tag it, and notify you, but it has no action that sets a product or variant price, so it cannot raise prices by a percentage, apply a rounding rule, or reprice anything at all: it can tell you a cost changed, not act on it. Why it matters: pricing is the most financially direct field in the admin because it is the number people pay you, so a miscalculated percentage, a transposed digit that prices a forty dollar item at four, a missed variant, or a compare-at left in place so a raise reads as a fake discount all ship straight to every shopper, leaking margin on every unit or killing conversion until someone notices. The big mistake is treating it as data entry when it is selection and judgement: which products the change is really for, whether to compute from cost or current price, when compare-at should move or clear, and whether the rule would push an item below a margin floor or onto an absurd value. The usual workarounds break: the bulk editor cannot compute anything, so it is just faster hand-typing; the CSV is one bad cell away from overwriting live data; and a bulk price app applies a fixed rule you set in advance, including to the products the rule should not have touched. The AI playbook triggers on the reason (a cost change, a tariff or tax, a margin breach, or a planned reprice), selects the exact products and variants in scope by vendor, collection, tag, cost, or margin, computes a new price per item from a percentage, a fixed amount, or a target margin, applies your rounding and fixes compare-at so a raise does not read as a discount, holds anything below a margin floor or above a ceiling or on a strange value for review, writes the new price across every variant in one pass with no fifty-per-page batching, and logs the old price, the new price, and the rule so the change is auditable and reversible. By Priya Singh, 2026-06-28.</description>
    </item>

    <item>
      <title>How to automatically add tracking numbers to Shopify orders</title>
      <link>https://blog.dugong.live/how-to-automatically-add-tracking-numbers-to-shopify-orders.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-add-tracking-numbers-to-shopify-orders.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 27 Jun 2026 09:00:00 +0000</pubDate>
      <description>Entering tracking numbers is the quiet Shopify chore that scales linearly with how well you are selling, and the platform leaves it almost entirely to a human. Most physical orders do not fulfill themselves: for a self-shipped, supplier-shipped, or dropshipped order you open the order, hit mark as fulfilled, click into the tracking field, paste the number your supplier or warehouse emailed you, pick the carrier from a dropdown, save, and send the confirmation, one order at a time. Three concrete walls: auto-fulfillment only covers narrow cases (an entirely digital order, or items a connected fulfillment service or app controls and pushes its own tracking back for), so the everyday physical order defaults to manual; bulk fulfill and the CSV tracking import still leave the matching to you (bulk fulfill marks orders shipped but you attach each tracking number, and the CSV has to be assembled by hand with the right order numbers paired to the right tracking numbers and carriers, which is the exact job you were trying to avoid); and Shopify Flow, free on every plan, can react to an order, tag it, and notify you, but has no action that marks an order fulfilled with a specific tracking number and carrier read from a supplier email or feed, so the one step that clears the order is the step it cannot take, and an order assigned to a third-party fulfillment service location will not even show you the mark as fulfilled button. Why it matters: the manual step is the most error-prone touch in the whole post-purchase flow, sitting right where the customer is paying closest attention, so a number pasted onto the wrong order, a dropped digit, a carrier dropdown left on the default, or a split order marked fully shipped all get mailed straight to the customer as a dead tracking link or a delivery clock that started before the box exists, which then comes back as a where-is-my-order ticket. The big mistake is treating it as data entry when it is reading and matching: a supplier message that was never formatted for a machine, a shipment that covers only some line items, a number reused from yesterday that should not re-fulfill anything, a tracking number that arrived for an item not even on the order. The usual workarounds break: bulk fulfill only handles the marked-as-shipped half and is blind to split orders; building a tracking CSV every morning turns a merchant into a data-entry clerk reconciling formats that always diverge; and a tracking importer needs a clean mapped file or a consistent feed and cannot read a free-form email or reconcile mismatches, so the hard part stays with you. The AI playbook catches the tracking wherever it lands (email, spreadsheet, CSV, or feed), matches each number to the right order and the right line items even on split shipments, detects the carrier from the number so the link works, fulfills the matched line items at the correct location with the tracking attached, sends the shipping confirmation once per shipment (a partial when only part has gone), holds anything that does not match, repeats, or is blank for a human, and logs which number went to which order and why. By Priya Singh, 2026-06-27.</description>
    </item>

    <item>
      <title>How to fix 404 errors from deleted products on Shopify</title>
      <link>https://blog.dugong.live/how-to-fix-404-errors-from-deleted-products-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-fix-404-errors-from-deleted-products-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Thu, 25 Jun 2026 09:00:00 +0000</pubDate>
      <description>Redirecting deleted products is the quiet Shopify SEO leak the platform leaves entirely to the merchant. Every catalog sheds products (a discontinued line, a seasonal item, a duplicate listing cleaned up), and when you delete one Shopify does not create a redirect for its URL: the old address simply returns a 404 page not found, even though Google still has it indexed, your own internal links and external backlinks still point at it, the Google Shopping feed still lists it, and a paid ad you forgot to pause may still send traffic to it. The same silent break happens when you change a product handle, which rewrites the URL and orphans the old one, and when you unpublish rather than delete. Three concrete walls: deleting a product creates no redirect (there is no prompt at delete time, no default forward, nothing); the native fix is manual, one URL at a time, under Online Store then Navigation then URL Redirects, with a CSV bulk import that still requires you to know every broken URL and decide every destination first; and Shopify Flow, free on every plan, can react to a delete and send an internal note but has no action that creates a redirect, so the one step that fixes the 404 is the step it cannot take. Why it matters: the deleted page had earned link equity (a search position, backlinks, a place in internal linking), and when its URL 404s that value drains instead of passing to a live page, while the customer who clicked a real link from search, an old email, or a paid ad lands on an error and bounces. The big mistake is redirecting every dead URL to the homepage in one blanket rule, which search engines treat as a soft 404 because the destination does not match the request, so you lose the link equity anyway and dump the customer somewhere they have to start over. The usual workarounds break: a blanket homepage redirect is the soft-404 trap; setting up each redirect by hand survives until the first busy week and never even fires for the silent breaks (handle changes, unpublishes); and a redirect app mostly logs the 404 after a visitor already hit it and still leaves you to choose which live page each broken URL should point at. The AI playbook catches every URL a delete, unpublish, or handle change just broke, reads what the page was (product type, collections, tags, title), finds the closest live page (a replacement product, the same collection, or the nearest alternative), writes a 301 redirect to it, rechecks later that the target is still live and in stock and repoints it if not, holds the high-value URLs with real traffic, rankings, or backlinks for a human to confirm, and logs every broken URL, chosen target, and reason. By Priya Singh, 2026-06-25.</description>
    </item>

    <item>
      <title>How to automatically cancel unpaid orders on Shopify</title>
      <link>https://blog.dugong.live/how-to-automatically-cancel-unpaid-orders-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-cancel-unpaid-orders-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Wed, 24 Jun 2026 09:00:00 +0000</pubDate>
      <description>Clearing unpaid orders is the quiet Shopify chore that holds your inventory hostage, and the platform gives merchants no native way to do it. Every store that takes a manual payment method (bank transfer, cash on delivery, an unpaid invoice, or a draft order sent to a wholesale buyer) ends up with a drawer of orders that were placed but never paid for, each one looking like a sale in the dashboard, each one committing stock, and not one of them clearing itself. When an order is placed Shopify commits the inventory to it and keeps that commitment while the order sits in pending payment, so a unit nobody actually paid for is off the shelf and unavailable to the next customer with a card out, which is how a low-stock product or a launch can show sold out while real, paying demand bounces off it. Three concrete walls: there is no auto-cancel for unpaid orders (no native setting cancels an order still unpaid after N days; cancelling is a manual action you take one order at a time, choosing restock and notify on each); Shopify Flow, free on every plan, can watch an order and tag it but has no action that cancels an order or restocks its held inventory, so the one step that matters is the step it cannot take; and the timing and judgement are on the merchant, who must decide how long to wait for a bank transfer versus a cash-on-delivery order, whether to chase the customer first, which orders are too valuable to cancel on a timer, and what to say when they do. The usual workarounds break: clearing them by hand every Monday stops scaling the moment volume climbs and is the first chore dropped on a busy week; a Flow rule automates the noticing and none of the doing; and a flat auto-cancel app runs a single blunt timer that treats a first-time bank transfer like a repeat wholesale buyer on net terms, fires a cold cancellation with no attempt to collect first, and cannot tell the order that just paid sixty seconds ago from the one that is truly dead. The big mistake is a global timer, because a bank transfer, a cash-on-delivery order, and an agreed invoice settle on completely different clocks. The AI playbook reads each pending order (payment method, value, and whether the customer is new, repeat, or a known wholesale account), sets the window to fit the method, nudges the customer to pay once or twice with the amount and a clear way to complete it, rechecks at the deadline that it is still unpaid so a late payer is never cancelled by a stale timer, cancels the cold ones and restocks the held inventory in the same step with the reason logged as unpaid, sends a kind note that the order lapsed with a link to reorder, and holds high-value and wholesale orders for a human while logging every nudge, cancel, and restock. By Priya Singh, 2026-06-24.</description>
    </item>

    <item>
      <title>How to automatically request product reviews on Shopify</title>
      <link>https://blog.dugong.live/how-to-automatically-request-product-reviews-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-request-product-reviews-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Mon, 22 Jun 2026 09:00:00 +0000</pubDate>
      <description>Asking happy customers for a review is the highest-leverage Shopify chore most stores never get to, because the platform gives them no native way to do it. Shopify retired its own product reviews app and never replaced it, so an out-of-the-box store has nothing that collects a product review and nothing that emails a customer to ask for one; the Shop channel gathers a store review, not a review of the item someone just bought, and everything merchants actually use (the request email, the on-page star widget, the photo upload) lives in a third-party app they install and wire in. Shopify Flow can react to an order being marked delivered, which is the right trigger, but it cannot write a personalized message, does not know skincare needs a longer wait than snacks, does not check whether the customer just opened a return, and has nowhere of its own to store the rating that comes back, so the real work still lives in the app and the app still has to be told exactly what to do. The result is that the request either never goes out, or it goes out as one untimed blast to the whole list: people whose order has not arrived, people mid-return, people asked three times for the same purchase, and a one-star rating that lands in public before anyone on the merchant's side could have fixed the problem. The cost is real, because a product page stacked with recent, specific, photographed reviews converts the shopper on the fence and a blank one asks them to go first on faith, and sending nothing yields the low-single-digit fraction of reviews that arrive on their own, skewed toward the angry, while a timed request after delivery lifts response into double digits from the satisfied majority. The usual fixes break: emailing customers yourself stops by the second busy week, a Flow rule on delivered needs a review app bolted on and still fires the same blunt action for everyone, and an app on default settings sends a generic how-did-we-do to everyone on one timer. The AI playbook waits for the right window after delivery tuned to the product, reads the order to skip anyone mid-complaint, names the actual item in the ask, sends once and follows up at most once, routes a high rating to the storefront and a low rating privately to support before it goes public, remembers who was asked so no one is asked twice and a multi-item order is one ask, and logs every send, response, and rating while flagging the edge cases a human should eyeball.</description>
    </item>

    <item>
      <title>How to segment repeat customers on Shopify</title>
      <link>https://blog.dugong.live/how-to-segment-repeat-customers-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-segment-repeat-customers-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sun, 21 Jun 2026 09:00:00 +0000</pubDate>
      <description>Customer segmentation is the growth lever most Shopify stores never actually pull. After a couple of years of trading the admin holds a flat list of names, an order count, and an amount spent, with nothing that marks a loyal regular worth protecting, a lapsing customer worth winning back, or a one-time discount hunter not worth another code. Shopify has no native rule that watches behavior and tags a customer when it changes: tagging is manual by default, the one automated path is Shopify Flow adding a tag when a single blunt thing becomes true (like total spend over a number), and the segments feature is a filter you read rather than a durable label the rest of your stack can act on. So the same email, sale, and audience go to everyone, your VIPs get nothing for being VIPs, your lapsing regulars drift away in silence, your discount hunters get trained to wait for the next code, and support treats a first-time buyer and an eleven-order regular with the same urgency. The workarounds break: hand-tagging captures a snapshot that rots (a customer tagged vip in March still wears it in December), a Flow rule on spend cannot reason across recency, frequency, products, returns, and discount use at once, and a segmentation app mostly runs the same rigid thresholds in a second system you have to keep in sync. The AI playbook reads each customer's full history, weighs the pattern instead of a single threshold, assigns one clear lifecycle tag from a clean vocabulary and removes the ones that no longer fit, re-evaluates as new orders, returns, and cancellations land so a VIP who goes quiet becomes at-risk instead of a stale VIP forever, writes the tags back through the Admin API without touching anything else on the profile, hands the segment to the systems that act on it (email, discounts, support priority, ad audiences), and logs every change with the reason while flagging the edge cases a human should eyeball.</description>
    </item>

    <item>
      <title>How to add alt text to Shopify product images in bulk</title>
      <link>https://blog.dugong.live/how-to-add-alt-text-to-shopify-product-images-in-bulk.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-add-alt-text-to-shopify-product-images-in-bulk.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 20 Jun 2026 09:00:00 +0000</pubDate>
      <description>Image alt text is the Shopify accessibility-and-SEO chore everyone assumes is handled and is not. Shopify stores an alt text on every image but never writes one, has no bulk editor and no audit view to show which images are blank, and does not generate a description from the image (the file name is not alt text), so the field starts empty and stays empty until a human opens each product, clicks into the media, and types a line. A store with a few hundred products at several photos each is thousands of empty alt fields with no native path to fill them. The blank field fails two jobs at once: a shopper using a screen reader hears nothing or hears the file name read aloud instead of the product, and missing alt text is the most common accessibility failure cited in the demand letters now landing on ecommerce stores; and a search engine cannot read the contents of a photo, so a blank alt keeps your product images out of image search and gives the page one less signal. The usual workarounds all break: writing them by hand is right but never finishes past a small catalog and is the first thing dropped on a launch week; the product CSV has an Image Alt Text column but only moves the data (you still describe every image), covers only product images, and risks a re-import overwriting neighboring fields; and a cheap bulk app templates the line from the product title plus variant, so the front, the back, and the detail shot all read the same and none of them describes the actual photo. The AI playbook finds every product, variant, collection, and content image whose alt is missing, duplicated, or just the file name, looks at the image itself plus the product context (title, type, variant, color, material), writes a concise accurate line under about 125 characters in the store's voice, keeps near-identical variant and angle shots distinct, leaves genuinely decorative images with an empty alt so screen readers skip them, writes the alt text back through the Admin API without touching anything else, re-checks new uploads so it never drifts back to blank, and logs every line while flagging the images too generic or low-quality to describe well.</description>
    </item>

    <item>
      <title>How to generate Shopify product descriptions with AI</title>
      <link>https://blog.dugong.live/how-to-generate-shopify-product-descriptions-with-ai.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-generate-shopify-product-descriptions-with-ai.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Fri, 19 Jun 2026 09:00:00 +0000</pubDate>
      <description>Writing product copy is the Shopify job that looks solved and is half-solved. Shopify Magic is built into the admin and drafts a description from a few keywords you type, but it works one product at a time inside the editor, writes from the keywords you hand it rather than reading the product's variants, spec sheet, and images, and tends to come out generic enough that you edit every one, so the work moves from writing to editing without the catalog getting any shorter. There is no native bulk button; the known workaround is to export products to a CSV, add a prompt column, run it through an AI tool, and re-import, which is brittle on a large file, and app-store generators run in bulk but, fed thin inputs, produce a large pile of near-duplicate copy you still have to audit. The stakes are SEO and conversion: a blank description gives search engines nothing to rank, a line pasted from the supplier is already live word-for-word on every other store running the same feed so yours has no reason to surface, and ten near-identical variants come out as ten pages that compete with each other instead of each earning its own ranking. The AI playbook reads each product whole (title, type and tags, every variant and option, the existing copy, the supplier spec, and the images), writes in one defined brand voice applied the same way across every product, differentiates near-identical SKUs so each page is distinct, structures each line for SEO and scanning without keyword stuffing, writes the descriptions back across the whole catalog through the Admin API, backfills the products that ship blank or with placeholder copy and refreshes when the product or spec changes, and flags the products too thin to describe well while logging every description with the inputs it was written from.</description>
    </item>

    <item>
      <title>How to automatically tag orders on Shopify</title>
      <link>https://blog.dugong.live/how-to-automatically-tag-orders-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automatically-tag-orders-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Thu, 18 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify Flow is free on every plan and tags an order well when one condition is true, like a total over a threshold or a specific product in the cart. The tags merchants actually set by hand depend on several signals at once: a high-value order, going to a slow-ship destination, from a repeat customer, with a free-text gift note. Flow checks conditions one at a time and cannot read a free-text order note the way a person does, so multi-signal tags get set by hand or split across a brittle stack of single-condition workflows. The tags themselves also drift and break: nothing keeps the vocabulary clean, so vip, VIP, and Vip can coexist and a segment built on one silently misses the others, and a tag built from a variable can hit invalid characters or the length limit and throw an order-tags-is-invalid error that fails silently. Tags are the connective tissue for fulfillment routing, downstream flows, customer segments, exports, and email platforms, so a wrong tag misroutes an order or drops a customer from a sequence. The AI playbook that reads the whole order at once, decides the tags from plain-language rules across product, value, customer, destination, and note signals, normalizes every tag against one controlled vocabulary, writes them back at the order level without touching anything else, triggers the routing or hold the tag is for, backfills the orders that predate the rule, and logs every tag with its reason.</description>
    </item>

    <item>
      <title>How to bulk edit meta descriptions on Shopify</title>
      <link>https://blog.dugong.live/how-to-bulk-edit-meta-descriptions-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-bulk-edit-meta-descriptions-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Wed, 17 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify can edit the meta description field in bulk, but only by writing the same text onto every selected product, which is exactly the duplicate, boilerplate text Google tells you to avoid. So a unique, search-intent meta for each product has to be written in its search engine listing one product at a time, and past the first few dozen SKUs most stores leave it blank, which makes Shopify auto-fill the search snippet with the generic, often truncated opening of the product description. Collection pages, the homepage, the standard pages, and every blog post each need their own, edited individually. The meta description does not move ranking directly, but it decides the click-through on traffic you already rank for, and answer engines lean on a concise, distinct line to summarize and quote a page. The AI playbook that finds every missing, duplicated, or wrong-length description across products, collections, and pages, reads each page to write a distinct line in the store's voice that fits the ~155-character window and matches search intent, checks the whole set so no two are identical, fixes weak meta titles in the same pass, writes the field back through the API without touching anything else, and re-checks new products so the field never drifts back to blank.</description>
    </item>

    <item>
      <title>How to schedule a sale on Shopify</title>
      <link>https://blog.dugong.live/how-to-schedule-a-sale-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-schedule-a-sale-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Tue, 16 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify has no native way to schedule a sale to start and end on its own. The price edit applies the instant you save, Shopify Flow cannot schedule a price change, and nothing remembers the original price to revert to, so merchants flip prices by hand at midnight, babysit the promotion, and a forgotten reset bleeds margin for days. Discount codes can be scheduled but show no struck-through sale price while customers browse. The AI playbook that selects the products by rule, records each original price, sets the discount and compare-at strikethrough above a margin floor, and reverts every price exactly when the sale ends.</description>
    </item>

    <item>
      <title>How to set inventory reorder points on Shopify</title>
      <link>https://blog.dugong.live/how-to-set-inventory-reorder-points-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-set-inventory-reorder-points-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Mon, 15 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify tracks inventory but has no native way to reorder from suppliers for you, and its purchase orders are too basic to set a reorder point per SKU, forecast demand, or auto-fill the cost and supplier SKU. So merchants reorder from a stale spreadsheet and a gut feel, bestsellers go out of stock for ~35 days while cash sits frozen in slow movers, and ~43% of shoppers leave for a competitor. The AI playbook that projects days of cover per SKU, subtracts each supplier's lead time, right-sizes the buy, groups it by vendor to clear minimums, and drafts the purchase order for approval on time.</description>
    </item>

    <item>
      <title>How to set up an abandoned cart email sequence on Shopify</title>
      <link>https://blog.dugong.live/how-to-set-up-an-abandoned-cart-email-sequence-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-set-up-an-abandoned-cart-email-sequence-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sun, 14 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify's native abandoned checkout recovery is one generic email on a preset timer, with no follow-up sequence and no personalization, and one-page checkout often loses the email and phone before any reminder can send. Roughly 70% of carts are abandoned and a single reminder recovers only about 3 to 8 percent. The AI playbook that sequences, personalizes across email and SMS, recovers the contact where it can, and stops the moment the shopper buys.</description>
    </item>

    <item>
      <title>How to push sold-out products to the bottom of a Shopify collection</title>
      <link>https://blog.dugong.live/how-to-push-sold-out-products-to-the-bottom-of-a-shopify-collection.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-push-sold-out-products-to-the-bottom-of-a-shopify-collection.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 13 Jun 2026 12:00:00 +0000</pubDate>
      <description>Shopify has no reliable way to push sold-out products to the bottom of a collection, so empty shelves greet your best traffic and drag down the conversion of everything in stock behind them. The native sort breaks across pagination and hiding the product kills its SEO and waitlist. The AI playbook that re-merchandises the storefront the moment stock moves.</description>
    </item>

    <item>
      <title>How to set up back-in-stock notifications on Shopify</title>
      <link>https://blog.dugong.live/how-to-set-up-back-in-stock-notifications-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-set-up-back-in-stock-notifications-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 13 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify has no real back-in-stock automation, so the customer who clicked notify me never hears the item return and the restock sells out to strangers. The AI playbook that watches real inventory, ranks the waitlist, and notifies in fair order without overselling.</description>
    </item>

    <item>
      <title>How to win chargeback disputes on Shopify</title>
      <link>https://blog.dugong.live/how-to-win-chargeback-disputes-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-win-chargeback-disputes-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Thu, 11 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify auto-submits a thin transaction summary on the deadline, so you lose chargebacks you should win, even with the tracking in hand. The AI playbook that reads the reason code, assembles the evidence, and files the rebuttal before the clock runs out.</description>
    </item>

    <item>
      <title>How to automate returns and exchanges on Shopify</title>
      <link>https://blog.dugong.live/how-to-automate-returns-and-exchanges-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-automate-returns-and-exchanges-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Tue, 09 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify makes you approve every return by hand and won't run a true exchange, so roughly one in five orders comes back as manual work and a refund instead of a swap. The AI playbook that reads the request, applies your policy, runs the exchange, and settles the money.</description>
    </item>

    <item>
      <title>How to edit a Shopify order after it's been placed</title>
      <link>https://blog.dugong.live/how-to-edit-a-shopify-order-after-its-been-placed.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-edit-a-shopify-order-after-its-been-placed.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Mon, 08 Jun 2026 09:00:00 +0000</pubDate>
      <description>A customer emails to change their Shopify order, and the edit locks the second you fulfil. The AI playbook that processes change requests before the label prints.</description>
    </item>

    <item>
      <title>How to validate shipping addresses on Shopify</title>
      <link>https://blog.dugong.live/how-to-validate-shipping-addresses-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-validate-shipping-addresses-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 06 Jun 2026 09:00:00 +0000</pubDate>
      <description>Shopify warns about a bad address, you ship anyway, and the package bounces back. The AI playbook that catches undeliverable addresses before the label prints.</description>
    </item>

    <item>
      <title>How to handle high-risk orders on Shopify</title>
      <link>https://blog.dugong.live/how-to-handle-high-risk-orders-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-handle-high-risk-orders-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Sat, 06 Jun 2026 08:00:00 +0000</pubDate>
      <description>Shopify's high-risk flag hands you a coin-flip: cancel a real customer or fulfil a fraudster. The AI playbook that decides each flagged order with evidence.</description>
    </item>

    <item>
      <title>How to prevent overselling on Shopify across channels</title>
      <link>https://blog.dugong.live/how-to-prevent-overselling-on-shopify-across-channels.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-prevent-overselling-on-shopify-across-channels.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Fri, 05 Jun 2026 09:00:00 +0000</pubDate>
      <description>Overselling is the top pain for multichannel Shopify merchants. Why manual inventory sync breaks during a sale, and the AI playbook that keeps stock honest.</description>
    </item>

    <item>
      <title>How to reduce 'where is my order?' (WISMO) tickets on Shopify</title>
      <link>https://blog.dugong.live/how-to-reduce-where-is-my-order-wismo-tickets-on-shopify.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/how-to-reduce-where-is-my-order-wismo-tickets-on-shopify.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Thu, 04 Jun 2026 09:00:00 +0000</pubDate>
      <description>WISMO ('where is my order?') is the most common ecommerce support ticket — ~18% of inbox volume. The AI playbook that answers tracking questions automatically.</description>
    </item>

    <item>
      <title>The best Shopify automations to set up</title>
      <link>https://blog.dugong.live/best-shopify-automations-to-set-up.html</link>
      <guid isPermaLink="true">https://blog.dugong.live/best-shopify-automations-to-set-up.html</guid>
      <dc:creator>Priya Singh</dc:creator>
      <category>Research</category>
      <pubDate>Wed, 28 May 2026 09:00:00 +0000</pubDate>
      <description>A field study of 1,374 Shopify playbooks: tagging is 14% of automations, returns under 1%. The gap between what's easy to automate and what's worth automating.</description>
    </item>

    <item>
      <title>The death of the drag-and-drop builder</title>
      <link>https://blog.dugong.live/</link>
      <guid isPermaLink="false">https://blog.dugong.live/#dispatch-47</guid>
      <dc:creator>Aanya Rao</dc:creator>
      <category>Research</category>
      <pubDate>Wed, 28 May 2026 08:00:00 +0000</pubDate>
      <description>For fifteen years, workflow automation looked like a canvas of rectangles connected by lines. After watching three million runs across twelve thousand teams, we're convinced the canvas was always the problem.</description>
    </item>

  </channel>
</rss>
