Measurement Protocol 101: Improve Your Google Analytics Data

Google Analytics and Google Tag Manager have limitations. Usually, these limitations are outdoors your regulate (e.g., specialized facets of a internet site that simply cannot be transformed).

The good thing is, many issues—such as updating a user position from your CRM or sending refund data—are solved by using Google Analytics’ Measurement Protocol

The Google Analytics Measurement Protocol will allow builders to make HTTP requests to mail raw user conversation info instantly to Google Analytics servers. This will allow builders to measure how people interact with their business from pretty much any setting.

Really do not let the “allows developers” phrase scare you. Applying the Measurement Protocol is nothing more than including a bunch of parameters to a URL. For that reason, it should be similarly very simple for persons who are not builders to insert it to their toolstack.

This short article demonstrates how entrepreneurs can use the Measurement Protocol with out coding—structuring info in Google Sheets or Excel in its place. Nevertheless, there are strengths from becoming capable to code (even a very little little bit), or having a developer pal to enable with some of the solutions under.

Parameters and why they matter

With the Measurement Protocol, you can mirror the info and assortment method of Google Analytics. On any website page functioning Google Analytics, simply go to the console underneath Network and type “collect.”

Reload the website page, and this will present up: bit&sr=1440x900&vp=885x789&je=&_u=SCCAgAALQ~&jid=&gjid=&cid=583336462.1570739164&tid=UA-486673-28&_gid=521630025.1570739164>m=2wg9p0NX56DK&cd4=%22%22&cd5=583336462.1570739164.1570739177647.pageview&z=1459566673

url that contains information that's sent to google analytics.

At a look, this could appear incomprehensible even so, if you deconstruct the URL from the query parameters, you’ll see it as a record of info that’s passed to Google Analytics:

  • v: one
  • _v: j79
  • a: 27896466
  • t: pageview
  • _s: one
  • dl:
  • ul: en-gb
  • de: UTF-eight
  • dt: Optimization and Development by CXL
  • sd: 24-little bit
  • sr: 1440x900
  • vp: 885x789
  • je:
  • _u: SCCAgAALQ~
  • jid:
  • gjid:
  • cid: 583336462.1570739164
  • tid: UA-486673-28
  • _gid: 521630025.1570739164
  • gtm: 2wg9p0NX56DK
  • cd4: ""
  • cd5: 583336462.1570739164.1570739177647.pageview

In this article it can be viewed that:

  • Doc place (DL) is
  • Person Language (UL) is English.
  • Doc Encoding (DE) is UTF-eight.
  • Client ID (CID) is 583336462.1570739164.
  • Monitoring ID (TID) is UA-486673-28.
  • We are tracking (T) a pageview.
  • And so on.

The URL contains the exact info sent to Google Analytics. You use the same solution to mail info via the Measurement Protocol—emulating what happens just about every time you do some thing on a webpage that’s tracking user actions.

To see all available parameters, visit the Measurement Protocol Parameter Reference tutorial.

Sending info by means of the Measurement Protocol

Most programming languages are able of sending info by means of the Measurement Protocol via Write-up messages.

I propose using the device that’s most natural for you to use. If you like using R, Mark Edmonson produced a offer that allows you do it. To execute requests, the only point you will need is the info.

But you can also do it by means of Python, PHP, and equipment such as Zapier or Google Sheets.

Note: Right before executing any directions for the use instances under, you should examine the caveats and suggestions segment that follows.

4 realistic illustrations for using the Measurement Protocol

For entrepreneurs, 4 use instances highlight the probable price of the Measurement Protocol:

  1. Right lacking transactions
  2. Regulate copy buys
  3. Send out refund info
  4. Update a guide position.

one. Right lacking transactions

With Google Analytics, correct high quality assurance can be difficult. You might not notice that ecommerce tracking is not working—until you find out that info is lacking.

To insert lacking transactions to your Google Analytics Assets, you will need the pursuing info factors:

  • Google Analytics info with purchase ID’s and date
  • Actual sales info for the time time period that desires to be recovered.

This is the movement that can make it doable to extract, completely transform, and load info back again into Google Analytics:

flow for data using the measurement protocol.

In this article are the steps to do it:

Extract the info

To get started with, we will need the appropriate info from a sales databases. Once we have the appropriate transactions for the lacking time period, extract the sales info from Google Analytics via the API, or export the info into Google Sheets:

google sheets export from analytics.

Renovate the info

Once you have the info, develop a sheet (Excel or Google Sheets—doesn’t matter) and merge the transaction IDs and profits. The desk should glimpse like this:

You can then use this formulation to see if there are any copy values in the dataset: 


removing duplicate transactions from spreadsheet data.

Filter out any transaction that already exists in Google Analytics (i.e. decide on rows only with the price “0” in them).

To end building the upload dataset, insert the essential parameters. Use the Google Sheet template here to align your dataset with the impression under:

spreadsheet with curl request data for measurement protocol upload.

The final step to completely transform the info is to duplicate the info from the “Request” column into your favorite code editor, such as Visible Studio Code:

curl examples.

