Websites promotion & analytics

Select your language

Ask a question +38 096 558 7514

Measurement Protocol

One of the most advanced ways for businesses to communicate with Google Analytics is through the Measurement Protocol.

What is the Measurement Protocol?

Measurement Protocol is a system for sending data to Google Analytics directly from the website’s server or through a remote request, without the user needing to visit the site online.

You might ask, why such complexity? There are several reasons:

  1. conversions can happen offline, after the user has left the website;
  2. there’s a significant percentage of abandoned online orders that never get completed;
  3. businesses want to compare real revenue with the actual expenses tracked in Google Analytics;
  4. companies wish to track the entire user journey, from the first interaction to the final purchase (creating end-to-end analytics).

In the first and second cases, missing or distorted data puts into question the effectiveness of each traffic generation channel and the overall promotion strategy.

Measurement Protocol is the solution for transmitting the most accurate conversion data, often verified by the sales team.

Let’s dive into the regulations, workings, and possibilities of this tool.

Methods of data transmission

There is only one protocol for data transmission: the HTTP request. However, it can take two forms — POST or GET. The endpoint for these requests is:

https://www.google-analytics.com/collect

POST requests send data from the website’s server.

GET requests send data via URL.

You can choose the method that best suits your needs.

POST requests are virtually unlimited.

GET requests have a size limit of 8,000 bytes.

Both types of requests share common components, such as:

👉 user_agent_string - an identifier that provides information about the user’s browser, platform, and mobile capabilities. If this value is not set, these parameters won’t be calculated.

👉 payload_data - the body of the request.

👉 IP address - transmitted in the HTTP request (if not set manually, the request will take the IP of the device sending it).

Example POST request:


POST /mp/collect?api_secret=Af16wpXjRZGfEfvgJcEi8g&measurement_id=G-1Z2SNNLJ6S
HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json

Example GET request:


GET /collect?payload_data HTTP/1.1
Host: https://www.google-analytics.com
User-Agent: user_agent_string

Parameters transmitted

To get the most detailed reports in Google Analytics, it’s best to transmit not only the required parameters but as many relevant data points as possible, including cookie data.

Mandatory parameters to transmit:

  • protocol version;
  • Google Analytics ID;
  • type of data being transmitted;
  • user identifier;
  • API GA4 key.

Additional parameters to transmit:

  • Measurement Protocol allows you to transmit a very large array of data, from any event such as a page view to enhanced e-commerce transactions. It all depends on the data you have and the event you want to transfer.

I would like to note once again that in the future, for the most accurate information in Google Analytics reports, when composing a request, you will not be able to get by with only the required parameters. The more data we transfer, the more accurate the reports and, accordingly, the conclusions.

With the help of Measurement Protocol, you can transfer several types of data, not just transactions. More on that later.

Types of information that can be transmitted

  • pageview - page views;
  • screenview - screen tracking;
  • event - event tracking;
  • transaction - transaction data;
  • item - product data;
  • social - social interactions;
  • exception - error tracking;
  • timing - interaction timing.

Each type of data requires its own set of parameters.

Example: sending a transaction to Google Analytics.

You’ll need the following mandatory parameters:

  • transaction_id - transaction ID;
  • measurement id - Google Analytics ID;
  • client id - client identifier (Client ID);
  • value - transaction amount;
  • timestamp_micros - time of the event, no more than the last 72 hours;
  • api secret - API GA4 key.

Example code:


Request info
POST /mp/collect?api_secret=Af16wpXjRZGfEfvgJcEi8g&measurement_id=G-1Z2SNNLJ6S
HTTP/1.1
HOST: www.google-analytics.com
Content-Type: application/json
Payload
{
"client_id":"2092330425.1579870776"
"timestamp_micros":1771279200000000
"non_personalized_ads":false
"events":[
{
"name":"purchase"
"params":{
"items":[
{
"item_id":"sku_1111"
"item_name":"test"
"quantity":1
"price":11111
"currency":"UAH"
}
]
"currency":"UAH"
"transaction_id":"11111"
"value":11111
}
}
]
}

Once the request is built, you can test it.

Testing with Hit Builder

Google provides a tool called Hit Builder to help test your data transmission. This tool allows you to fully construct and send the request to Google Analytics, and then check if the data has been received.

It looks something like this:

Hit Builder

Next comes the preparation and implementation of technical specifications for the transfer of data from the CRM system to the site.

Organizing data transmission

Once you understand how to gather and send the data, you can organize the transmission of processed data to Google Analytics via GET or POST requests. From there, you can make more informed marketing decisions.

End-to-end analytics and Measurement Protocol

A fashionable and not always tangible concept. Let's consider it in more detail.

End-to-end analytics - analysis of communication with the user, starting from the first touch and ending with the completion of the transaction.

By using Client ID, you can consolidate and send individual data for each user, allowing you to accurately track all user steps and outcomes. This could look something like this:

Сквозная аналитика

Measurement Protocol in Google Analytics 4

