Shopify Build a Business

Hack The Shopify Build-a-Business Competition

How to get a leg up on the competition and increase your odds of winning.

Every year Shopify has a competition where the top selling new stores win valuable time with some big name mentors. This year’s contest is the biggest yet: 5 winners will be flown by private jet to Richard Branson’s private retreat, Necker Island, to be mentored by Richard Branson, Seth Godin, Tim Ferriss, Daymond John, and Marie Forleo.

If you are thinking of entering the contest here are some “hacks” to help get a leg up on the competition and increase your odds of winning.

Concentrate your Sales into your Top Two Months

The Shopify Build-a-Business competition takes your top 2 months of sales to determine the winner.  If you can manipulate your sales in such as way to concentrate them into a 2 month window you significantly increase your odds of winning. With the build-a-business contest, it doesn’t matter how many bad months you have as long as you have at least two dynamite months.

You need to be very strategic when picking the two months you want to put your focus on. Pick the two months where you expect your natural organic sales volume to be peaking.

Pre-Orders

In 2011 Coffee Joulies released an innovative and unique product that sold out almost immediately.  As they were waiting for new stock to arrive they continued to take “pre-orders”. Once their product came back in stock, all those accumulated pre-orders were triggered into a single month giving them a huge single month sales volume, much higher than any other competing store, and sealing their win.

If you have a product that is unique and in demand, you can “fake” an out of stock situation, collect all the unfulfilled demand, and then bring the item back into stock at a strategic time and trigger all those sales in a single month.

Use Promotions

Let’s say that you pick December to be one of your key months. You will want to offer a promotion in November that will encourage customers to delay their purchases to December 1st, and then another promotion at the end of December to encourage customers to make a purchase before the end of the month.

Delay Purchases to the Following Month

Advertise a sale starting on the 1st of the next month — During the last few days of November start advertising that “Starting Dec 1st – All items on sale for 1 day only!”.

Encourage Purchases Before End of Month

An example of a promotion encouraging customers to buy before the end of the month would be something along the lines of a “Free Shipping until the end of the month”.

Target Special Dates

If there are any special dates in your target month such as Mother’s Day, Father’s Day, Black Friday, Boxing Day, etc… Make sure to have strong promotions running around those dates to further boost your sales for the month.

Seasonal products

The Build a Business competition usually runs from September to March. If you are selling a summer seasonal product such as Gas Grills or BBQs, then you are probably out of luck. You will be hitting your sales peaks long after the contest is over (and before the next one begins).

On the other hand if you are selling a Winter seasonal product then you are in good shape as your sales will be peaking at the right time. In 2013 CanadianIcons.ca won the 3rd annual competition due in big part to the nature of one of their products: The Canada Goose Arctic Parka (known as “The warmest jacket on earth”). While most merchants hit their peak with the Christmas rush, Canadian Icons continued to peak through January and February due to a cold Canadian winter. Those strong January and February months were key in their win.

Sacrifice Profits for  Sales

Know your Profit Margins and Leverage Google AdWords

You can use Google AdWords to “buy” extra sales. if you are willing to spend your entire profit margin to get a sale, then  you should be able to outbid other advertisers and get a majority of the sales. This isn’t a great ongoing option to keep your business viable, but something to consider if you are trying to boost sales in a couple specific months.  In particular, this works well if:

  1. You are selling a brand or product that has a pre-existing high search volume/demand on Google and;
  2. Your product has high margins or high lifetime customer value and;
  3. You have unlimited stock of this item.

Sacrificing your profits for higher sales volume may not be the best strategy if you are trying to run a profitable business. However if you think it’s the difference between making it to Necker Island or not, then it might be worth it!

Optimize your Order Size

Split orders into $1000 chunks

This year’s Build-a-Business competition will only count the first $1000 of any order. If you think your average order size may be above the $1000 mark consider encouraging customers to split purchases into multiple orders. This way their entire purchase counts towards your Build-a-Business “score” instead of just the first $1000.

Google Display Network & Extended Keyword Match

Summary

  • Keyword Targeting on the Display network does not behave the same way as on  the Search network. Because of “Extended Keyword Match” your ads WILL display on pages that DO NOT contain your keywords. In particular for low volume keywords. Even when using phrase or exact match.
  • Pausing / Un-Pausing an AdWords Campaign triggers a Reset or Recalibration which may cause the campaign to behave differently than it did before the pause.

Targeting our Brand Name:
Are we Getting what we Paid for?

