<?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>DEV Community: Jess Riche</title>
    <description>The latest articles on DEV Community by Jess Riche (@jessriche).</description>
    <link>https://dev.to/jessriche</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3784663%2F4d373065-35a6-4efe-bab4-96ce9627b0e8.jpg</url>
      <title>DEV Community: Jess Riche</title>
      <link>https://dev.to/jessriche</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jessriche"/>
    <language>en</language>
    <item>
      <title>FedEx Shut Down Its SOAP API. Your WooCommerce Store Might Have Failed Silently</title>
      <dc:creator>Jess Riche</dc:creator>
      <pubDate>Thu, 03 Sep 2026 22:09:20 +0000</pubDate>
      <link>https://dev.to/jessriche/fedex-shut-down-its-soap-api-your-woocommerce-store-might-have-failed-silently-4g99</link>
      <guid>https://dev.to/jessriche/fedex-shut-down-its-soap-api-your-woocommerce-store-might-have-failed-silently-4g99</guid>
      <description>&lt;p&gt;TL;DR: FedEx permanently shut down its legacy SOAP Web Services on June 1, 2026.&lt;/p&gt;

&lt;p&gt;Any integration still depending on those endpoints stopped getting FedEx rates.&lt;/p&gt;

&lt;p&gt;What surprised me was not the migration itself. It was the way the failure showed up.&lt;/p&gt;

&lt;p&gt;The stores I saw did not crash. They did not throw an obvious error. Their uptime monitors stayed green.&lt;/p&gt;

&lt;p&gt;They simply stopped showing FedEx shipping rates at checkout.&lt;/p&gt;

&lt;p&gt;And in some ways, that is a much worse failure than a site going down.&lt;/p&gt;

&lt;p&gt;A little context before I get into it.&lt;/p&gt;

&lt;p&gt;I work on the business and support side of WooCommerce shipping plugins, which means I spend quite a bit of time reading tickets from merchants when something suddenly stops working.&lt;/p&gt;

&lt;p&gt;So this is less of a migration tutorial and more of an observation from the merchant side of an API shutdown.&lt;/p&gt;

&lt;p&gt;You should absolutely compare it with your own logs and implementation.&lt;/p&gt;

&lt;p&gt;But I think there is an interesting reliability problem here that goes beyond FedEx.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What FedEx switched off&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;FedEx retired its legacy SOAP Web Services in favour of its REST APIs.&lt;/p&gt;

&lt;p&gt;There were two important deadlines:&lt;/p&gt;

&lt;p&gt;March 31, 2026 for software providers and platforms&lt;br&gt;
June 1, 2026 for merchants using their own FedEx credentials&lt;/p&gt;

&lt;p&gt;After those dates, the old SOAP integrations were no longer something you could keep running indefinitely.&lt;/p&gt;

&lt;p&gt;And this was not simply a matter of changing the API URL.&lt;/p&gt;

&lt;p&gt;Authentication changed too.&lt;/p&gt;

&lt;p&gt;The old SOAP integration sent things like the key, password, account number, and meter number with the request.&lt;/p&gt;

&lt;p&gt;REST uses OAuth 2.0 client credentials instead.&lt;/p&gt;

&lt;p&gt;That means there is now a token lifecycle involved:&lt;/p&gt;

&lt;p&gt;curl -s -X POST &lt;a href="https://apis.fedex.com/oauth/token" rel="noopener noreferrer"&gt;https://apis.fedex.com/oauth/token&lt;/a&gt; \&lt;br&gt;
  -H "Content-Type: application/x-www-form-urlencoded" \&lt;br&gt;
  -d "grant_type=client_credentials" \&lt;br&gt;
  -d "client_id=$FEDEX_API_KEY" \&lt;br&gt;
  -d "client_secret=$FEDEX_SECRET_KEY"&lt;/p&gt;

&lt;p&gt;No &lt;strong&gt;access_token&lt;/strong&gt; means nothing downstream is going to work.&lt;/p&gt;

&lt;p&gt;The APIs themselves also changed shape.&lt;/p&gt;

&lt;p&gt;Rating, tracking, labels, freight, and other services moved into different REST resources, with different request and response structures.&lt;/p&gt;

