Skip to content

Commit 1c27223

Browse files
authored
Add support for more generic events #33 (#34)
* Make it possible to track custom event * Update ReadMe with new event tracking.
1 parent e0b4676 commit 1c27223

File tree

7 files changed

+38
-13
lines changed

7 files changed

+38
-13
lines changed

README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,15 @@ Inside your main `Startup`/`Program`, call `AddGoogleAnalytics`. This will confi
5252
# How to trigger an Analytics Event
5353

5454
1. Inject `IAnalytics` wherever you want to trigger the event.
55-
2. Call `IAnalytics.TrackEvent` passing the `EventName`, `Value` and `Category` (optional).
55+
2. Call `IAnalytics.TrackEvent` passing the `EventName` and `EventData` (an object containing the event data).
56+
<br>Or<br>
57+
Call `IAnalytics.TrackEvent` passing the `EventName`, `Value` and `Category` (optional).
58+
59+
```
60+
@inject Blazor.Analytics.IAnalytics Analytics
61+
62+
Analytics.TrackEvent("generate_lead", new {currency = "USD", value = 99.99});
63+
```
5664

5765
# Changelog
5866
### v3.1.0

demo/DemoApp/DemoApp.Client/Pages/Counter.razor

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,8 @@
1616
{
1717
currentCount++;
1818
Analytics.TrackEvent("Increment", currentCount, "CountPage");
19+
20+
//Example of how to track a generic event (see also https://developers.google.com/gtagjs/reference/ga4-events)
21+
Analytics.TrackEvent("generate_lead", new {currency = "USD", value = 99.99});
1922
}
2023
}

demo/DemoApp/DemoApp.Server/Pages/Counter.razor

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
private void IncrementCount()
1616
{
1717
currentCount++;
18-
Analytics.TrackEvent("Increment", currentCount, "CountPage");
18+
//Analytics.TrackEvent("Increment", currentCount, "CountPage");
19+
20+
//Example of how to track a generic event (see also https://developers.google.com/gtagjs/reference/ga4-events)
21+
Analytics.TrackEvent("generate_lead", new {currency = "USD", value = currentCount});
1922
}
2023
}

src/Blazor.Analytics/Abstractions/IAnalytics.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ public interface IAnalytics
1010

1111
Task TrackEvent(string eventName, string eventCategory = null, string eventLabel = null, int? eventValue = null);
1212
Task TrackEvent(string eventName, int eventValue, string eventCategory = null, string eventLabel = null);
13+
Task TrackEvent(string eventName, object eventData);
1314
}
1415
}

src/Blazor.Analytics/Blazor.Analytics.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
<!-- TypeScript Build -->
4040
<ItemGroup>
41-
<PackageReference Include="Microsoft.TypeScript.MSBuild" Version="4.0.2">
41+
<PackageReference Include="Microsoft.TypeScript.MSBuild" Version="4.2.4">
4242
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
4343
<PrivateAssets>all</PrivateAssets>
4444
</PackageReference>

src/Blazor.Analytics/GoogleAnalytics/GoogleAnalyticsStrategy.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,21 @@ public async Task TrackEvent(
5555
string eventCategory = null,
5656
string eventLabel = null,
5757
int? eventValue = null)
58+
{
59+
await TrackEvent(eventName, new
60+
{
61+
event_category = eventCategory,
62+
event_label = eventLabel,
63+
value = eventValue
64+
});
65+
}
66+
67+
public Task TrackEvent(string eventName, int eventValue, string eventCategory = null, string eventLabel = null)
68+
{
69+
return TrackEvent (eventName, eventCategory, eventLabel, eventValue);
70+
}
71+
72+
public async Task TrackEvent(string eventName, object eventData)
5873
{
5974
if (!_isInitialized)
6075
{
@@ -63,12 +78,7 @@ public async Task TrackEvent(
6378

6479
await _jsRuntime.InvokeAsync<string>(
6580
GoogleAnalyticsInterop.TrackEvent,
66-
eventName, eventCategory, eventLabel, eventValue);
67-
}
68-
69-
public Task TrackEvent(string eventName, int eventValue, string eventCategory = null, string eventLabel = null)
70-
{
71-
return TrackEvent (eventName, eventCategory, eventLabel, eventValue);
81+
eventName, eventData);
7282
}
7383
}
7484
}

src/Blazor.Analytics/GoogleAnalytics/Resources/GoogleAnalyticsInterop.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ namespace GoogleAnalyticsInterop
4343
}
4444
}
4545

46-
export function trackEvent(eventName: string, eventCategory: string, eventLabel: string, eventValue: string)
46+
export function trackEvent(eventName: string, eventData: object)
4747
{
48-
gtag("event", eventName, { event_category: eventCategory, event_label: eventLabel, value: eventValue });
49-
if(this.debug){
50-
console.log(`[GTAG][Event triggered]: ${eventName}`);
48+
gtag("event", eventName, eventData);
49+
if (this.debug) {
50+
console.log(`[GTAG][Event triggered]: ${eventName}`);
5151
}
5252
}
5353
}

0 commit comments

Comments
 (0)