GA4 Property Creation for a New Client SOP
Overview
- What: Create a new GA4 Account, Property, and Web Data Stream for a client website under
setup@symphonycore.com. Capture the Property ID and Measurement ID, grant the client Editor access, record the IDs in the client profile, and hand the Measurement ID off to the client's GTM container. - When: During onboarding, after the client's website domain (staging or production) is known, and before GTM Integration SOP runs. Stage 2 (SETUP) or early Stage 3 (ONBOARDING) per the Client Implementation Lifecycle.
- Who: Implementation specialist operating in the Chrome profile bound to
setup@symphonycore.com. Per KB-014 Shared Email Accounts, client analytics MUST be created undersetup@, neveradmin@. - Time Required: 20–30 minutes per client.
GA4 terminology (one-time clarification)
GA4 has three nested objects, and this SOP creates one of each per client. Don't confuse them:
| Object | Purpose | What we name it |
|---|---|---|
| Account | Top-level container that holds Properties | <ClientName>_SC_GA4 (per KB-014) |
| Property | A single website or app being measured | The client's domain (e.g. mootslaw.com) |
| Web Data Stream | The per-platform feed that emits the Measurement ID | The client's domain |
Casual conversation uses "GA4 account" to mean any of the three. This SOP uses the precise term in each step.
Prerequisites
- Access to the Chrome profile signed into
setup@symphonycore.com. - Client website domain — staging URL is acceptable for SOP execution, but the Web Data Stream URL must be set to the eventual production domain so the Measurement ID doesn't need rework at go-live.
- Client primary contact email (for the Editor invite).
- Client folder exists at
09-clients/<client-slug>/with a populated client profile. - Client industry, reporting timezone, and currency confirmed (from the engagement brief).
- GTM container already exists for the client (or will be created immediately after this SOP per GTM Integration SOP).
Procedure
-
Sign in as setup@. Open the Chrome profile for
setup@symphonycore.comand navigate tohttps://analytics.google.com. Confirm the avatar at the top-right issetup@. If it shows any other account, stop — do not proceed under the wrong identity. Switching identities mid-SOP creates GA4 properties under the wrong owner and is hard to undo cleanly. -
Create the GA4 Account. Click the Admin gear icon → Account column → Create. Set:
- Account name:
<ClientName>_SC_GA4(use the client's display name; replace spaces with underscores or hyphens consistent with the slug — e.g.MootsPellegrini_SC_GA4) - Account data-sharing settings: accept defaults unless the client has opted out of a specific setting (capture any deviation in the client profile).
- Click Next.
- Account name:
-
Create the Property. When the property creation flow continues from Step 2:
- Property name: the client's primary domain (e.g.
mootslaw.com). - Reporting time zone: match the client's primary business location (NOT SC's home timezone).
- Currency: match the client's billing currency.
- Click Next, fill in business details (industry category from engagement brief, business size), then Create.
- Property name: the client's primary domain (e.g.
-
Create the Web Data Stream. Admin → Data Streams → Add stream → Web.
- Website URL: the eventual production domain (e.g.
https://mootslaw.com) — not the staging URL. The Measurement ID is tied to the data stream, not the domain it currently resolves to; pre-setting production avoids needing to rework Measurement IDs at DNS cutover. - Stream name: the client's domain.
- Enable Enhanced Measurement: leave defaults on (page views, scrolls, outbound clicks, site search, video, file downloads).
- Click Create stream.
- Capture the Measurement ID displayed at the top of the stream detail panel — format
G-XXXXXXXXXX. This is the value GTM needs. - Capture the Stream ID (numeric, also on the stream detail panel).
- Website URL: the eventual production domain (e.g.
-
Configure data retention. Admin → Data Settings → Data Retention.
- Event data retention: set to 14 months (max under the standard tier).
- Reset user data on new activity: leave enabled.
- Save.
-
Grant client Editor access. Admin → Account Access Management (or Property Access Management for property-only scope — Account Access grants visibility across all properties in this account; for the single-property model documented here they're equivalent in scope, but Account-level invites are simpler to revoke).
- Click Add (+) → Add users.
- Email: client's primary contact.
- Role: Editor — do not select Administrator. Per KB-014, SC retains Administrator so we don't lose access if client staff turns over.
- Leave "Notify new users by email" checked.
- Click Add.
-
Record all IDs in the client profile. Open
09-clients/<client-slug>/<client-slug>-client-profile.mdand add the following under the Technical Access section (create the section if absent):GA4 Account Name:<ClientName>_SC_GA4GA4 Property ID: numeric — find at Admin → Property Settings → Property IDGA4 Measurement ID:G-XXXXXXXXXX(captured in Step 4)GA4 Web Stream ID: numeric (captured in Step 4)
-
Hand off the Measurement ID to GTM. In the client's GTM container (or create one per GTM Integration SOP if not yet provisioned):
- Create or update the GA4 Configuration tag with the Measurement ID captured in Step 4.
- Trigger: All Pages.
- Submit and publish the container version with a clear description (e.g. "GA4 wired to property
mootslaw.com(Measurement ID G-XXXXXXXXXX)"). - Do NOT install the GTM container on the website at this step — that's the job of GTM WordPress Plugin SOP.
-
Real-Time verification. In GA4: Reports → Realtime. In a separate browser window (incognito, no ad-blocker), load the client site at whichever URL has the GTM container live (staging or production). Confirm at least one Real-Time user appears within ~60 seconds.
Verification
- GA4 home for
setup@symphonycore.comshows an Account named<ClientName>_SC_GA4. - That Account contains one Property named for the client's domain.
- That Property has one Web Data Stream pointing at the production URL, with a captured Measurement ID
G-XXXXXXXXXX. - Client primary contact received the Editor invite email (or confirmed access via Admin → Account Access Management).
- Client profile at
09-clients/<client-slug>/<client-slug>-client-profile.mdshows all four IDs populated. - The client's GTM container has a published GA4 Configuration tag carrying the captured Measurement ID, triggered on All Pages.
- GA4 Reports → Realtime shows ≥1 user within 60 seconds of a test load.
- If Real-Time shows nothing: (a) confirm the GTM container is actually installed on the site (run GTM WordPress Plugin SOP verification); (b) confirm the Measurement ID in the GTM tag matches the GA4 Measurement ID character-for-character; (c) disable ad-blockers and retry.
- Once Real-Time passes, run GTM and GA4 Validation SOP for production-grade confirmation.
Related Documents
- KB-014: Shared Email Accounts — defines the
setup@symphonycore.comrole + theClientName_SC_GA4naming convention. - Client Onboarding Procedure SOP — upstream onboarding flow.
- Client Implementation Lifecycle SOP — where this SOP slots into Stage 2/3.
- GTM Integration SOP — downstream: wires GA4 events through the GTM container.
- GTM WordPress Plugin SOP — downstream: installs the GTM container on the website.
- GTM and GA4 Validation SOP — downstream: full validation using Google Tag Assistant + Search Console.
- Google Search Console Property Setup SOP — paired: GSC and GA4 are typically created together; GA4↔GSC linkage step lives in the GSC SOP.
- SEO One-Time Setup — reference: GSC and SearchAtlas integration expect GA4 to exist.
- Client Onboarding Data Fields — defines the GA4 fields captured in Step 7.