&lt;p&gt;So for a deeply integrated application, this was not really "replace SOAP with REST."&lt;/p&gt;

&lt;p&gt;There is parsing logic to rewrite, service mappings to check, authentication to change, and edge cases to retest.&lt;/p&gt;

&lt;p&gt;There is also one very non-technical problem: getting the new credentials usually requires access to the merchant's FedEx account and MFA.&lt;/p&gt;

&lt;p&gt;That matters more than it sounds.&lt;/p&gt;

&lt;p&gt;A developer cannot always complete this migration alone.&lt;/p&gt;

&lt;p&gt;Someone who actually controls the FedEx account has to participate, and on a small WooCommerce store that person may be the store owner who has no idea an API migration is happening in the first place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The strange part: nothing actually crashed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was the part that caught my attention.&lt;/p&gt;

&lt;p&gt;Imagine a WooCommerce shipping method calls FedEx and gets no usable rates back.&lt;/p&gt;

&lt;p&gt;What should happen?&lt;/p&gt;

&lt;p&gt;From the store's point of view, "no rates" is not necessarily an exception.&lt;/p&gt;

&lt;p&gt;Sometimes there genuinely are no available services for a package or destination.&lt;/p&gt;

&lt;p&gt;So the shipping method can return an empty array.&lt;/p&gt;

&lt;p&gt;WooCommerce continues rendering the checkout.&lt;/p&gt;

&lt;p&gt;The page still loads.&lt;/p&gt;

&lt;p&gt;The request still returns HTTP 200.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Your uptime monitor sees: Everything looks good.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Meanwhile the customer sees: No FedEx shipping option.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is a very different kind of outage.&lt;/p&gt;

&lt;p&gt;The application is technically alive, but an important part of the business is no longer functioning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fallback-rate problem is even worse&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now imagine the store also has a flat-rate shipping method configured as a backup.&lt;/p&gt;

&lt;p&gt;The FedEx rates disappear.&lt;/p&gt;

&lt;p&gt;But checkout still works.&lt;/p&gt;

&lt;p&gt;Orders keep coming in.&lt;/p&gt;

&lt;p&gt;From the merchant's perspective, the site looks completely normal.&lt;/p&gt;

&lt;p&gt;Except every order is now being priced using a flat rate someone may have configured months or years ago.&lt;/p&gt;

&lt;p&gt;Maybe that number is still close enough.&lt;/p&gt;

&lt;p&gt;Maybe it is not.&lt;/p&gt;

&lt;p&gt;The store can quietly lose money on every shipment without generating a single obvious technical failure.&lt;/p&gt;

&lt;p&gt;That is why I think this type of problem can be more damaging than a crash.&lt;/p&gt;

&lt;p&gt;A crash is loud.&lt;/p&gt;

&lt;p&gt;Someone notices.&lt;/p&gt;

&lt;p&gt;A monitor fires.&lt;/p&gt;

&lt;p&gt;A customer complains.&lt;/p&gt;

&lt;p&gt;People start looking at logs.&lt;/p&gt;

&lt;p&gt;A missing shipping rate can continue for days because almost every layer of the system is technically doing what it was designed to do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"No service" and "dead upstream" look surprisingly similar&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the reliability problem I keep coming back to.&lt;/p&gt;

&lt;p&gt;From the application side:&lt;/p&gt;

&lt;p&gt;FedEx doesn't service this shipment&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;FedEx integration is completely broken&lt;/p&gt;

&lt;p&gt;can both eventually become:&lt;/p&gt;

&lt;p&gt;[]&lt;/p&gt;

&lt;p&gt;That is not a lot of information to work with.&lt;/p&gt;

&lt;p&gt;If your monitoring only watches exceptions, HTTP status codes, and page availability, you may never see the failure.&lt;/p&gt;

&lt;p&gt;So if I were building or maintaining one of these integrations, there are a few things I would want.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Monitor missing rates, not only errors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Your exception handling may be working perfectly.&lt;/p&gt;

&lt;p&gt;The problem is that an empty rate response never reaches it.&lt;/p&gt;

&lt;p&gt;You need to pay attention to the absence of a result too.&lt;/p&gt;

