Skip to content

Commit b2618ae

Browse files
authored
Merge pull request #785 from zackproser/enhanced-conversions-is-a-fucking-lie
Add conversion tracking for email signup
2 parents 66d1559 + c18c375 commit b2618ae

File tree

4 files changed

+39
-3
lines changed

4 files changed

+39
-3
lines changed

src/app/HomepageClientComponent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ export default function HomepageClientComponent({
6363
const [isConsultationOpen, setIsConsultationOpen] = useState(false)
6464

6565
const sendFormSubmissionEvent = () => {
66-
sendGTMEvent({
67-
event: "sign-up-newsletter",
66+
sendGTMEvent({
67+
event: "newsletter-signup-conversion",
6868
method: "newsletter"
6969
});
7070

src/app/checkout/result/page.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ function CheckoutResultContent() {
5252
setContent(data);
5353

5454
if (!conversionTracked && data.content.commerce?.price) {
55+
// Send enhanced conversion with user data for Google Ads
5556
sendGTMEvent({
5657
event: 'purchase',
5758
value: data.content.commerce.price,
@@ -61,7 +62,16 @@ function CheckoutResultContent() {
6162
item_name: data.content.title,
6263
item_id: data.content.slug,
6364
price: data.content.commerce.price
64-
}]
65+
}],
66+
// Enhanced conversions user data
67+
user_data: {
68+
email: data.user.email,
69+
// Add other user data if available
70+
...(data.user.name && {
71+
first_name: data.user.name.split(' ')[0],
72+
last_name: data.user.name.split(' ').slice(1).join(' ')
73+
})
74+
}
6575
});
6676

6777
setConversionTracked(true);

src/components/Newsletter.jsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { useState } from "react";
44
import { usePathname } from "next/navigation";
55
import { Button } from "@/components/Button";
66
import { track } from "@vercel/analytics";
7+
import { sendGTMEvent } from '@next/third-parties/google';
78
import clsx from 'clsx';
89

910
function MailIcon(props) {
@@ -37,6 +38,18 @@ export default function Newsletter({ title, body, successMessage, onSubscribe =
3738

3839
const sendFormSubmissionEvent = () => {
3940
console.log('Tracking newsletter signup event with:', { method: "newsletter", source: referrer, position, tags });
41+
42+
// Send to GTM for conversion tracking
43+
sendGTMEvent({
44+
event: "newsletter-signup-conversion",
45+
method: "newsletter",
46+
source: referrer,
47+
position: position,
48+
tags: tags?.join(',') || '',
49+
slug: referrer?.split('/').pop() || 'homepage'
50+
});
51+
52+
// Send to Vercel Analytics
4053
track("newsletter-signup", {
4154
method: "newsletter",
4255
source: referrer,

src/lib/analytics.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,21 @@ export function trackPurchase(purchaseData: {
1111
transactionId: string
1212
value: number
1313
itemName: string
14+
userEmail?: string
15+
userName?: string
1416
}) {
1517
if (isBrowser && (window as any).gtag) {
18+
// Set user data for enhanced conversions if available
19+
if (purchaseData.userEmail) {
20+
(window as any).gtag('set', 'user_data', {
21+
email: purchaseData.userEmail,
22+
...(purchaseData.userName && {
23+
first_name: purchaseData.userName.split(' ')[0],
24+
last_name: purchaseData.userName.split(' ').slice(1).join(' ')
25+
})
26+
});
27+
}
28+
1629
(window as any).gtag('event', 'conversion', {
1730
'send_to': 'AW-1009082087/lDmiCNPQ8ZYZEOe9leED',
1831
'value': purchaseData.value,

0 commit comments

Comments
 (0)