How to get complete ReCharge data in Google Analytics [ebook]

It's hard enough for Shopify stores to get accurate sales and marketing data. And if you're selling by subscription, this can seem even more complicated. In fact, 88% of Shopify stores have Google Analytics setup incorrectly, leading to a throughput of less than 90% (for every 100 orders in Shopify, 12 or more go missing in GA). I hate to break it to you, but for subscription merchants the reality is even harsher. Many brands can't even segment out first-time purchases from recurring orders, let alone tie them back to marketing campaigns! Luckily there's now a better way. Top subscription brands use modern data stacks to get the data they need to make informed decisions. This means understanding your checkout flow, yes, but also product lists, subscription bundles, discounts, returns, subscription lifecycle behavior, and top marketing channels for higher LTV customers. In this new ebook on ReCharge analytics, we show you how to do just that -- no developer skills needed! Free ebook on ReCharge analytics best practices Subscription analytics are a beast, and too many brands make one of these three common mistakes: Procrastination. "We know we have a data problem but will fix it next quarter...year...never..."The wrong tools. "We bought a fancy new dashboard, that will solve everything, right?" or "We bought this subscription analytics tool that works really well for SaaS companies. Why isn't it working well for ecommerce?"Completely manual approach. "Excel is my full-time job. I don't have time for data-driven growth." Top brands use modern data tools to tame the beast of analytics. In this new ebook, you'll learn how to get the data you need to accelerate growth. See how to automatically capture data at every turn: Track one-off orders and first-time subscriptionsTrack recurring payments and tie them back to the original marketing channelCalculate customer lifetime value ("CLV" or "LTV") and build more valuable cohortsCapture subscription lifecycle events like "Subscription updated"Get accurate marketing attributionUltimately make better decisions for your store Download the free ebook >>> Learn more about what you can track with Littledata's ReCharge connection. [tip]Advanced users can also now send data directly to Segment (and any connected data warehouse, email marketing platform or reporting tool).[/tip]

by Ari
2021-04-15

For every 100 orders in Shopify, 12 go missing

