Category: Shopify

  • Influencer Marketing

    Influencer Marketing

    Why Influencer Marketing?

    At threddies, we’ve dabbled with adding influencer marketing to our repertoire for some time.  We’ve always had mixed experiences with it.  One of the biggest issues that a small marketing team faces, involves managing the ‘influencers’.  How can you easily see what’s working and what’s not?  How can you tweak the influencer ‘benefits’ based on what each one is most interested in?  Some want to be paid directly, others want store perks, etc.  There’s also the need to get all active influencers onboard with whatever your current campaign goal is.  Managing all of this often made ‘influencer’, one of the first aspects of marketing that we would drop.  This would often occur due to the low perceived ROI related to these factors.

    Shopify Collabs

    In the last year, Shopify released ‘Collabs‘ which piqued my interest to see how they handle some of these issues.  I felt the best approach to fully test out this platform was to become an ‘influencer’.  I applied for early access to Collabs and was accepted.  The first thing that I noticed was that it was very difficult to find a brand that I was interesting in collaborating with.

    I would never promote something that I don’t actually use.  I thought it should be really easy to just search for the brands that I love that I know already use Shopify.  This was not possible, the only mechanism to find brands is to actually ‘browse’.  There were a handful of categories, but no sub-filters.  With thousands of merchants on Shopify looking for brand ambassadors, this proved to be a very annoying way to find the things I was interested in.  Just having something as simple as ‘Men’s clothing’ would have made this a much better experience.

    Becoming an Influencer

    I started by setting up Threddies as a collaborator and adding the few products of ours that I actually use (and love!).  I then revisited the Collabs platform every few days and spent a bit of time browsing.  Eventually, I found one company who’s products I already used.  After some searching, I decided to apply for a few others that I was interested in starting to use.

    The application process was fairly easy.  Each brand asked for my social media information on the platforms they were most interested in.  Some asked additional questions and overall the application process was fairly smooth.  A few brands wanted to follow up with an online interview (conducted outside of the Shopify platform) after the application.

    I was accepted by a handful of brands and at this point setup a LinkPop account.  This is Shopify’s Linktree-like competitor which tightly integrates with the Collabs platform.  Each brand had its own requirements for how I was to represent them.  Collabs does not provide a way for an ‘influencer’ to report back their progress (other than link clickthrough rate).  Each brand I was working with had to monitor the metric that they cared most about.  In the best cases, the brands setup regular communication with a staff member outside of the Collabs app.  In other cases, I never heard from the brands again.

    Managing Your Influence

    At this point, I had been bitten by the ‘influencing’ bug… and I really wanted to work with some companies who had products that I loved.  I started to use other means to find out specifically if these brands worked with influencers and if so, how they managed that process.  Many brands have FAQs regarding this, and if they don’t you can usually track down the information after a few emails.  Many of the brands I love have Influencer marketing programs.  I applied to many… Almost none of them (including those based on Shopify) used Shopify Collabs.  This began a crash course for me in all of the competing Influencer marketing management platforms that are out there.  I won’t discuss all of them in detail, but I’ll hit on some major themes that I’ve noticed as a ‘user’ of these systems.

    Finding Brand Fit

    The most obvious difference between these platforms related to how easy it was to find brands to work with.  Some of them required a special link into the platform and zero searching/browsing capability beyond that.  Since each brand was treated independently, this became very annoying after I was accepted by multiple brands that all used the same platform.  I had separate login credentials for each one, and I had to re-enter the information that I knew the platform was already aware of (my name, social media accounts, payout information, etc.).  The platforms that did provide the ability to see all the brands that used it had far better search/discovery features than Shopify Collabs provided.

    Influencer vs Influencing Team

    Shopify Collabs is very much focused on the ‘Individual Influencer’.  I quickly realized that some of the other platforms are tailored toward Influencers that have major teams.  Many of these provide for multiple logins with all sorts of fine grained control over what each of those logins can do.  I don’t ever foresee a time where I would need this type of functionality, but it’s clear that there must be many Influencers who do.  I prefer Collabs simplicity in this area.

    Influencer Marketing Platforms

    All of the Influencer marketing management software that I’ve been using are heavily tailored to using the du jour social media platform(s).  TikTok was important to many, but Instagram was by far the one that every brand was most interested in.  I had stopped using Instagram last year, mostly because I didn’t find it contributing to my life in any positive way.  This experiment required me to revive my profile.

    I was absolutely shocked by how many brands found Instagram reach to be the most meaningful metric for deciding your use to them as an influencer.  Many brands turned me down immediately when I told them that I didn’t use Instagram.  This was despite the fact that I explained to them that I was already an advocate for their product and had better outlets for promoting them.

    I provided metrics regarding my blog, email newsletter and Discord server audiences.  I shared the demographics of my active audience and explained why they would be interested in their products.  These are all platforms that I control with an engaged, interested audience.  These outlets can’t be downregulated by an algorithm.  I can tweak the content as needed in order to match the brand’s campaign goals.  I was surprised by how many marketers didn’t really seem to value this.  At threddies, this is very top of mind for us.  Changes to ad networks and issues with the Amazon algorithm in the past have caused us to avoid reliance on any one platform as the primary driver of engagement.

    One trick ‘social’ pony

    The focus of all these brands on Instagram/Facebook also made me much more aware of how horribly broken Social Media is.  I’ve never had (or wanted) a Facebook account.  Meta seems to have created a convoluted mess trying to integrate their products.  Due to this, I was required to set one up in order to create the ‘type’ of Instagram account and monitoring that many of these brands required.  I did this expecting that it would make ‘reporting’ my progress back to the brands easier, but it really did not.  During this time, my Facebook account, which was never used, was suspended at least 3 times!  It seems like there are big opportunities for cleaning much of this stuff up for the next big Social platform.

    Management

    Shopify Collabs seems to be mostly tailored to general link sharing resulting in cash payouts and/or merchandise ‘gifts’.  The other platforms provide many other options.  Some have very specific campaigns with start and end dates.  These often have very specific metrics for evaluating ‘completion’.  “X number of Instagram reels/main feed posts in Y timeframe”  All of these platforms have some measure of integration with your social media accounts, but many of them still require the ‘Influencer’ to report when they feel that they’ve met these milestones.  This is an additional layer of work that did not interest me.  I can’t imagine most people who aren’t working with a team have the time for this.  Why can’t this just be determined via the tight integrations with the social media platforms where the required work is to be done?

    Most of the platforms that provide these campaign level management capabilities also provide extensive features for providing and tweaking assets that you can use in your posts/material.  This can definitely be helpful when the ‘Influencer’ has a minimum number of required posts without having a team dedicated to generating their content.

    Influencing Ain’t Easy

    Influencers get a bad rap… The amount of hate thrown my way after I started ‘influencing’ from people who were ‘friends’ was surprising to me.  I tried to make my ‘influencer’ posts as obvious as possible in order for people to ignore them if they wanted.  I went so far as to often use #ad and/or mark them as ‘branded partnership’ posts.  Maybe I should have explained what I was doing ahead of time?

    Being an Influencer is definitely work though.  The more involved brands had a very high bar to live up to.  I’ve never spent so much time, planning out posts and shooting/reshooting to make things just perfect.  My experiment forced me to learn much more about the intricacies of creating Instagram content.  It required me to dig in deep on creating photos and videos outside of the social platforms and then bringing in the final product… honestly, I prefer writing blog posts and emails.

    Without a doubt, I lost longtime followers who didn’t know what I was doing and thought I just became a paid shill.  The reality is that I never promoted anything that I didn’t already use and love.  This wasn’t all that different than what I had done before, except now I provided a discount code/affiliate link.

    Conclusion

    Overall, this new (to me) approach to social media resulted in me growing my followers.  I spent much more time thinking about my content rather than ‘shooting from the hip’.  I liked rethinking things in order to fit them into the parameters provided by the brands I was working with.  Many of these new followers are more engaged than those I’ve had before.  Getting discounts and first dibs on products that I already use is definitely a perk.  I’ll likely continue my ‘influencing’ albeit on a more small scale, unless there’s a team out there willing to work with me 😁

    This was definitely a valuable (and fun) diversion for me to take.  I have a much better understanding of the pros and pitfalls of Influencer Marketing and the major platform players involved.  I’ll be incorporating this into Threddies’ efforts moving forward.  I can also see many avenues for making Shopify Collabs better.  Shopify, if you’re listening, I’m a long time fan.  If you want to discuss Collabs with someone who has both experience from the brand and influencer side, reach out and let’s talk!  Interested in supporting my ‘influencer’ experiment?  You can check out the brands that I’m working with or just connect with me and let me know your thoughts.

  • Updating Custom Shopify 2.0 Themes

    Most of my Shopify using clients tend to use an existing Shopify theme rather than create an entirely new theme for themselves from scratch. This is a great way to get a store up and running fast. Some use the freely provided themes from Shopify, while others pay to use a special theme created by another Shopify Partner. In either case, if the theme works for the client 100%… things are great! Their Shopify store will automatically update whenever a new version of the theme is available. This however, is rarely the case. There is almost never an instance where even the best theme provides the ability to do exactly what the customer wants to do. This leads to them paying me to customize their theme in order to meet their needs. This is where the problem begins. Once you customize a Shopify theme, you can no longer take advantage of the ability to auto update when a new upstream version of the theme is released. This means, the Shopify store will no longer get security and performance updates, or potentially, the ability to leverage new Shopify features as they are released. After many years of dealing with this issue, I’ve developed a pretty effective way of managing this issue for themes based on Shopify Online Store 1.0 based themes, but in this post, I will cover how to do the same thing with an Online Store 2.0 based theme like Dawn.

    Knowing when changes occur

    The first step in dealing with this problem is identifying when changes occur upstream in the theme that you’ve customized. With Dawn, Shopify now develops the theme in the open and even provides changelogs. I fork the repository on github and watch for release tag events to alert me that the theme has changed and it’s time to update my client’s themes that are based on Dawn.

    Customize the Theme

    Before making any changes to a live theme it’s always a good idea to make a backup in case you want to revert your changes. Shopify provides the means to create a backup by going to Online Store -> Themes and in the Live theme section, select Actions -> Duplicate… this will create a copy of the live theme in your Theme Library.

    Although you can use the Shopify UI exclusively to customize a theme, this doesn’t really make it easy for multiple developers to work on the same theme or to keep your theme changes in source control. Shopify provides a command line tool, called Theme Kit, that makes both of these things easier. Install Theme Kit before moving onto the next steps.

    Theme Kit

    Before starting any work with Theme Kit, you’ll want to make sure that you’re using the latest version. After installing Theme Kit, you can do this by running:

    theme update

    In order to make sure that you’re running the right Theme Kit commands on the right themes, you need to be able to easily identify your live theme and the other themes in your theme library. This is done using config files. You can always get the theme ids that you use in your config files by running:

    theme get --list

    Now you need to get a copy of your live theme and the latest version of the upstream theme that your live theme is based on to your local workspace. Identify the theme ids for your live theme from the output of the get list command and then use the next command to pull down a local copy of it.

    theme get --themeid=[your-theme-id]

    If this isn’t the first time that you’re pulling this theme locally, you can just download the latest using the following command (assuming your config.yml has already been setup and is correct… double check using the output of get –list).

    theme download

    I will often delete everything in the directory except for the config.yml before executing the Theme Kit download command. This is useful because download won’t delete any files that are no longer a part of the theme, so you can end up having extraneous files in the directory that serve no purpose if you don’t do this.

    At this point, you should have two directories locally. One that represents the current state of your live theme and one that represents the current state of the upstream theme that your live theme is based on.

    Merge in upstream changes

    Now it’s time to pull in the upstream changes that have been made to the theme that is the basis for your live theme. If your local fork doesn’t already have the upstream project defined, you’ll need to do that first. If you’re tracking Dawn, it would be like this:

    git remote add upstream https://github.com/Shopify/dawn.git

    Now, you’ll need to get the latest changes:

    git fetch upstream
    git pull upstream main

    You can now merge in all of the upstream changes into your theme. You could use a three way merge tool to merge all changes into your live site directory, but the beauty of everything using git now is that you can use it to manage the process entirely. Identify the git tag that has the tested changes in it that you want to use. The reason for doing this is to ensure that you don’t get any developmental/experimental changes in your live theme. Let’s assume in the following examples, that we want to grab the 2.4.0 release of the Dawn theme. From the git directory that tracks your live theme, execute the following command:

    git fetch upstream
    get merge v2.4.0

    Note that this requires that you have your upstream repository set to your fork of the Dawn theme.

    Now, you’ll need to use your configured merge tool to actually bring the new changes into your live theme.

    NOTE: whenever I customize a theme I include a comment to make it clear what I’m changing from the base theme and why. This really helps to jog my memory when doing this merge to decide how the merge should occur and/or if the customization is even still necessary.

    After merging all files that have changed, it’s time to push your updated site and make it live!

    Push the changes live

    First, store all of your live site changes in source control with a nice message that reflects that all of these changes were related to updating to the newer version of the upstream theme that your work is based on.

    Now you can publish your live site and test to make sure everything is working correctly. Use the following command from your live site directory:

    theme deploy --allow-live

    If after testing your site, everything is working great, congrats… you’ve just updated your theme successfully with upstream changes from your theme author. If something went wrong, you can always revert to the backup you made before starting this process and investigate what went wrong.

    Cleaning up

    In Shopify, update the name of the live theme to reflect the version of the base theme that you are now upgraded to. This will allow you to know when to trigger this whole process again. At this point you can also delete any old backups in your theme library that you will have no need of ever reverting to.

    Hopefully you found this technique useful. If so, reach out to me in the comments or on social and let me know!

  • How To Be a Great E-Commerce Business (Customer)

    If there’s one thing that 2020 has taught me, it’s that most people are terrible small business customers. Sure, people like to claim that they are small business supporters, until you actually look at their behavior as consumers. These behaviors make them very far away from being the ideal small business customer. It’s likely a culmination of many things… many people are experiencing financial hardship and looking for ways to save money. Many of my biggest complaints stem from the support given to the “Amazon-ification” of e-commerce.

    I feel strongly about this mostly because I’ve thought long about where things are going (both from a customer standpoint and from the small e-commerce business side). I’ve taken insights from what I’ve seen first hand at Threddies over the years. I’ve also distilled conversations from many people about their purchasing habits. When talking to folks, I almost never find people who 100% disagree with my view of where things are headed. Even so, I find very few people who will alter their behavior in order to prevent it from happening. Personally, I completely boycott the practices and companies that I feel are contributing to an e-commerce future that I don’t want to see become a reality. This post is my attempt to offer some suggestions that people can pick and choose from in order to make the e-commerce environment better for both consumers and small businesses.

    Dystopian Vision

    So what exactly do I see as being so horrible occurring in the future? It’s what I call an e-commerce monoculture… It’s exactly like what has occurred in this country with factory farms, or with non-heirloom fruits and vegetables… A handful of large companies are the only place for the masses to purchase a limited range of goods. These companies have zero regard for how their behavior negatively impacts the planet, the consumers and other businesses.

    Massive e-commerce giants continue to erode main streets and malls in the same way that Walmart started to decades ago. They become your one stop shop, for everything. It becomes impossible to find a merchant that specializes in any one product type. Because of this, product innovation and variety languish. Since they have a complete monopoly on where goods are purchased, eventually, they begin to take away the consumer facing benefits that allowed them to become the dominant monopolies that they are. At this point, there is very little competition allowing you to change your behaviors, because they have destroyed every small e-commerce company. Sounds like an impossible nightmare, right? I don’t feel that way, here’s why…

    Where are we now?

    This vision is something that you can already see happening. A handful of companies already dominate the spaces where consumers go to start their search for product goods. This creates a necessity for any business who wants to show up in those searches to “pay to play” in these walled gardens. This can be in the form of buying ads, or participating in marketplaces that force the seller to pay for every product sold, stored or managed by the platform – often in addition to a monthly fee.

    When participating in these market places, every seller must abide by the established “rules” regarding returns, fulfillment and product photography, which are ever changing, very beneficial to the buyer, and often times very harmful to the seller. These rules in many cases are enforced by Artificial Intelligence (AI) that judge things without any grey area. Legitimate businesses are strong armed into accepting these requirements in order to benefit from the fact that consumers have been conditioned to begin their search in these marketplaces. This adds up to a hostile environment that completely destroys what might already be razor thin margins. Slowly, this forces what were once great businesses to close down shop. Mostly because they can no longer compete, while still innovating to create new products.

    These behemoths have built platforms (based on years of bleeding money) that are nirvana for consumers. Want widget xyz delivered in 2 days across country for nothing? No problem. Do you want the ability to order 4 different sizes of shoes and return the 3 that don’t fit so you can try them on at home with no questions asked? Not an issue. Because of the fact that these platforms have now become the “top of the funnel” for acquiring new customers, it has created a new form of competition where companies no longer compete on the merits of their product, but instead compete by exploiting the flaws in these large product marketplaces. I’ll discuss a few of the major issues we’ve seen accelerate over the years.

    Your Product is the Same as Mine

    These walled gardens become a breeding ground for intellectual property theft and knock off products. Mostly because no one (and no AI) verifies any claims made in the product descriptions. Unscrupulous actors make false claims, copy the claims of popular products and even go so far as to hijack listings of brands in order to sell a knock off product that appears to be coming from the legitimate brand. These practices lead to consumer confusion about what they are actually buying. They result in product complaints, returns and bad reviews for a product that is not authentic and was never even sold by the brand that the customer thought that they purchased from.

    All of this creates an environment that forces companies to participate in a race to the bottom to compete on price, since they cannot easily present, or defend to a consumer, their unique product offering which might provide a differentiator from the copy cats.

    Threddies, which is registered as a brand that does not allow reselling on these platforms, regularly encounters companies that claim to be selling our products. Some of these are drop shippers, who basically just redirect any sales right to us (after adding on their margin, and so presenting a higher price than what we offer for the same product), but the majority are knockoff products, offered at a steep discount. More recently, we’ve seen many “preferred partners” of these marketplaces who are able to hijack our listings. To the average consumer, it looks like they are buying from Threddies, but they end up purchasing from a third party.

    In all of these cases, the buyer is not sold an authentic product (often it’s not even remotely close). The listing hijacker than disappears, leaving no evidence that it ever existed and claimed to sell our product. A week later, our long time product listing gets a negative review based on a product that we never sold. There are ways to prevent the listing hijacking, but it requires a near full time policing of these marketplaces and submitting the offenders as they pop up. This listing policing seems like an area that could very easily be replaced by an AI rather than forcing the merchant to dedicate team members to doing this.

    Watch me Get this Product for Free

    Another practice that we’ve seen a major uptick in over the last 6 months is the exploitation of the consumer-centric bias of the preferred payment methods in these marketplaces. Things like PayPal and AmazonPay allow the consumer to be completely refunded for their purchase for just about any reason. Often, the consumer is refunded without even allowing the seller to provide any feedback. In addition to losing the purchase price of the goods and shipping costs, the merchant is also forced to pay an often hefty “chargeback” fee when this occurs. The grace period to initiate these chargebacks is extremely long, and this often occurs months after the original purchase was made.

    This has become one of the most concerning things for us recently. So much so that we’ve stopped accepting PayPal and AmazonPay in any place that it is not required. The trend that we are seeing is that buyers just use the chargeback feature without ever attempting to contact us about resolving any issues. We’ve watched unscrupulous buyers of our products claim to these payment processors our products were lost/damaged/etc. Meanwhile, they continue reselling these same products after being completely refunded the purchase cost. Even though this could be proven, we have zero recourse to dispute the original chargeback.

    I Want to Prevent you from selling a competing product

    Due to how difficult it is to begin to compete in these marketplaces against an established product that is well policed by the brand owner, companies resort to exploiting the ‘auto pilot’ nature of the AI systems in place. One way that we’ve seen this done is as follows:

    A company waits until a week or so before a large traffic driving event (e.g. Amazon Prime Day) is supposed to occur. They then blanket submit a Design Patent claim or something similar against all of the top selling products in the category. This is done despite the fact that no consumer would ever confuse the top selling products with the one that has the design patent. Amazon then delists all of the products that are claimed to be infringing, while they complete their investigation. The brands with the newly delisted products then are forced to spend weeks or sometimes even months to attempt to get their products reinstated.

    In our experience, combating this is an absolute nightmare. Getting the marketplace company to reverse the delisting without a court ruling stating that the product does not infringe on the patent is extremely difficult. In the meantime, the company initiating the complaint gets months of competition-free sales on the platform and you lose all of the benefits (SEO, listing rank, etc.) that you spent years building.

    What can be done to stop this?

    So, what can we do to prevent this vision from becoming a reality? We need to strengthen our small businesses and we need to educate consumers. Convincing everyone to avoid Amazon is going to be impossible, but if we all do our part, we can at least stop some of the bleeding and make people who don’t want to see this become a reality think twice about where they’re purchasing their products. As small businesses, we can be smarter about how we participate in these marketplaces and avoid trading short term monetary gains for the long term sustainability of our business.

    As a Small e-commerce business…

    Make it clear that we are NOT Amazon.  We do not have 1000’s (or even hundreds) of underpaid employees working 24/7 to fulfill your orders.  We do not have the luxury of avoiding paying taxes, price gouging our customers or exploiting our suppliers (nor do we want to).  We don’t have the resources to build out our own fulfillment network or bend the existing ones to our will. So how can we compete against these marketplaces that have so many advantages that we can never experience?

    If you run a small e-commerce business, here are some things you might want to consider in order to make your business sustainable without relying on the whims of the monoculture. All of these are things that we’ve implemented at Threddies. Many of them created short term pain, but ultimately resulted in gains in the long term.

    Drop out of ‘Pay to Play’

    In many cases, we’ve completely removed ourselves from, or severely cut back on, what we sell in these walled off market places. We no longer put our best selling or most innovative products here, this makes it take longer for someone to eventually knockoff the product and eliminates the capability for anyone to hijack our listing. This forces us to invest in building the necessary infrastructure to make our website the top of our funnel. This isn’t easy, but guess what? We completely control this! We’re not at the mercy of some algorithm and we have the freedom to contact our customers and build a better relationship with them.

    Raise Prices

    What? Raise prices? We didn’t do this across the board, but in the marketplaces that we still participate, we’ve raised our prices to reflect the true cost of playing the game. This has the added benefit of making our website the place to get our products at the best price. Most of the time, the prices are significantly better if you order directly from us. We still get sales from the marketplaces, but some consumers opt to go directly to our website instead. We do get occasional complaints from people who realize the discrepancy in prices between our website and the marketplaces, but this gives us on opportunity to educate the customer on ‘why’ the prices are different.

    Work with other businesses

    Another thing that we use to our advantage is partnerships with other businesses. Both smaller, local ones to create a combined offering that is better than any of us can offer independently, and larger corporations that share our beliefs that this nightmare e-commerce situation cannot continue. One such larger business that we are fans of is Shopify. Shopify is working on building out tools that your business can leverage for fulfillment and discovery (we’ll discuss this more later). If you currently run a small e-commerce business and you’re not already aware of Shopify’s offerings, you should check them out.

    Work with your customers

    It always surprises me when I talk to business owners who don’t attempt to work with their existing customers. Again, this isn’t easy… people are busy and can be complicated, but it’s in your best interest to figure out how to create a relationship to leverage your customers so you can fully understand what your differentiator is compared to your competitors. Communicate your vision for why you’re doing what you’re doing, but be careful about trying to be everything to everyone. Move forward with feedback that is in alignment with your vision and aggressively prune anything that detracts from your ability to focus on where you want to go.

    Don’t be Shady

    Finally, a big pet peeve of mine are e-commerce businesses that are totally shady when it comes to being transparent to their customers. Don’t try to pass off your product as something it’s not… be as descriptive as possible. Be honest about your shipping/processing times and available stock. If you’re drop shipping a product from China that is going to take a month to get to Alabama, don’t lead your customer into thinking it will arrive in a week’s time. Use best practices for handling payment information. Provide the best customer support that you can, given your team makeup. Don’t give the rest of us a bad name by being a garbage e-commerce provider.

    As an e-commerce consumer…

    Not every business is going to leave the marketplaces. It’s unfortunate, but the lure of making a lot of money at any cost, without thinking about the future or the detriment to the planet and our communities, is still the driving force of many businesses. Due to this, it’s important to encourage consumers who want the best products, more variety and better prices how best to go about getting this.

    Avoid the monoculture

    I personally have avoided purchasing anything from the dreaded market places for years. People often don’t believe me. Doesn’t it take you forever to find what you want to buy? Don’t you end up paying a fortune in shipping? Honestly, towards the end of using them, I never found the marketplaces easing my anxiety around finding a product… what’s the difference between these 10 items that seem like exactly the same to me other than price? Getting burned repeatedly by knock off and poor quality products also didn’t help and made it easier to just avoid the convenience and go directly to the source.

    You can do something as simple as finding a product on a marketplace and then manually trying to track down the website of the vendor selling it, but it’s become much easier to find exactly what your looking for using search engines and their built in capabilities for refining your search. If you want to avoid polluting your product search results with the thousands of amazon sellers that will inevitably show up for any product search, you can do something as simple as adding:

    "<product your searching for>" -site:amazon.com

    to the end of your product search. BOOM, no more amazon product listings. One disadvantage of this approach is that if you find a third party e-commerce site that you’ve never used before, you may question the safety of purchasing from them. Without a doubt, avoid any e-commerce site that does not use https. Most modern browsers will warn you if this isn’t setup correctly. Look for a payment flow that is recognizable. This was the beauty of things like AmazonPay/PayPal for awhile, but I feel you’ll see more and more e-commerce sites dropping these in the future due to the way they’re being exploited by consumers. Google and Apple Pay are good alternatives for this, but buying from stores that I know are using Shopify has become one of my new preferred ways of shopping.

    Find sellers using Shopify

    So how can an average consumer find sites using Shopify? For a long time I used a simple search engine that indexes Shopify stores. You can search for the product that you’re looking for and see all the Shopify stores that sell that product type (ordered by Alexa traffic rank). It also provides quick links to the best selling products for each of these stores.

    Although I was skeptical of the app at first, Shopify has recently taken their Shop app in a great direction. The app now allows you to search for Shopify merchants that are local to you, so you can find the product you want sold by an e-commerce company that is based in your hometown. Shop will keep track of the stores you frequent often and notify you about their newest additions. The Shop app also allows you to carbon offset your purchase when you pay using Shopify’s payment gateway.

    Be a model e-commerce customer

    This is probably a controversial position to take, but based on my experience running e-commerce businesses, one of the biggest things that a consumer can do to improve their experience is to become a “better” customer. What exactly does this mean? Unlearn the bad behaviors that Amazon has taught you… don’t place an order without fully understanding the implications of your actions. Make sure you read the product descriptions and the e-commerce site’s policies. If you don’t understand what you’re ordering, please send an email to ask for clarification. If you need the product tomorrow, then don’t order from a website that may require a 1 – 2 business day processing time. Understand the logistics of shipping products from one side of the country to another, and be aware when natural disasters and global pandemics impact the companies that are providing fulfillment services. Unfortunately, small e-commerce businesses cannot control these things.

    Before Placing Your Order

    Before placing your order, make sure your order is accurate. Did you accidentally choose “blue” instead of “orange?” Did you mistype your phone number, email or physical address? Unfortunately, we cannot read your mind and our businesses rely on this information being correct in order to provide the best experience for you. Should we be responsible for making things right (at our expense) when customers do these things? Since Amazon does it, many customers expect the rest of us to do so as well. Unfortunately, this is not a sustainable business practice.

    After Placing Your Order

    After you’ve placed your order, there are even more things that you can do to be a great customer. If you get your product and you love it, or you loved the experience you had with a company, leave a good review. Many customers choose to support us or not based on reviews and unfortunately, people are way more likely to leave bad reviews rather than good reviews. This often skews potential customers expectations to the point where they’ll just go back to a marketplace where they know they can just return anything for any reason or get their money back via a chargeback.

    This may sound like I’m saying all e-commerce transactions with small businesses are perfect and returns should never occur, but we make mistakes too. When we do, give us an opportunity to make it right before blasting us in front of the world. Contact our support but please be as clear as possible when doing so. What was your order number or some other identifying information that we can use to track down the specifics of your order? What was the issue that you encountered and what are your expectations to make it right? Think long and hard about what things are really under our control and what isn’t and be understanding when we apologize for not being able to meet the level of service you’ve come to expect from Amazon.

    Even if you don’t place an order

    Finally, maybe you thought about purchasing something from us, but decided against it. Drop us a line explaining why. Maybe it’s something we can fix, and we’re not even aware that it’s driving people away. At a bare minimum, it gives us an opportunity to explain why things are the way that they are. Think of this as a form of voting. E-commerce companies that love their customers LOVE to hear from them and you could be the driving force behind an effort to change things in a way that is beneficial to you and other customers like you.

    Maybe you signed up for our mailing list, but decided you’re not interested in our mails. Please don’t report our mails as spam! We rely on our emails getting through in order to communicate with our customers. If you don’t want our content any more, every email should include an “unsubscribe” link. Use this, you’ll be removed from our list and never hear from us again. If this link isn’t there, or it doesn’t appear to be working, let us know first and then if we don’t fix things for you, report away!

    Make E-Commerce Great

    Hopefully this was helpful. If you have any comments or questions, I’m more than happy to discuss further. Please don’t send me hate mail if you disagree with my philosophy of a more conscious form of capitalism. I understand that not everyone cares about that, and I’m not here to change your mind – I’m just putting my thoughts out there on how people who do care about preventing an e-commerce monoculture can make a real difference. Thanks for reading!

  • Updating Customized Shopify Themes

    Note: this article specifically deals with updating Shopify themes that predate the Shopify Online Store 2.0 themes. I have amended this post with the process that I use based on Shopify Dawn here.

    Most of my Shopify using clients tend to use an existing Shopify theme rather than create an entirely new theme for themselves from scratch. This is a great way to get a store up and running fast. Some use the freely provided themes from Shopify, while others pay to use a special theme created by another Shopify Partner. In either case, if the theme works for the client 100%… things are great! Their Shopify store will automatically update whenever a new version of the theme is available. This however, is rarely the case. There is almost never an instance where even the best theme provides the ability to do exactly what the customer wants to do. This leads to them paying me to customize their theme in order to meet their needs. This is where the problem begins. Once you customize a Shopify theme, you can no longer take advantage of the ability to auto update when a new upstream version of the theme is released. This means, the Shopify store will no longer get security and performance updates, or potentially, the ability to leverage new Shopify features as they are released. After many years of dealing with this issue, I’ve developed a pretty effective way of managing this issue which I’m going to describe in this post.

    Knowing when changes occur

    The first step in dealing with this problem is identifying when changes occur upstream in the theme that you’ve customized. Shopify provides a means to do this easily enough (although it would be great if they published updates with changelogs for their own themes). The first thing that I do when customizing a theme for a customer is to create a ‘change tracking’ theme in the online store’s theme library. This is basically a copy of the theme that the live theme is based off of that will never be customized. This is important to guarantee that this theme in the theme library will always be updated when new upstream versions are released. I also create a copy of this theme in my client source control where I also keep the custom changes that I make to the theme for the client. More on why this is important later.

    I then take the version of the theme and rename the live theme to include the version number that it is based off of. You can get the theme version number by clicking ‘customize’ on the theme and then clicking the ‘Theme settings’ tab. Scroll to the bottom of the page to see the theme version. Check back on a regular basis and when you see that version number differ from what’s in the name of your live theme, you know that upstream changes have occurred.

    Customize the Theme

    Before making any changes to a live theme it’s always a good idea to make a backup in case you want to revert your changes. Shopify provides the means to create a backup by going to Online Store -> Themes and in the Live theme section, select Actions -> Duplicate… this will create a copy of the live theme in your Theme Library.

    Although you can use the Shopify UI exclusively to customize a theme, this doesn’t really make it easy for multiple developers to work on the same theme or to keep your theme changes in source control. Shopify provides a command line tool, called Theme Kit, that makes both of these things easier. Install Theme Kit before moving onto the next steps.

    Theme Kit

    Before starting any work with Theme Kit, you’ll want to make sure that you’re using the latest version. After installing Theme Kit, you can do this by running:

    theme update

    In order to make sure that you’re running the right Theme Kit commands on the right themes, you need to be able to easily identify your live theme and the other themes in your theme library. This is done using config files. You can always get the theme ids that you use in your config files by running:

    theme get --list

    Now you need to get a copy of your live theme and the latest version of the upstream theme that your live theme is based on to your local workspace. Identify the theme ids for both of these from the output of the get list command and then use the next command to pull down a local copy of each.

    theme get --themeid=[your-theme-id]

    If this isn’t the first time that you’re pulling these themes locally, you can just download the latest using the following command (assuming your config.yml has already been setup and is correct… double check using the output of get –list).

    theme download

    I will often delete everything in the directory except for the config.yml before executing the Theme Kit download command. This is useful because download won’t delete any files that are no longer a part of the theme, so you can end up having extraneous files in the directory that serves no purpose if you don’t do this.

    At this point, you should have three directories locally. One that represents the current state of your live theme, one that represents the current state of the upstream theme that your live theme is based on, and that directory that we said we would discuss later that represents the state of the uncustomized theme that is the same version that your live theme is currently using.

    Merge in upstream changes

    Now it’s time to pull in the upstream changes that have been made to the theme that is the basis for your live theme. You can use a three way merge tool to merge all changes into your live site directory. If you don’t already have a preferred three way merge tool, Meld is a good open source and free option. Having a three way merge is important in order to save time merging files like settings_data.json (which always gets reordered by shopify edits) and to see what’s changed between versions of the theme that your live theme is based on.

    NOTE: whenever I customize a theme I include a comment to make it clear what I’m changing from the base theme and why. This really helps to jog my memory when doing this merge to decide how the merge should occur and/or if the customization is even still necessary.

    After merging all files that have changed across all the themes, it’s time to push your updated site and make it live!

    Push the changes live

    First, store all of your live site changes in source control with a nice message that reflects that all of these changes were related to updating to the newer version of the upstream theme that your work is based on.

    Now you can publish your live site and test to make sure everything is working correctly. Use the following command from your live site directory:

    theme deploy --allow-live

    If after testing your site, everything is working great, congrats… you’ve just updated your theme successfully with upstream changes from your theme author. If something went wrong, you can always revert to the backup you made before starting this process and investigate what went wrong.

    Cleaning up

    Finally, it’s time to get everything in place to make it easier for the next time you need to do this. Replace everything in the directory that represents the uncustomized theme that your current live theme is based on with the contents of the latest version of the uncustomized theme directory. Don’t copy the config.yml. After doing this, this should be the only file left in the directory that represents the latest version of the uncustomized theme.

    In Shopify, update the name of the live theme to reflect the version of the base theme that you are now upgraded to. This will allow you to know when to trigger this whole process again. At this point you can also delete any old backups in your theme library that you will have no need of ever reverting to.

    Hopefully you found this technique useful. If so, reach out to me in the comments or on social and let me know!

  • Google Shopping Actions with Shopify

    Google Shopping Actions with Shopify

    At Google Marketing Live on May 14th, Google announced a radical revamp of their Google Express shopping service. Even before this announcement, I was working with Google to get Threddies approved and setup using Google Shopping Actions. Google Shopping Actions (GSA) is a mechanism for exposing your products for purchase to the Google Assistant via Google Merchant Center. I had some very specific needs in doing this that required some additional work beyond the basic setup. In this article, I’ll walk through what I did and my reasons for doing so.

    Hey Google, Buy some Threddies Scrunchies

    Threddies has used Google Shopping Ads to promote many of our products across Google’s ecosystem since we started selling online. We currently use the Google Shopping Marketing campaign capability that is built into Shopify to do this. This setup exposes a product feed to Google Merchant Center using Google’s Content API. This allows us to keep our advertised products data (price, image, description, shipping, etc.) in sync with our website. The Content API is great! It gives prospective customers the best experience by providing up to date information. This eliminates any surprises when they ultimately click through to our website to make a purchase. A simple way to setup GSA would be to just expose this feed directly and call it a day.

    Unfortunately, doing this isn’t what I would consider the best case scenario for a few reasons:

    • What if I want to sell products that I don’t advertise or only a subset of those that I do?
    • What if the new Google Shopping imposes constraints on data that Google Shopping Ads does not? (spoiler: it does, and I don’t like the idea of modifying my website content in order to meet these restrictions)
    • Ideally, I’d like to keep promoting our website products completely separated from selling the products on our new ‘Google channel’.

    In addition, selling on Google’s platform was going to be more costly than selling directly to our customers via our website. Google charges a ‘commission’ for each product sold. Google Shopping also prefers a straight forward shipping policy to make its ‘universal cart’ more appealing to consumers. Participating in the new Google Shopping also requires us to support a more liberal return policy than we currently allow. Based on this, the ‘feed’ used to drive GSA would need to allow us to provide a different pricing model. One that directly matched our website would not work.

    Feeding the Beast

    Google Merchant Center does support ‘supplementing’ feeds and I initially planned to implement GSA using a supplemental feed. Ultimately, I decided to setup a completely separate feed for GSA. I did this mainly out of my desire to have no impact or dependency on the Content API feed used for Ads.

    I setup a brand new GSA specific feed using Google Sheets. In this feed, I added all of the products that I initially wanted to sell in the new Google Shopping experience. My initial product list pretty closely matches the products that we are selling via Amazon. We did this in order to provide an alternative to dropshippers of our products who were already on Google Express. This is a problem that we are familiar with from our other sales channels. People dropshipping our products from Amazon tend to provide a less than ideal customer experience for many reasons. We try to discourage this practice wherever possible.

    Taming the Beast

    The first attempt at getting this to work was a mess. Initially I had multiple versions of the same products showing up (at different price points) in both Google Shopping and Ads. This would cause us to pay to advertise products that would be sold via Google Shopping (not desirable!). It also surfaced products that I was advertising from my website in my Google Shopping store (at a deep discount because they were using the website pricing!). I fixed both issues by creating a supplemental feed for Google Ads. In this feed, I use the ‘excluded_destination’ attribute to prevent products from ever showing up in Google Shopping.

    Things were starting to look better, but I noticed an issue with products that were in both the Google Shopping Actions and the Google Ads feed. Both Google Shopping and Ads would prefer the data that was in the Google Shopping Actions feed. This resulted in some of my highest converting products being advertised with the Google Shopping data. These ads also brought users to my Google Shopping store rather than my website. I made two tweaks to my Google Shopping Actions feed to correct this. First, I created distinct ‘ids’ for every product in the feed to prevent overlap with the ids that were provided via the Content API feed. Second, I used the ‘included_destination’ attribute to specify that the products in this feed should only be surfaced in Google Shopping Actions.

    Getting things in Ship(ping) Shape

    One final note if you’re using a similar setup (Shopify with the Google Campaign Marketing app). I noticed that my Google Shopping Shipping policies (setup in Google Merchant Center) appeared to get blown away every few hours

    This was maddening and it took me a bit to figure out what was going on. It turns out that Shopify’s Google Shopping marketing integration was doing it! This was easy to fix after I understood what was happening. You need to navigate in your Shopify admin to Apps > Google Shopping > Merchant Center Account and in the Shipping settings section select to manually manage them in the Import method drop down. To be extra safe, modify the ones that are imported from Shopify to never be used by Google Shopping Actions in Google Merchant Center first and then create new Google Shopping Actions only shipping policies after saving your import method settings in Shopify.

    Unless you want to be an early adopter, I would recommend waiting a bit… a better Shopify Integration is coming. If you have been accepted into the Google Shopping Actions program and have a similar setup, hopefully this helps! Try it out and let me know what you think! If you want to use the Google Assistant to buy your next hair accessories: “Hey Google, I’d like to buy some Threddies Scrunchies.” or check out all of our products in Google Express.