Meeting Title: Brainforge x J4 Project Check-in Date: 2025-08-22 Meeting participants: Robert Tseng, Zoran Selinger
WEBVTT
1 00:00:16.160 ⇒ 00:00:17.250 Zoran Selinger: Head over.
2 00:00:17.250 ⇒ 00:00:17.780 Robert Tseng: Hey, Zora.
3 00:00:20.710 ⇒ 00:00:21.680 Zoran Selinger: Good morning.
4 00:00:22.790 ⇒ 00:00:23.619 Robert Tseng: Thank you.
5 00:00:24.040 ⇒ 00:00:25.750 Zoran Selinger: Good afternoon.
6 00:00:29.360 ⇒ 00:00:30.580 Zoran Selinger: Yeah, so…
7 00:00:31.400 ⇒ 00:00:39.630 Zoran Selinger: A little bit of a mess, as you can see. I was surprised that this property was, at least at the moment.
8 00:00:39.740 ⇒ 00:00:45.680 Zoran Selinger: I mean, it was… it looks like it was that for the whole, kind of, …
9 00:00:46.180 ⇒ 00:00:53.190 Zoran Selinger: lifetime of this… of this property. It’s… the only… the only source is amplitude there.
10 00:00:53.550 ⇒ 00:00:54.100 Robert Tseng: Yep.
11 00:00:54.320 ⇒ 00:00:55.910 Zoran Selinger: Oh, that is, …
12 00:00:56.660 ⇒ 00:01:03.890 Zoran Selinger: So, you have more experience than I do with amplitude. So, what did you see before? Did you see something like this before?
13 00:01:05.310 ⇒ 00:01:09.300 Robert Tseng: No, I mean, I think what you’re saying is pretty spot on. I think, …
14 00:01:10.270 ⇒ 00:01:15.609 Robert Tseng: Yeah, I… I don’t… I don’t think they should only be sending data from Amplitude, so…
15 00:01:15.730 ⇒ 00:01:19.869 Robert Tseng: Yeah, Amplitude’s not a replacement for the… for GTM.
16 00:01:21.200 ⇒ 00:01:39.529 Zoran Selinger: Yes, exactly, exactly. So, I was talking to a Googler friend of mine that is working exactly on that, and yeah, those first visit and session start events are super important. Maybe we can, with a lot of work.
17 00:01:39.820 ⇒ 00:01:46.999 Zoran Selinger: achieve this with actually sending those two custom events from Amplitude.
18 00:01:47.230 ⇒ 00:02:00.509 Zoran Selinger: kind of… let’s say… let’s say, we would recreate the functionality of GTAG to some extent, at least, right? And maybe you can do a little bit, you know, you can do a lot of…
19 00:02:00.560 ⇒ 00:02:08.170 Zoran Selinger: If we import all the raw data to BigQuery, if we set up that connection, you can do a lot of work there, of course.
20 00:02:08.389 ⇒ 00:02:13.399 Zoran Selinger: But the interface itself, it just won’t work without those,
21 00:02:14.330 ⇒ 00:02:28.220 Zoran Selinger: with initializing GTAG and actually at least receiving the initial events, and everything that goes with it, so all the session and user properties that come with it automatically.
22 00:02:28.580 ⇒ 00:02:36.850 Zoran Selinger: … So, if we really wanna, confirm that really quickly, I would recommend…
23 00:02:37.270 ⇒ 00:02:41.539 Zoran Selinger: to go in and, at least enable a page view event.
24 00:02:41.710 ⇒ 00:02:52.189 Zoran Selinger: just for that particular property. So that would initialize… we would start receiving the first visit and session start events there.
25 00:02:52.260 ⇒ 00:03:04.710 Zoran Selinger: And, we should be able to see some stitching just from that. So, if you want to do something really quickly, we can do that, because that’s, like, 2 minutes of work.
26 00:03:04.840 ⇒ 00:03:14.530 Zoran Selinger: from their side, just enable pages for that, because I see they are… they… they do have GTM for other… other properties.
27 00:03:14.660 ⇒ 00:03:15.980 Zoran Selinger: In place, so…
28 00:03:16.130 ⇒ 00:03:24.710 Zoran Selinger: they know what to do and how to do it. Otherwise, obviously, we can do it if they can.
29 00:03:25.400 ⇒ 00:03:31.279 Zoran Selinger: So that’s on J4. What do you think? Is there… am I missing anything?
30 00:03:32.950 ⇒ 00:03:35.709 Zoran Selinger: Would you rush it?
31 00:03:36.490 ⇒ 00:03:41.780 Zoran Selinger: Or… what’s your initial thoughts? Should we…
32 00:03:43.520 ⇒ 00:03:54.530 Zoran Selinger: should we wait for us to actually properly audit everything, and then create a tagging, proper tagging plan, and then go into this? Or should we do something in short? I mean.
33 00:03:55.330 ⇒ 00:04:03.760 Zoran Selinger: from what I’m reading from you guys from before, you are fans of doing something that works quickly.
34 00:04:04.110 ⇒ 00:04:05.399 Zoran Selinger: So….
35 00:04:06.390 ⇒ 00:04:15.090 Robert Tseng: Yeah, I’m, like, looking through the feedback that we got off of the client-facing sheet. I don’t know if you got a chance to look at all this yet.
36 00:04:15.090 ⇒ 00:04:16.040 Zoran Selinger: Yes, yes.
37 00:04:16.519 ⇒ 00:04:17.509 Robert Tseng: You did? Okay.
38 00:04:17.769 ⇒ 00:04:20.919 Robert Tseng: Yeah, this is my first time looking at it. …
39 00:04:29.939 ⇒ 00:04:31.329 Robert Tseng: So…
40 00:04:37.789 ⇒ 00:04:48.829 Robert Tseng: Yeah, I think for when we meet with Allison later today, the most important thing would probably just to have a point of view on, like, what we should do about, …
41 00:04:49.299 ⇒ 00:05:00.119 Robert Tseng: Is it J4 to ads, Amplitude to ads, or both? What you’ve found is that Amplitude doesn’t give you everything you need for the ads, integration, like, things like…
42 00:05:00.589 ⇒ 00:05:05.859 Robert Tseng: First visit, sessions, kind of web properties don’t really exist.
43 00:05:05.959 ⇒ 00:05:07.059 Robert Tseng: I…
44 00:05:09.469 ⇒ 00:05:17.869 Robert Tseng: I mean, I think traditionally I’ve said that from Google Tag Manager, so I’ve never used only Amplitude to do that.
45 00:05:18.830 ⇒ 00:05:24.329 Zoran Selinger: Yeah, yeah, it’s very… it is uncommon. I’ve seen nothing online about this
46 00:05:24.630 ⇒ 00:05:32.310 Zoran Selinger: it being used this way. There’s absolutely nothing. I just couldn’t find anything. It’s not an intended use case.
47 00:05:32.410 ⇒ 00:05:35.400 Zoran Selinger: Yeah. … So…
48 00:05:36.810 ⇒ 00:05:50.720 Zoran Selinger: Yeah, and Google Ads, I mean, it’s very simple, it just seems to me… I have no… so, nothing’s been recorded at any point in time, so I have no proof that it was working at any point.
49 00:05:51.380 ⇒ 00:05:55.449 Zoran Selinger: So I have no proof of that, so I… we just have to ask them.
50 00:05:55.620 ⇒ 00:05:59.880 Zoran Selinger: Was this… was this connection working at some point or not?
51 00:06:00.490 ⇒ 00:06:01.130 Robert Tseng: Yeah.
52 00:06:01.330 ⇒ 00:06:15.949 Zoran Selinger: If… if the answer is no, then it’s probably that JSON key file. It’s… it’s very likely that… right now, it’s not working, it just… the error message points to, sounds like it’s some kind of formatting issue.
53 00:06:15.950 ⇒ 00:06:17.319 Robert Tseng: It’s a formatting issue.
54 00:06:17.700 ⇒ 00:06:22.979 Zoran Selinger: So that’s… okay, we can solve that pretty easily. if…
55 00:06:23.630 ⇒ 00:06:29.709 Zoran Selinger: just from knowing, because I’ve done a lot of click importing from the API,
56 00:06:30.410 ⇒ 00:06:41.620 Zoran Selinger: in my other work. Yep. And you really don’t need anything apart from Google Click ID and a correct timestamp. So, I don’t expect the system to make a mistake there.
57 00:06:41.880 ⇒ 00:06:47.659 Zoran Selinger: For Google Ads. So I, yeah, I see no reason for this not to work.
58 00:06:48.120 ⇒ 00:06:55.639 Zoran Selinger: There shouldn’t be anything complicated. We are collecting Google ClickID properly and mapping properly to… on the connection.
59 00:06:55.870 ⇒ 00:07:12.030 Zoran Selinger: for Google Ads, and we should be good there. There should be no issues. If there are issues, if the connection is working and we still don’t see anything, then it’s something to do with the timestamp, because that’s really the only two things.
60 00:07:12.220 ⇒ 00:07:15.559 Zoran Selinger: That, are relevant there. ….
61 00:07:17.720 ⇒ 00:07:18.070 Robert Tseng: Yeah.
62 00:07:18.310 ⇒ 00:07:23.010 Zoran Selinger: Need to figure out what, they, kind of… how…
63 00:07:23.500 ⇒ 00:07:39.550 Zoran Selinger: what they’re thinking. I see, like, this kind of implementation that they have has been… has been in place since February in that property. We have data, so I’m kind of surprised that they were just keeping it that way, and…
64 00:07:40.240 ⇒ 00:07:44.789 Zoran Selinger: Oh, kind of didn’t fix it. I see, earlier on, they had,
65 00:07:45.540 ⇒ 00:07:48.200 Zoran Selinger: They had more amplitude events imported.
66 00:07:48.600 ⇒ 00:07:51.190 Zoran Selinger: But it just did not stitch properly.
67 00:07:51.330 ⇒ 00:07:57.360 Zoran Selinger: Because I think the, it’s, it’s clear, yeah, we, we need, we need client-side,
68 00:07:57.590 ⇒ 00:07:58.739 Zoran Selinger: As well, there.
69 00:08:02.840 ⇒ 00:08:08.529 Zoran Selinger: I see no, also no nothing in the other ones.
70 00:08:09.150 ⇒ 00:08:10.810 Zoran Selinger: So I couldn’t confirm.
71 00:08:11.210 ⇒ 00:08:28.810 Zoran Selinger: that the amplitude events will work. I couldn’t confirm that, so I guess we’ll… we’ll just ask. So, if it worked for another property, we need to find the differences there, but I think there’s nothing like that. They have…
72 00:08:28.990 ⇒ 00:08:35.530 Zoran Selinger: It’s only this property that’s relevant for it. … in turn.
73 00:08:35.539 ⇒ 00:08:35.949 Robert Tseng: Yeah.
74 00:08:35.950 ⇒ 00:08:37.169 Zoran Selinger: Compliance.
75 00:08:37.549 ⇒ 00:08:47.199 Zoran Selinger: So I figured out, like, these events that they are naming as different, psycho… famous psychologists, right? …
76 00:08:48.120 ⇒ 00:08:58.159 Zoran Selinger: These are just, you know, events on the interactions on the website, different ones. I don’t know if there are any restrictions around
77 00:08:58.530 ⇒ 00:09:05.240 Zoran Selinger: You know, at least having First visit, session start, and PageO events.
78 00:09:06.030 ⇒ 00:09:11.329 Zoran Selinger: I hope that is… that’s not, … A problem with compliance.
79 00:09:12.060 ⇒ 00:09:17.750 Zoran Selinger: Because if that is a problem with compliance, I… we might be blocked there.
80 00:09:18.380 ⇒ 00:09:37.240 Robert Tseng: No, I mean, yeah, the compliance is pretty straightforward. Click IDs, session stitching, none of that matters. It’s just not passing PII data into GA4. So, we’re not sending, like, names, emails, phone number, nothing that’s personally identifying. We just have to hash all of that, or just not send it.
81 00:09:37.440 ⇒ 00:09:38.170 Zoran Selinger: Yeah, oh.
82 00:09:38.630 ⇒ 00:09:39.859 Robert Tseng: Yeah, that’s it.
83 00:09:40.580 ⇒ 00:09:44.070 Zoran Selinger: Okay, so I guess, yeah.
84 00:09:45.130 ⇒ 00:09:58.489 Zoran Selinger: if you think of anything else, let me know before the meeting, and… yeah, we’ll see, we’ll see what they say. I think we still lack a lot of background information from them.
85 00:09:58.710 ⇒ 00:10:14.289 Robert Tseng: Okay, so my understanding after reading this doc, they have two properties. This main one you already checked out, it hasn’t been working since February. They created this new one, this doesn’t really matter, like, it’s… they’re not using it. The one that only they’ve been using is this one.
86 00:10:14.430 ⇒ 00:10:22.979 Robert Tseng: And the events that they’ve been sending from Amplitude… I mean, I guess I’m looking at this doc, and it’s saying, like, you can…
87 00:10:23.170 ⇒ 00:10:27.640 Robert Tseng: basically use Amplitude like GTM, and…
88 00:10:27.890 ⇒ 00:10:36.930 Robert Tseng: send server-side events to J4. But we’re recommending, or you’re recommending now, that we should just…
89 00:10:37.710 ⇒ 00:10:46.039 Robert Tseng: set up, Google Tag, and… have… have GTM natively capture
90 00:10:46.250 ⇒ 00:10:49.809 Robert Tseng: Kind of, like, clicks and sessions or whatever.
91 00:10:50.030 ⇒ 00:10:53.510 Robert Tseng: … It’s not super clear to me….
92 00:10:53.510 ⇒ 00:10:53.979 Zoran Selinger: It seemed like.
93 00:10:53.980 ⇒ 00:10:58.699 Robert Tseng: you want to just circumvent amplitude, you just want to go GA4 directly into ads?
94 00:10:58.700 ⇒ 00:11:02.470 Zoran Selinger: Oh, no, not at all. So, these are two separate things.
95 00:11:02.470 ⇒ 00:11:03.060 Robert Tseng: Yeah.
96 00:11:03.060 ⇒ 00:11:10.149 Zoran Selinger: These are two separate things, so when I’m talking about GA4, I’m just talking about the connection between GA4 and amplitude.
97 00:11:10.420 ⇒ 00:11:11.110 Robert Tseng: Okay.
98 00:11:11.390 ⇒ 00:11:30.820 Zoran Selinger: Because I would, I would use just… when it comes to Google Ads and implemented, I would just use the native, native connection. I don’t see why that wouldn’t work, because it’s… that’s a really simple implementation. At least on the back end, I know the API very well, so that’s a simple one, really. That should work. Okay.
99 00:11:30.920 ⇒ 00:11:35.330 Zoran Selinger: So, yeah, I wouldn’t… I wouldn’t go through… through GA4 at all.
100 00:11:35.330 ⇒ 00:11:35.940 Robert Tseng: Okay.
101 00:11:36.240 ⇒ 00:11:42.410 Zoran Selinger: But still, GF4, we should have it on hand and been properly set up.
102 00:11:42.890 ⇒ 00:11:46.590 Zoran Selinger: So these are, yeah, two different things, two different things, completely.
103 00:11:46.800 ⇒ 00:11:47.580 Zoran Selinger: …
104 00:11:47.830 ⇒ 00:12:06.309 Zoran Selinger: I think Google Ads is fixable probably today, right? Yeah. We have a correct JSON file that can actually go through. I believe this will work. We don’t have many… we don’t have many settings there, it’s just mapping the Google Click ID, and there are, like, order…
105 00:12:06.310 ⇒ 00:12:22.339 Zoran Selinger: like, currency and all that, which we don’t need for… in our use case. We just need… we just need Google Click ID mapping, and that’s correct. They are collecting. I checked user profiles on… on Amplitude. We do have Google ClickIDs, so…
106 00:12:22.830 ⇒ 00:12:27.620 Zoran Selinger: We are good there. That should… that should… that should be fixable immediately.
107 00:12:29.110 ⇒ 00:12:32.410 Zoran Selinger: Yeah, but GF4 is a little bit more work there.
108 00:12:34.230 ⇒ 00:12:40.509 Robert Tseng: Okay, got it. Yeah, so yeah, so the ad stuff we can fix, yeah, I think that would be…
109 00:12:40.880 ⇒ 00:12:48.049 Robert Tseng: that’s what we would… I don’t know, is there… do we have to wait for her to fix it? Can we… can we do that now, before the call, so we can have that done?
110 00:12:48.050 ⇒ 00:12:50.339 Zoran Selinger: We need a service account.
111 00:12:50.340 ⇒ 00:12:50.860 Robert Tseng: Oh, okay.
112 00:12:51.610 ⇒ 00:13:02.760 Zoran Selinger: I mean, I can’t download the file that was already uploaded from the interface to correct… We can’t generate our own. So, we need that file, right?
113 00:13:03.110 ⇒ 00:13:03.730 Robert Tseng: Yeah.
114 00:13:03.880 ⇒ 00:13:09.520 Robert Tseng: … I think she made us both… Maybe we don’t…
115 00:13:09.960 ⇒ 00:13:13.490 Robert Tseng: invited as an admin… no, it’s only an amplitude.
116 00:13:13.490 ⇒ 00:13:15.510 Zoran Selinger: is it on GCP?
117 00:13:16.810 ⇒ 00:13:20.200 Robert Tseng: … yeah, I’m not entirely sure.
118 00:13:20.480 ⇒ 00:13:25.889 Zoran Selinger: Yeah, I’ll try, I’ll try, I’ll try my address, my brain forge.
119 00:13:26.010 ⇒ 00:13:29.110 Zoran Selinger: Andres… And I’ll try….
120 00:13:36.080 ⇒ 00:13:41.909 Robert Tseng: Yeah, if not, maybe we just ask them for it in the Slack, kind of, beforehand, they can just… they can share it with us, or…
121 00:13:42.070 ⇒ 00:13:47.580 Robert Tseng: I don’t think she’ll know how to get it, so that’s… that’s my… I was hoping we can go get it ourselves.
122 00:13:49.510 ⇒ 00:14:00.970 Zoran Selinger: Yeah, yeah, okay, so, on… on mine, it’s not there, and let’s see, for the… Okay…
123 00:14:04.420 ⇒ 00:14:07.159 Zoran Selinger: For our group address.
124 00:14:16.830 ⇒ 00:14:20.810 Zoran Selinger: I see we have access to no… yeah, no projects.
125 00:14:21.230 ⇒ 00:14:22.429 Zoran Selinger: here, either.
126 00:14:27.090 ⇒ 00:14:30.280 Zoran Selinger: So yeah, I don’t think we have access to the GCP.
127 00:14:34.180 ⇒ 00:14:34.800 Robert Tseng: Okay.
128 00:14:35.040 ⇒ 00:14:35.560 Zoran Selinger: Yeah.
129 00:14:35.950 ⇒ 00:14:50.630 Zoran Selinger: So if they… if they can share it, we can… I don’t know if we need to have sufficient permissions to… to create service accounts and download keys and all that, but I’m sure Adam will… will be able to do it.
130 00:14:52.220 ⇒ 00:14:53.760 Zoran Selinger: Even before the call.
131 00:14:53.970 ⇒ 00:15:00.479 Zoran Selinger: Just try a new… just try a new service account or new key file, and that’s it.
132 00:15:01.140 ⇒ 00:15:01.740 Robert Tseng: Yeah.
133 00:15:02.040 ⇒ 00:15:10.370 Robert Tseng: Okay, so you’ll… you’ll… we’ll address the ads thing. The GA4 solution, I think, yeah, I guess you can propose that as well.
134 00:15:10.480 ⇒ 00:15:15.520 Robert Tseng: Yeah, we’re gonna go with a hybrid approach, it seems like what we’re gonna do.
135 00:15:15.760 ⇒ 00:15:16.930 Robert Tseng: …
136 00:15:17.780 ⇒ 00:15:25.330 Robert Tseng: That will fix the ad connections, the event mapping discrepancies. You think that we’ll be able to address that with the hybrid approach?
137 00:15:25.600 ⇒ 00:15:33.760 Robert Tseng: Yeah, this stuff, I’ll speak to, because I’m still… that’s all purely amplitude things, and… Yeah, yeah.
138 00:15:34.310 ⇒ 00:15:47.490 Robert Tseng: And then the user stitching, I think, if we can add… if we could just touch on. Basically, I just want to be able to go through them, make sure that they feel comfortable with… I mean, yeah, that we’re all cleared on, like, on these… on these… kind of all these different sections, pretty much, so….
139 00:15:48.080 ⇒ 00:15:51.810 Zoran Selinger: Yeah, hopefully it looks fine, you said that yourself.
140 00:15:51.810 ⇒ 00:15:57.840 Robert Tseng: Yeah, seems like they want us to look at Azure when it gets hooked up, so… but that’s not gonna happen today, which is fine.
141 00:15:58.290 ⇒ 00:16:14.050 Zoran Selinger: Okay, cool. Okay, so I’ll recommend that hybrid approach. I’ll explain that, kind of, GI4 model, works with those, with those, kind of, necessary events that we… we don’t have when we have this, this approach. We can…
142 00:16:14.050 ⇒ 00:16:20.509 Zoran Selinger: We can simulate that, or we can just implement GTAG and let it do its work.
143 00:16:20.510 ⇒ 00:16:27.639 Zoran Selinger: If we don’t, we don’t have to implement every event there, through client-side, just
144 00:16:27.930 ⇒ 00:16:32.980 Zoran Selinger: Just the pages, so we have… we have something to stitch to, and that’s it.
145 00:16:33.590 ⇒ 00:16:35.090 Robert Tseng: Okay, that sounds good.
146 00:16:35.270 ⇒ 00:16:40.240 Zoran Selinger: I would recommend that, okay? Okay, we’ll… we’ll talk then. In the meantime, …
147 00:16:40.400 ⇒ 00:16:47.219 Zoran Selinger: If there’s anything, let me know. I’m gonna be away from the office for a little while, …
148 00:16:47.580 ⇒ 00:16:50.550 Zoran Selinger: But I’ll be back later tonight.
149 00:16:52.680 ⇒ 00:16:53.980 Robert Tseng: Okay, sounds good.
150 00:16:54.540 ⇒ 00:16:57.289 Zoran Selinger: Alright, thank you. Alright, talk to you later. Bye.