If you’re using Shopify’s default Google Analytics tracking you might have noticed that the revenue in Google Analytics never matches what you see in the Shopify dashboard. This is a big problem: missing orders means orders that can’t be attributed to marketing campaigns, whether those channels are paid or organic. Littledata’s improved Google Analytics app for Shopify increases order throughput to Google Analytics from worse than 90% to better than 99.9% -- and it works automatically in the data layer. How big is the problem? We sampled a set of larger DTC brands on Shopify, together processing 50,000 orders a month through a standard Shopify checkout. Looking at a month of traffic, we compared the paid orders for these Shopify stores with the Thank You pages tracked in Google Analytics. Remarkably, only 88% of orders were tracked on average, ranging from 78% tracked in the worst store setup to 96% in the best store. That is a big loss. For every 10,000 orders processed, 1,200 were going missing. Assuming each of those customers cost $50 to acquire, that is $60,000 of marketing spend which can't be attributed to sales. Whatever the CAC for your ecommerce brand, you can’t afford to miss significant data like this about transactions, not to mention the marketing campaigns that led to those sales in the first place! For every 10,000 orders processed, 1,200 went missing Revenue aside, what about those 1,200 customers who are likely still being retargeted by abandoned checkout campaigns, even though they did complete the checkout process? There is a good case to be made for remarketing to your best customers for upsells, cross-sells, referrals and more. But remarketing to your new customer base as if they never made a purchase is certainly bad business. And it gets worse. When I looked at 10 stores that have non-standard checkout setups, using apps such as ReCharge or CartHook, the percentage of orders tracked (excluding recurring orders) ranged from a pathetic 9% up to a disappointing 70%. Shopify’s order tracking relies on customers seeing the Shopify Thank You page, and many other checkouts do not immediately redirect there. What are the main reasons for missing transactions in Google Analytics? Littledata has had five years of experience debugging GA tracking, so at this point we’ve pretty much seen it all. In fact, it's the most common question our sales team hears: why doesn't my data in Shopify match my data in Google Analytics? The ecommerce ecosystem is constantly evolving, including headless setups and subscriptions in the Shopify checkout. But some things remain the same. The most common problem areas for disappearing orders are: 1. Users not waiting for the Thank You page to load Many tech-savvy buyers know that your store will email them an order confirmation, so if they’re in a hurry - and the thank you page takes a few seconds - why should they wait? This is especially true with payment gateways like PayPal, which have their own payment confirmation page. 2. Thank you page overloaded with marketing tags Most order tracking relies on a script to fire on the thank you page, and if your store has lots of these scripts then it could take 10+ seconds before the crucial Google Analytics script is run. Customers won’t wait 10 seconds to see a page which has no value for them. 3. Draft orders paid at a later date Does your store create draft orders? This is more common for B2B stores, and means the order is completed well after the customer web session finishes. That means no thank you page, so no way to track the orders in a standard GA implementation. 4. Third-party checkouts That Thank You page on Shopify may never appear at all if your store uses third-party checkouts. 5. Recurring orders Like paid draft orders, recurring orders are payments that happen outside of the customer’s web session. The user never goes through a checkout or sees the thank you page. 6. Duplicate tracking Refreshing the order confirmation page, or clicking through on an order confirmation email to view the page again, might cause another transaction event to be fired from the page. [tip]Get the free ebook about why Shopify doesn't match Google Analytics[/tip] How is Littledata’s tracking different? Littledata offers server-side order tracking, hooking into the order creation in Shopify after the payment has been made. That allows us to track draft orders paid after the event, recurring orders, and orders through channels like Amazon that don’t use the Shopify Checkout. It also allows us to add refunds back in real-time, so you can track net sales against marketing channels. Littledata de-duplicates all orders, so an order is only ever reported once - giving a 100% match with what is in Shopify admin. Server-side tracking ensures complete analytics If you want to compare like-for-like, as I did for this article, our app also sends a ‘Thank you page’ event (in the same way the order tracking done in Shopify’s standard setup). This event can also be used to trigger Google Tag Manager tags, using the built-in GTM data layer. Interested in improving your Google Analytics setup? You might be interested in 6 common reasons why GA is not accurate and how Littledata’s Google Analytics app works. [subscribe]

2021-04-08

Replacing Additional Google Analytics JavaScript for Shopify stores

