Open roballsopp opened 3 years ago
Looks like a similar issue as https://github.com/DavidWells/analytics/issues/147#issuecomment-784425598
Double check your dataLayer
is being pushed to and that your google tag manager is wired up correctly in GTM.
https://getanalytics.io/plugins/google-tag-manager/#configuring-gtm
My dataLayer is being pushed to when I call page()
, but the object that is pushed is missing the event
property entirely, whereas all the other items in window.dataLayer
have an event
property. Here's a log of window.dataLayer
before and after I call page()
. I would expect the new entry to have an event property, but you can see it doesn't:
Hi,
and thanks for this nice library!
I've had a similar issue with GTM, no events where fired and they didn't show up in the dataLayer. After some debugging I spotted an issue with initialisation happening twice. On the second time the dataLayer
-property in the config was set to to `undefined´, hence the track method was executed but nothing vital happened as there is check that dataLayer is defined.
As init was run twice I reckoned the error was on my side and I changed the tracking component accordingly, which works for me. Hope it can be of assistance:
// GTM
const googleTagManagerSettings = () =>
googleTagManager({
containerId: process.env.REACT_APP_GTM,
enabled: false,
});
// GA - yup not running GA through GTM yet
const googleAnalyticsSettings = () =>
googleAnalytics({
enabled: false,
trackingId: process.env.REACT_APP_GA_ID,
anonymizeIp: true,
customDimensions: {
source: 'dimension1',
itemTitle: 'dimension2',
lang: 'dimension3',
},
setCustomDimensionsToPage: false,
// debug: true,
});
const analyticsSettings = {
app: `myAppName`,
plugins: [googleTagManagerSettings(), googleAnalyticsSettings()],
debug: true,
};
const Tracking = ({ children }) => {
const consentContext = useContext(ConsentContext);
const analytics = Analytics(analyticsSettings);
// Consented to statistical data
if (consentContext.has('statistical')) {
analytics.plugins.enable('google-tag-manager');
analytics.plugins.enable('google-analytics');
}
if (!analytics) return null;
return (
<AnalyticsProvider instance={analytics}>
{children}
</AnalyticsProvider>
);
};
Now that I've worked with this for a bit longer, I'm realizing there isn't really an official Pageview
event, but it looks like the universal analytics tag for GA fires when it sees a gtm.js
event type.
Yeah, it's dependant on how you wire things up in google tag manager, and everyone has a different flavor of that.
I found this post helpful when I was setting up GTM a while back https://www.bounteous.com/insights/2018/03/30/single-page-applications-google-analytics/
TBH I've personally moved away from GTM because it's too complicated with stuff like this and because my analytics changes are no longer living in/close to source control.
I will add the link to the docs for tracking virtual page views
I'm trying to track page views in my React app by using the hook provided by this package. Here's my basic setup:
This doesn't seem to register page views in Google Tag Manager, because no event type is sent with the page() call. If I change it to this:
Then everything works as expected. It took a lot of digging to uncover this issue though, and I definitely expected this to be the default behavior. Is this intended behavior? Is there something I'm missing in my set up that would have made this work?