Skip to content
/ ga Public

batch report to google analytics with the measurement protocol

License

Notifications You must be signed in to change notification settings

romainmenke/ga

Repository files navigation

Build Status codecov Go Report Card GoDoc

GA

Report events to google analytics with the Measurement Protocol.

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

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


see tests and examples for more details