Step-by-step setup guide

GA4 + Search Console
for all 13 SaaS apps

Rename your existing GA4 property, add 12 new data streams, drop the IDs into your code, then connect Search Console. Estimated time: 90 minutes total.

Rename GA4
Add Streams
Fix Code
Search Console
Verify
Current State — Before You Start
App Domain GA4 ID Now Vercel Analytics Search Console
Bloggybloggy.onlineG-WT6X97C78G ✅❌ Not verified
Rankeerankee.onlineG-WT6X97C78G ⚠️ shared❌ Not verified
Addeeaddee.onlineG-ADDEE123456 ❌ fake❌ Not verified
Dasheedashee.onlineNone❌ Not verified
Displayeedisplayee.onlineNone❌ Not verified
Servveeservvee.onlineNone❌ Not verified
Replyeereplyee.onlineNone❌ Not verified
QRcodeeqrcodee.onlineNone❌ Not verified
Aproveeaprovee.onlineNone❌ Not verified
Signneesignnee.onlineNone❌ Not verified
Complieecompliee.onlineNone❌ Not verified
Assisteeassistee.onlineNone❌ Not verified
Rewardeerewardee.onlineNone❌ Not verified
Rankee issue: Rankee is currently sending traffic into Bloggy's GA4 stream (G-WT6X97C78G). You can't separate that old data — but going forward, once Rankee gets its own stream ID the data splits cleanly. Don't worry about the history.

1
Rename your GA4 property
~5 minutes · analytics.google.com
1

Open Google Analytics

Go to analytics.google.com and sign in with your Google account (the one connected to Bloggy/Rankee).

2

Find the Admin panel

Click the gear icon ⚙ Admin at the bottom-left of the sidebar.

⚙ Admin
3

Go to Property Settings

In the middle column (Property column), click Property Settings.

Admin
Property column
Property Settings
4

Rename the property

Click into the Property name field at the top and change it to:

Boom Media SaaS Portfolio

Then click Save at the bottom of the page.

Done: Your GA4 property is now the master portfolio property. The existing measurement ID G-WT6X97C78G stays exactly the same — nothing in your code needs to change for Bloggy yet.
5

Rename the existing Bloggy data stream

Still in Admin, go to Data Streams (under Property column). You'll see one stream — probably named "bloggy.online" or similar.

Admin
Property column
Data Streams

Click on it → click the pencil/edit icon → change Stream name to Bloggy → Save.

Note: The measurement ID G-WT6X97C78G does NOT change when you rename the stream. It stays the same forever.

2
Add 12 new data streams
~30 minutes · one per app · write down each G- ID as you go
1

Add a stream — repeat this for each app below

In Admin → Data Streams, click Add stream → choose Web.

Admin
Data Streams
Add stream
Web

Fill in Website URL and Stream name as shown below. Leave "Enhanced measurement" ON. Click Create stream.

After creating, copy the Measurement ID (starts with G-). You'll need it in Phase 3.

2

Create these 12 streams in order

Use this table. Fill in the Measurement ID column as you go — you'll paste these into the code later.

# Stream Name Website URL Measurement ID (write it here)
1Rankeehttps://rankee.onlineG- _ _ _ _ _ _ _ _ _
2Addeehttps://addee.onlineG- _ _ _ _ _ _ _ _ _
3Dasheehttps://dashee.onlineG- _ _ _ _ _ _ _ _ _
4Displayeehttps://displayee.onlineG- _ _ _ _ _ _ _ _ _
5Servveehttps://servvee.onlineG- _ _ _ _ _ _ _ _ _
6Replyeehttps://replyee.onlineG- _ _ _ _ _ _ _ _ _
7QRcodeehttps://qrcodee.onlineG- _ _ _ _ _ _ _ _ _
8Aproveehttps://aprovee.onlineG- _ _ _ _ _ _ _ _ _
9Signneehttps://signnee.onlineG- _ _ _ _ _ _ _ _ _
10Complieehttps://compliee.onlineG- _ _ _ _ _ _ _ _ _
11Assisteehttps://assistee.onlineG- _ _ _ _ _ _ _ _ _
12Rewardeehttps://rewardee.onlineG- _ _ _ _ _ _ _ _ _
Tip: Keep the GA4 tab open in one browser window while you do the code changes in another. After you create each stream, copy the ID immediately before clicking away — it's easy to lose track.

3
Update the code — all 13 apps
~30 minutes · same pattern in every layout.tsx · send Claude your 12 IDs and it'll do this for you
1

The standard GA4 code block

Every app needs this exact pattern in its src/app/layout.tsx. Bloggy and Rankee already have it — you're just updating the ID and adding it to the other 11.

src/app/layout.tsx — full pattern
import Script from 'next/script' // add this import if missing import { Analytics } from '@vercel/analytics/react' // ↓ Replace with the real G-XXXXXXXXXX for THIS app const GA_ID = 'G-XXXXXXXXXX' // ... metadata, font setup, etc. unchanged ... export default function RootLayout({ children }) { return ( <html lang="en"> <body> {children} <Analytics /> {GA_ID && ( <> <Script src={`https://www.googletagmanager.com/gtag/js?id=${GA_ID}`} strategy="afterInteractive" /> <Script id="ga4-init" strategy="afterInteractive">{` window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '${GA_ID}'); `}</Script> </> )} </body> </html> ) }
Easy shortcut: Once you have all 12 IDs, just message Claude: "Here are my 12 GA4 measurement IDs: [paste the table]. Please update all 13 layout.tsx files and commit+push each app." — it will do the entire thing in one shot.
2

