9 min read
Analytics-Driven Digital Marketing: A San Francisco Guide
Most marketing budgets in a market as expensive as San Francisco are wasted not because the ads are bad, but because nobody is measuring the right thing. The fix is unglamorous: pick three or four outcomes that map to revenue, track them properly in Google Analytics 4, and review them on a fixed schedule. This guide walks through how we set that up for WordPress sites, what to measure, and which numbers to ignore.
The Bay Area angle matters more than it sounds. Click costs for legal, SaaS, real estate and professional-services keywords in San Francisco are among the highest in the US, so a campaign that “feels” fine can quietly burn $4,000 a month on traffic that never converts. Analytics is how you find out in week two rather than month six.
Start with outcomes, not dashboards

Before opening Analytics, write down what a “win” looks like for the business. For a law firm it is a qualified consultation request. For a SaaS startup it is a trial signup that activates. For a local restaurant group it is a reservation or an online order. Everything else (sessions, bounce rate, time on page) is a diagnostic, not a goal.
In our agency projects we cap this list at four primary outcomes and two supporting ones. More than that and the weekly review turns into a spreadsheet nobody reads. A useful test: if this number doubled tomorrow, would the owner notice in the bank account? If not, it is not a primary outcome.
A worked example
A SoMa-based B2B SaaS company we worked with was reporting “organic traffic up 38%” to investors. Once we wired up proper event tracking, the picture changed: most of that traffic landed on a glossary page that had an 0.2% trial conversion rate. The pricing page, with a fraction of the traffic, converted at 6%. The strategy flipped from “write more glossary content” to “get more people to the pricing page”, and trials rose 22% in a quarter on flat traffic.
Set up Google Analytics 4 properly on WordPress
GA4 is the only Google Analytics there is now (Universal Analytics stopped processing data in July 2023 and the remaining properties were deleted in 2024). If you are still looking at a UA report in a slide deck, it is stale.
On WordPress you have three sane ways to install it:
- Site Kit by Google (free, wordpress.org). Connects GA4, Search Console, PageSpeed Insights and Ads in one plugin, and shows the reports inside the WordPress dashboard. This is what we install by default on content and brochure sites.
- Google Tag Manager via a lightweight container plugin (GTM Kit or GTM4WP). Better when you need custom events, multiple ad pixels, or a developer who wants to change tracking without touching theme files.
- A WooCommerce-specific plugin for stores. WooCommerce does not send
begin_checkout,add_to_cartorpurchaseevents to GA4 on its own. You need either the official Google for WooCommerce extension, a dedicated GA4 ecommerce plugin, or a GTM data layer setup.
Whichever route you choose, verify it with GA4’s Realtime report and the DebugView (Admin → DebugView) before you trust any number. We have audited plenty of sites that had two tracking snippets firing, which doubles pageviews and makes every rate metric wrong.
Key events (what used to be called conversions)
In March 2024 Google renamed GA4 “conversions” to key events, reserving the word “conversion” for Google Ads. The mechanics are the same: go to Admin → Events, find the event, and toggle “Mark as key event”. Google’s own documentation on key events covers the details.
Typical key events for a WordPress site:
generate_leadwhen a contact form is submitted (Site Kit, WPForms, Gravity Forms and Contact Form 7 can all fire this).sign_upfor account or newsletter registration.purchasewith value and currency for WooCommerce orders.clickon atel:link, which is the single most underrated metric for local service businesses. On a phone-heavy audience it can represent half of all leads.
Mark only events that reflect an actual business outcome. A scroll-depth event is useful context; it is not a key event.
The six reports worth reviewing every week

GA4’s default interface is sprawling. These are the views we pin for client reviews:
| Report | Where | What it tells you |
|---|---|---|
| Traffic acquisition by session default channel group | Reports → Acquisition → Traffic acquisition | Which channels bring sessions, and, with the Key events column, which bring outcomes |
| Landing page + key event rate | Reports → Engagement → Landing page | Which pages actually convert. Sort by session key event rate, not by sessions |
| Google Ads campaigns | Reports → Acquisition → Google Ads | Cost per key event per campaign, once Ads is linked |
| Path exploration | Explore → Path exploration | Where people go after the landing page, and where they drop |
| Funnel exploration | Explore → Funnel exploration | Step-by-step drop-off for checkout, onboarding or multi-step forms |
| Tech → Device category | Reports → Tech → Overview | Mobile vs desktop conversion gap. A 3x gap usually means a mobile UX problem |
Pair these with Search Console (query-level data GA4 cannot see) and your ad platform’s own reports. For search-led sites, our guide to WordPress SEO best practices covers how to read Search Console alongside Analytics.
Segment by what matters locally
A San Francisco business usually has at least three distinct audiences: people physically in the city, people in the wider Bay Area, and everyone else. They behave differently and should be measured separately.
Build a comparison in any GA4 report using City or Region. What we consistently see for local service businesses is that out-of-area traffic inflates sessions and deflates conversion rate, which makes the whole site look weaker than it is. Once you segment, the local conversion rate is often two to three times the blended figure, and that is the number to optimise and to report.
The same logic applies to ads. If Google Ads location targeting is set to “presence or interest” instead of “presence”, you will pay for clicks from people researching San Francisco from other states. The analytics segment is how you spot it; the fix is in the Ads campaign settings.
Turn data into decisions: a monthly loop

