Goals do not match segment - google-analytics

I've set up goals in Google Universal Analytics:
Destination: URL matches regex /secure/common/callback.*?success\=true
But when I look at a custom segment against the same data the numbers are way off.
Goals yesterday:
2,040. But if I go into the default reporting view "audience" and create a custom segment with the same regular expression the numbers are way off /secure/common/callback.*?success\=true
860 visitor from 630 unique visitors.
Conceivably, if a person orders more than once (highly unlikely) visits could be higher but it's rare.
Anyway, goals suggest we had 2,040 goal completions. I know from looking at our database that we had less than half that.
Am I interpreting goals wrong here?

Related

How to properly use sequences for attribution?

My goal is to see which customers originate from organic search, but convert via a different source later on.
To do this, I defined this segment:
Then, I look at the Source/Medium report, but the results seem off. I expected to see zero revenue in the google/organic row (as the segment should show users where the transaction is specifically not coming from google/organic.
Am I using the right tool for what I'm trying to achieve? And if so, what am I doing wrong?
The conversion path in Google Analytics is a better solution here. You can find it under conversions -> multi-channel funnels -> top conversion paths.
What you're going to see here is all the combinations of channels that have been used to generate a conversion, see the screenshot below.
If you have a bigger website you're probably going to have >10.000 different conversion paths depending on the time period that you select. What you want to realize is how much conversion value and conversion was generated in conversion paths that started with organic, but ended with a different channel. Simply apply the filter below in the report to retrieve that data. Please note that in the standard Google Analytics reports all conversions and conversion value are attributed to the last, non-direct click.
The solution is to add a condition that includes only sessions as described in the second step of the sequence. This will reduce the population from all users that present the pattern in the sequence, to only sessions that matter. See detailed explanation here: https://www.napkyn.com/2017/09/07/quick-google-analytics-trick-use-sequence-segments-to-analyse-behavior-over-multiple-sessions/

Google Analytics: Not Possible to Get conversion rate of Non-subscribers

I would like to track the conversion rate of visitors to my application. Most of the traffic is already paying customers. Paying customers hit the home page, but also pages like /dashboard, /login, etc. They also have an UserId set in analytics. Prospects only hit the home page and sales pages. I have no problem creating traffic segments for Users vs Prospects.
I have segments All, Users and Prospects. All is everyone, Users are anyone who has UserId = Assigned, or visited the /dashboard, etc, and Prospects which is basically the opposite of users, ie traffic that hasn't hit the dashboard, or have a UserId assigned.
But it seems like Google Analytics has a fundamentally flawed, because there is no way to get a true conversion rate of only Prospects. That is because the moment they convert they turn into users. So by definition the number of prospects that have converted is always zero.
I can manually calculate the conversion rate by using the number of prospects in a given week, and the number of conversions (signups events), but there is no way to show that in the system. I can show the conversion rate of all traffic, but that isn't very helpful because most of it is already users who will never convert again.
I assume I am missing something. Any pointers would be helpful.
You could create a custom dimension (session scoped) for anyone that you do not have a user ID for. So before your pageview your code could look something like
var userID = getUserID()
if(!userID){
ga('set','dimensionX','Prospect');
}
The point is that the dimension would only be set when you don't have a user ID and so once a user converts and they now presumably have a user ID the dimension stating they are a prospect will be retained for the remainder of their session.
docs on custom dimensions
https://developers.google.com/analytics/devguides/collection/analyticsjs/custom-dims-mets

Google Analytics Goal Not Recording Accurately

I'm not getting the right results returned for a goal I have set up. The goal says the last 7 days have 92 goal conversions, when it should be 400+.
When a user completes a subscription purchase, they land on a confirmation page. We have several subdomains that the user can be coming from as well as the potential for a reference appended to the URL. So, I have the goal set up as a regular expression like this:
.*/insider/confirm.*
If, for example, the user pays and then is directed to the following page, shouldn't the goal be recorded?
test.com/insider/confirm?ref=2343
As I can't see anything wrong with the regular expression, although very greedy, the goals should be captured with the above example URL and goal setup.
Have you recently set this goal up? A thing with goals are that they aren't historically applicable to your data. They start collecting data from the point where you set it up.
Have you tried using the above regexp in the "All pages"-report under "Behavior"? Enter it into the filter pattern and there you can see exactly what pages your regexp would capture.

Google Analytics and Piwik Discrepancy

Hi guys, I was wondering if anyone have the same problem as I do. I have 2 trackers which are Google Analytics and Piwik but after sometime I found out there is a discrepancy. Please read below for more information.
Here is data for yesterday (with New Piwik Last Week v1.7.1 version then).
GGA : 14 803 visits (Unique Visistors)
Piwik : 10 254 visits (Unique Visistors)
31% discrepancy.
Question
What do i have to do to match the records? or which of the statistics is the correct ones?
Any advice would be much appreciated.
Respective to the different programs they are both correct. The difference comes in in HOW they calculate what a unique visitor is. No two stats aggregators work the same.
Google Analytics What's the difference between the 'Absolute Unique Visitor' report and the 'New vs. Returning' report?:
Absolute Unique Visitors
In this report, the question asked is: 'has this visitor visited the website prior to the active (selected) date range?' The answer is a simple yes or no. If the answer is 'yes,' the visitor is categorized under 'Prior Visitors' in our calculations; if it is no, the visitor is categorized under 'First Time Visitors.' Therefore, in your report, visitors who have returned are still only counted once.
Piwik FAQs:
How is a 'unique visitor' counted in Piwik?
Unique Visitors is the number of visitors coming to your website; Unique Visitors are determined using first party cookies.
If the visitor doesn't accept cookie (disabled, blocked or deleted cookies), a simple heuristic is used to try to match the visitor to a previous visitor with the same features (IP, resolution, browser, plugins, OS, ...).
Note that by default, Unique Visitors are available for days, weeks and months periods, but Unique Visitors is not processed for the "Year" period for performance reasons. See how to enable Unique Visitors for all date ranges.
They both use cookies to determine uniques, but both go about it calculating them in different ways. It's apples and oranges when comparing stats packages side by side.
Examine the rest of the stats beyond unique visitors. If there is a wide margin across the board, take a close look at the implementation of both.
If all is well with both implementations, then pick one and go with it for the stats. Overall trends is what you are looking for. Are the stats you want to go up going up? Are the stats you want to go down going down?

How to decode google gclids

Now, I realise the initial response to this is likely to be "you can't" or "use analytics", but I'll continue in the hope that someone has more insight than that.
Google adwords with "autotagging" appends a "gclid" (presumably "google click id") to link that sends you to the advertised site. It appears in the web log since it's a query parameter, and it's used by analytics to tie that visit to the ad/campaign.
What I would like to do is to extract any useful information from the gclid in order to do our own analysis on our traffic. The reasons for this are:
Stats are imperfect, but if we are collating them, we know exactly what assumptions we have made, and how they were calculated.
We can tie the data to the rest of our data and produce far more accurate stats wrt conversion rate.
We don't have to rely on javascript for conversions.
Now it is clear that the gclid is base64 encoded (or some close variant), and some parts of it vary more than others. Beyond that, I haven't been able to determine what any of it relates to.
Does anybody have any insight into how I might approach decoding this, or has anybody already related gclids back to compaigns or even accounts?
I have spoken to a couple of people at google, and despite their "don't be evil" motto, they were completely unwilling to discuss the possibility of divulging this information, even under an NDA. It seems they like the monopoly they have over our web stats.
By far the easiest solution is to manually tag your links with Google Analytics campaign tracking parameters (utm_source, utm_campaign, utm_medium, etc.) and then pull out that data.
The gclid is dependent on more than just the adwords account/campaign/etc. If you click on the same adwords ad twice, it could give you different gclids, because there's all sorts of session and cost data associated with that particular click as well.
Gclid is probably not 100% random, true, but I'd be very surprised and concerned if it were possible to extract all your Adwords data from that number. That would be a HUGE security flaw (i.e. an arbitrary user could view your Adwords data). More likely, a pseudo-random gclid is generated with every impression, and if that ad is clicked on, the gclid is logged in Adwords (otherwise it's thrown out). Analytics then uses that number to reconcile the data with Adwords after the fact. Other than that, there's no intrinsic value in the gclid number itself.
In regards to your last point, attempting to crack or reverse-engineer this information is explicitly forbidden in both the Google Analytics and Google Adwords Terms of Service, and is grounds for a permanent ban. Additionally, the TOS that you agreed to when signing up for these services says that it is not your data to use in any way you feel like. Google is providing a free service, so there are strings attached. If you don't like not having complete control over your data, then there are plenty of other solutions out there. However, you will pay a premium for that kind of control.
Google makes nearly all their money from selling ads. Adwords is their biggest money-making product. They're not going to give you confidential information about how it works. They don't know who you are, or what you're going to do with that information. It doesn't matter if you sign an NDA and they have legal recourse to sue you; if you give away that information to a competitor, your life isn't worth enough to pay back the money you will have lost them.
Sorry to break it to you, but "Don't be Evil" or not, Google is a business, not a charity. They didn't become one of the most successful companies in the world by giving away their search algorithm to the first guy who asked for it.
The gclid parameter is encoded in Protocol Buffers, and then in a variant of Base64.
See this guide to decoding the gclid and interpreting it, including an (Apache-licensed) PHP function you can use.
There are basically 3 parameters encoded inside it, one of which is a timestamp. The other 2 as yet are not known.
As far as understanding what these other parameters mean—it may be helpful to compare it to the ei parameter, which is encoded in an extremely similar way (basically Protocol Buffers with the keys stripped out). The ei parameter also has a timestamp, with what seem to be microseconds, and 2 other integers.
FYI, I just posted a quick analysis of some glcid data from my sites on this post. There definitely is some structure to the gclid, but it is difficult to decipher.
I think you can get all the goodies linked to the gclid via google's adword api. Specifically, you can query the click performance report.
https://developers.google.com/adwords/api/docs/appendix/reports#click
I've been working on this problem at our company as well. We'd like to be able to get a better sense of what our AdWords are doing but we're frustrated with limitations in Analytics.
Our current solution is to look in the Apache access logs for GET requests using the regex:
.*[?&]gclid=([^$&]*)
If that exists, then we look at the referer string to get the keyword:
.*[?&]q=([^$&]*).*
An alternative option is to change your Apache web log to start logging the __utmz cookie that google sets, which should have a piece for the keyword in utmctr. Google __utmz cookie and you should be able to find plenty of information.
How accurate is the referer string? Not 100%. Firewalls and security appliances will strip it out. But parsing it out yourself does give you more flexibility than Google Analytics. It would be a great feature to send the gclid to AdWords and get data back, but that feature does not look like it's available.
EDIT: Since I wrote this we've also created our own tags that are appended to each destination url as a request parameter. Each tag is just an md5 hash of the text, ad group, and campaign name. We grab it using regex from the access log and look it up in a SQL database.
This is a non-programmatic way to decode the GCLID parameter. Chances are you are simply trying to figure out the campaign, ad group, keyword, placement, ad that drove the click and conversion. To do this, you can upload the GCLID into AdWords as a separate conversion type and then segment by conversion type to drill down to the criteria that triggered the conversion. These steps:
In AdWords UI, go to Tools->Conversions->Add conversion with source "Import from clicks"
Visit the AdWords help topic about importing conversions https://support.google.com/adwords/answer/7014069 and create a bulk load file with your GCLID values, assigning the conversions to you new "Import from clicks" conversion type
Upload the conversions into AdWords in Tools->Conversions->Conversion actions (Uploads) on left navigation
Go to campaigns tab, Segment->Conversions->Conversion name
Find your new conversion name in the segment list, this is where the conversion came from. Continue this same process on the ad groups and keywords tab until you know the GCLID originating criteria
Well, this is no answer, but the approach is similar to how you'd tackle any cryptography problem.
Possibility 1: They're just random, in which case, you're screwed. This is analogous to a one-time pad.
Possibility 2: They "mean" something. In that case, you have to control the environment.
Get a good database of them. Find gclids for your site, and others. Record all times that all clicks occur, and any other potentially useful data
Get cracking! As you have started already, start regressing your collected data against your known, and see if you can find patterns used decrypting techniques
Start scraping random gclid's, and see where they take you.
I wouldn't hold high hope for this to be successful though, but I do wish you luck!
Looks like my rep is weak, so I'll just post another answer rather than a comment.
This is not an answer, clearly. Just voicing some thoughts.
When you enable auto tagging in Adwords, the gclid params are not added to the destination URLs. Rather they are appended to the destination URLs at run time by the Google click tracking servers. So, one of two things is happening:
The click servers are storing the gclid along with Adwords entity identifiers so that Analytics can later look them up.
The gclid has the entity identifiers encoded in some way so that Analytics can decode them.
From a performance perspective it seems unlikely that Google would implement anything like option 1. Forcing Analytics to "join" the gclid to Adwords IDs seems exceptionally inefficient at scale.
A different approach is to simply look at the referrer data which will at least provide the keyword which was searched.
Here's a thought: Is there a chance the gclid is simply a crytographic hash, a la bit.ly or some other URL shortener?
In which case the contents of the hashed text would be written to a database, and replaced with a unique id.
Afterall, the gclid is shortening a bunch of otherwise long text.
Takes this example:
www.example.com?utm_source=google&utm_medium=cpc
Is converted to this:
www.example.com?gclid=XDF
just like a URL shortener.
One would need a substitution cipher in order to reverse engineer the cryptographic hash... not as easy task: https://crypto.stackexchange.com/questions/300/reverse-engineering-a-hash
Maybe some deep digging into logs, looking for patterns, etc...
I agree with Ophir and Chris. My feeling is that it is purely a serial number / unique click ID, which only opens up its secrets when the Analytics and Adwords systems talk to each other behind the scenes.
Knowing this, I'd recommend looking at the referring URL and pulling as much as possible from this to use in your back end click tracking setup.
For example, I live in NZ, and am using Firefox. This is a search from the Firefox Google toolbar for "stack overflow":
http://www.google.co.nz/search?q=stack+overflow&ie=utf-8&oe=utf-8&aq=t&client=firefox-a&rlz=1R1GGLL_en-GB
You can see that: a) im using .NZ domain, b) my keyword "stack+overflow", c) im running firefox.
Finally, if you also stash the full landing page URL, you can store the GCLID, which will tell you the visitor came from paid, whereas if it doesn't have a GCLID, then the user must have come from natural search (if URL tagging is enabled of course).
This would theoretically allow you to then search for the keyword in your campaign, and figure out which adgroup them came from. Knowing the creative would probably be impossible though, unless you split test your landing URLs or tag them somehow.

Resources