What changes per app

Only one line changes between apps — the GA_ID constant. Everything else is identical.

App File to edit Change needed
Bloggy Bloggy/src/app/layout.tsx No change Already has correct ID
Rankee Rankee/src/app/layout.tsx Update ID Replace shared Bloggy ID → Rankee's new ID
Addee Addee/src/app/layout.tsx Fix placeholder Replace G-ADDEE123456 → real ID
Dashee Dashee/src/app/layout.tsx Add GA4 block Add import Script + GA_ID + script tags
Displayee Displayee/app/src/app/layout.tsx Add GA4 block Note: app is in /app subfolder
Servvee Servvee/src/app/layout.tsx Add GA4 block
Replyee Replyee/src/app/layout.tsx Add GA4 block
QRcodee QRcodee/src/app/layout.tsx Add GA4 block
Aprovee Approvee/src/app/layout.tsx Add GA4 block
Signnee Signnee/src/app/layout.tsx Add GA4 + Vercel Analytics Missing both
Compliee Compliee/src/app/layout.tsx Add GA4 + Vercel Analytics Missing both
Assistee Assistee/src/app/layout.tsx Add GA4 block
Rewardee Rewardee/src/app/layout.tsx Add GA4 block
3

Commit and push each app after updating

After editing each layout.tsx, stage and push. Vercel will auto-deploy within ~60 seconds.

Or: Update all 13 files first, then push all 13 in one pass. Either way works — just don't forget to push.

4
Set up Google Search Console
~15 minutes · search.google.com/search-console · verify all 13 domains via GA4
1

Open Search Console

Go to search.google.com/search-console → sign in with the same Google account as your GA4.

2

Add each domain as a property

Click + Add property. Choose Domain (not URL prefix) — this covers http, https, www and non-www in one shot.

+ Add property
Domain
addee.online

Add all 13 domains: bloggy.online, addee.online, rankee.online, dashee.online, displayee.online, servvee.online, replyee.online, qrcodee.online, aprovee.online, signnee.online, compliee.online, assistee.online, rewardee.online

3

Verify via DNS (easiest for .online domains)

When you add a Domain property, GSC gives you a TXT record to add to your DNS. It looks like:

google-site-verification=abc123xyz456...

Add this TXT record in your domain registrar (wherever you manage the .online domains). GSC verifies automatically within minutes to 24 hours.

Shortcut: Once GA4 is receiving data (after Phase 3 code push), you can link GSC to GA4 and GA4 will auto-verify properties where it already has traffic. Go to GA4 → Admin → Property → Search Console links.
4

Link Search Console to GA4

After verifying each GSC property, connect them to your GA4 property so you can see organic search data inside GA4.

GA4 Admin
Property column
Search Console links
Link

Select your GSC account → choose which GSC properties to link → confirm. Do this once per domain.

What you get: In GA4 Reports → Acquisition → Search Console, you'll see what search queries are bringing users to each app — keywords, clicks, impressions, and rankings all inside GA4.

5
Verify everything is working
~10 minutes · use GA4 Realtime to confirm each app is sending data
1

Test with GA4 Realtime

In GA4, go to Reports → Realtime. Open each app's website in a separate tab. Within 30 seconds, you should see a user appear in Realtime.

Reports
Realtime

If you see traffic — the stream is working. If not, check: correct G- ID in the code, app is deployed, no ad blockers in your test browser.

2

Use the GA4 DebugView for deeper testing

In Chrome, install the Google Analytics Debugger extension. Then in GA4 go to Admin → DebugView — it shows every event firing in real time from your browser session, confirming the tag is loaded correctly.

3

Confirm Search Console is receiving data

GSC takes 24–72 hours before showing search data even after verification. After 3 days, open each GSC property and check the Overview — you should see impressions starting to come in.

If GSC shows zero data after 72 hours: Check that the domain TXT verification record is still in your DNS (registrars sometimes drop them). Re-verify if needed.

Master Checklist
Rename GA4 property to "Boom Media SaaS Portfolio"
Rename existing stream to "Bloggy"
Create 12 new data streams — one per remaining app — and write down each G- ID
Update Rankee layout.tsx — replace shared Bloggy ID with Rankee's own ID
Fix Addee layout.tsx — replace fake G-ADDEE123456 with real Addee ID
Add GA4 code to 10 remaining apps (Dashee, Displayee, Servvee, Replyee, QRcodee, Aprovee, Signnee, Compliee, Assistee, Rewardee)
Add Vercel Analytics to Signnee and Compliee (both missing it)
Commit + push all 13 apps — Vercel auto-deploys each one
Verify in GA4 Realtime — visit each app and confirm data is coming in
Add 13 properties to Search Console (Domain type, not URL prefix)
Add DNS TXT verification records at your domain registrar for all 13 domains
Link GSC to GA4 — Admin → Search Console links → link all 13 properties
Wait 72 hours — check GSC for first impressions data
Hand off to Claude — Code Step
Once you have all 12 measurement IDs, paste this message:
Here are my GA4 measurement IDs for all 12 new streams. Please update each app's layout.tsx with the correct GA4 ID, add Vercel Analytics to Signnee and Compliee, then commit and push all 13 apps to GitHub: Bloggy → G-WT6X97C78G (already done — no change) Rankee → G-__________ Addee → G-__________ Dashee → G-__________ Displayee → G-__________ Servvee → G-__________ Replyee → G-__________ QRcodee → G-__________ Aprovee → G-__________ Signnee → G-__________ Compliee → G-__________ Assistee → G-__________ Rewardee → G-__________