Data that does not change a decision is just storage cost. The loop we run with clients is short and repeatable:
- Week 1: pull the six reports above, note any key event rate that moved more than 15% month over month.
- Week 1: for each movement, write one sentence on the likely cause (new campaign, site change, seasonality, tracking break). If you cannot explain it, check tracking first. Broken tracking is the most common “drop” we diagnose.
- Week 2: pick one test. Examples: rewrite the headline on the top landing page, move the phone number above the fold on mobile, pause the ad group with the highest cost per key event.
- Weeks 2 to 4: let it run. Most small sites do not have the traffic for statistical significance in under three weeks, so resist calling a winner on day four.
- Week 4: record the result, keep or revert, and choose the next test.
One test a month, every month, beats a large redesign every two years. It is also far easier to attribute results.
Attribution: be honest about what you can know
GA4 defaults to data-driven attribution, which spreads credit across touchpoints using Google’s model. It is better than last-click for multi-channel campaigns, but it is still a model, and on low-volume sites it falls back to rules-based logic anyway.
Our practical advice:
- Compare models in Advertising → Attribution → Model comparison before you cut a channel. Paid social often looks useless on last-click and reasonable on data-driven.
- Use UTM parameters on every campaign link you control: email, social, partner sites, printed QR codes. Keep a shared sheet of the naming convention so “Facebook”, “facebook” and “fb” do not become three sources.
- Accept that some offline and dark-social traffic will show as Direct. A spike in Direct after a local event or a podcast mention is usually real.
If Google Ads is a big part of the mix, link the Ads account to GA4 so key events can be imported as Ads conversions and used for bidding. We have written separately about improving conversion rates in Google Ads, and the first step there is always trustworthy conversion data.
Privacy, consent and California law
California’s CCPA and CPRA apply to many businesses that collect data from California residents, and the thresholds are lower than people assume (for example, deriving half or more of revenue from selling or sharing personal information triggers it regardless of company size). A San Francisco business cannot treat consent as a European problem.
What this means for your analytics stack:
- Run a consent management plugin that supports Google Consent Mode v2. Complianz and CookieYes both do, and both integrate with Site Kit.
- Turn on IP anonymisation (GA4 does this by default) and shorten data retention to what you need. Admin → Data settings → Data retention offers 2 or 14 months on standard properties.
- Honour “Do Not Sell or Share” links. If you pass purchase data to ad platforms, that counts as sharing under CPRA.
Consent will cost you some measured traffic. That is fine. Directionally accurate data from a compliant setup is worth more than complete data that exposes the business to a complaint.
Where WordPress-specific analytics fit
GA4 tells you what visitors did. It does not tell you what your logged-in members, students or customers did inside the site. For community or LMS sites, that second layer is where the real decisions live: which courses stall, which groups go quiet, which members churn.
For WooCommerce, the built-in Analytics screen (WooCommerce → Analytics) already reports revenue, orders, products and coupons without any GA4 setup, and it is accurate because it reads from the database rather than from a browser tag. For BuddyPress or LearnDash sites you will need purpose-built reporting. We compared the options in our roundup of analytics and statistics plugins for WordPress.
Treat the two layers as complementary. GA4 answers “which channel and page brought this person here”, your WordPress data answers “what did they do once they were a customer”, and the interesting insights usually come from joining them, even if the join is a monthly spreadsheet.
Frequently asked questions
Is GA4 enough, or do I need a paid analytics tool?
For most small and mid-size businesses GA4 plus Search Console is enough. Paid tools like Mixpanel or Amplitude earn their cost when you have a product with in-app behaviour to analyse, not for a marketing site.
How long before I can trust the numbers?
Give a fresh GA4 property four weeks of clean data before drawing conclusions, and at least 100 key events per variant before judging an A/B test. Below that, you are reading noise.
What is a good conversion rate for a San Francisco service business?
Blended landing-page conversion rates of 2% to 5% are typical for lead-gen sites; well-targeted local pages with a phone CTA can reach 8% to 12%. Ecommerce sits lower, usually 1% to 3%. Your own month-over-month trend matters more than any benchmark.
Should I track users across my WordPress site and my app?
Only if the same user identity exists in both and you have consent. GA4’s User-ID feature handles this, but it needs a developer to pass the ID on login. For most sites it is a phase-two project.
Where to start
Install Site Kit, confirm GA4 is firing exactly once, mark three key events, and book a 30-minute review on the first Monday of every month. That alone puts you ahead of most competitors in the city. Once the loop is running, you can add funnels, consent mode and deeper WordPress reporting in whatever order the data tells you to.
If you would rather have the setup done for you, our team has been wiring analytics into WordPress, WooCommerce and community sites for over a decade. Start with the services overview and tell us which outcomes you need to measure.
Related reading