<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: toshihiro shishido</title>
    <description>The latest articles on Forem by toshihiro shishido (@toshihiro_shishido).</description>
    <link>https://forem.com/toshihiro_shishido</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3893127%2Fe1844984-b7c4-4c47-a3b6-e54b89e78001.png</url>
      <title>Forem: toshihiro shishido</title>
      <link>https://forem.com/toshihiro_shishido</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/toshihiro_shishido"/>
    <language>en</language>
    <item>
      <title>GA4's 'Direct / (none)' is mostly measurement loss, not user behavior</title>
      <dc:creator>toshihiro shishido</dc:creator>
      <pubDate>Fri, 24 Apr 2026 05:57:06 +0000</pubDate>
      <link>https://forem.com/toshihiro_shishido/ga4s-direct-none-is-mostly-measurement-loss-not-user-behavior-1g2g</link>
      <guid>https://forem.com/toshihiro_shishido/ga4s-direct-none-is-mostly-measurement-loss-not-user-behavior-1g2g</guid>
      <description>&lt;p&gt;When you open GA4 and see "Direct / (none)" sitting at 30%, 40%, sometimes higher — what's the first thought that goes through your head?&lt;/p&gt;

&lt;p&gt;For a long time, mine was: &lt;em&gt;"Brand is finally landing. People are coming back directly."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then I dug in. Almost every time, that interpretation is wrong. &lt;strong&gt;Direct / (none) is mostly measurement loss, not user behavior.&lt;/strong&gt; And once you accept that, the next question stops being &lt;em&gt;"is this good?"&lt;/em&gt; and becomes &lt;em&gt;"how much of this can I recover?"&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How GA4 actually decides "Direct / (none)"
&lt;/h2&gt;

&lt;p&gt;The Google Analytics docs are explicit about this. A session falls into Direct / (none) when &lt;strong&gt;both&lt;/strong&gt; of the following are true:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd94de1k2wmymteg51mdn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd94de1k2wmymteg51mdn.png" alt="How GA4 decides Direct / (none)" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Translation: "We have no idea where this user came from."&lt;/p&gt;

&lt;p&gt;In a healthy setup, that bucket should be tiny — bookmarks, direct URL typing, email clients that strip referrers. The fact that it's 30% or 40% for so many sites is not a signal of brand strength. It's the size of your measurement blind spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 20% / 40% threshold
&lt;/h2&gt;

&lt;p&gt;The rough heuristic I use when reviewing ad performance dashboards:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnug7wxf8q8y0m1ovw428.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnug7wxf8q8y0m1ovw428.png" alt="Ad analytics reliability by Direct / (none) share" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you write "Paid Search ROAS = 400%" in a board deck while Direct / (none) is 45% of sessions, that 400% is almost certainly inflated. A non-trivial chunk of those Paid Search clicks are being mis-classified into Direct, and the channel that &lt;em&gt;did&lt;/em&gt; drive the conversion is getting double credit on the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5 causes (and 8 of 10 are fixable in-house)
&lt;/h2&gt;

&lt;p&gt;Direct / (none) bloat traces back to two root mechanisms: &lt;strong&gt;missing campaign parameters&lt;/strong&gt; or &lt;strong&gt;lost referrer&lt;/strong&gt;. The five most common patterns, ranked by how often I encounter them:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq31yfx5t2javjm1pxstc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq31yfx5t2javjm1pxstc.png" alt="The 5 causes of Direct / (none) — relative frequency score" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Missing utm_source&lt;/strong&gt; — ads, newsletters, LINE messages, QR codes shipped without UTM. Most common by a wide margin.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-app browser taps&lt;/strong&gt; — LINE, Instagram, Facebook in-app browsers either don't pass &lt;code&gt;Referer&lt;/code&gt; or send a custom value (&lt;code&gt;com.facebook.katana&lt;/code&gt;) that GA4 doesn't recognize as a social source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTPS → HTTP downgrade&lt;/strong&gt; — the W3C Referrer Policy spec deliberately strips &lt;code&gt;Referer&lt;/code&gt; on protocol downgrades. If your funnel passes through any HTTP intermediate page, the referrer is gone before it reaches you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redirect intermediaries&lt;/strong&gt; — bit.ly, lin.ee, t.co, internal redirect chains. Server redirects vary by browser, JavaScript redirects almost guarantee referrer loss.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Referrer policy&lt;/strong&gt; — modern browsers default to &lt;code&gt;strict-origin-when-cross-origin&lt;/code&gt;, which only passes the hostname. Stricter sites (&lt;code&gt;no-referrer&lt;/code&gt;) pass nothing at all.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Of these five, only the last one (referrer policy on third-party sites) is genuinely outside your control. The other four — missing UTMs, in-app browser handling, protocol downgrades, redirect chains — &lt;strong&gt;are all recoverable through your own implementation&lt;/strong&gt;. That's where the "8 out of 10" framing comes from.&lt;/p&gt;