Load the info into Google Analytics

You will need to mail cUrl requests with the hits produced in the prior step. To do so, open your terminal or GIT Bash. Duplicate all the code and push Enter.

The pursuing check out should now surface:

using the bash terminal for measurement protocol.

Press Enter one final time to get the final row, and look at the Real-Time report (“Last thirty min”) to ensure that the hits have been sent:

real time check out in google analytics to validate that measurement protocol hits have long gone via.

Sadly, Google’s info design does not permit you to specify a date for the uploaded info it’s identified primarily based on the time the info is sent. A further facet result of this solution is that you drop the users’ Client ID and, as a result, the referral info for the transaction.

A way to handle this is to give a weighted distribution on your calls “traffic source” and “medium” primarily based on historic info. You can also give out customized values, such as calling the traffic source “Measurement Protocol.”

The most vital point is that it fits your business. And, of class, the optimum answer is to QA your Google Analytics set up just after any internet site releases that could have an impact on tracking.

two. Regulate copy buys

A recurrent challenge in Google Analytics is duplicate transactions. Duplicate transactions can take place if persons revisit the receipt website page, or if some thing is mistaken with the specialized implementation.

When auditing Google Analytics, you occasionally obtain that a internet site is not tracking Enhanced Ecommerce with Gatherings. This will cause ecommerce info to be sent with a Pageview, and—if an Function happens on the transaction website page at the same time—it will generate two transactions.

Correcting this info can correct profits figures for weekly or monthly reporting. However, for the reason that we will need to insert a negative transaction to appropriate the invest in quantity, it results in an supplemental transaction, inflating the whole number of transactions on the internet site and skewing the ecommerce transaction level. 

Consequently, I advisable this solution only:

  1. To appropriate massive profits discrepancies
  2. If you use Google Analytics to report profits.

The solution is very similar to the one for the prior use scenario of including lacking transactions. This time even so, only Google Analytics info is essential (not sales info). You’ll use the pursuing variables:

  • Transaction ID
  • Transactions
  • Profits
  • Client ID (not necessary but will enhance precision).

 The movement to develop detrimental transactions appears like this:

flow for negative transactions to integrate for measurement protocol.

Extract the info

As in the prior step, download the info from the API or create a Custom made Report with the essential Metrics and Proportions, then export it to Google Sheets.

Renovate the info

Not all transactions are possible to be duplicates. Develop a filter and only include things like transactions bigger than “1”:

filtering in a spreadsheet.

Then, estimate the refund quantity using this formulation:

(Profits - (Profits/Transactions))*-one

This should end result in a check out very similar to this one:

example of how to add refund data to a spreadsheet.

Last but not least, make the cells match this Google Sheet and adhere to the same solution as right before, copying the info into a code editor.

measurement protocol worksheet for curl request.

Load the info into Google Analytics

As right before, go to your terminal and paste in the lines from the spreadsheet. Examine that info is coming in accurately to your See.

three. Send out refund info

Sending refund info to Google Analytics is not the same as reversing a transaction.

As an alternative, refund info seems independently in your Enhanced Ecommerce reviews to enable review how many transactions and products and solutions are refunded and, in switch, whether some thing is mistaken (e.g., the way products and solutions are displayed on the internet site).

Getting refund info into Google Analytics routinely usually takes means many ecommerce companies skip the course of action entirely. This can make it difficult to estimate Return on Marketing Expenditure (ROMI) when evaluating Google Analytics info to true sales numbers.

If doable, the Client ID is good to have—it’s the most precise way to link the refund to the user. If it’s not available, simply generate a one of a kind one.

The course of action for building refunds is the pursuing:

example of data flow to match crm data with analytics info and mail by means of measurement protocol.

Extract the info

Refunds added to Google Analytics will occur on the date they are sent. To get the most precise refund date, mail them in usually to get as near to the true refund date as doable.

Renovate the info

The Measurement Protocol hit for refunds is pretty much identical to the one for sending in invest in info. The only difference is the price for the parameter “pa” (Product Motion), which is named “refund.”

To develop the dataset, use this template and replace it with the refund info that you’ll duplicate and mail via cURL requests:

measurement protocol spreadsheet template.

Load the info into Google Analytics

As in the other illustrations, duplicate the “Request” column, open the terminal, and paste the values:

bash console that sends hits to google analytics by means of the measurement protocol.

Last but not least, verify the Google Analytics Real-Time report to ensure that info is coming in accurately. The info should be available underneath Ecommerce > Sales effectiveness.

4. Update a user position from your CRM

Ecommerce info can indicate how an online retail outlet is accomplishing. If a business’ principal KPI is not providing products and solutions but changing sales opportunities, even so, it can be difficult to assess the effectiveness of marketing attempts

Guide scoring—one way to assess those people efforts—isn’t constantly feasible by means of common Google Analytics info assortment. In this article, it’s up to builders to update the position of people and mail that info back again into Google Analytics.

