Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/romainmenke/ga
batch report to google analytics with the measurement protocol
https://github.com/romainmenke/ga
golang google-analytics measurement-protocol server-side
Last synced: about 1 month ago
JSON representation
batch report to google analytics with the measurement protocol
- Host: GitHub
- URL: https://github.com/romainmenke/ga
- Owner: romainmenke
- License: lgpl-3.0
- Created: 2017-07-03T19:05:09.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-09-28T13:43:02.000Z (about 7 years ago)
- Last Synced: 2024-10-20T07:50:19.614Z (2 months ago)
- Topics: golang, google-analytics, measurement-protocol, server-side
- Language: Go
- Size: 16.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![Build Status](https://travis-ci.org/romainmenke/ga.svg?branch=master)](https://travis-ci.org/romainmenke/ga)
[![codecov](https://codecov.io/gh/romainmenke/ga/branch/master/graph/badge.svg)](https://codecov.io/gh/romainmenke/ga)
[![Go Report Card](https://goreportcard.com/badge/github.com/romainmenke/ga)](https://goreportcard.com/report/github.com/romainmenke/ga)
[![GoDoc](https://godoc.org/github.com/romainmenke/ga?status.svg)](https://godoc.org/github.com/romainmenke/ga)# GA
Report events to google analytics with the [Measurement Protocol](https://developers.google.com/analytics/devguides/collection/protocol/v1/).
GA doesn't contain helper types for GA parameters. Their API might change/grow and maintaining API parity would cost me too much time.
It does expose a simple and effective means to batch report. `Report` doesn't block which makes it great for server-side reporting where you do not want to spawn a network call for each incoming request.
`Report` will add events to a slice. After X time (you can adjust this) the events will be submitted to GA. If 20 or more events are reported before X time has passed it will immediately submit the events, as 20 is the max batch size.
---
### Simple Usage
```go
func main() {
// create a Client
c := &ga.Client{}// start a go routine to handle Events
go func() {// Start the Client
err := c.Start()
if err != nil && err != ga.ErrClientClosed {
fmt.Println(err)
return
}
}()// report an Event
c.Report(&ga.Event{
"t": "pageview",
// ...
})// or report like so
e := &ga.Event{}
e.Set("t", "pageview")
c.Report(e)// Shutdown the Client
err := c.Shutdown(context.Background())
if err != nil {
fmt.Println(err)
return
}
}
```---
### Measurement Protocol Reference
[reference](https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters)
---
**see tests and examples for more details**