The process in GA4 differs slightly from Universal Analytics:

  • an API key is required, generated individually for each account;
  • events are categorized;
  • events can include additional parameters called “details”;
  • variable names have changed, but the core functionality remains the same.

How it works?

👉 Track the first event with the user’s Client ID;

👉 All subsequent data is consolidated under the user’s Client ID;

👉 Sales or other actions are processed in the CRM system;

👉 Financial data is uploaded to Google Analytics via Measurement Protocol;

👉 Custom reports can be built in Google Analytics, showing all events from the first interaction to the revenue generated by the company.

This allows you to consolidate traffic source statistics, track user actions, and make highly accurate conclusions. While the implementation is complex, it’s certainly achievable.

There’s no one-click solution for this - you need specific knowledge and technical support. For more details, feel free to contact our agency. Additionally, check out our video on Measurement Protocol.

Conclusion

Measurement Protocol is a complex but invaluable tool that solves problems no other tool can. It’s absolutely worth the effort.

We also recommend reading our article on a similar tool from Facebook, the Facebook API Conversions.

If you have any questions about our services, please write how to contact you and briefly describe your business.

* Your personal data is completely protected and will not be disclosed to third parties.

Please select the best way to contact you.

  • United States+1
  • United Kingdom+44
  • Afghanistan (‫افغانستان‬‎)+93
  • Albania (Shqipëri)+355
  • Algeria (‫الجزائر‬‎)+213
  • American Samoa+1
  • Andorra+376
  • Angola+244
  • Anguilla+1
  • Antigua and Barbuda+1
  • Argentina+54
  • Armenia (Հայաստան)+374
  • Aruba+297
  • Ascension Island+247
  • Australia+61
  • Austria (Österreich)+43
  • Azerbaijan (Azərbaycan)+994
  • Bahamas+1
  • Bahrain (‫البحرين‬‎)+973
  • Bangladesh (বাংলাদেশ)+880
  • Barbados+1
  • Belarus (Беларусь)+375
  • Belgium (België)+32
  • Belize+501
  • Benin (Bénin)+229
  • Bermuda+1
  • Bhutan (འབྲུག)+975
  • Bolivia+591
  • Bosnia and Herzegovina (Босна и Херцеговина)+387
  • Botswana+267
  • Brazil (Brasil)+55
  • British Indian Ocean Territory+246
  • British Virgin Islands+1
  • Brunei+673
  • Bulgaria (България)+359
  • Burkina Faso+226
  • Burundi (Uburundi)+257
  • Cambodia (កម្ពុជា)+855
  • Cameroon (Cameroun)+237
  • Canada+1
  • Cape Verde (Kabu Verdi)+238
  • Caribbean Netherlands+599
  • Cayman Islands+1
  • Central African Republic (République centrafricaine)+236
  • Chad (Tchad)+235
  • Chile+56
  • China (中国)+86
  • Christmas Island+61
  • Cocos (Keeling) Islands+61
  • Colombia+57
  • Comoros (‫جزر القمر‬‎)+269
  • Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)+243
  • Congo (Republic) (Congo-Brazzaville)+242
  • Cook Islands+682
  • Costa Rica+506
  • Côte d’Ivoire+225
  • Croatia (Hrvatska)+385
  • Cuba+53
  • Curaçao+599
  • Cyprus (Κύπρος)+357
  • Czech Republic (Česká republika)+420
  • Denmark (Danmark)+45
  • Djibouti+253
  • Dominica+1
  • Dominican Republic (República Dominicana)+1
  • Ecuador+593
  • Egypt (‫مصر‬‎)+20
  • El Salvador+503
  • Equatorial Guinea (Guinea Ecuatorial)+240
  • Eritrea+291
  • Estonia (Eesti)+372
  • Eswatini+268
  • Ethiopia+251
  • Falkland Islands (Islas Malvinas)+500
  • Faroe Islands (Føroyar)+298
  • Fiji+679
  • Finland (Suomi)+358
  • France+33
  • French Guiana (Guyane française)+594
  • French Polynesia (Polynésie française)+689
  • Gabon+241
  • Gambia+220
  • Georgia (საქართველო)+995
  • Germany (Deutschland)+49
  • Ghana (Gaana)+233
  • Gibraltar+350
  • Greece (Ελλάδα)+30
  • Greenland (Kalaallit Nunaat)+299
  • Grenada+1
  • Guadeloupe+590
  • Guam+1
  • Guatemala+502
  • Guernsey+44
  • Guinea (Guinée)+224
  • Guinea-Bissau (Guiné Bissau)+245
  • Guyana+592
  • Haiti+509
  • Honduras+504
  • Hong Kong (香港)+852
  • Hungary (Magyarország)+36
  • Iceland (Ísland)+354
  • India (भारत)+91
  • Indonesia+62
  • Iran (‫ایران‬‎)+98
  • Iraq (‫العراق‬‎)+964
  • Ireland+353
  • Isle of Man+44
  • Israel (‫ישראל‬‎)+972
  • Italy (Italia)+39
  • Jamaica+1
  • Japan (日本)+81
  • Jersey+44
  • Jordan (‫الأردن‬‎)+962
  • Kazakhstan (Казахстан)+7
  • Kenya+254
  • Kiribati+686
  • Kosovo+383
  • Kuwait (‫الكويت‬‎)+965
  • Kyrgyzstan (Кыргызстан)+996
  • Laos (ລາວ)+856
  • Latvia (Latvija)+371
  • Lebanon (‫لبنان‬‎)+961
  • Lesotho+266
  • Liberia+231
  • Libya (‫ليبيا‬‎)+218
  • Liechtenstein+423
  • Lithuania (Lietuva)+370
  • Luxembourg+352
  • Macau (澳門)+853
  • North Macedonia (Македонија)+389
  • Madagascar (Madagasikara)+261
  • Malawi+265
  • Malaysia+60
  • Maldives+960
  • Mali+223
  • Malta+356
  • Marshall Islands+692
  • Martinique+596
  • Mauritania (‫موريتانيا‬‎)+222
  • Mauritius (Moris)+230
  • Mayotte+262
  • Mexico (México)+52
  • Micronesia+691
  • Moldova (Republica Moldova)+373
  • Monaco+377
  • Mongolia (Монгол)+976
  • Montenegro (Crna Gora)+382
  • Montserrat+1
  • Morocco (‫المغرب‬‎)+212
  • Mozambique (Moçambique)+258
  • Myanmar (Burma) (မြန်မာ)+95
  • Namibia (Namibië)+264
  • Nauru+674
  • Nepal (नेपाल)+977
  • Netherlands (Nederland)+31
  • New Caledonia (Nouvelle-Calédonie)+687
  • New Zealand+64
  • Nicaragua+505
  • Niger (Nijar)+227
  • Nigeria+234
  • Niue+683
  • Norfolk Island+672
  • North Korea (조선 민주주의 인민 공화국)+850
  • Northern Mariana Islands+1
  • Norway (Norge)+47
  • Oman (‫عُمان‬‎)+968
  • Pakistan (‫پاکستان‬‎)+92
  • Palau+680
  • Palestine (‫فلسطين‬‎)+970
  • Panama (Panamá)+507
  • Papua New Guinea+675
  • Paraguay+595
  • Peru (Perú)+51
  • Philippines+63
  • Poland (Polska)+48
  • Portugal+351
  • Puerto Rico+1
  • Qatar (‫قطر‬‎)+974
  • Réunion (La Réunion)+262
  • Romania (România)+40
  • Russia (Россия)+7
  • Rwanda+250
  • Saint Barthélemy+590
  • Saint Helena+290
  • Saint Kitts and Nevis+1
  • Saint Lucia+1
  • Saint Martin (Saint-Martin (partie française))+590
  • Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)+508
  • Saint Vincent and the Grenadines+1
  • Samoa+685
  • San Marino+378
  • São Tomé and Príncipe (São Tomé e Príncipe)+239
  • Saudi Arabia (‫المملكة العربية السعودية‬‎)+966
  • Senegal (Sénégal)+221
  • Serbia (Србија)+381
  • Seychelles+248
  • Sierra Leone+232
  • Singapore+65
  • Sint Maarten+1
  • Slovakia (Slovensko)+421
  • Slovenia (Slovenija)+386
  • Solomon Islands+677
  • Somalia (Soomaaliya)+252
  • South Africa+27
  • South Korea (대한민국)+82
  • South Sudan (‫جنوب السودان‬‎)+211
  • Spain (España)+34
  • Sri Lanka (ශ්‍රී ලංකාව)+94
  • Sudan (‫السودان‬‎)+249
  • Suriname+597
  • Svalbard and Jan Mayen+47
  • Sweden (Sverige)+46
  • Switzerland (Schweiz)+41
  • Syria (‫سوريا‬‎)+963
  • Taiwan (台灣)+886
  • Tajikistan+992
  • Tanzania+255
  • Thailand (ไทย)+66
  • Timor-Leste+670
  • Togo+228
  • Tokelau+690
  • Tonga+676
  • Trinidad and Tobago+1
  • Tunisia (‫تونس‬‎)+216
  • Turkey (Türkiye)+90
  • Turkmenistan+993
  • Turks and Caicos Islands+1
  • Tuvalu+688
  • U.S. Virgin Islands+1
  • Uganda+256
  • Ukraine (Україна)+380
  • United Arab Emirates (‫الإمارات العربية المتحدة‬‎)+971
  • United Kingdom+44
  • United States+1
  • Uruguay+598
  • Uzbekistan (Oʻzbekiston)+998
  • Vanuatu+678
  • Vatican City (Città del Vaticano)+39
  • Venezuela+58
  • Vietnam (Việt Nam)+84
  • Wallis and Futuna (Wallis-et-Futuna)+681
  • Western Sahara (‫الصحراء الغربية‬‎)+212
  • Yemen (‫اليمن‬‎)+967
  • Zambia+260
  • Zimbabwe+263
  • Åland Islands+358
Thanks! Your message has been sent.
Sending failed. Please fix the errors and try again.