That info offers entrepreneurs some new analytical alternatives:

  • Recognize the time lag from when a user first visits the internet site to when they develop into a sales-experienced guide.
  • In conditions of attribution, see the marketing attempts that most proficiently transformed sales opportunities.
  • For sales opportunities that get declined or exit the guide-scoring funnel, the info can enable segment from them, stopping squandered marketing devote.

Here’s a hypothetical movement for bank sales opportunities:

sample flow for a lead.

The future steps present how to purchase the Client ID and use it to update the user position by means of the Measurement Protocol.

Obtain the Client ID

To link on-internet site user actions to Google Analytics, the Client ID will have to first be gathered:

capturing the client id via a hidden field in a form.

A hidden discipline should acquire the Client ID from the ga cookie. This price desires to be stored in the CRM/guide-scoring procedure.

Develop a Measurement Protocol trigger

Once the info is gathered, builders will need to established up the procedure to hearth a hit just about every time a user position updates. The hit desires to be formatted this way: customer id from the CRM&ec=measurement+protocol&ea=guide+current&el=the guide position current&cd1=the guide position current&ni=one

The “cd1” parameter is the Custom made Dimension. If you will need to established it to one more Custom made Dimension (for the reason that you’ve already produced other folks), you can use any number amongst one and twenty (200 if you have Google Analytics 360) just after the “cd” variable, such as cd17 for Custom made Dimension 17.

three. Set up the Custom made Dimension

To obtain the info from the Measurement Protocol hit, you will need to activate the Custom made Dimension. As we’re updating the users’ guide position, the scope should be established to “User” amount:

add custom dimension in ga.

Click “Create.” The pursuing info should surface with the Custom made Dimension number:

custom dimension setup in google analytics.

From in this article, the info should be available as a Custom made Dimension in reviews when picking out Secondary Proportions:

example of custom dimension in google analytics.

Caveats and suggestions

This segment illustrates places for which I would like there ended up more direction in online communities, or even in the Google Developer documentation. These are things I’ve discovered via trial and error.

Browse this segment thoroughly right before employing any solutions, as these caveats could likely crack your tracking set up if you are not cautious.

Set up filters for See-specific info

When performing with a number of countries or business units, your tracking set up could glimpse like this:

potential division of google analytics account.

However, sending a Measurement Protocol hit to your internet site will insert the info to all Sights in a Assets. This implies that if you attempt to mail in transactions for Country A, this info will also be sent to Countries B and C.

In many instances, you will need to break up up the info to populate specific Sights. To do this, insert an Function to your hit to filter the info.

For case in point, mail an Function to your Google Analytics Assets with the pursuing info:

  • Group: Measurement Protocol
  • Motion: [the action the hit generates]
  • Label: [which Sights it should mail to].

If we use the state case in point mentioned higher than, a filter that usually takes info only to Country C and the roll-up See could glimpse like this:

custom filter to segment data import from measurement protocol.

It’s a very simple way to exclude undesired info and to use segments to check out info shipped by means of Measurement Protocol hits.

Uncheck Bot Filtering

An simple error is forgetting to uncheck Bot Filtering when sending hits. Bot Filtering will, in most instances, block Measurement Protocol hits from becoming sent to the Assets.

Go to See Configurations and make sure the checkmark box is vacant. If it’s checked (as in the case in point under), uncheck it.

bot filtering toggle in google analytics configurations.

Formatting currencies

Usually specify the currency for the price becoming sent. When obtaining info from your CRM or other platforms, convert the currency to a single device, or make sure that just about every row of your info specifies the suitable currency.

To see how currencies should be formatted, take a look at Google’s enable center.

Be cautious with the Client ID

When sending info to Google Analytics, it’s ideal to have a one of a kind Client ID. If you use the same one each time, all the info will be attributed to one user, which will skew your info. As an alternative, I propose one of two solutions:

  • Send out the first Client ID for the info that you are seeking to upload. This is the most accurate way.
  • Create a Special Client ID for just about every hit to distribute info evenly across one of a kind people.

Keep GDPR in intellect and guard people

The final point well worth mentioning about Measurement Protocol is to regard people. Once you have a Client ID and an electronic mail, the marketing prospects are unlimited.

You can fully grasp exactly who does what on your internet site, run segmented retargeting campaigns—even for persons who really don’t want it—etc.

Usually have documented authorization and be compliant with Measurement Protocol rules.


This post has concentrated on how to use the Measurement Protocol with as very little coding expertise as doable. But there are many (more) techniques to operate with it.

Establish a workflow that aligns with the specialized strengths of the user sending the requests. (To see an case in point of how Measurement Protocol can be automated with the statistical programming language R, verify out this blog site post.)

Measurement Protocol can be an asset to enhance info assortment. However, it can also cause more harm than great to your Google Analytics Assets if made use of improperly. Send out the info to a examination account right before placing it into manufacturing.

Finally—and unfortunately—others can also use the Measurement Protocol for your internet site, producing it simple for third functions to obscure your info with misleading info. When you are not sending Measurement Protocol info, filter out bot traffic in See configurations and your filters.

Featured impression source

Beth Sanders

Add comment

Follow us

Don't be shy, get in touch. We love meeting interesting people and making new friends.

Most discussed