GA4 Purchase Event duplicate - shopify

We are running GA4 measurements with GTM embedded in our Shopify store.
It is generally working fine, but the purchase event is occasionally firing in duplicate.
I checked the search report and found several pages with 2 purchase events and 1 display count. (Not all, but only some of them.)
We created a test environment and ran the operation several times, but the same phenomenon did not occur.
I think that GTM is probably sending the purchase event twice, but I have no idea why this is happening.
I have written the js to send the event as window.dataLayer.push and send it only once on the page.
I would appreciate any information you can give me if you are having similar problems or if you have solved the problem.
Thank you in advance.

Having similar issue in Shopify Plus store. Not only purchase, but events view_item , add_to_cart are triggered twice. This view_item marked 34 on screenshot event is gtag event pushed to datalayer automatically , at the same time event view_item marked 36 is my datalayer push
Tried to investigate why is it pushed automatically and found this push in Console .Seems these duplicating events are connected with Google Shopping App conversion events because when I compared conversion labels of them in my Google Ads account , they were the same as in Tag Assistant extension and in Google Ads account (last picture contains begin_checkout event label, view_item conversion was deleted)
This app is called Feed for Google Shopping if you search in your Shopify admin or also its site is https://gsf.simprosysapps.com/.
Also tried to Deactivate in this Google shopping app Google ads conversion tracking tag but it does not help. Now I am trying to find a way how to turn off these conversion events and get rid of these pushes. Maybe if there will be possibility just to rename them, they will not double in GA4 property.

Related

Liquid - get product ID and display custom/specific information dynamically

I am trying to add a small 'lockup' / promo to a page that loads information dynamically based on page.metafield information. Replacing images, video ID's etc. Which all works just fine.
My client is asking for a small area to display a product that relates to this dynamically changing content and I am struggling to come up with a good way to do this.
The current setup is that we have 30 pages with a set of 8 metafields each page. Each one of these pages must show a different , single product with an image, title, price, buy button and another button that links out to a partner site.
I can create snippet and load almost all of this info through metafields manually (price, title etc the client could just add to another metafield) but I would prefer to load a product to pull this info so it can be added to cart. Although I can add product data manually, I still don't actually know which product will get added to the cart, because I'm on a 'page' not a 'product'.
The products themselves are using a custom template that is different to the rest of the site so that seems like its not an option. The template for this content page is just 'page' but surely I can call the product object someway? If the client entered a product ID in the metafields, is there a way of pulling that IDs data easily?
Whatever you mean by pulling ID's, but there are a couple of ways of dealing with this. One, you have a Storefront API token, allowing you to freely and securely call Shopify with JS and get back all the data about the ID you're interested in. Or, you have an App installed in the store, in which case you can setup and callback an App Proxy, providing that ID, and getting back all the info you need. Lots of options!

Show notification on a website on only the first visit

When I update my website I would like the users to get a notification, via a bar on the top of the page, stating what the update has been. How do I make it so that when the user goes back to the website that same notification doesn't pop up every time, only the first time?
I'm using Nuxt, or Vue.js. I was trying to get vue-toast to do this but I'm not sure how, but I'll use anything that works. I'm guessing I could use local storage somehow, but I would have more notifications that would need to show about once a week or so.

Custom List App available to show user stories and defects for previous sprints

The custom list app is a nice app, to show a list of items that are currently in Rally.
What I would like to get out of this list as well, is UserStories and Defects from previous Iterations.
A page can be easily setup where you have an iteration filter on top, then a list app underneath. When the page is set to show closed / past iterations it should show the user stories and defects that have been previously assigned to the applied iteration (even if they have another iteration set currently).
Is such an app available? Searching a bit did provide any usefull apps,
Blocking history seems to do a little in that area, but looks only at things that had a blocker flag set:
https://github.com/RallyApps/app-catalog/blob/master/src/legacy/BlockingHistoryApp.html
The List from this app on the other hand cannot be modified, therefor I want to combine history with the Custom Grid app as provided by Rally.
Regards
What about the Iteration Scope Change app?
Source here:
https://github.com/RallyApps/app-catalog/blob/master/src/legacy/IterationScopeChangeApp.html
It's available directly in the app catalog in the product as well.

Google calendar API move event

Heres the deal,
On googles developer website they have at the bottom of each api function description a tool to try out the api, specifically I am using the calendar api (where it says " Use the APIs Explorer bellow to ...):
https://developers.google.com/google-apps/calendar/v3/reference/events/get
This call returns an event when you enter a calendar ID and an eventID. After switching the little OAuth2.0 switch on and entering my calandarID and an event ID of mine it returns a nice 200 ok response with the event details.
Heres the problem:
I go over to the move function in the calendar api:
https://developers.google.com/google-apps/calendar/v3/reference/events/move
And fill in once again my calendar ID containing the event I want to move, the event ID (same as before) and the destination calendar ID (my other gmail account). but on executing this I get a red box with "the resource was not found" and the response is a 404.
Weird thing is I have been able to do this via the actual google calendar website by going into edit event -> drop down: calendar -> change owner, I get a box to fill in new calendar ID and it successfully went to my other gmail. Both calendars where not public when I tried via the GUI and are not public now when using the API. Preferably I want them to stay that way.
Any ideas why the api for moving a calendar event is not working for me?
To move an event using events.move, you should have write access to both the calendars. I tried to move to different gmail account but it gave 404 error. But when I tried with moving to secondary calendar, it worked for me. developers.google.com/google-apps/calendar/concepts
I was getting a 404 error, and I assumed it was a credentials problem since that's what other people online wrote about.
Currently, when I browse the Google Calendar website for each of my calendars and visit Share This Calendar, I see the email address of my service account listed with credentials to "Make changes to events". That's on both the origin calendar and the destination calendar.
So I couldn't figure out how to set up my credentials differently.
It turned out not to be a problem with credentials at all.
I had been using the "eid" from the URL of the Google Calendar event webpage and assumed it was the Event ID. It's not.
When I use a valid Event ID, the "move" command worked as documented here.

Custom variables in Google Analytics

I have an application in which I am displaying dynamic advertisements. There are some ads displayed on pages without logging in, and others on pages that you have to log in to access them.
First, I want to be able to track how many clicks have been made on a given ad accessible anonymously.
I added this code to the onclick event of the ad
onclick="ga('set', 'dimension1', '#item.Id')" // #item.Id is the Id of the Ad
I can see that the event is triggered in the GA Debugger in Chrome, but I cannot see the result in GA even after 24h.
Second, I want to be able to track the Ids of the users who have clicked on the a given ad. And I don't know if this can be done using GA.
An ideas ?
Custom Dimensions and Metrics are necessarily connected to an interaction and cannot be sent on their own - they must always be followed by an interaction hit (pageview, event, transaction etc).