&lt;p&gt;For example, even a basic WooCommerce logger can help:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="cd"&gt;/**
 * Warn when a package has no available shipping rates.
 *
 * Logs to WooCommerce &amp;gt; Status &amp;gt; Logs
 * Source: shipping-watch
 */&lt;/span&gt;
&lt;span class="nf"&gt;add_filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s1"&gt;'woocommerce_package_rates'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$rates&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="nv"&gt;$package&lt;/span&gt; &lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="kt"&gt;array&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="k"&gt;empty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nv"&gt;$rates&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;wc_get_logger&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;warning&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="nb"&gt;sprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="s1"&gt;'No shipping rates for package to %s %s'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="nv"&gt;$package&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'destination'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;'country'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="s1"&gt;'unknown'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="nv"&gt;$package&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'destination'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;'postcode'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;
                &lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="s1"&gt;'source'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'shipping-watch'&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nv"&gt;$rates&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few empty results are probably normal.&lt;/p&gt;

&lt;p&gt;If suddenly almost every checkout starts producing them, that is much more interesting.&lt;/p&gt;

&lt;p&gt;I would rather find that out the same day than discover it from a merchant support ticket two weeks later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Be careful with cached rates while debugging&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shipping rates are often cached, and normally that is exactly what you want.&lt;/p&gt;

&lt;p&gt;During an API migration, though, caching can make troubleshooting confusing.&lt;/p&gt;

&lt;p&gt;You can change credentials or break an API connection and still see an older successful rate for a while.&lt;/p&gt;

&lt;p&gt;That creates the comforting impression that everything is working.&lt;/p&gt;

&lt;p&gt;When diagnosing a problem, make sure you know whether you are looking at a live carrier response or a cached result.&lt;/p&gt;

&lt;p&gt;In WooCommerce, enabling shipping debug mode temporarily can help while testing:&lt;/p&gt;

&lt;p&gt;add_filter( 'woocommerce_shipping_debug_mode', '__return_true' );&lt;/p&gt;

&lt;p&gt;Do not leave debugging changes around unnecessarily, but during a migration I want as little ambiguity as possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Test authentication directly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A checkout is a terrible diagnostic tool.&lt;/p&gt;

&lt;p&gt;There are too many layers between the carrier API and what eventually appears on screen.&lt;/p&gt;

&lt;p&gt;If authentication is the dependency everything else sits on, test authentication directly.&lt;/p&gt;

&lt;p&gt;For FedEx REST, that means verifying that the OAuth request successfully returns an access token.&lt;/p&gt;

&lt;p&gt;That is also something you can monitor automatically.&lt;/p&gt;

&lt;p&gt;If getting a token suddenly fails, I would much rather receive an alert for that specific problem than wait until someone notices that shipping disappeared from checkout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Put migration warnings where the merchant actually works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one is less technical, but I think it matters.&lt;/p&gt;

&lt;p&gt;API providers send migration emails.&lt;/p&gt;

&lt;p&gt;The problem is that merchants receive a lot of emails.&lt;/p&gt;

&lt;p&gt;Carrier announcements, pricing changes, service notifications, promotions, account notices...&lt;/p&gt;

&lt;p&gt;It all blends together.&lt;/p&gt;

&lt;p&gt;And the person reading those emails may have no idea that "SOAP Web Services retirement" translates into:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Your WooCommerce checkout may stop showing FedEx rates.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you maintain an integration, an admin notice inside the application can be much more effective:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Action required:&lt;/strong&gt; &lt;em&gt;Your FedEx integration uses a legacy API that stops working on June 1. Update your credentials before that date or FedEx rates may disappear from checkout.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is much harder to misunderstand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What worked better on the stores that migrated&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The obvious first step was moving to an integration that talks to the FedEx REST APIs natively rather than continuing to depend on the retired SOAP services.&lt;/p&gt;

&lt;p&gt;That is also how the &lt;a href="https://wordpress.org/plugins/wc-fedex-shipping/" rel="noopener noreferrer"&gt;FedEx Shipping PRO plugin &lt;/a&gt;I work with is built, so take this section with the appropriate amount of bias.&lt;/p&gt;

&lt;p&gt;But there are a few design decisions in it that I think are useful regardless of which FedEx integration you use.&lt;/p&gt;