On 1st March 2021 Shopify is permanently removing scripts added in the ‘Additional Google Analytics JavaScript’ preference. This field has been hidden for some time, but was previously used to inject all kinds of additional scripts into the checkout pages. Why is Shopify removing these additional scripts? Primarily they represent a security risk: injecting key-stroke-tracking scripts into checkout pages is a common way to steal credit card information. Shopify just can’t take the risk that if the store admin gets hacked, so could the customer card details. Additionally, being able to customise the Shopify checkout pages (via the checkout.liquid file) is a key feature of Shopify Plus and so a reason for stores to upgrade to Plus. How to replace Google Analytics code added in this Additional JavaScript field I know many stores were using this preference for exactly the reason it intended: to modify the functionality of the Universal Analytics tracking script Shopify adds, if configured in the online store preferences. The good news is that the scripts you need to run (excluding the checkout) can be added in the theme <head>. You can add settings or events to GA’s command queue, which get executed when the Universal Analytics (GA) library is ready. You need to add this line of code before any additional commands below, to ensure that: If the ga function is defined already, calls to ga() are queued If the ga function is not yet defined, calls to ga() are added to a new queue [dm_code_snippet background="yes" background-mobile="yes" slim="yes" bg-color="#abb8c3" theme="light" language="javascript" wrapped="yes" copy-text="Copy Code" copy-confirmed="Copied"] window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; [/dm_code_snippet] Shopify Plus stores can do the same thing on checkout.liquid to customise Google Analytics tracking on the checkout pages. Here are some of the common uses of Additional JavaScript, and alternatives I know of: 1. Anonymising IP address GDPR regulation in Europe requires stores not to send full IP addresses to Google’s servers in the US. You can opt out in GA by using this - but it will NOT affect pageviews sent from the checkout. [dm_code_snippet background="yes" background-mobile="yes" slim="yes" bg-color="#abb8c3" theme="light" language="javascript" wrapped="yes" copy-text="Copy Code" copy-confirmed="Copied"] ga('set', 'anonymizeIp', true); [/dm_code_snippet] 2. Tracking checkout steps To measure how far users get in the checkout, and with what products, many stores want to track checkout steps in GA. Shopify does track pageviews and some events from the checkout (not including product values), but unfortunately you can no longer add a script on Shopify’s checkout. However, Littledata’s app has a more robust solution to send checkout step events and pageviews from our servers. Tracking the checkout steps across all checkouts, including third party checkouts on ReCharge and CartHook, enables stores to retarget abandoned checkouts with Google Ads and understand how shipping and payment options affect checkout conversion. 3. Cross-domain linking Shopify already accepts incoming cross-domain tracking, but to add cross-domain tracking to links from your Shopify store you need to instruct GA to automatically decorate links: [dm_code_snippet background="yes" background-mobile="yes" slim="yes" bg-color="#abb8c3" theme="light" language="javascript" wrapped="yes" copy-text="Copy Code" copy-confirmed="Copied"] ga('linker:autoLink', ['yourblog.com']); [/dm_code_snippet] For more examples on when you need to set up cross-domain linking (for example, to third-party checkouts), see our cross-domain Shopify tracking guide. 4. Tracking logged-in users To enable a registered users view in Google Analytics you need to send a customer ID when known. The window-scope object `__st` includes that `cid` field, when the user is logged in. [dm_code_snippet background="yes" background-mobile="yes" slim="yes" bg-color="#abb8c3" theme="light" language="javascript" wrapped="yes" copy-text="Copy Code" copy-confirmed="Copied"] if(__st["cid"]) ga('set', '&uid', __st["cid"]); [/dm_code_snippet] 5. Tracking additional events You may want to trigger additional GA events, like clicks on a particular button. I’d recommend you set these up using Google Tag Manager, but you can also run a SEND command at any stage and it will send to the GA tracker Shopify loads on the page. [dm_code_snippet background="yes" background-mobile="yes" slim="yes" bg-color="#abb8c3" theme="light" language="javascript" wrapped="yes"] ga('send', 'event', 'List Filter', 'Change size filter', 'XL'); [/dm_code_snippet] 6. Tracking additional web properties Many stores need multiple tracking IDs to send data to multiple web properties, and Shopify by default only allows a single property.  I’d again recommend you set these up using Google Tag Manager, but you can also run a CREATE command in your head to track to additional properties. [dm_code_snippet background="yes" background-mobile="yes" slim="yes" bg-color="#abb8c3" theme="light" language="javascript" wrapped="yes" copy-text="Copy Code" copy-confirmed="Copied"] ga('create', 'UA-XXXXXXXX-X', 'auto'); [/dm_code_snippet] 7. Adding GTM triggers If you are using Google Tag Manager to fire other marketing tags you might have used the Additional JavaScript to run triggers - for example when customers completed an order. This could be replaced by using Littledata’s GTM data layer, which is included with our Google Analytics app.  The final result Assuming you just need items 1 and 4 from the list above, this is how the script tag in your liquid theme might look: [dm_code_snippet background="yes" background-mobile="yes" slim="yes" bg-color="#abb8c3" theme="light" language="html" wrapped="yes" copy-text="Copy Code" copy-confirmed="Copied"] <head> … <script> // Scripts moved from Additional Google Analytics JavaScript preferences window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('set', 'anonymizeIp', true); if(__st["cid"]) ga('set', '&uid', __st["cid"]); </script> </head> [/dm_code_snippet] Is there anything else your store has added? Let me know and we can add it to the list.

2021-02-22

Track CartHook upsells and downsells in Google Analytics