We recently noticed something strange with one of our AdWords Display campaigns. The Ad Group was exclusively using Keyword targeting on a phrase matched keyword: Our Brand name. Although it was a low volume Ad Group, the goal was to display our ads on any pages with a mention of our Brand.

Is Pausing and Unpausing Campaigns Safe?

Pausing a Campaign or Ad Group feels pretty safe — after all you are not actually changing anything, just taking a little break. This was our attitude when we decided to pause our campaign for a few hours one day. However, when we unpaused a few hours later the campaign volume suddenly shot up 100x (as did our costs). Nothing had changed with how the campaign was setup. The only factor at play was the pausing and then unpausing of the campaign.

mm-keyword-display

Impressions and Ad Spend over the last 2 weeks of September. The large hump started when we paused and then un-paused our campaigns.

Extended Keyword Match?
But we’re “Phrase” Matching!

When we took a closer look at what was going on we quickly realized that our ads were showing on sites that clearly DID NOT have our Brand name mentioned. We first double checked that we had the setting “Let AdWords automatically find new customers” turned off, and it was. We then dug deeper and discovered that almost 100% of our ad impressions were triggered due to “Extended Keyword Match”.

Extended keyword match is when the placement was relevant to the keywords you chose and other factors, including pages a person seeing your ad has recently browsed.

You can see what percentage of your impressions are coming from this “Extended Keyword Match” by going to: Display > Placements > Segment > Targeting Mode

mm-keyword-segments

Almost 100% of our impressions were due to “Extended Keyword Match”

We did NOT generate any conversions from these extended keyword matches. The goal of this Campaign was to display an ad on pages that mentioned our Brand. Instead we were having ads displayed due to “other factors including pages a person seeing your ad has recently browsed” — this clearly was not aligned with our goals.

Happily, Google was in agreement and quickly issued a full credit for the extra amount spent (which may hint that this is a bug or unexplored edge case of some sort).  On a side note, the AdWords inbound customer service was wonderful, friendly, and exceptional — one of the best customer service experiences I’ve had in a long time.

Conclusion

  • Be careful when pausing / unpausing campaigns. This causes some sort of “reset” of statistics in the AdWords backend and causes the campaign start re-calibrating itself. Monitor the campaign for a few days after the unpause to ensure if is behaving as expected.
  • Avoid exclusively using keyword match types in display campaigns. In particular for keywords with very low search volume. Having a campaign targeting your Brand name does not appear to be a viable option as of this writing.
  • Monitor what percentage of impressions are coming from Extended Keyword Match. Consider excluding those placements that are delivering a relatively high volume of “Extended Keyword Match” impressions.

More Reading…

Shopify Cancelled Orders and Google Analytics

By default, when you cancel an order in Shopify, that transaction remains as positive revenue in your Google Analytics.

To “cancel” the transaction in Google Analytics you have to send a negated version of the transaction. To do this in Shopify you have to create a Webhook on Order Cancelled that hits a script (located on the same root domain as your store) that will call server side Google Analytics e-commerce code to negate the transaction.

Webhook Endpoint Dependencies

Details

Place the following code into a file that will act as your Order Cancelled Webhook endpoint (ie: www2.mydomain.com/webhooks/order-cancelled.php).

Make sure you:

  • Update the script to use your GA Account Id and Root Domain.
  • Change the path of autoload.php to point at your php-ga library

Begin Code

<?php
use UnitedPrototype\GoogleAnalytics;
require_once '../includes/autoload.php'; // Update to point at your php-ga install

$GA_AccountId = 'UA-********-1'; // Update with your GA account
$GA_domain = 'mystore.ca'; // Update with your root domain
$webhookContent = '';
// Read the webhook content
$webhook = fopen('php://input' , 'rb');
while (!feof($webhook)) {
  $webhookContent .= fread($webhook, 4096);
}
fclose($webhook);