&lt;p&gt;One is failure isolation.&lt;/p&gt;

&lt;p&gt;Parcel and freight are handled as separate adapters. If a freight request fails, that does not automatically mean your regular FedEx Ground or Express rates need to disappear too.&lt;/p&gt;

&lt;p&gt;That sounds like a small implementation detail until something upstream breaks.&lt;/p&gt;

&lt;p&gt;Another is having a way to test the integration without using the WooCommerce checkout as your debugging tool.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;wp wc-fedex-shipping status&lt;/p&gt;

&lt;p&gt;shows the current FedEx configuration and shipping instances.&lt;/p&gt;

&lt;p&gt;wp wc-fedex-shipping validate&lt;/p&gt;

&lt;p&gt;runs configuration checks and reports what is passing or failing.&lt;/p&gt;

&lt;p&gt;And you can request a live rate directly:&lt;/p&gt;

&lt;p&gt;wp wc-fedex-shipping rates quote \&lt;br&gt;
  --products=9405 \&lt;br&gt;
  --destination="123 Main St, New York, NY 10005, US"&lt;/p&gt;

&lt;p&gt;For me, this is one of the biggest lessons from the SOAP shutdown.&lt;/p&gt;

&lt;p&gt;A shipping integration should not only be able to return rates when everything is working.&lt;/p&gt;

&lt;p&gt;It should also help you understand &lt;strong&gt;why rates are missing when something is not.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is a much better experience than repeatedly refreshing checkout and guessing whether the problem is the address, the products, the shipping zone, the credentials, or FedEx itself.&lt;/p&gt;

&lt;p&gt;If you are still using an older FedEx integration, this is also a good reason to check whether it actually uses the current REST APIs rather than assuming an installed plugin is still compatible just because WooCommerce itself is working.&lt;/p&gt;

&lt;p&gt;There is a free version of our &lt;a href="https://wordpress.org/plugins/wc-fedex-shipping/" rel="noopener noreferrer"&gt;FedEx Shipping PRO plugin &lt;/a&gt;on WordPress.org if you want to test the REST integration on a WooCommerce store:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8he40heyo20ctd37oak7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8he40heyo20ctd37oak7.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you need more advanced FedEx functionality, the PRO version is built on the same REST-based integration.&lt;/p&gt;

&lt;p&gt;I would still rather people test the free version themselves than take my word for it.&lt;/p&gt;

&lt;p&gt;This is not really a FedEx problem&lt;/p&gt;

&lt;p&gt;FedEx announced the migration well in advance.&lt;/p&gt;

&lt;p&gt;The documentation existed.&lt;/p&gt;

&lt;p&gt;The deadline was public.&lt;/p&gt;

&lt;p&gt;So I do not think the interesting lesson here is:&lt;/p&gt;

&lt;p&gt;FedEx turned off an old API.&lt;/p&gt;

&lt;p&gt;APIs get retired. That is normal.&lt;/p&gt;

&lt;p&gt;What interested me was how many systems between the dead API and the merchant could continue behaving "correctly."&lt;/p&gt;

&lt;p&gt;The carrier returned no usable rate.&lt;/p&gt;

&lt;p&gt;The shipping integration returned no shipping option.&lt;/p&gt;

&lt;p&gt;WooCommerce rendered the checkout.&lt;/p&gt;

&lt;p&gt;The web server returned 200.&lt;/p&gt;

&lt;p&gt;The uptime monitor stayed green.&lt;/p&gt;

&lt;p&gt;Every individual layer could look healthy while the business function they were supposed to support was broken.&lt;/p&gt;

&lt;p&gt;That is the part worth thinking about.&lt;/p&gt;

&lt;p&gt;We spend a lot of time monitoring failures that produce errors.&lt;/p&gt;

&lt;p&gt;Maybe we should spend more time monitoring expected things that suddenly stop happening.&lt;/p&gt;

&lt;p&gt;Orders.&lt;/p&gt;

&lt;p&gt;Payments.&lt;/p&gt;

&lt;p&gt;Shipping rates.&lt;/p&gt;

&lt;p&gt;Emails.&lt;/p&gt;

&lt;p&gt;Webhooks.&lt;/p&gt;

&lt;p&gt;Background jobs.&lt;/p&gt;