We're excited to announce a major update to our popular CartHook connection for Shopify stores. The connection now offers complete CartHook checkout tracking for landing pages, upsells and downsells. [note]The update discussed here applies to CartHook’s legacy checkout product. If you are using the new CartHook Post Purchase Offers app that’s native to the Shopify checkout, you can just use Littledata's main Shopify to Google Analytics connection and do not need to activate the CartHook connection[/note] The updated CartHook integration includes a number of new events and increased precision. In addition to the sales data and marketing attribution that we were already sending to Google Analytics, you can now automatically track 100% of custom upsell and downsell funnels. Advanced Google Analytics integration for the CartHook checkout productCaptures every checkout event, such as when a shopper accepts or rejects a one-click upsell offerAutomatically synced with Shopify and ReCharge checkout stepsEasy installation from the Shopify app store, or directly from your CartHook admin [subscribe] Whether on Shopify or Shopify Plus, successful DTC brands use CartHook to increase AOV with custom post-purchase offers. But how do you know which marketing channels are working best? And which custom offers are leading to the highest value customers over time? Are some downsell offers more valuable that upsell offers over time (do they lead to more devoted or higher-LTV customers)? To help answer these types of questions, Littledata combines client-side and server-side tracking to give you a complete, unbiased view of shopping behavior, from the first visitor touchpoint through every interaction with your brand or checkout. The latest version of the CartHook connection adds upsell and downsell tracking, offers a custom option for Thank You page tracking, and works in tandem with other Littledata app improvements such as how we track the Shopify checkout funnel. Read more about the events we track for Shopify stores and the additional events we track for CartHook. Additional resources: Quick overview of the CartHook connectionDemo video about how Littledata worksAll of our current connections and integrations [tip]Current CartHook connection users will automatically get the enhanced tracking - no additional action is needed on your part! [/tip]

by Ari
2021-02-18

Littledata featured in new Shopify App Store collection

Happy 2021! We are excited to announce that Littledata's Google Analytics app for Shopify stores is featured in a new Shopify App Store collection called Plan for what's next. As ecommerce continues to scale at lightning speed, planning for growth (and how to beat the rising tides of DTC competition) is on everyone's mind this year, so we couldn't be happier with the timing for this app store promotion. Google Analytics by Littledata is one of the top-reviewed apps in the app store. Benefits include: Complete sales trackingMarketing attributionAdvanced tracking for apps like ReCharge and CartHookCustom dimensions for tracking payment gateways and customer lifetime value (LTV)Own the data in Google Analytics The Shopify App Store ecosystem has grown quite a bit since we launched our first Shopify app there in 2017, and it's always nice to be promoted internally by Shopify to reach even more merchants that could benefit from complete ecommerce analytics. The app store has evolved, but it's still all about apps that work well together, whether you're selling by subscription or going headless. If you're serious about data-driven growth, it's time to give Littledata a try. Start a 30-day free trial today and say hello to accurate data. View the new collection in the Shopify App Store >>> Learn more On Shopify Plus? Running multiple country stores? Learn more about Littledata's plans and pricingExplore Littledata's connections with other popular Shopify apps, including ReCharge, Bold and CartHook (plus automatic integrations like Klaviyo)Read technical documentation on Littledata's GTM and Google Analytics data layer for Shopify stores

by Ari
2021-01-13

Product update: Shopify Order Names

