There has been a discrepancy between Events and Goal Completions in Google Analytics. These events are sent from Salesforce using Measurement Protocol and the events don't match goal completions.

For example: When I look at Events Report I can see each event with its amount. But when I look at the Goal we set using that event, it doesn´t show the proper quantity of amounts and goal completions individually.

Do you have any suggestions or ideas? Thank you in advance for your time.

  • 1
    What kind of discrepancy? Some is expected, because a goal conversion will only be counted once per session, even if the action that counts as a goal conversion happens more than once.
    – Reve
    Dec 17 '18 at 16:04
  • Hi @Reve Thank you for your reply! Can you please check the example I added above? Also, is there a way to count goal conversions more than once per session? Or how to forcefully end the session? Thank you very much, I appreciate it.
    – Ardian
    Dec 18 '18 at 14:36

Goal conversions are only counted once per goal per session, at the first time the action that the goal is tracking happens. There is no way to change that; goal conversions are determined by Google Analytics internally from the data it receives.

There are, then, two ways to get multiple conversions into the goal report: when you have multiple conversions per session, either separate them into different goals or into different sessions. That is, make separate events/goals for repetitions of the event, or force-trigger new sessions upon repetition of the event. Both have potential negative consequences, so I encourage you to think about what you are trying to accomplish by getting multiple conversions into goals. Could you use event reporting to get your totals, for example?

Separate Events

The "separate event" setup would look like this: you haven't said what you are tracking exactly, so let's suppose it's submission of comments. Instead of an event that has Category / Action / Label as follows:

Salesforce / Customer Contact / Comment Submitted

you would instead have multiple events that look as follows:

Salesforce / Customer Contact / First Comment Submitted
Salesforce / Customer Contact / Second Comment Submitted

And so forth. Then instead of one goal, you would have a goal that tracks the first event, one for the second event, and on for however many events you have.

There are three clear limitations on this:

  1. there must be a small upper bound on the number of times a visitor will perform the action
  2. you must be able to label the events accurately on the Salesforce end
  3. you must have enough available goals to track each of the events

The downside to that approach is that it complicates things: you're no longer looking at a single event and goal. However, if you set it up so that the Category and Action are the same for every repetition of the event, and only the Label differs, your event reporting should be just as easily used as before.

Separate Sessions

The second approach is to trigger a new session. Just remember this will affect all of your GA data, disconnecting user actions that in reality took place within a single session. If the only thing you care about is events, that is probably fine - but if the only thing you care about is events, I would again ask whether goals are necessary to get the data you need.

The easy but extreme method is to decrease the Google Analytics session timeout setting to its minimum, 1 minute. This setting is found in your GA Admin > Property > Tracking Info > Session Settings. If hits happened to arrive less than 1 minute apart, they would be counted as in the same session, but otherwise they would be in different sessions.

The other way to trigger a new session is with UTM parameters. You would have to add distinct parameters to the event hit (I am not a Measurement Protocol expert, but I believe that is allowed; if that doesn't work you would have to precede each event hit with a pageview hit that had the parameters attached). That event would then count as the first hit of the new session.

Again, this cuts apart your session data, and information such as attribution of conversions to the correct Source and Medium will be lost. That is, unless you can maintain that information in the code that sends the data to GA and send the correct Source and Medium, and perhaps a distinct Campaign (it would still trigger a different session, but the attribution would be correct). You've indicated this would likely be unreliable, as well as not reflect the reality (events are in the same session because they are by the same user), so I'm just including it for completeness.

If neither of the approaches above works, then goals can't do what you want.

Getting What You Need From Event Reports

If you want the goal reporting in standard reports because you are interested in the attribution and audience for your event, you can add those dimensions as secondary dimensions to the events report.

screenshot of Google's demo account, event report with source/medium added as secondary dimension

If you have enough data to be subject to sampling, this will trigger sampling, but that can be mitigated by using a small date range. You may also have to do some calculation, if you are interested in which channels (etc) produce the most events proportional to their session count.

If I were reporting on this for my own company, it sounds like a situation where I would turn to external tools, such as the GA add-on for Google Sheets. I have a lengthy recent answer about ways to mitigate sampling, including the Sheets add-on, if that seems like a direction you want to explore.

  • Thanks for a great reply, Reve! This explains things very well. Unfortunately though, neither of the suggested solutions would work in our case... 1) We can send events in different format (e.g. attach some random info to label), but it's important that all these events are collected under one goal. So we can see in one goal how many Salesforce Opportunities were created from google/cpc, for example. 2) Changing session timeout settings will have negative consequences for tracking real website sessions.
    – Sergey
    Dec 19 '18 at 13:58
  • 3) Adding UTM parameters via Measurement Protocol would defeat the purpose of tracking how many Salesforce Opportunities came from a particular source.
    – Sergey
    Dec 19 '18 at 13:59
  • Any chance there is some other way? :) Thanks in advance!
    – Sergey
    Dec 19 '18 at 14:00
  • Sessions only end by timeout or the appearance of campaign parameters, so one of those things is necessary to get a single goal to count all of the Salesforce events. For more ideas I need a little more information: are these events in the same session because they originate with the same user, or because of the data transfer setup (e.g. all Salesforce events use a single Client ID)? Does your code have access to the source/medium of the session when it sends the event data? Why is it necessary that it be a goal (what about goals are you using in your analysis/reporting)?
    – Reve
    Dec 19 '18 at 14:39
  • Thanks, Reve. To answer your questions: Apparently, these events are in the same session because they originate with the same user (and therefore have the same client ID). The code sometimes has access to source/medium info, but not always. We're sending this data both as events (to be captured in goals) and custom metrics; but goals are more convenient because they can be used in standard reports. Looking forward to your reply!
    – Sergey
    Dec 19 '18 at 16:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.