&lt;p&gt;Sometimes the absence of an event is the actual incident.&lt;/p&gt;

&lt;p&gt;If you have worked on shipping, payments, or another API where an empty response can be both completely legitimate and a sign that the upstream service is dead, I would be interested to know how you monitor it.&lt;/p&gt;

</description>
      <category>fedex</category>
      <category>api</category>
      <category>woocommerce</category>
      <category>ecommerce</category>
    </item>
    <item>
      <title>10 E-Commerce Product Areas I’d Be Watching in 2026</title>
      <dc:creator>Jess Riche</dc:creator>
      <pubDate>Tue, 01 Sep 2026 01:13:50 +0000</pubDate>
      <link>https://dev.to/jessriche/10-e-commerce-product-areas-id-be-watching-in-2026-50bd</link>
      <guid>https://dev.to/jessriche/10-e-commerce-product-areas-id-be-watching-in-2026-50bd</guid>
      <description>&lt;p&gt;If I were starting a new e-commerce store in 2026, I wouldn’t begin by asking:&lt;/p&gt;

&lt;p&gt;“What product is going viral right now?”&lt;/p&gt;

&lt;p&gt;I think that’s one of the easiest ways to end up chasing something that disappears six months later.&lt;/p&gt;

&lt;p&gt;I’d ask a different question:&lt;/p&gt;

&lt;p&gt;What are people going to keep spending money on?&lt;/p&gt;

&lt;p&gt;As an entrepreneur, I’m much more interested in products that have a few things going for them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;repeat purchases&lt;/li&gt;
&lt;li&gt;healthy margins&lt;/li&gt;
&lt;li&gt;reasonable shipping costs&lt;/li&gt;
&lt;li&gt;a clear problem they solve&lt;/li&gt;
&lt;li&gt;room to build a brand around them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Global e-commerce is still growing, but what I find more interesting is where the growth is happening. Shopify estimates global e-commerce revenue will reach about $3.89 trillion in 2026, with food, beverages, and beauty among the categories showing strong continued growth.&lt;/p&gt;

&lt;p&gt;So if I were researching my next e-commerce store, these are the 10 areas I’d look at first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Supplements and Functional Nutrition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This would probably be near the top of my list.&lt;/p&gt;

&lt;p&gt;Protein products, electrolytes, vitamins, collagen, functional powders, and other nutrition products have something every e-commerce entrepreneur loves.&lt;/p&gt;

&lt;p&gt;If someone likes the product, they can come back every month.&lt;/p&gt;

&lt;p&gt;Wellness spending is also continuing to expand, with the global wellness economy projected to reach around $7.9 trillion in 2026. Functional nutrition and personalized diets are part of that growth.&lt;/p&gt;

&lt;p&gt;Of course, health products also come with more responsibility around claims, regulations, and product quality.&lt;/p&gt;

&lt;p&gt;But from a business model perspective, recurring consumption is very attractive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Skincare and Beauty&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Beauty isn't exactly a new e-commerce trend.&lt;/p&gt;

&lt;p&gt;But I still think there is a lot of room here if you don't try to compete as another generic beauty store.&lt;/p&gt;

&lt;p&gt;The global beauty and personal-care e-commerce market is expected to continue growing through 2030.&lt;/p&gt;

&lt;p&gt;What interests me is the niche potential.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;“We sell skincare.”&lt;/p&gt;

&lt;p&gt;I’d rather build something around:&lt;/p&gt;

&lt;p&gt;skincare for women over 40&lt;/p&gt;

&lt;p&gt;or:&lt;/p&gt;

&lt;p&gt;travel-friendly skincare for frequent flyers.&lt;/p&gt;

&lt;p&gt;Same large market.&lt;/p&gt;

&lt;p&gt;Much clearer customer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Pet Products&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;People spend emotionally when it comes to their pets.&lt;/p&gt;

&lt;p&gt;That's something I wouldn't underestimate.&lt;/p&gt;

&lt;p&gt;The global pet-supplies market is valued at more than $228 billion in 2026, according to current market estimates cited by Shopify.&lt;/p&gt;

&lt;p&gt;Again, I wouldn't build a store selling every possible dog toy and cat bowl.&lt;/p&gt;