We are pleased to announce a product update for how Littledata tracks unique identifiers for Shopify orders. Previously Littledata passed orders from Shopify to Google Analytics (or Segment) using only the order number (Order ID). Shopify offers the ability to add a prefix or suffix to this number to create an order name, and we now support Shopify Order Name tracking in addition to Shopify Order ID tracking. You can now choose between tracking either the Shopify Order ID or Shopify Order Name, and Order Name tracking is the default for new installs. Read on to see what's changed, and why we made the shift. What was the problem with tracking order numbers? There is nothing wrong with tracking order numbers per se, but for some Shopify stores -- especially larger brands on Shopify Plus -- it's often more useful to track the complete order name, which includes a particular prefix or suffix. Brands running multiple Shopify stores in local currencies often want to analyze total sales across geographic operations, while also segmenting by individual stores. This is useful whether or not you are using a rollup property for data analysis. With only order number tracking, there were two options: The largest brands, running GA 360, could set up a different web property for each store and then a 'rollup property' for all the stores. This option is expensive.The brand could send all the web orders to one GA web property, and then create filtered views based on the hostname the order was made on. But this didn't work for non-Shopify checkouts, such as ReCharge, where the hostname did not vary by store. So Littledata built a third option, order name tracking, which makes it easier to track multi-currency sales in GA and other data destinations, and also ensures no clashes with order numbers from non-Shopify systems. How to change the order ID format for your Shopify store Shopify and Shoify Plus merchants can change their Shopify order numbers to include a particular prefix and/or suffix. If you want to make this change, go to Shopify Admin > Settings > General > Standards and formats. Here you can configure a prefix or a suffix to every order, unique for that store. While you can't change the order number itself, you can add this default info to make it easier to see and segment your orders. For example, if you are selling in the US and the UK, you might want to add country-type prefix to your orders, such as 'US' and 'UK' to those country stores. Then your orders will come through with order names such as 'US1792' and 'UK1793'. [subscribe] How to enable Order ID or Order Name tracking in Segment or Google Analytics Shopify Order Name tracking is now the default. So if you installed Littledata after 19th October 2020, then you will already be using order names. This applies to both our Segment connection and our Google Analytics connection in the Shopify App Store. [note]If you installed Littledata after 19th October 2020, then we will be tracking the Shopify Order Name by default. You can change this in your Littledata Settings.[/note] If you installed Littledata before 19th October 2020, we will be tracking Shopify Order ID by default. You can check which unique order identifier we're using for your store, and make any necessary changes, directly in the Littledata admin. Go to Settings > General on the bottom leftUnder Unique identifier for all orders, select either "Shopify Order ID" or "Shopify Order Name"Click Save We will then pass the order information in your chosen format. How to use the data in Google Analytics Order identifiers offer a broad range of reporting and analysis possibilities in Google Analytics and connected analytics dashboards. Here's the ecommerce Sales Performance report showing orders including the prefix appearing in Google Analytics. If you are operating multiple country stores and using Littledata for multi-currency tracking, you will see different prefixes here for each currency. You can also create a segment including only orders with that prefix, by filtering by Transaction ID. What's next We are constantly enhancing Littledata's functionality. This year we have introduced a range of general updates and a new version of our Shopify to Segment connection. If you are setting up a raw data pipeline, we also now offer a Measurement Protocol connection for use with a range of ETLs, data collection platforms (like Snowplow) and data warehouses (like Google BigQuery). Check out our release notes to stay up to date, and don't forget to browse the complete documentation in our help center.

2020-12-09

Why doesn't Shopify match Google Analytics? [webinar]

Have plans this Thursday? Join me, Tamas Hanko, in a new webinar about why Shopify data doesn't always match Google Analytics -- and how to fix this. In this free webinar on Thursday, November 19th, hosted by our partners at Prisync, we will dive deep into the waters of Shopify and Google Analytics, and look at how to make this data play well together to power your ecommerce sales and marketing. There are lots of reasons why Shopify and GA might have a mismatch, and we'll run through the common ones plus a few outliers. Every site is unique, but there are common setup and tracking issues, especially with Shopify's checkout. In this free presentation, you will learn: Common issues with making Shopify data match Google Analytics dataUnderstanding the differences in how metrics are calculated in Analytics and ShopifyWhat server-side tracking can (and can't) do to help fix these issues Reserve your free spot today Can't make the live webinar? Sign up anyway and we'll send you a recording after the session. You can also check out Littledata's free ebook on Shopify and Google Analytics.

2020-11-16

What's new in v2 of our Shopify source for Segment

