В любом случае вернуть можно легко. Но через суд. Издержки по-любому будут меньше баланса )
На страницу сертифицированных агентств зайдите. Там пример учёта кода через метрику в том числе
Не заплатите - рискуете проект не сдать вообще. Исполнитель обидится, расплачется и убежит.Правда если и заплатите - никаких гарантий повторения сценария нет )
Рубрикатор теперь какой-нибудь кривой.
Для "дополнительных релевантных фраз"---------- Добавлено 27.06.2013 в 20:53 ----------
В смысле - не выйдет в топ )
Эммм... )
_gaq.push(['_addItem', '1234', // transaction ID - necessary to associate item with transaction 'DD44', // SKU/code - required 'T-Shirt', // product name - necessary to associate revenue with product 'Olive Medium', // category or variation '11.99', // unit price - required '1' // quantity - required ]);
И ещё:
_gaq.push(['_addTrans', '1234', // transaction ID - required 'Womens Apparel', // affiliation or store name '28.28', // total - required; Shown as "Revenue" in the // Transactions report. Does not include Tax and Shipping. '1.29', // tax '15.00', // shipping 'San Jose', // city 'California', // state or province 'USA' // country ]);
можно. Но код самого счетчика придется подправлять
Тут код для поисковиков, для примера, чтобы однозначно опознавал как переходы как Organic
по аналогии можно настроить и контекст, и отслеживание переходов с социалок.
Ну и про расхождения в статистике того же adwords/direct и analytics из-за технических особенностей работы последнего не стоит забывать---------- Добавлено 27.06.2013 в 20:25 ----------список функций и переменных с примерами использования для тюнинга аналитикса тут---------- Добавлено 27.06.2013 в 20:26 ----------P.S. пардон, по социалкам другой код:
// Copyright 2012 Google Inc. All Rights Reserved./** * @fileoverview A simple script to automatically track Facebook and Twitter * buttons using Google Analytics social tracking feature. * @author api.nickm@gmail.com (Nick Mihailovski) * @author api.petef@gmail.com (Pete Frisella) *//** * Namespace. * @type {Object}. */var _ga = _ga || {};/** * Ensure global _gaq Google Analytics queue has been initialized. * @type {Array} */var _gaq = _gaq || [];/** * Tracks social interactions by iterating through each tracker object * of the page, and calling the _trackSocial method. This function * should be pushed onto the _gaq queue. For details on parameters see * http://code.google.com/apis/analytics/docs/gaJS/gaJSApiSocialTracking.html * @param {string} network The network on which the action occurs. * @param {string} socialAction The type of action that happens. * @param {string} opt_target Optional text value that indicates the * subject of the action. * @param {string} opt_pagePath Optional page (by path, not full URL) * from which the action occurred. * @return a function that iterates over each tracker object * and calls the _trackSocial method. * @private */_ga.getSocialActionTrackers_ = function( network, socialAction, opt_target, opt_pagePath) { return function() { var trackers = _gat._getTrackers(); for (var i = 0, tracker; tracker = trackers; i++) { tracker._trackSocial(network, socialAction, opt_target, opt_pagePath); } };};/** * Tracks Facebook likes, unlikes and sends by suscribing to the Facebook * JSAPI event model. Note: This will not track facebook buttons using the * iframe method. * @param {string} opt_pagePath An optional URL to associate the social * tracking with a particular page. */_ga.trackFacebook = function(opt_pagePath) { try { if (FB && FB.Event && FB.Event.subscribe) { FB.Event.subscribe('edge.create', function(opt_target) { _gaq.push(_ga.getSocialActionTrackers_('facebook', 'like', opt_target, opt_pagePath)); }); FB.Event.subscribe('edge.remove', function(opt_target) { _gaq.push(_ga.getSocialActionTrackers_('facebook', 'unlike', opt_target, opt_pagePath)); }); FB.Event.subscribe('message.send', function(opt_target) { _gaq.push(_ga.getSocialActionTrackers_('facebook', 'send', opt_target, opt_pagePath)); }); } } catch (e) {}};/** * Handles tracking for Twitter click and tweet Intent Events which occur * everytime a user Tweets using a Tweet Button, clicks a Tweet Button, or * clicks a Tweet Count. This method should be binded to Twitter click and * tweet events and used as a callback function. * Details here: http://dev.twitter.com/docs/intents/events * @param {object} intent_event An object representing the Twitter Intent Event * passed from the Tweet Button. * @param {string} opt_pagePath An optional URL to associate the social * tracking with a particular page. * @private */_ga.trackTwitterHandler_ = function(intent_event, opt_pagePath) { var opt_target; //Default value is undefined if (intent_event && intent_event.type == 'tweet' || intent_event.type == 'click') { if (intent_event.target.nodeName == 'IFRAME') { opt_target = _ga.extractParamFromUri_(intent_event.target.src, 'url'); } var socialAction = intent_event.type + ((intent_event.type == 'click') ? '-' + intent_event.region : ''); //append the type of click to action _gaq.push(_ga.getSocialActionTrackers_('twitter', socialAction, opt_target, opt_pagePath)); }};/** * Binds Twitter Intent Events to a callback function that will handle * the social tracking for Google Analytics. This function should be called * once the Twitter widget.js file is loaded and ready. * @param {string} opt_pagePath An optional URL to associate the social * tracking with a particular page. */_ga.trackTwitter = function(opt_pagePath) { intent_handler = function(intent_event) { _ga.trackTwitterHandler_(intent_event, opt_pagePath); }; //bind twitter Click and Tweet events to Twitter tracking handler twttr.events.bind('click', intent_handler); twttr.events.bind('tweet', intent_handler);};/** * Extracts a query parameter value from a URI. * @param {string} uri The URI from which to extract the parameter. * @param {string} paramName The name of the query paramater to extract. * @return {string} The un-encoded value of the query paramater. undefined * if there is no URI parameter. * @private */_ga.extractParamFromUri_ = function(uri, paramName) { if (!uri) { return; } var regex = new RegExp('[\\?***]' + paramName + '=([^***]*)'); var params = regex.exec(uri); if (params != null) { return unescape(params[1]); } return;};
Балансер только и помогает, что в равномерном размазывании.
ну, собственно, костыль - он костыль и есть )
по источнику трафика.
по кейвордам можно сделать привязку через динамический параметр в UTM, но это гемор и работает через раз.
Так что лучше гугл аналитикс для этих целей настраивать
Пфф. Тогда через суд забрать.
Судебные издержки на Вконтакте повесить, включая вознаграждение юриста.
1. Минусовать.
2. Использовать фразы по строгому соотвествию.
Яндекс частенько промахивается с регионом. Ну и я, например, использую VPN-прокси достаточно часто, и регион у меня выставлен руками.