if (!empty($webhookContent)) {
  // Convert the webhook content into an array
  $shopifyOrder = json_decode($webhookContent, true);

  // START GOOGLE ANALYTICS
  $tracker = new GoogleAnalytics\Tracker($GA_AccountId, $GA_domain);

  $visitor = new GoogleAnalytics\Visitor();
  $visitor->setIpAddress($_SERVER['REMOTE_ADDR']);
  $visitor->setUserAgent($_SERVER['HTTP_USER_AGENT']);
  $visitor->setScreenResolution('1024x768');

  $session = new GoogleAnalytics\Session();

  $page = new GoogleAnalytics\Page($_SERVER['REQUEST_URI']);
  $page->setTitle('Order Cancelled');

  $tracker->trackPageview($page, $session, $visitor);

  $transaction = new GoogleAnalytics\Transaction();
  $transaction->setOrderId($shopifyOrder['name']);
  $transaction->setAffiliation('');
  $transaction->setTotal(-$shopifyOrder['total_price']);
  $transaction->setTax(-$shopifyOrder['total_tax']);
  $transaction->setShipping(-$shopifyOrder['shipping_lines'][0]['price']);
  $transaction->setCity($shopifyOrder['billing_address']['city']);
  $transaction->setRegion($shopifyOrder['billing_address']['province']);
  $transaction->setCountry($shopifyOrder['billing_address']['country']);

  foreach ( $shopifyOrder['line_items'] as $product ) {
    $item = new GoogleAnalytics\Item();
    $item->setOrderId($shopifyOrder['name']);
    $item->setSku($product['sku']);
    $item->setName($product['title']);
    $item->setVariation('');
    $item->setPrice($product['price']);
    $item->setQuantity(-$product['quantity']);
    $item->validate();
    $transaction->addItem($item);
  }
  $transaction->validate(); 

  $tracker->trackTransaction($transaction, $session, $visitor);
  // END GOOGLE ANALYTICS
}
?>

Setup the Webhook in Shopify

In your Admin dashboard go to:

  • Settings > Notifications > Webhooks (at the bottom)
  • Create a Webhook
  • Event: Order Cancellation // Format: JSON // URL: The full url of your php file

Test

  • Google Analytics: Got to the Real Time > Content report
  • Shopify: Click “Send test notification” link beside your webhook.
  • Google Analytics: You should see a page request popup with your script name
  • Google Analytics: Wait a few hours and then (for transactions to register) and then go to Conversions > Ecommerce > Product Performance and you should see a sledge-hammer and wire-cutter products (the Shopify sample data) along with negative quantities and value.

Further Reading & Resources

The Value of View Through Conversions

If you are running a Display or Retargeting campaign you have probably been exposed to View Through Conversions (VTC): View Through Conversions are conversions where a customer saw — but did not click — a display ad on the display network before completing a conversionThere is a lot of debate on if you should count View Through Conversions or ignore them. How can you be sure they legitimately assisted in the conversion?

A/B Testing vs a Blank Ad

Display Network A/B Test

  1. Create 2 different but equal non-overlapping campaigns
    (If you use AdRoll your rep will be happy to set this up for you)
  2. Campaign A will serve your “normal” ad
    Campaign B will serve a Public Service Announcement ad (in our case it was an ad for the SPCA)
  3. Run both campaigns for a few weeks
  4. Do the math:

Valid VTC Formula

Real Life Example

Campaign A
[Default Ad]
Campaign B
[Blank Ad]
Impressions 99,467 97,412
VTCs 329 261

Valid VTCs = (329 – 261) / 329 = 20%

This means that only 1 in 5 View Throughs actually assisted with conversions — the other 80% had no effect and should be ignored. These results are specific to BOATERexam.com — your results will vary depending on your business and ad creative.

Do you Really Need a Quantity Box?

Product Quantity Dropdown ListThe other day I was browsing an e-commerce clothing store and the Quantity box suddenly seemed odd to me:  “Who would buy MORE THAN ONE of this shoe – in the EXACT SAME STYLE AND SIZE??”

I wondered how many people EVER buy more than 1 IDENTICAL piece of clothing? (We’re talking same SIZE, STYLE, COLOR, etc…).  I asked my good friends over at Gongshow Gear (makers of awesome hockey inspired clothing) if I could have a peak at their Analytics data, and here are the results:

  • On average, only 1 out of 50 people will buy more than 1 of the same item
  • For non-clothing items that come in a single size & color multiple qty purchases increase (to between 12% and 40% — but still a minority of your customers)

Do we need the Quantity field?

For products where 98% of customers buy a single item I would recommend removing the Quantity field.  If someone really wants to buy 2 of something they can just add the product to the shopping cart twice or change the quantity directly in the shopping cart.

Note: The Quantity field is useful for items where you EXPECT the customer to purchase more than 1 – make sure you dig into your analytics before making your final decision.

Most usability studies show that reducing the number of form elements usually improves usability and so conversion rates should improve by removing the quantity field.  Zappos seems to agree as they have removed the Quantity field from all their product pages.

Does it really matter?

Probably not.  The quantity field usually defaults to 1 item so you never have to touch it anyway.  I have a hard time believing that the quantity field will make a measurable difference to conversion rates for most sites.    If there is a difference, it is probably very very small.  Then again I assume that Zappos measures everything they do on their site and THEY removed the Quantity box.

If anyone decides to run an A/B test to get stats on this, I would love to hear your results.