We've a built a loyal following for our Shopify to Segment connection, and this month we've rolled out the next version, v2, with new events and enhanced functionality. As Shopify and Segment both continue to see unprecedented growth, Littledata is here to ensure accurate data at every ecommerce touchpoint. We've seen a surge in DTC and CPG brands on Shopify Plus that rely on Segment to coordinate customer data across marketing, product, and analytics tools. We have continued to develop our Segment integration to fit all of these use cases. [note]If you installed Littledata's Segment connection previously, please contact us to add the v2 events.[/note] About Segment v1 Last year, we worked with Segment to create a robust Shopify source for Segment users. The aim was to make everyone's job easier, from CTOs to ecommerce managers. Littledata's Segment connection v1: Captures all customer touchpoints on your store, both pre and post checkout Sends data to any of Segment’s hundreds of destinations Works seamlessly with Google Analytics Uses a combination of client-side and server-side tracking to capture browsing activity, orders and refunds Sends user fields for calculating customer lifetime value [subscribe] What's new in Segment v2 Since we launched the first Shopify app for Segment in May 2019, we have continued to make improvements based on user feedback and new use cases. The latest version of our Shopify source for Segment offers several updates and enhancements, including support for email marketing around order fulfilment events; tracking for a range of new order and payment events, including POS orders and order cancellations; and alias calls to support additional analytics destinations such as Mixpanel and Kissmetrics. Fulfilment status Many of our customers use Segment events to trigger transactional emails on platforms like Klaviyo and Iterable. One key email that stores want to customize is the 'Your order has shipped' fulfilment email, and so we now trigger a Fulfilment Update event when the fulfilment status of an order changes. This event includes status, tracking_numbers and tracking_urls (where the shipping integration allows), so the transactional email can include actionable details for the end user. These events can also be used in analytics destinations to look at fulfilment trends by product, or see how marketing campaigns around shipping match real-world delivery times. Support for email marketing Email marketing destinations such as Klaviyo, Iterable, and Hubspot, cannot use an anonymous identifier -- so our Segment connection now sends an email property with all events (when it is known), usually from checkout step 2 onwards. Where the email is captured on landing pages (e.g. popup forms) we also send this with the Product Viewed and Product Added events, to make it easier for you to run retargeting and engagement campaigns. Support for Kissmetrics & Mixpanel destinations To support seamless customer tracking in analytics destinations such as Mixpanel, Vero and Kissmetrics, Segment requires an extra alias call. Littledata ensures the pre-checkout anonymousId is added as an alias of the userId (used from checkout step 2 onwards). Learn more in our developer docs. Customer account creation On Shopify, every checkout (even as a guest) creates a customer record. This was already passed on to Segment with an Identify call and a Customer Created event. However, it is useful to know when this customer creates a password and creates a verified account with the store. For example, some brands use this event to trigger welcome emails or offer discounts. With Segment v2, we now send a Customer Enabled event when the user has confirmed their email address and created a Shopify customer account, with verified_email set as true. Payment of draft orders Some stores (especially B2B brands and wholesalers) create draft orders which are later paid. From November 2020, Littledata's Segment connection triggers an Order Completed event whenever these draft orders are paid, linking them back to the user session when they were created. POS orders Previously POS (point-of-sale) orders were excluded from Order Completed, as this polluted the revenue attribution in Google Analytics or other Segment destinations. However, as Shopify POS and other POS orders have become more popular, we now send a separate POS Order Placed event, so you can track the POS orders and choose whether to add them to your web orders. Payment failure After a customer goes through your checkout and completes an order, there is still a chance the payment fails, usually due to fraud checks. A new Payment Failure event allows you to track these failures, and see if they are more associated with particular marketing campaigns, geographies, products, or other factors. Order cancellations If the admin has cancelled an order, perhaps due to the product being unavailable, an Order Cancelled event is now triggered (including the cancel_reason). This is useful for both tracking/analysis and re-engagement campaigns. Product properties Last, but certainly not least, we've expanded the range of product properties sent with every product for better segmentation. Details such as shopify_variant_id, category and brand are sent with all client-side events and most server-side events. For more information, read our developer docs or schedule a demo today with an analytics expert.

2020-11-04

Try the top-rated Google Analytics app for Shopify stores

Get a 30-day free trial of Littledata for Google Analytics or Segment