&lt;h2&gt;
  
  
  A 10-minute health check
&lt;/h2&gt;

&lt;p&gt;If you read this and want to know where your own site stands, here's the minimum-viable diagnostic:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6jnt07lxnluxd4pgcau.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6jnt07lxnluxd4pgcau.png" alt="10-minute Direct / (none) health check" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That last step is where the diagnosis happens. If Direct sessions concentrate on mobile + specific landing pages, you're looking at an in-app browser problem. If they spike at the same time as a campaign launch, you have a UTM gap. If they cluster by country, you're hitting referrer policy variation.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what?
&lt;/h2&gt;

&lt;p&gt;The thing I find genuinely useful about this framing is that it converts a vague "Direct / (none) is going up" worry into a measurable, recoverable problem. The fix isn't a new tool. It's a habit:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Track Direct / (none) ratio monthly. Annotate the 20% and 40% lines on your dashboard. When it crosses, decompose before you re-baseline anything.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'd be curious to hear how high Direct / (none) is on the sites you work on, and whether anyone has cracked the in-app browser case more cleanly than "ensure UTMs are set on every share link." Drop a comment — I'll learn from it too.&lt;/p&gt;




&lt;p&gt;This post is an English re-edit of an article originally published on RevenueScope. Full Japanese original (with diagnostic flowchart and 5-cause frequency breakdown):&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://www.revenuescope.jp/news/ga4-direct-none-causes" rel="noopener noreferrer"&gt;GA4の『Direct / (none)』が増える5つの原因と診断・対処&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm building &lt;strong&gt;RevenueScope&lt;/strong&gt; — a revenue-first analytics layer that sits next to GA4 for eCommerce teams. One of the things it does is automatically re-classify sessions trapped in Direct / (none) back to their probable original channel using domain heuristics. Built because manually fixing this in spreadsheets is a problem nobody should still be doing in 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Google Analytics Help — "Default channel group" — 2026-04&lt;/li&gt;
&lt;li&gt;W3C — "Referrer Policy" — 2026-04&lt;/li&gt;
&lt;li&gt;Google Analytics Help — "[GA4] Direct traffic" — 2026-04&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>analytics</category>
      <category>marketing</category>
      <category>googleanalytics</category>
      <category>webdev</category>
    </item>
    <item>
      <title>71% of stores have GA4 installed. Only 11% actually use it. Here's what's broken.</title>
      <dc:creator>toshihiro shishido</dc:creator>
      <pubDate>Thu, 23 Apr 2026 09:53:01 +0000</pubDate>
      <link>https://forem.com/toshihiro_shishido/71-of-stores-have-ga4-installed-only-11-actually-use-it-heres-whats-broken-13n9</link>
      <guid>https://forem.com/toshihiro_shishido/71-of-stores-have-ga4-installed-only-11-actually-use-it-heres-whats-broken-13n9</guid>
      <description>&lt;p&gt;If you ask a Japanese marketer "have you installed GA4?", most will say yes. A 2022 survey of 1,009 web marketing professionals in Japan found &lt;strong&gt;71% already had GA4 installed&lt;/strong&gt;[1] — and that was &lt;em&gt;before&lt;/em&gt; Universal Analytics sunset.&lt;/p&gt;

&lt;p&gt;If you ask the same people a follow-up question — "have you set up report automation in GA4?" — the answer drops to &lt;strong&gt;11%&lt;/strong&gt;[2].&lt;/p&gt;

&lt;p&gt;One country. One tool. A 60-point gap between "installed" and "actually using."&lt;/p&gt;

