События отсутствия покупок в расширенной электронной торговле GA

Мы отправляем события покупки с сервера с таким кодом:

using (var httpClient = new RestClient())
            {
                httpClient.SendAsync(new HttpRequestMessage
                {
                    RequestUri = new Uri(url),
                    Method = HttpMethod.Get
                });
           }

Но около 15-20% событий никогда не регистрируются в GA. Кажется, что Google всегда отвечает GIF и кодом состояния 200, поэтому трудно сказать, какие события не обрабатываются успешно.

Вначале мы использовали javascript API для отправки события, но когда мы переключились на серверную сторону, мы скопировали запрос, который он создавал, и попытались реплицировать его с помощью HttpClient.

Отправка запроса выглядит следующим образом:

https://www.google-analytics.com/collect?v=1&_v=j47&a=817546713&t=event&ni=0&_s=1& dl = # scheme + host + pathAndQuery # & dp = # path # & dt = # path # & ul = # язык браузера # & de = # browser кодировка # & sd = # bit # & sr = # разрешение экрана # & vp = # видимая область браузера # & cid = # Идентификатор, взятый из _ga cookie # & je = 0 & fl = 24.0% 20r0 & ec = Электронная торговля & ea = покупка & _u = SCEAAAALI20% 25 ~ & jid = & tid = # TrackingId # & gtm = # TagManagerId # & ti = # OrderId # & ta = & tr = # TotalPrice # & tt = # TotalTax # & ts = # ShippingPrice # & tcc = # VoucherCode # & pa = Purchase & cu = # CurrencyCode # & pr1nm = # & pr1nm = # & pr1nm = # & PrducteName = # ProductId # & pr1pr = # ProductPrice # & pr1br = # Brand # & pr1ca = & pr1va = # Variant # & pr1qt = # Quantity # & z = # Уникальный идентификатор, генерируемый случайным образом #

Любые идеи о том, что не так или как его отлаживать, приветствуются.


comment
Творческий подход. Есть ли причина, по которой вы не отправляете событие и его полезную нагрузку в уровень данных, который использует GTM?   -  person Iskandar Reza    schedule 20.10.2017


Ответы (1)


Вы не должны этого делать на сервере. Правильный способ - сделать это во фронтенде.

Самый простой и правильный способ - отправить данные на ваш dataLayer, а затем в GTM отправить событие в GA.

P.S. В вашем коде C # я вижу проблему, заключающуюся в том, что вы не ожидаете асинхронного метода. Если ваш метод не является асинхронным, вы можете использовать его так:

var temp = httpClient.SendAsync(new HttpRequestMessage
            {
                RequestUri = new Uri(url),
                Method = HttpMethod.Get
            }).Result; 
person Victor Leontyev    schedule 23.10.2017