Search code examples
javaanalyticsmeasurement-protocol

Google measurement protocol doesn't register hit in GA. From browser works fine


I don't see realtime pageview event when I try to send event from java.

Tried to build link with hit builder. - works fine.

Dropped url to browser - works fine.

Then I have tried to build the same from JAVA. While i'm using debug prefix for path google says all is ok "Found 1 hit in the request.".

public void purchaseEvent() {
        try (CloseableHttpClient client = HttpClientBuilder.create().build())
        {
            final URIBuilder builder = new URIBuilder();
            builder
                    .setScheme("https")
                    .setHost("www.google-analytics.com")
                    .setPath("/collect")
                    .addParameter("v", "1")
                    .addParameter("t", "pageview")
                    .addParameter("tid", "UA-145416899-1")
                    .addParameter("cid", "heelo")
                    .addParameter("dh", "hello.com")
                    .addParameter("dp", "/fromjavatest")
                    .addParameter("dt", "ReceiptPage")
                    .addParameter("ti", "TJAVA1")
                    .addParameter("ta", "Checkout")
                    .addParameter("tr", "281.22")
                    .addParameter("tt", "0.00")
                    .addParameter("ts", "39.00")
                    .addParameter("pa", "purchase")
                    .addParameter("pr1id", "PJAVA11111")
                    .addParameter("pr1nm", "Book12")
                    .addParameter("pr1pr", "189.00");
            final URI uri = builder.build();
            final HttpPost request = new HttpPost(uri);
            final HttpResponse response = client.execute(request);
            String json = EntityUtils.toString(response.getEntity(), "UTF-8");
            LOG.info("response body - {}", json);
            LOG.info("Execute request to google analytics measurement protocol {}", response.getStatusLine().getStatusCode());
        }
        catch (URISyntaxException | IOException e)
        {
            LOG.warn("Not able to push purchase event to google analytics", e);
        }
    }

Solution

  • Required to specify user agent. This is optional field for measurement protocol.

    This value works fine.

    Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14