&lt;p&gt;I'd go narrow.&lt;/p&gt;

&lt;p&gt;Maybe products for senior dogs.&lt;/p&gt;

&lt;p&gt;Smart feeders.&lt;/p&gt;

&lt;p&gt;Grooming products for a particular breed.&lt;/p&gt;

&lt;p&gt;The more specific the customer, the easier it becomes to create content and advertising that actually speaks to them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Sleep and Recovery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is one of the categories I personally find most interesting.&lt;/p&gt;

&lt;p&gt;People are increasingly treating sleep like fitness.&lt;/p&gt;

&lt;p&gt;They're tracking it.&lt;/p&gt;

&lt;p&gt;Optimizing it.&lt;/p&gt;

&lt;p&gt;Buying products to improve it.&lt;/p&gt;

&lt;p&gt;That creates opportunities around cooling products, pillows, sleep masks, recovery accessories, bedding, and sleep technology.&lt;/p&gt;

&lt;p&gt;Shopify's 2026 wellness analysis specifically identifies sleep optimization and recovery tools as a major wellness trend.&lt;/p&gt;

&lt;p&gt;I think this is a good example of a market where you don't necessarily need to invent some revolutionary device.&lt;/p&gt;

&lt;p&gt;Sometimes the opportunity is simply making an existing solution more comfortable, easier to use, or targeted at a specific customer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Water and Air-Quality Products&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This category isn't as exciting as a viral TikTok gadget.&lt;/p&gt;

&lt;p&gt;And that's partly why I like it.&lt;/p&gt;

&lt;p&gt;Water filters, replacement filters, shower filtration, air-quality accessories, and similar products solve very obvious problems.&lt;/p&gt;

&lt;p&gt;Some also have a natural recurring-revenue model.&lt;/p&gt;

&lt;p&gt;Sell the filtration system once.&lt;/p&gt;

&lt;p&gt;Then sell the replacement filter again and again.&lt;/p&gt;

&lt;p&gt;Water filters are also showing up among current e-commerce and dropshipping product opportunities.&lt;/p&gt;

&lt;p&gt;I generally like products where the second sale is easier than the first one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Functional Drinks and Specialty Coffee&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Coffee, tea, hydration products, powdered drinks, protein beverages, and functional beverages are another area I would investigate.&lt;/p&gt;

&lt;p&gt;The global beverages e-commerce market is projected to reach roughly $251 billion in 2026 and continue growing through 2030.&lt;/p&gt;

&lt;p&gt;The business model is attractive for the same reason supplements are:&lt;/p&gt;

&lt;p&gt;People consume them.&lt;/p&gt;

&lt;p&gt;Then they need more.&lt;/p&gt;

&lt;p&gt;There's also a lot of room for branding.&lt;/p&gt;

&lt;p&gt;People don't just buy coffee because they need caffeine.&lt;/p&gt;

&lt;p&gt;They buy a particular roast, lifestyle, story, packaging, or community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Fitness and Active-Lifestyle Products&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wouldn't try to compete directly with Nike selling generic activewear.&lt;/p&gt;

&lt;p&gt;But fitness contains thousands of smaller niches.&lt;/p&gt;

&lt;p&gt;Cycling.&lt;/p&gt;

&lt;p&gt;Running.&lt;/p&gt;

&lt;p&gt;Home gyms.&lt;/p&gt;

&lt;p&gt;Yoga.&lt;/p&gt;

&lt;p&gt;Hiking.&lt;/p&gt;

&lt;p&gt;Recovery.&lt;/p&gt;

&lt;p&gt;Strength training.&lt;/p&gt;

&lt;p&gt;Pickleball.&lt;/p&gt;

&lt;p&gt;And every one of those has its own accessories and customer problems.&lt;/p&gt;

&lt;p&gt;Activewear, cycling, and related products remain among the product categories showing strong online demand.&lt;/p&gt;

&lt;p&gt;The opportunity, in my opinion, is going deeper into one activity instead of creating another general fitness store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Automotive and Mobility Accessories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This one doesn't get talked about as much in entrepreneurial e-commerce discussions.&lt;/p&gt;

&lt;p&gt;But I think it deserves attention.&lt;/p&gt;

