https://support.google.com/firebase/answer/7061705?hl=en states in passing that firebase_campaign is auto-generated. Unfortunately ‘Automatically collected events’ doesn’t document that particular event. When is it triggered?
firebase_campaign event is automatically triggered by user interaction and is not intended to be shown on the Firebase console. The data corresponding to event in form of the parameters is passed to Ads framework for further analysis and generating quality content.
The only way to obtain the data related to that event is via the Big Query export.
Related
I'm using Google Tag Manager (aka: GTM) to send events to my Google Analytics 4 account, some of them are custom that developers send thru the code like that:
dataLayer.push({
event: 'CA:some-event',
a: 1, // custom param
b: 2 // custom param
})
I defined a Trigger in GTM to catch all events that start with "CA:*" (as regex) and then i defined a new Tag: "Google Analytics: GA4 Event" to be invoked when the trigger fired and send the event to GA4.
I'm getting the events successfully to my GA4 account but the problem is that all params, a and b in my example, are not sent as they are not mapped to be sent from GTM layer within the GA event.
I can define Variables in GTM specifically for them but it's not dynamic and it means that every time a developer needs to send a new custom event he'll need to go to the GTM account (and usually they don't have access to it), add the variables and it makes the whole solution semi-automatic and not dynamic enough.
I hope it's clear.
Any suggestions here?
Unfortunately there is no easy way to manage GTM as the way you want.
Hope they can allow us to use just JavaScript object to send as event parameter. (They only allow Ecommerce DataLayer at this time)
But looks like your developer can decide the event parameter themselves. So the option here is if they don't have access to GTM. They can just tell the one who is handling the GTM that their new implementation. So the GTM guy can modify based on it.
If your scenario is the changing is a lot and it really need to be automatic. Then GTM API might be the way.
(But it also take some times for developer to integrate with it)
I used to manage more than 10+ properties and more than 30+ new events needs to add in a week.
So I choose Google Sheet(with Google App Script) to manage the GTM more easily.
The point here is there are still some ways to make it more automatic. Just need to leverage is it worth it do develop.
You can use the data layer variables in Google Tag Manager to dynamically send the custom parameters to Google Analytics 4.
Here's how you can set it up:
Create a Data Layer Variable in GTM to capture the custom parameters. To do this, go to Variables > New > Data Layer Variable. Name the variable and enter the parameter name in the Data Layer Variable Name field (e.g. "a" or "b").
Add the Data Layer Variables as fields in your Google Analytics 4 Event tag. To do this, go to your Google Analytics 4 Event tag and select "More Settings" > "Fields to Set". Enter the name of the Data Layer Variable you created in step 1 (e.g. "a" or "b") and the value {{a}} or {{b}} respectively in the value field.
Publish your changes in GTM.
Now, every time a custom event is pushed to the data layer, the associated custom parameters will be automatically sent to Google Analytics 4 as well. This allows you to dynamically send custom parameters without having to manually update the Google Analytics 4 Event tag each time a new custom event is added.
Note: Make sure that the custom parameters are consistent across all events, otherwise you may end up with mismatched data in Google Analytics 4.
If you feel worried about DataLayer then you can use JavaScript for scrapping Data. Anyways, Maybe It looks hard, If yes then you can connect to me for getting A-Z help. I'm GTM, GA4, and Conversion Tracking expert : Fb Profile
Thanks.
i ended with the following solution:
I changed the way I'm sending the event to be:
dataLayer.push({
event: 'CA:some-event',
data: {
a: 1, // custom param
b: 2 // custom param
}
})
set a variable in GTM called "Custom Event Data" based on the data property of the event
set the GA4 event tag to send it to GA4
set a new Custom Dimension in GA4 called "Custom Event Data" based on the data property
The limitation is that I cannot use a and b directly in GA4 as a native fields but at least I can see the variation of them in the GA4 reports
I have a SAPUI5 app with two views. One overview page with a smart table and a details page that also contains a smart table. When navigating from overview to detail page I am binding the detail view to a context with:
oView.bindElement("Product(1)");
In the smart table of the detail view product details should be displayed which are available over a Navigation Property.
"Product(1)/ProductDetails"
The problem is that now two sequential backend calls will be triggered. One from the bindElement and the other one is triggert from the smart table.
Is there any possibility to not trigger a backend call when binding the view or can that call be deferred and executed in parallel with the one from the smart table?
I think it's good to separate the backend calls (not put them in the same batch), so that you can have the detail view ready, without waiting for the Smart Table to retrieve the results of the smart table of the detailed view.
However, if you do want to batch all the backend calls, just have a look on class sap.ui.model.odata.v2.ODataListBinding. It's used by the smart table of the detail page. You can use the parameter batchGroupId to specify that you want the request to be bundled in the specified batch. Use the same batch that the one used in bindElement.
Changing the batch of the Smart Table should be possible in callback routine of onBeforeRebindTable, if you do:
oEvent.getParameter("bindingParams").parameters.batchGroupId = "MyBatch"
I have three different fields/textbox widgets, that rely on querying the same data source to be checked to avoid duplication. For reasons, I do not want to turn on the unique/required for those three fields.
I put some code to check for validation. My problem is that when I call the form's validate function, it takes some time till the validation comes back with an error message. However the form's validate returns immediately and allows people to click Submit.
How can I avoid this problem?
Block till validation kicks (setTimeout function?)
Set a separate invisible field such as working and set the validationError on the field and clear after validations clear? This will probably be a numeric field so that I can wait for all streams in parallel to finish.
Final question. is Validate a blocking function as it goes through the fields? I am guessing Yes.
I have an Event called Ecommerce_purchase, when I try to add parameter for reporting from analytics dashboard of Firebase, it gives me two errors:
Internal error ! try again (In Red in center)
One or more parameters have not been registered! try again! (right top corner)
Did you change parameters for this event? When you add/remove parameters for an event, you may get this error.
Recently, I did a tidy up for Firebase Analytics of my app. Some events' names were kept but added/removed some parameters. I then started getting this internal error. When Firebase receives one set of parameters for one event from one user and a different set of parameters from another user, it gets confused.
When you want to change parameters for an event, I suggest you change the event name as well to avoid the confusion.
Problem gets solved when you try adding parameters using incognito window of chrome .
I plan to develop an admin tool using Spring MVC. One view would show an order update, wherein a user would enter a product code and an update status. For every record in the database that is updated, I want to show in real time the record of the order updated.
What I am unsure is how to display this in the view from controller - would i be using a jquery grid to perform this or is there some feature built in spring mvc
Read this article , but seems that may be an overkill for my simple app
If a user is filling out a form in your view (entering the product code and update status) and you want to display the data in that view after they submit (without page reload), you will need to use AJAX. Hook a JavaScript function to an event in your form:
$("#submit_button").click(function(){
$.ajax("/path/to/controller/route", {
// Insert various request options...
data: {
// data to be sent along with the reqest.
}
success: function(data){
// Define function that is fired when the AJAX request returns successfully.
}
});
});
This path should hit an endpoint on the server side that will perform the update on your desired record, and can return the info about the record that you desire back to the client side. When the request returns successfully, you can do whatever you want with the data via the success function's data argument. You can find more information about the jQuery AJAX functions here and more about jQuery Events here.
If by "in real time" you mean on a timer, instead of on some user triggered event, the solution is similar, but the AJAX request would be defined in the callback function of setTimeout() call or a similarly acting jQuery provided function (such as delay())