&lt;p&gt;This post walks through what Japanese market surveys tell us about that gap, why it exists, and what it implies for anyone shipping analytics tooling — not just in Japan. Because the pattern here isn't a Japan-specific quirk. It's the default state of any organization that treats "install GA4" as the finish line.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;GA4 adoption in Japan: &lt;strong&gt;71%&lt;/strong&gt;. Report automation: &lt;strong&gt;11%&lt;/strong&gt;. Full-custom setup: &lt;strong&gt;23%&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;50.7% of marketers&lt;/strong&gt; in a 2024 Japanese survey cite "how to actually use the data" as their biggest pain point — above setup, above integrations.&lt;/li&gt;
&lt;li&gt;The gap between "installed" and "used" is not a training problem. It's a &lt;strong&gt;dashboard-shape problem&lt;/strong&gt;: the question marketers need to answer and the screen GA4 shows them are not the same shape.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. The gap nobody talks about
&lt;/h2&gt;

&lt;p&gt;Most "is GA4 popular in your country?" conversations end at installation rate. Which is fine as a vanity number, and useless as a planning number.&lt;/p&gt;

&lt;p&gt;Here is what the full staircase looks like in Japan, pulled from three independent surveys:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Stage&lt;/th&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Installation&lt;/td&gt;
&lt;td&gt;"GA4 is installed"&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;71%&lt;/strong&gt; (2022, Digipro)[1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic setup&lt;/td&gt;
&lt;td&gt;Account + tag deployment completed&lt;/td&gt;
&lt;td&gt;31–35% (2023, Auriz)[2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom setup&lt;/td&gt;
&lt;td&gt;Custom conversions / events configured&lt;/td&gt;
&lt;td&gt;23% (2023, Auriz)[2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Full utilization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Report automation reached&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;11%&lt;/strong&gt; (2023, Auriz)[2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Experience&lt;/td&gt;
&lt;td&gt;"I find it hard to figure out how to actually use the data"&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;50.7%&lt;/strong&gt; (2024, Fujifilm BI)[3]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The drop from 71% to 11% is the entire story. Installation is the &lt;em&gt;easy&lt;/em&gt; step — it's a tag, it's a prop, it's a migration guide.&lt;/p&gt;

&lt;p&gt;Everything downstream — custom events, cohort analysis, report automation — requires answering a question the tool does not ask for you: &lt;strong&gt;what exactly do you want to know every morning?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most organizations never answer that question, so the tool sits at 11%.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. What the data shows
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Market context
&lt;/h3&gt;

&lt;p&gt;Before the "how is GA4 being used" part, the scale worth knowing:&lt;/p&gt;

&lt;p&gt;Japan's B2C eCommerce market hit &lt;strong&gt;¥26.1 trillion&lt;/strong&gt; (~US$170B) in 2024, up 5.1% YoY, per METI's 2024 eCommerce Market Survey[4]. The physical-goods slice alone is ¥15.2 trillion. That's the surface area where GA4 setup quality directly translates to revenue decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Auriz survey (2023, n=248)
&lt;/h3&gt;

&lt;p&gt;Auriz surveyed 248 marketing professionals actively running ad operations in Japan. They asked: &lt;em&gt;"Which GA4 setup steps have you completed?"&lt;/em&gt; (multiple choice)[2]&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Setup step&lt;/th&gt;
&lt;th&gt;Completion rate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Created account&lt;/td&gt;
&lt;td&gt;35%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Installed GA4 tag&lt;/td&gt;
&lt;td&gt;31%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configured custom conversions&lt;/td&gt;
&lt;td&gt;23%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Set up report automation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;11%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Only &lt;strong&gt;25%&lt;/strong&gt; had actually completed migration from UA. 28% were mid-migration. 29% had not started. 6% had stopped using Google Analytics entirely.&lt;/p&gt;

&lt;p&gt;So within this sample, less than a quarter were fully migrated — and within that quarter, less than half had configured report automation. &lt;strong&gt;Roughly 1 in 10 of the entire surveyed population had reached the point where GA4 is producing automated output daily.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fujifilm BI survey (2024, n=535)
&lt;/h3&gt;

&lt;p&gt;A year later, Fujifilm Business Innovation surveyed 535 marketing professionals on what they &lt;em&gt;felt&lt;/em&gt; hard about access-analytics tools (not just GA4, but GA4 is the dominant tool in the sample)[3]:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pain point&lt;/th&gt;
&lt;th&gt;Share citing it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;How to optimally use the data&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;50.7%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linking data to goals and KPIs&lt;/td&gt;
&lt;td&gt;49.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deciding what to focus on&lt;/td&gt;
&lt;td&gt;46.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup for accurate data collection&lt;/td&gt;
&lt;td&gt;40.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration with external tools&lt;/td&gt;
&lt;td&gt;30.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things to notice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The top three pain points are all about interpretation, not collection.&lt;/strong&gt; "Setup" only shows up at rank 4.&lt;/li&gt;
&lt;li&gt;Asked what support they need, respondents ranked &lt;strong&gt;"data analysis and interpretation" (55.9%)&lt;/strong&gt; and &lt;strong&gt;"translating analysis into action plans" (48.2%)&lt;/strong&gt; at the top[3].&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The problem isn't that the tool is broken. The problem is that the tool answers the wrong question.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Digipro survey (2022, n=1,009)
&lt;/h3&gt;

&lt;p&gt;The Digipro study established the 71% installation baseline back in 2022[1]. The sample was larger and less filtered-for-seniority than the Auriz one, which is why its installation rate is higher than Auriz's "migration complete" rate — the two are measuring different states (installed vs. fully migrated + configured).&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Why this gap exists
&lt;/h2&gt;

&lt;p&gt;Three reasons I keep seeing, in roughly decreasing order of scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reason 1: GA4 is shaped for &lt;em&gt;sessions&lt;/em&gt;, but business is shaped for &lt;em&gt;revenue&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;GA4's default home screen leads with users, sessions, events, engagement rate. A business owner's default question is: &lt;em&gt;"I spent ¥50,000 on Instagram ads yesterday. How much of that came back as revenue, and which campaigns?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Answering that in GA4 requires building an exploration, joining event data with transaction data, and configuring channel grouping. It's possible, it just isn't the path of least resistance.&lt;/p&gt;

&lt;p&gt;So people install GA4, see that the home screen doesn't answer their actual question, and... never come back to finish the setup. Installation rate 71%, utilization rate 11%.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reason 2: The "11% who automate" are the ones who had someone to delegate to
&lt;/h3&gt;

&lt;p&gt;Report automation in GA4 is not a one-click feature. It's a multi-step configuration: exploration templates, scheduled email, BigQuery export, Looker Studio wiring, or custom dashboard work.&lt;/p&gt;

&lt;p&gt;Every one of those steps requires either (a) a dedicated analytics role, or (b) an external consultant. Organizations without either stop at the "I can load the default Home screen" level.&lt;/p&gt;

&lt;p&gt;The 11% figure is less about skill and more about &lt;strong&gt;whether the organization has budget headroom for an analytics function at all&lt;/strong&gt;. In a survey skewed toward SMB eCommerce operators, that headroom is rare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reason 3: Training content optimizes for the install stage
&lt;/h3&gt;

&lt;p&gt;If you search "GA4 setup tutorial" in any language, you will find an enormous volume of material about tag deployment, migration, property creation. You will find dramatically less on "what is the weekly dashboard a store owner should build and look at every Monday."&lt;/p&gt;

&lt;p&gt;The content market is shaped the same way installation is: rewards for the easy step, silence at the hard step. So marketers graduate from tutorials feeling confident about setup and no more confident about use.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. What to actually do
&lt;/h2&gt;

&lt;p&gt;Three things. Ordered by effort.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Pick one question, before you open GA4
&lt;/h3&gt;

&lt;p&gt;Write down the single question your team needs answered every Monday morning. Make it concrete: &lt;em&gt;"Which channel drove the most revenue last week at what AOV?"&lt;/em&gt; beats &lt;em&gt;"How is our marketing doing?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now: can you answer that question in GA4 in under 60 seconds, starting from a cold login? If no, the gap isn't skill — it's &lt;strong&gt;configuration&lt;/strong&gt;. Configure toward that question. Ignore the other 40 reports.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Instrument revenue-side events before you perfect pageview events
&lt;/h3&gt;

&lt;p&gt;Most GA4 implementations spend 80% of setup budget on pageview, scroll depth, and engagement events. They spend 20% on &lt;code&gt;purchase&lt;/code&gt;, &lt;code&gt;add_to_cart&lt;/code&gt;, &lt;code&gt;begin_checkout&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is backwards for eCommerce. &lt;strong&gt;The revenue-side events are the ones that answer the question you actually asked in step 1.&lt;/strong&gt; If &lt;code&gt;purchase&lt;/code&gt; events are not firing cleanly with &lt;code&gt;value&lt;/code&gt;, &lt;code&gt;transaction_id&lt;/code&gt;, and &lt;code&gt;items&lt;/code&gt;, no amount of downstream setup will produce a useful Monday dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Decide if GA4 is your reporting surface, or your raw data layer
&lt;/h3&gt;

&lt;p&gt;This is the hard one.&lt;/p&gt;

&lt;p&gt;If GA4 is your &lt;em&gt;reporting surface&lt;/em&gt; — where decision-makers read numbers — you are signing up for the "build 3-5 custom explorations + a Looker Studio dashboard" project. That's real work. Budget for it.&lt;/p&gt;

&lt;p&gt;If GA4 is your &lt;em&gt;raw data layer&lt;/em&gt; — where events are collected and then read by something else — then accept that, and point that something else (BigQuery, a reverse-ETL tool, a specialized analytics product, or an internal dashboard) at GA4 output. Stop trying to read GA4 directly.&lt;/p&gt;

&lt;p&gt;Most of the "11% gap" organizations I've talked to are stuck because they're trying to do both with the same tool and the same setup budget. Picking one lane unsticks the configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  So what?
&lt;/h2&gt;

&lt;p&gt;The gap between "71% installed" and "11% automated" is not going to close by writing better GA4 tutorials. Every additional tutorial optimizes for the step that isn't the bottleneck.&lt;/p&gt;

&lt;p&gt;It closes by one of two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organizations decide GA4 is worth a dedicated analytics role and invest accordingly (slow, expensive, uncommon outside larger companies)&lt;/li&gt;
&lt;li&gt;Something else takes the specific "read revenue by channel on Monday morning" job off GA4's plate, so GA4 can be the raw data layer it's actually good at being (faster, cheaper, increasingly common)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're shipping analytics tooling in 2026: &lt;strong&gt;the question isn't "how do we replace GA4."&lt;/strong&gt; The question is "which slice of 'use GA4 data' can we make so trivial that the 11% figure becomes 50% for our specific use case."&lt;/p&gt;

&lt;p&gt;That's the gap worth working on.&lt;/p&gt;




&lt;p&gt;I'd love to hear from folks outside Japan: &lt;strong&gt;does the 71% / 11% pattern match what you see in your market?&lt;/strong&gt; Or is there a country / vertical where the utilization curve actually bends upward? Drop it in the comments.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm building &lt;a href="https://www.revenuescope.jp/" rel="noopener noreferrer"&gt;RevenueScope&lt;/a&gt;, a revenue-first analytics layer that sits next to GA4 and answers the "which channel drove revenue last week at what AOV" question from one dashboard — for the 89% of organizations not going to build that surface themselves.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post originally appeared in Japanese on the &lt;a href="https://www.revenuescope.jp/news/ga4-full-utilization-wall" rel="noopener noreferrer"&gt;RevenueScope blog&lt;/a&gt;. Canonical source is set accordingly.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Hagakure (Digipro) — "GA4 Adoption Survey," July 2022 (n=1,009)&lt;/li&gt;
&lt;li&gt;Auriz — "Google Analytics 4 Utilization Survey," October 2023 (n=248)&lt;/li&gt;
&lt;li&gt;Fujifilm Business Innovation — "Access Analytics Tool Usage Survey," December 2024 (n=535)&lt;/li&gt;
&lt;li&gt;METI Japan — "FY2024 Electronic Commerce Market Survey," August 2025&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>analytics</category>
      <category>marketing</category>
      <category>datascience</category>
      <category>saas</category>
    </item>
    <item>
      <title>The utm_source you should NOT use for Meta Ads (and why GA4 makes it disappear)</title>
      <dc:creator>toshihiro shishido</dc:creator>
      <pubDate>Wed, 22 Apr 2026 22:14:17 +0000</pubDate>
      <link>https://forem.com/toshihiro_shishido/the-utmsource-you-should-not-use-for-meta-ads-and-why-ga4-makes-it-disappear-19a3</link>
      <guid>https://forem.com/toshihiro_shishido/the-utmsource-you-should-not-use-for-meta-ads-and-why-ga4-makes-it-disappear-19a3</guid>
      <description>&lt;p&gt;A lot of marketers — myself included, at first — tag their Meta (Facebook / Instagram) ad URLs with &lt;code&gt;utm_source=meta&lt;/code&gt;. It feels natural: the company is called Meta now, right?&lt;/p&gt;

&lt;p&gt;But if you open Google's officially distributed &lt;strong&gt;GA4 Default Channel Group Source Categories&lt;/strong&gt; spreadsheet and search through all 819 entries, you'll find something strange:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;facebook&lt;/code&gt; is there&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fb&lt;/code&gt; is there&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;facebook.com&lt;/code&gt; is there&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;instagram&lt;/code&gt; is there&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;meta&lt;/code&gt; is not&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That one missing line isn't a trivia item. It's the difference between Meta ad revenue showing up in your &lt;strong&gt;Paid Social&lt;/strong&gt; channel versus quietly falling into &lt;strong&gt;Referral&lt;/strong&gt; or &lt;strong&gt;(other)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This post is a practical, receipts-first walkthrough of what GA4 actually checks, why &lt;code&gt;meta&lt;/code&gt; breaks classification, and the URL format I'd recommend fixing on going forward. No opinion — just the file Google itself publishes.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Set &lt;code&gt;utm_source=facebook&lt;/code&gt; (lowercase, fixed). Not &lt;code&gt;meta&lt;/code&gt;, not &lt;code&gt;Facebook&lt;/code&gt;, not &lt;code&gt;fb&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;code&gt;utm_medium=cpc&lt;/code&gt;. GA4's Paid Social regex matches on &lt;code&gt;.*cp.*|ppc|retargeting|paid.*&lt;/code&gt;. &lt;code&gt;cpc&lt;/code&gt; is the safest pick.&lt;/li&gt;
&lt;li&gt;The 80% of bad-data incidents I see are &lt;em&gt;casing and variant drift&lt;/em&gt;: &lt;code&gt;facebook&lt;/code&gt; / &lt;code&gt;Facebook&lt;/code&gt; / &lt;code&gt;fb&lt;/code&gt; / &lt;code&gt;meta&lt;/code&gt; splitting one campaign across four rows.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. What GA4 actually checks when deciding "Paid Social"
&lt;/h2&gt;

&lt;p&gt;Per Google's public documentation on default channel groups[1], the &lt;strong&gt;Paid Social&lt;/strong&gt; classification requires &lt;strong&gt;both&lt;/strong&gt; of these to be true (for manual UTM tagging):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Source&lt;/strong&gt; matches a regex list of social sites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium&lt;/strong&gt; matches the regex &lt;code&gt;^(.*cp.*|ppc|retargeting|paid.*)$&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That "regex list of social sites" isn't a mystery. Google actually publishes it as a downloadable spreadsheet[2]. It's an 819-row file mapping source strings to categories like &lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;, &lt;code&gt;SOURCE_CATEGORY_SEARCH&lt;/code&gt;, and so on.&lt;/p&gt;

&lt;p&gt;Here's what it contains for the major Meta-related entries:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;utm_source value&lt;/th&gt;
&lt;th&gt;Official classification&lt;/th&gt;
&lt;th&gt;Counts as Paid Social?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;facebook&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;facebook.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fb&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;m.facebook.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;instagram&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;instagram.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;l.instagram.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;twitter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;meta&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Not in the file&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;❌ No&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;&lt;code&gt;Meta&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Not in the file&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;❌ No&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;meta&lt;/code&gt; as a string does not appear anywhere in Google's classification file. Traffic tagged &lt;code&gt;utm_source=meta&lt;/code&gt; is evaluated against the social list, misses every entry, and falls through to &lt;strong&gt;Referral&lt;/strong&gt; or &lt;strong&gt;(other)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;"But the company rebranded to Meta" — true, and completely irrelevant to the classification engine. Google Analytics did not update its source file when the corporate rebrand happened. The file still references the long-standing industry-standard string &lt;code&gt;facebook&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Brand names and classification tokens are independent layers. Confusing them costs money.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Four failure modes I keep seeing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Failure 1: &lt;code&gt;utm_source=meta&lt;/code&gt; silently erases Paid Social
&lt;/h3&gt;

&lt;p&gt;Since &lt;code&gt;meta&lt;/code&gt; doesn't match the social list, these sessions land in Referral with source/medium &lt;code&gt;meta / cpc&lt;/code&gt;. From the monthly report you'll see "Paid Social revenue dropped." Nothing dropped. The classification box moved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Failure 2: Case sensitivity splits one campaign into two rows
&lt;/h3&gt;

&lt;p&gt;GA4 stores &lt;code&gt;utm_source&lt;/code&gt; values case-sensitively. &lt;code&gt;facebook&lt;/code&gt; and &lt;code&gt;Facebook&lt;/code&gt; are two distinct dimension values and two distinct rows in your report. One campaign, two boxes, each showing half the revenue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Failure 3: &lt;code&gt;utm_medium=social&lt;/code&gt; promotes paid traffic to Organic Social
&lt;/h3&gt;

&lt;p&gt;GA4's Organic Social rule[1] is: &lt;strong&gt;Source matches social list OR Medium is one of &lt;code&gt;social | social-network | social-media | sm&lt;/code&gt;&lt;/strong&gt;. That's an &lt;strong&gt;OR&lt;/strong&gt;. If you use &lt;code&gt;utm_source=facebook&lt;/code&gt; with &lt;code&gt;utm_medium=social&lt;/code&gt;, the medium matches Organic Social before the logic ever reaches "but wait, this is paid." Your paid budget gets counted as organic, and ROAS looks worse than reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Failure 4: Dynamic parameter macros confirmed late
&lt;/h3&gt;

&lt;p&gt;Meta's own [URL Dynamic Parameter feature][3] lets you embed macros like &lt;code&gt;{{campaign.name}}&lt;/code&gt; / &lt;code&gt;{{adset.name}}&lt;/code&gt; / &lt;code&gt;{{ad.name}}&lt;/code&gt; in destination URLs, resolved at delivery time. Useful, but: &lt;strong&gt;at insertion time the preview still shows the raw macros&lt;/strong&gt;, so skipping the post-launch GA4 check means you only discover empty &lt;code&gt;utm_campaign&lt;/code&gt; values or unexpected characters (spaces, Japanese text, uppercase) once real money has shipped.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The URL format I'd fix on
&lt;/h2&gt;

&lt;p&gt;Given the constraints above, this is what I tag Meta ads with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="py"&gt;utm_source&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;facebook&lt;/span&gt;
&lt;span class="py"&gt;utm_medium&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;cpc&lt;/span&gt;
&lt;span class="py"&gt;utm_campaign&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{campaign.name}}&lt;/span&gt;
&lt;span class="py"&gt;utm_content&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{ad.name}}&lt;/span&gt;
&lt;span class="py"&gt;utm_term&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{adset.name}}&lt;/span&gt;
&lt;span class="py"&gt;utm_id&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;{{campaign.id}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why each value
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;utm_source=facebook&lt;/code&gt;&lt;/strong&gt; — matches &lt;code&gt;SOURCE_CATEGORY_SOCIAL&lt;/code&gt; in GA4's file, lowercase for casing stability, the industry-canonical value. &lt;code&gt;fb&lt;/code&gt; works too (same category), but pick one and stop the drift&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;utm_medium=cpc&lt;/code&gt;&lt;/strong&gt; — matches Paid Social's regex, does not collide with Organic Social's &lt;code&gt;social*&lt;/code&gt; list. Safest minimum overlap&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;utm_campaign={{campaign.name}}&lt;/code&gt;&lt;/strong&gt; — delivered-time substitution; verify values populate correctly once campaigns are live&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;utm_content={{ad.name}}&lt;/code&gt; / &lt;code&gt;utm_term={{adset.name}}&lt;/code&gt;&lt;/strong&gt; — gives you ad-level and ad-set-level drill-down inside GA4's campaign dimension, without needing custom dimensions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  "What about Instagram-only?"
&lt;/h3&gt;

&lt;p&gt;If you want Instagram campaigns to appear as their own row, switch &lt;code&gt;utm_source&lt;/code&gt; from &lt;code&gt;facebook&lt;/code&gt; to &lt;code&gt;instagram&lt;/code&gt;. This is a reporting trade-off: you gain Instagram visibility, you lose the "all Meta ad revenue in one row" view. The cleaner pattern: keep &lt;code&gt;utm_source=facebook&lt;/code&gt; (platform-level) and put placement detail in a separate &lt;code&gt;placement={{placement}}&lt;/code&gt; custom-dimension — your Meta vs Instagram split survives even when campaign naming changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Verifying after you ship
&lt;/h2&gt;

&lt;p&gt;Two checks that catch 90% of breakage:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pre-launch URL preview&lt;/strong&gt; — in Meta Ads Manager, check the URL preview panel on the ad edit screen. Confirm macros resolve to expected values and no unexpected whitespace / CJK / uppercase slipped in&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post-launch GA4 realtime&lt;/strong&gt; — within 30 minutes of first impression, check &lt;strong&gt;Realtime → Traffic source&lt;/strong&gt; (or classic Acquisition). You should see &lt;code&gt;facebook / cpc&lt;/code&gt;. If you see &lt;code&gt;meta / cpc&lt;/code&gt; or &lt;code&gt;(direct) / (none)&lt;/code&gt;, the URL didn't deliver what you expected&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Skipping these two is the single biggest reason "our attribution looks weird this month" reports exist.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. One-time cleanup check (10 minutes)
&lt;/h2&gt;

&lt;p&gt;If you inherited a GA4 property and don't know what's been tagged, this is a fast audit:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;GA4 → Reports → Acquisition → Traffic acquisition&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Switch dimension to &lt;strong&gt;Session source / medium&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Search for &lt;code&gt;facebook&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If you see multiple rows among &lt;code&gt;facebook&lt;/code&gt; / &lt;code&gt;Facebook&lt;/code&gt; / &lt;code&gt;fb&lt;/code&gt; / &lt;code&gt;meta&lt;/code&gt; — your campaigns are fragmented&lt;/li&gt;
&lt;li&gt;Standardize going forward, and (if your stack allows) normalize historical data downstream&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If &lt;code&gt;meta / cpc&lt;/code&gt; exists as an independent row with meaningful volume, your Paid Social number is currently understated by exactly that amount.&lt;/p&gt;




&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;The "correct" &lt;code&gt;utm_source&lt;/code&gt; for Meta ads isn't a matter of opinion, agency convention, or vendor recommendation. It's whatever Google's classification file says it is — and Google publishes that file.&lt;/p&gt;

&lt;p&gt;Opening an 819-row spreadsheet and searching for &lt;code&gt;meta&lt;/code&gt; is maybe three minutes of work. It's strange how often the answer to a recurring "which is right?" argument is sitting in a publicly downloadable CSV.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I'm building &lt;a href="https://www.revenuescope.jp/" rel="noopener noreferrer"&gt;RevenueScope&lt;/a&gt;, a revenue-first analytics layer that sits next to GA4 and normalizes UTM drift (e.g. auto-merges &lt;code&gt;facebook&lt;/code&gt; / &lt;code&gt;Facebook&lt;/code&gt; / &lt;code&gt;fb&lt;/code&gt; / &lt;code&gt;meta&lt;/code&gt; into one Paid Social row) so you can read channel-level revenue, AOV, and RPS from a single dashboard.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post originally appeared in Japanese on the &lt;a href="https://www.revenuescope.jp/news/meta-ads-utm-source-guide" rel="noopener noreferrer"&gt;RevenueScope blog&lt;/a&gt;. Canonical source link is set accordingly.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Google Analytics Help — &lt;a href="https://support.google.com/analytics/answer/9756891" rel="noopener noreferrer"&gt;Default channel group&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Google — GA4 Default Channel Group Source Categories (official downloadable spreadsheet, linked from [1])&lt;/li&gt;
&lt;li&gt;Meta Business Help Center — URL Dynamic Parameters specification&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>marketing</category>
      <category>webdev</category>
      <category>analytics</category>
    </item>
  </channel>
</rss>