&lt;p&gt;Vehicle parts are already among the major online product categories, and there are countless smaller opportunities around organization, electronics, EVs, motorcycles, scooters, maintenance, and accessories.&lt;/p&gt;

&lt;p&gt;People also tend to search for very specific solutions:&lt;/p&gt;

&lt;p&gt;“How do I charge this?”&lt;/p&gt;

&lt;p&gt;“How do I mount this?”&lt;/p&gt;

&lt;p&gt;“How do I protect this?”&lt;/p&gt;

&lt;p&gt;Those are great e-commerce searches because there's usually clear buying intent behind them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Personalized and Very Specific Niche Products&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This may actually be the biggest trend of all.&lt;/p&gt;

&lt;p&gt;Shopify recently reported that product categories outside its top 100 categories now account for nearly 55% of sales on the platform, and those smaller categories are growing faster than the mainstream ones.&lt;/p&gt;

&lt;p&gt;That really caught my attention.&lt;/p&gt;

&lt;p&gt;It suggests that the opportunity isn't necessarily finding the next giant product category.&lt;/p&gt;

&lt;p&gt;It might be finding a tiny category that matters deeply to a specific group of people.&lt;/p&gt;

&lt;p&gt;Instead of competing for millions of general consumers, I might prefer serving 20,000 people who feel like a product was made specifically for them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10. Physical Products + Digital Products&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is probably the business model I find most interesting.&lt;/p&gt;

&lt;p&gt;Sell a physical product, but add something digital around it.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;A fitness product + training program.&lt;/p&gt;

&lt;p&gt;Coffee equipment + brewing guide.&lt;/p&gt;

&lt;p&gt;Gardening kit + video course.&lt;/p&gt;

&lt;p&gt;Craft supplies + downloadable patterns.&lt;/p&gt;

&lt;p&gt;Pet-training product + training program.&lt;/p&gt;

&lt;p&gt;The physical product gives the customer something tangible.&lt;/p&gt;

&lt;p&gt;The digital product adds value without adding much shipping or inventory cost.&lt;/p&gt;

&lt;p&gt;It can also make the store harder for competitors to copy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Wouldn't Do&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I probably wouldn't open a store simply because I saw someone saying:&lt;/p&gt;

&lt;p&gt;“This is the hottest product of 2026.”&lt;/p&gt;

&lt;p&gt;By the time thousands of people are talking about the exact same product, you're often competing with thousands of people selling it.&lt;/p&gt;

&lt;p&gt;I'd rather find a growing category and then go one level deeper.&lt;/p&gt;

&lt;p&gt;That's where I think the more interesting opportunities are.&lt;/p&gt;

&lt;p&gt;The Trend I’m Watching Most Isn't a Product&lt;/p&gt;

&lt;p&gt;If I had to bet on one overall e-commerce trend in 2026, it wouldn't actually be supplements, pets, beauty, or sleep.&lt;/p&gt;

&lt;p&gt;It would be:&lt;/p&gt;

&lt;p&gt;niche specialization.&lt;/p&gt;

&lt;p&gt;Technology has made it incredibly easy to open another general online store.&lt;/p&gt;

&lt;p&gt;That also means general stores are increasingly difficult to differentiate.&lt;/p&gt;

&lt;p&gt;What feels more valuable now is being extremely relevant to a smaller group of customers.&lt;/p&gt;

&lt;p&gt;Build around their problem.&lt;/p&gt;

&lt;p&gt;Create content for them.&lt;/p&gt;

&lt;p&gt;Choose products for them.&lt;/p&gt;

&lt;p&gt;Understand their language.&lt;/p&gt;

&lt;p&gt;Then, instead of asking:&lt;/p&gt;

&lt;p&gt;“How do I convince everyone to buy this?”&lt;/p&gt;

&lt;p&gt;you can ask:&lt;/p&gt;

&lt;p&gt;“How do I become the obvious store for this particular customer?”&lt;/p&gt;

