angular / angular/angularfire

Events in Analytics are missing In the dashboard /Big query

Open
#3,470 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
7.8k
Forks
2.2k
Avg merge
22h 28m
Merged PRs (30d)
6

Description

Version info
Angular: 14

Firebase: 9.X.X

AngularFire: 7.4.1

Other (e.g. Ionic/Cordova, Node, browser, operating system): chrome, phones, Edge, safari

How to reproduce these conditions: trying to upload app

Steps to set up and reproduce: X

Sample data and security rules: X

Debug output
** In the debugger, I also notice the term 'undefined.' I'm not sure if this is related. Here's a snippet of what I see in the debugger:

js?l=dataLayer&id=G-XXXX:296 Sending event "event_name" to undefined
js?l=dataLayer&id=G-XXXX:296 Request parameters:
js?l=dataLayer&id=G-XXXX:296 en: event_name
js?l=dataLayer&id=G-XXXX:296 ep.origin: firebase
js?l=dataLayer&id=G-XXXX:296 ep.some_id: 12123124
js?l=dataLayer&id=G-XXXXX:296 ep.some_name: Name 123 Name

js?l=dataLayer&id=G-XXXX:296 Sending request: https://www.google-analytics.com/g/collect?v=2&tid=G-.......
**

** Output from firebase.database().enableLogging(true); ** X

** Screenshots ** - X

Expected behavior

I have an Angular application integrated with Firebase, and the data is exported to BigQuery.

In my Angular app, there is a requirement to send an event to analytics upon loading. However, I've noticed that only 80-90% of other events(in other application) are being tracked, even for the same user and the same device/platform, and there are no ad blockers in use.

I have attempted to use async/await to ensure that the event is sent reliably. Is this approach appropriate? Does the code appear to be correct? Is there a way to ensure that the event will always be sent?

Could it be beneficial to send another event elsewhere? Is there a potential issue with the data itself?

Is there something that can be improved in the analytics configuration itself?

When using the Analytics Debugger Chrome extension, I can see the events, but testing with external users is challenging.

My goal is to get 100%of the events

Actual behavior

component

this.test$ = this.data$.pipe(map((data) => data.test));
this.test$.subscribe(async (test) => {
const analyticsEvent: AnalyticsEventData = {
some_id: string,
some_id2: string
some_name: string,
some_id: string,
some_date: firebase-timestampObject.toMillis(),
app_name: 'string',
};

this.analyticsService.data = analyticsEvent;

await this.analyticsService.custonlogEvent('event_name');
await this.analyticsService.setUserProperties(analyticsEvent);

});

any my analytics service

import { Injectable } from '@angular/core';
import { AngularFireAnalytics } from '@angular/fire/compat/analytics';

@Injectable({
providedIn: 'root',
})
export class AnalyticsService {
constructor(private analytics: AngularFireAnalytics) {}
private _data:AnalyticsEventData;

get data() {
return this._data;
}
set data(value) {
this._data = value;
}

async customlogEvent(eventName: string, params?: { [key: string]: any }) {
try {
if (!this._data) throw new Error('error');

const generalParameters = this._data;

const paramsObject = {
...generalParameters,
...params,
};
await this.analytics.logEvent(eventName, paramsObject);
} catch (e) {
console.log(e);
}

return true;
}

async setUserProperties(params: { [key: string]: any }) {
return await this.analytics.setUserProperties(params);
}
}

Contributor guide

Open the contributing guide

Research direction

Start with the Angular component subscription and AnalyticsService.customlogEvent, then inspect the calls to AngularFireAnalytics.logEvent and setUserProperties. Reproduce the reported missing events and compare the debugger output with the events exported to BigQuery; done means the cause of the missing events and any supported reliability limits are established.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, firebase, typescript
Domain
analytics, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.