Google Analytics Custom Events to Simplify Navigation

Below, is a screen shot of a quiz from our online ATV safety course.

ATV Quiz

The navigation is relatively simple:

  • NEXT and PREVIOUS buttons
  • Right hand menu to navigate to any question
  • FINISH QUIZ button that becomes visible once you have answered all the questions

Questions About Usability:

  • Does anyone actually use the PREVIOUS button?
  • Does anyone actually use the side menu to Navigate?

To answer these questions you can setup a series of Google Analytics Custom Events on each button/nav click.

onclick=”_gaq.push([‘_trackEvent’, ‘TDE Navigation’, ‘Next’, ‘Quiz’]);”

WARNING! Google Analytics has a data limit of 500 hits per session (this includes page views, events, and other types of data). Tracking EVERYTHING with custom events could cause you to reach those limits.

Looking at Google Analytics

Total Events

Total events will give an indication of the relative usage of each navigation element

Unique Events

Unique events will give us an idea of navigation usage PER SESSION.  This answers the question “How many users click on the navigation element at least once during a visit”.

The verdict

  • The previous button only receives 1.3% of the total navigation clicks.
  • About 1 in 6 users do click previous at some point in their quiz.

RECOMMENDATION: Previous button should be converted to a simple text link

  • The side menu (Jump) only receives 0.2% of total navigation clicks.
  • Only 3.5% of users ever used the side menu (about 1 in 30 users).

RECOMMENDATION: Remove the side navigation menu all together
(or make it a slide in/out style navigation element)

Next Steps

Consider auto-advancing to the next question when an answer choice is clicked

Not surprisingly, almost 92% of total navigation clicks go to the NEXT button and another 6.5% of total clicks are on the finish button.  So over 98% of the time the user simply wants to advance to the next logical step.

Does this mean that we should we just auto-advance to the next question when the user selects the answer choice? How often does a user change his answer choice before clicking the next button?  The answer to this last question will be saved for another post (after we collect more data)

I hope you found this post useful.  If you know of simpler methods to gain this sort of insight, please post them in the comments below.

Which Social Networks Are Your Visitors Logged Into

Back in February 2012, Tom Anthony wrote a couple of great posts on how to detect if visitors were logged into a social network and then how to use Google Analytics to track this information.

After the post, there was some discussion about how there are only 5 CustomVar slots in the standard version of Google Analytics, and how it would be nice to consolidate all the Social Media logged in statuses into a single Custom Var.

Well here is the code and steps to track them all in a single Custom Var slot

To implement this using Universal Analytics please read Mark Hoad’s post here: http://aberrant.me/cool-google-analytics-hacks-using-the-new-universal-analytics-js/

1. Read Tom Anthony’s Posts

2. Install The New JavaScript Code

Put this in your <HEAD>

Download the above code here

Then add the following to the bottom of the page, before the closing </BODY> tag:

Download the above code here

NOTE 1: Remember to replace Your-App-Id with your Facebook App Id and http://www.yourdomain.com/pixel.png with a url to an image on your website.  (This last line can probably be implemented with just an in-line JavaScript call, but I’m posting this code as-is because it “Works on My Site”)

NOTE 2: The code above is configured to log your Social Traffic login status in Custom Variable Slot 5.  Change this number if you want a different slot.

3. Setup Custom Segments

If you setup the code above properly, you should see data similar to this in your Analytics Account under the appropriate CustomVar (#5 in our case):

What you want to do is setup Custom Segments so you can isolate individual networks when the user is logged into multiple networks at the same time.  This is very similar to how it was done in the original post, but here are the screen shots for the 4 networks tracked:

Facebook

Google Plus

Gmail/Google Login

Twitter

4. View Data in Analytics

Choose your custom segments:

View your beautiful data!

          Beautiful Social Data 2

(Note: We had a bug with our Facebook tracking when we initially set this up – hence the strange zero-to-hero traffic spike with Facebook towards the end of the graph)

WordPress Plugins

There are already 2 (that I know of) WordPress plugins that implement Tom Anthony’s initial code:

  1. Adapt Partners Social Media User Detection WordPress Plugin
  2. Springest’s Social Analytics WordPress Plugin

I assume it’s just a matter of time before they update their code to be able to cram the tracking into a single CustomVar (although for those already using the old way using multiple CustomVars you will probably want to adjust your Custom Segments to include an OR clause in order to report on data from both formats).

Additional Credits…

A huge thank you to Tom Anthony for the original code that triggered this and to our dev team at Fresh Air Educators, Inc for extending and implementing this new feature!