&lt;p&gt;As an entrepreneur, that's the direction I would be looking in if I were starting a new e-commerce business in 2026.&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>woocommerce</category>
      <category>enterprenuship</category>
      <category>smallbusiness</category>
    </item>
    <item>
      <title>Shopify or WooCommerce? How I Chose My First E-Commerce Platform</title>
      <dc:creator>Jess Riche</dc:creator>
      <pubDate>Sat, 29 Aug 2026 04:55:06 +0000</pubDate>
      <link>https://dev.to/jessriche/shopify-or-woocommerce-how-i-chose-my-first-e-commerce-platform-4d30</link>
      <guid>https://dev.to/jessriche/shopify-or-woocommerce-how-i-chose-my-first-e-commerce-platform-4d30</guid>
      <description>&lt;p&gt;When I first started thinking about opening an e-commerce store, my first question was simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shopify or WooCommerce?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At first, Shopify looked like the obvious choice.&lt;/p&gt;

&lt;p&gt;It was easy to start, hosting was included, and I didn’t need to think much about the technical side. For a new entrepreneur, that is very attractive because there are already so many other things to worry about.&lt;/p&gt;

&lt;p&gt;The basic Shopify plan is around US$29/month when billed annually, so roughly $348 per year before adding any extra apps.&lt;/p&gt;

&lt;p&gt;That didn’t sound bad.&lt;/p&gt;

&lt;p&gt;But then I started thinking about what I might need later.&lt;/p&gt;

&lt;p&gt;Advanced shipping, marketing tools, subscriptions, product options, automation, or other custom features often require additional apps.&lt;/p&gt;

&lt;p&gt;One app might be $10/month.&lt;/p&gt;

&lt;p&gt;Another might be $20.&lt;/p&gt;

&lt;p&gt;Another might be $30.&lt;/p&gt;

&lt;p&gt;Suddenly, the monthly cost can grow quite quickly.&lt;/p&gt;

&lt;p&gt;That was when I started looking more seriously at WooCommerce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WooCommerce Is Free, but Running a Store Isn’t&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WooCommerce itself is free, but of course that doesn’t mean the whole store is free.&lt;/p&gt;

&lt;p&gt;You still need things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hosting&lt;/li&gt;
&lt;li&gt;a domain&lt;/li&gt;
&lt;li&gt;possibly a premium theme&lt;/li&gt;
&lt;li&gt;paid plugins if you need extra features&lt;/li&gt;
&lt;li&gt;maintenance and backups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I don’t think it’s accurate to say:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shopify costs money, WooCommerce is free.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A better way to think about it is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Shopify bundles more things together. WooCommerce gives you more control over where you spend your money.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That difference mattered to me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I Chose WooCommerce&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the end, cost was only part of the decision.&lt;/p&gt;

&lt;p&gt;The bigger reason was control.&lt;/p&gt;

&lt;p&gt;With WooCommerce, I can choose my hosting provider, change plugins, customize how the store works, and build integrations if I need something more specific later.&lt;/p&gt;

&lt;p&gt;As an entrepreneur, I liked that flexibility.&lt;/p&gt;

&lt;p&gt;Because a business rarely stays exactly the way you imagined it on day one.&lt;/p&gt;

&lt;p&gt;At first, maybe you just want to sell a few products.&lt;/p&gt;

&lt;p&gt;Later, you may need different shipping rules, multiple warehouses, custom checkout logic, subscriptions, or integrations with other systems.&lt;/p&gt;

&lt;p&gt;I wanted a platform that could grow and change with the business.&lt;/p&gt;

&lt;p&gt;For me, WooCommerce felt like the better fit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But Shopify Still Makes a Lot of Sense&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I can absolutely understand why someone would choose Shopify.&lt;/p&gt;

&lt;p&gt;If your goal is to launch quickly, avoid technical maintenance, and focus mainly on products and marketing, Shopify may actually be the better choice.&lt;/p&gt;

&lt;p&gt;WooCommerce gives you more flexibility, but that also means more responsibility.&lt;/p&gt;

&lt;p&gt;You have to think about updates, hosting, security, compatibility, and performance.&lt;/p&gt;

&lt;p&gt;So I don’t think there is one answer that works for everyone.&lt;/p&gt;

&lt;p&gt;For me, the question eventually became:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I value simplicity more, or control more?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I chose control.&lt;/p&gt;

&lt;p&gt;That’s why I went with WooCommerce.&lt;/p&gt;

&lt;p&gt;And looking back, I think that was the right decision for the kind of business I wanted to build.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
