My MeasureCamp presentation covering how I've used the beta version of Universal Analytics and Measurement Protocol to extend the e-commerce analytics functionality of GA.
4. What’s the conversion
rate for product X?
You can’t easily determine the conversion rate
for products, categories or brands to monitor
trends or optimise them.You might be able to
do it externally with API hacks, but it’s not easy...
@techpad
Sunday, 17 February 13
5. How much stock of
brand Y did we sell?
@techpad
Sunday, 17 February 13
6. How much stock of
brand Y did we sell?
Oddly, brand isn’t a standard dimension. Reporting
on brand performance requires manual custom
reports or dashboards.
@techpad
Sunday, 17 February 13
7. How profitable is that
Adwords campaign?
@techpad
Sunday, 17 February 13
8. How profitable is that
Adwords campaign?
Google Analytics doesn’t consider Cost Of Goods
Sold (COGS), so to calculate profit, you need to do
it all externally. There’s no cost import option for
product costs yet.
@techpad
Sunday, 17 February 13
9. What’s the average
margin for that
category?
@techpad
Sunday, 17 February 13
10. What’s the average
margin for that
category?
Similarly, because there are no cost data for product
costs, you can’t easily monitor margin trends...
@techpad
Sunday, 17 February 13
11. When we increase the
price of product X,
what proportion of
customers buy, defect
or switch brands?
@techpad
Sunday, 17 February 13
12. When we increase the
price of product X,
what proportion of
customers buy, defect
or switch brands?
Price Elasticity of Demand analysis would be nice, as
would metrics on latency to indicate which of the
customers we acquired are still customers.
@techpad
Sunday, 17 February 13
13. Google could fix some
of this for us now...
• If you could import product cost data, you
could see product profit and margin, and
the actual ROI/profitability of ads.
• If you could connect Google Merchant
Center data to GA you could get product
conversion rate, brand performance data
and new variables to use as custom
segments. (You can do it with the API.)
@techpad
Sunday, 17 February 13
14. That’s unlikely. But Universal
Analytics might help...
• You can create custom dimensions for
product, brand, manufacturer and supplier
to improve reports and aid analysis.
• You can create custom metrics for product
cost, profit, margin and shipping costs.
• It’s in beta and not everything works
properly (or at all) yet. It has limitations, but
it’s still a big step forward.
@techpad
Sunday, 17 February 13
16. Measurement Protocol and
Universal Analytics
• I opted to use a combination of the client-
side Universal Analytics (analytics.js) and
the server-side Measurement Protocol.
• Using Measurement Protocol allows me to
bypass the event limits of Universal
Analytics and to send data (such as profit
and product cost) that I don’t want to
appear in the client-side JavaScript code.
@techpad
Sunday, 17 February 13
17. Server-side data layer
• To ease data access, I created a server-side
data layer containing data objects for page,
product, customer and transaction.
• I push data to the client-side code from the
(private) server-side data layer.
• If I later decide to move to Google Tag
Manager, or even switch analytics vendors,
it’s a relatively easy task.
@techpad
Sunday, 17 February 13
18. How it looks...
Web analytics
Database extension
Page object Customer object Order object Product object
Measurement
Data layer
Protocol and UA
@techpad
Sunday, 17 February 13
19. How it works
Web analytics
Data layer Page type?
extension
Order page E-commerce tracking,
Product page Other page
plus product, supplier,
manufacturer custom
dimensions. Plus...
Sensitive stuff I don’t
want to be visible in the
The usual, plus product, Universal Measurement client-side source code,
supplier, manufacturer Analytics Protocol ie. profit and margin.
custom dimensions to
connect at order page...
@techpad
Sunday, 17 February 13
21. The basics of UA
• Uses analytics.js instead of ga.js and
replaces all the old GA cookies with _ga.
• Has a totally new syntax, but all the good
stuff remains - including events.
• Custom dimensions and metrics replace
the old custom variables.
• Will support user ID (but doesn’t yet).
@techpad
Sunday, 17 February 13
22. How I’ve used it
• On the product page, I’m firing custom
dimensions for: product, brand,
manufacturer, supplier, author and product
cohort.
• I’m hoping to connect these with data fired
on the payment complete page (attached to
transaction/item) to allow me to get data
on stuff bog standard GA can’t measure.
@techpad
Sunday, 17 February 13
23. An overview of custom
dimensions and metrics
• First, define your custom dimension/metric
in the Google Analytics UI.
• Send your CD/CM with another data type,
such as a pageview or an event.
• ga(‘send’,‘pageview’,{dimension1:‘Apple iPad
3’});
• You can combine several together.
@techpad
Sunday, 17 February 13
25. The basics of MP
• A server-side way of sending GA data (like
PHP-GA), based on a simple URL system.
You send a payload to an HTTP endpoint.
• Sending data with an HTTP POST returns a
200 OK. (Sadly, even if it’s malformed...)
• There’s currently no client library, so you’ll
need to code your own. However, this is
quite straightforward with PHP and Curl.
@techpad
Sunday, 17 February 13
26. How I’m using it
• Used on payment page to send data I want
to hide from anyone viewing the source.
• I want to supplement the e-commerce
tracking with extra custom dimensions and
metrics, such as product, brand, supplier,
manufacturer, profit and margin. *
• I’m joining these to UA dimensions fired on
the product pages attached to pageviews.
@techpad
Sunday, 17 February 13
27. What do I send?
• Latency - days since last purchase (CM)
• Customer cohort (event)
• Days as customer (event)
• Lifetime spend (event)
• Carrier (CD)
• Newsletter preferences (CD)
@techpad
Sunday, 17 February 13
28. What do I send?
• Product (CD)
• Brand (CD)
• Manufacturer (CD)
• Supplier (CD)
• Product author (CD)
• Product cohort (CD)
@techpad
Sunday, 17 February 13
29. What do I send?
• Product cost (CM)
• Product margin (CM)
• Product profit (CM)
• Shipping cost (CM)
• However, the CMs and CDs attached to
the item and transaction don’t work yet.
@techpad
Sunday, 17 February 13
30. Using Measurement
Protocol alongside
Universal Analytics
@techpad
Sunday, 17 February 13
31. Using Measurement Protocol
with Universal Analytics
• Measurement Protocol and UA use a
visitor ID called the client ID (or cid).
• This isn’t to be confused with the user ID.
(That doesn’t exist yet.)
• If you want to use Measurement Protocol
and UA together, you need to use the same
client ID. Otherwise GA won’t connect the
data to a given visitor.
@techpad
Sunday, 17 February 13
32. 32-bit IDs vs UUID v4
• Universal Analytics (ga.js) cookies use the
old-style 32-bit UUIDs for compatibility
with the current version of GA.
• The docs (and GA team) recommend using
UUID v4 for client ID, but (undocumented)
it can also support 32-bit IDs.
• If you want to use both together, you need
to use the _ga 32-bit ID, not UUID v4.
@techpad
Sunday, 17 February 13
33. Obtaining the 32-bit ID
• Parse the new _ga cookie to obtain a given
visitor’s 32-bit ID to send with MP data.
• Example: 1.2.123456789.9876543219876
• Extract the last two items from the cookie
and use that as your 32-bit ID.
• I’ve written some cookie parsing code. Get
a copy from here: http://goo.gl/HgCew
@techpad
Sunday, 17 February 13
35. Measurement Protocol and
Universal Analytics are amazing
• They open up new possibilities for tracking.
• They should help improve analysis.
• They’re better integrated than CVs.
• You get 20 CDs and 20 CMs.
• The new user ID (when supported) should
make even more cool stuff viable.
@techpad
Sunday, 17 February 13
36. But there are a few issues...
• You can’t send custom dimensions and
metrics with either a transaction or a
transaction item yet. However, the GA team
is planning to add support, which is great.
• At the moment, custom metrics can’t
include a decimal point. Why? (Consider
rounding and multiplying, extracting in API,
then dividing to get the original value.)
@techpad
Sunday, 17 February 13
37. Tips
• Using a data layer means you can use data
in Measurement Protocol and Universal
Analytics easily and keeps things tidier.
• Use Measurement Protocol to send stuff
you don’t want visible in the JS code.
• Parse the 32-bit ID from the _ga cookie
and use it as the Measurement Protocol
client ID, if using both together.
@techpad
Sunday, 17 February 13