<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julien Coquet</title>
	<atom:link href="http://juliencoquet.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://juliencoquet.com/</link>
	<description></description>
	<lastBuildDate>Wed, 04 Feb 2026 09:41:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Measure page reading and dropoff times</title>
		<link>https://juliencoquet.com/2025/11/13/measure-page-reading-and-dropoff-times/</link>
					<comments>https://juliencoquet.com/2025/11/13/measure-page-reading-and-dropoff-times/#comments</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Thu, 13 Nov 2025 09:30:00 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://juliencoquet.com/?p=3263</guid>

					<description><![CDATA[<p>For decades, marketers and publishers have been obsessed with page views, average time on site, and &#8211; of course &#8211; the bounce rate. Sadly, these KPIs often leave stakeholders frustrated because they don&#8217;t necessarily reflect actual user engagement. In this post, I share a tag manager-based method to better measure whether users stay on the [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2025/11/13/measure-page-reading-and-dropoff-times/">Measure page reading and dropoff times</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For decades, marketers and publishers have been obsessed with page views, average time on site, and &#8211; of course &#8211; the <a href="https://juliencoquet.com/en/blog/2016/12/08/revisiting-the-bounce-rate/">bounce rate</a>. Sadly, these KPIs often leave stakeholders frustrated because they don&#8217;t necessarily reflect actual user engagement. In this post, I share a tag manager-based method to better measure whether users stay on the site long enough to read the contents of a page.</p>



<span id="more-3263"></span>



<h2 class="wp-block-heading">Prerequisites to page content measurement</h2>



<p class="wp-block-paragraph">The first thing we need is basic data collection done right, which means using:</p>



<ul class="wp-block-list">
<li><a href="https://lp.juliencoquet.com/en/data-privacy-compliance">Decent consent management</a>, not just a banner that reads &#8220;wE LOvE YOUr priVaCY (and we send data to a gazillion partners)&#8221;</li>



<li><a href="https://lp.juliencoquet.com/en/google-tag-manager">Tag manager-based data collection</a> with the TMS of your choice (Google, Adobe, Piwik Pro, Commanders Act, Matomo, etc.) along with <a href="https://lp.juliencoquet.com/en/addingwell">server-side collection</a></li>



<li>An <a href="https://lp.juliencoquet.com/en/consulting">event-based data collection platform</a> (Google, Piwik Pro, Piano, Amplitude, etc.)</li>
</ul>



<p class="wp-block-paragraph">All set? Let&#8217;s proceed.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://juliencoquet.com/wp-content/uploads/2025/11/julien-coquet-bamf-bad-ass-motherfucker-measuring-time-spent-on-page-1024x683.webp" alt="" class="wp-image-3266" srcset="https://juliencoquet.com/wp-content/uploads/2025/11/julien-coquet-bamf-bad-ass-motherfucker-measuring-time-spent-on-page-1024x683.webp 1024w, https://juliencoquet.com/wp-content/uploads/2025/11/julien-coquet-bamf-bad-ass-motherfucker-measuring-time-spent-on-page-300x200.webp 300w, https://juliencoquet.com/wp-content/uploads/2025/11/julien-coquet-bamf-bad-ass-motherfucker-measuring-time-spent-on-page-768x512.webp 768w, https://juliencoquet.com/wp-content/uploads/2025/11/julien-coquet-bamf-bad-ass-motherfucker-measuring-time-spent-on-page-930x620.webp 930w, https://juliencoquet.com/wp-content/uploads/2025/11/julien-coquet-bamf-bad-ass-motherfucker-measuring-time-spent-on-page.webp 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Introducing Browser Active Minutes Frequency </h2>



<p class="wp-block-paragraph">We&#8217;re going to measure whether users actually take the time required to read through a piece of content using a new metric I call <strong>Browser Active Minutes Frequency</strong> (<a href="https://www.youtube.com/watch?v=rRaDhX9PbvQ">BAMF</a>), which is measured using the following formula:</p>



<p class="has-text-align-center wp-block-paragraph"><em>BAMF = LMFAO / GTFO</em></p>



<p class="wp-block-paragraph">For this, we&#8217;re going to measure the <strong>LMFAO</strong> (Length Measure For Article Output), aka the number of words in a piece of content, against the <strong>GTFO</strong> (General Text Flow<strong> </strong>Output), the <a href="https://www.sciencedirect.com/science/article/abs/pii/S0749596X19300786">average number of words read per minute</a>. For reference, the average GTFO is about 175–300 words per minute for non-fiction English text. Your resulting BAMF will be measured in minutes and seconds. </p>



<p class="wp-block-paragraph">So far, so good.</p>



<h3 class="wp-block-heading">Measuring the number of words in a page</h3>



<p class="wp-block-paragraph">Depending on your Content Management System (CMS), you may already have this information handy. You can then surface this information as a META tag or via your TMS&#8217;s data layer. </p>



<p class="wp-block-paragraph">In the example below, we&#8217;re going to estimate our LMFAO by measuring the amount of actual content words in a WordPress article, using JavaScript in GTM to scan WordPress elements for the number of words they contain. We will be using the <em>&lt;article&gt;</em> tag for posts, and <em>&lt;main&gt;</em> tag for pages.</p>



<p class="wp-block-paragraph">Use the code below in Google Tag Manager to create a Custom JavaScript variable called <strong><em>CJS &#8211; Word count</em></strong>. </p>



<pre class="wp-block-code"><code>function(){
  // Assuming WordPress but use your own selector for the content container
  var article = document.querySelector("article");

  // Mari Kondo that text
  var article_text = article.innerText;
  var cleaned_text = article_text.replace(/\s+/g, ' ').trim();

  // Break text blob into chunks (words)
  var words = cleaned_text.split(/\s+/);

  // Handling empty text if trimming goes too hard
  if (words.length === 1 &amp;&amp; words&#91;0] === "") {
    return 0;
  }

  // Profit!
  return words.length;
}</code></pre>



<p class="wp-block-paragraph">Now let&#8217;s create another Custom JavaScript variable called <strong><em>CJS &#8211; Time to </em></strong><em><strong>read the article</strong></em>, which leverages our BAMF formula:</p>



<pre class="wp-block-code"><code>function(){
  // Substract zero from your LMFAO
  // for forced conversion to integer
  
  var word_count = {{CJS - Word count}} - 0;
  // Set your average words read per minute here, 
  // based on GTFO
  var average_wpm = 200;

  // Here is the BAMF formula: LMFAO/GTFO
  // prepare time in milliseconds
  var timeToRead = parseInt(word_count/average_wpm) * 60000; 

  return timeToRead;
}</code></pre>



<p class="wp-block-paragraph"><strong>Alternative options</strong>: enrich your dataLayer using PHP. This requires modifying your header file, ideally in your child theme. Use data layer-based variables such as <strong><em>DLV &#8211; Word Count</em></strong> (<em>word_count</em>) and <strong>DLV &#8211; <strong><em>Time to </em></strong><em><strong>read the article</strong></em></strong> (<em>reading_time</em>) to replace the CJS equivalents in the rest of this tutorial. </p>



<pre class="wp-block-code"><code>&lt;?php wp_head(); ?>
  &lt;script>
  &lt;?php 
   $LMFAO = str_word_count( 
     strip_tags(strip_shortcodes(
       get_post_field('post_content', $post->ID)
   )));
   $GTFO = 200;
   $BAMF = ($LMFAO / $GTFO) * 60000;
  ?>
    var dataLayer = dataLayer || &#91;];
    dataLayer.push({
     "post_id" : "&lt;?php print $post->ID; ?>",
     "word_count" : &lt;?php print $LMFAO ?>,  // LMFAO
     "reading_time": &lt;?php print $BAMF ?> // BAMF
    });
&lt;/script></code></pre>



<p class="wp-block-paragraph">Expected output:</p>



<pre class="wp-block-code"><code>&lt;script>
  var dataLayer = dataLayer || &#91;];
  dataLayer.push({
    "post_id" : "3135",
    "word_count" : 454,  // LMFAO
    "reading_time": 136200 // BAMF
  });
&lt;/script></code></pre>



<p class="wp-block-paragraph"><br>Now we need to use a GTM timer-based trigger to make use of that BAMF.</p>



<p class="wp-block-paragraph">As you can see below we&#8217;re using a timer with a interval set to our BAMF returned by the <strong><em>CJS &#8211; Time to read the article</em></strong> variable.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="674" src="https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-trigger-julien-coquet-1024x674.png" alt="" class="wp-image-3264" srcset="https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-trigger-julien-coquet-1024x674.png 1024w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-trigger-julien-coquet-300x198.png 300w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-trigger-julien-coquet-768x506.png 768w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-trigger-julien-coquet-1536x1012.png 1536w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-trigger-julien-coquet-2048x1349.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Finally, let&#8217;s tie a GA4 event tag to that trigger as you can see in the tag configuration below.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="710" src="https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-ga4-event-julien-coquet-1024x710.png" alt="" class="wp-image-3265" srcset="https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-ga4-event-julien-coquet-1024x710.png 1024w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-ga4-event-julien-coquet-300x208.png 300w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-ga4-event-julien-coquet-768x533.png 768w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-ga4-event-julien-coquet-1536x1065.png 1536w, https://juliencoquet.com/wp-content/uploads/2025/11/bamf-lmfao-gtfo-gtm-word-count-ga4-event-julien-coquet.png 2016w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Your <strong><em>BAMF!</em></strong> GA4 event is now ready to hit your reports for activation! And yes, any event platform will do.</p>



<p class="wp-block-paragraph">Of course you can enrich the event parameters with, say, word range and reading time brackets to create LMFAO and GTFO models. Create audiences of non-BAMF users and start a Page Interaction Maximization Percentage (<strong>PIMP</strong>) program to further optimize your content.</p>



<h2 class="wp-block-heading">In closing</h2>



<p class="wp-block-paragraph">As you can see, calculating your BAMF potential using a tag manager is fairly easy. Actually, the entire endeavour took me less time than writing up this post and coming up with the puns. Therefore, I encourage you to set it up, play with the results and <a href="https://juliencoquet.com/contact/">let me know</a> if you got satisfactory PIMP results!</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://juliencoquet.com/2025/11/13/measure-page-reading-and-dropoff-times/">Measure page reading and dropoff times</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2025/11/13/measure-page-reading-and-dropoff-times/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>AI is intellectual fraud</title>
		<link>https://juliencoquet.com/2025/10/27/ai-is-intellectual-fraud/</link>
					<comments>https://juliencoquet.com/2025/10/27/ai-is-intellectual-fraud/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Mon, 27 Oct 2025 11:30:00 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3223</guid>

					<description><![CDATA[<p>From MeasureCamp Paris, June 14, 2025 So I walked into a packed room for my second session on AI. Apparently, “reason #3 will surprise you!” worked as a subtle clickbait hook on my session card. No pressure! I did not build a slide deck for once so I‘m sharing a write-up of the session below. [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2025/10/27/ai-is-intellectual-fraud/">AI is intellectual fraud</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><em>From </em><a href="https://paris.measurecamp.org" target="_blank" rel="noreferrer noopener"><em>MeasureCamp Paris</em></a>,<em> June 14, 2025</em></p>



<p class="wp-block-paragraph">So I walked into a packed room for my second session on AI. Apparently, “reason #3 will surprise you!” worked as a subtle clickbait hook on my session card. No pressure!</p>



<p class="wp-block-paragraph">I did not build a slide deck for once so I‘m sharing a write-up of the session below.</p>



<span id="more-3223"></span>



<p class="wp-block-paragraph">For what it’s worth, this article was written entirely by yours truly without any AI assistance.</p>



<h3 class="wp-block-heading">Idiocracy Was A Documentary</h3>



<figure class="wp-block-image"><img decoding="async" src="https://cdn-images-1.medium.com/max/1600/1*jadHJhYbIIjgaKLNcdNxag.gif" alt=""/><figcaption class="wp-element-caption">IQ is declining? — Source:&nbsp;<a href="https://tenor.com/view/iq-low-dumb-stupidity-stupid-gif-24161342" rel="noreferrer noopener" target="_blank">Tenor</a></figcaption></figure>



<p class="wp-block-paragraph">For some general context, we’re seeing a <a href="https://www.polytechnique-insights.com/en/columns/society/declining-global-iq-reality-or-moral-panic/" rel="noreferrer noopener" target="_blank">widespread decline in IQ growth</a> (average IQ usually sits between 90 and 100). So it’s not so much that we’re becoming dumber as a species but, in reality, humanity no longer has predators or immediate dangers — except for the problems it creates for itself (overpopulation, wars, environment, <a href="https://www.urbandictionary.com/define.php?term=etm" rel="noreferrer noopener" target="_blank">etm.</a>).</p>



<p class="wp-block-paragraph">Speaking of overpopulation, for those of you who <a href="https://www.youtube.com/watch?v=6lai9QhBibk" rel="noreferrer noopener" target="_blank">watched Idiocracy</a>, we observe that birth rates are higher among couples with lower IQs compared to educated and intelligent couples. Where intelligence was once a desirable trait in a partner, we’re realizing that physical attributes are taking over as seduction criteria.</p>



<p class="wp-block-paragraph">Public perception of intelligence is now skewed, starting in school playgrounds, where the word “nerd” is thrown around as an insult. It’s sad but, unfortunately, it’s also a sign of these troubled times.</p>



<p class="wp-block-paragraph">Humanity no longer “needs” to develop its IQ; it now relies on cognitive crutches such as social media and, more recently, “artificial intelligence.”</p>



<h3 class="wp-block-heading">Is it AI or&nbsp;not?</h3>



<p class="wp-block-paragraph">As mentioned in my <a href="https://drive.google.com/file/d/1iV8_wJGmJozAAYXpoUaWTYFtg27jZyyv/view" rel="noreferrer noopener" target="_blank">opening keynote on artificial intelligence at Superweek 2024</a>&nbsp;, and to put things in context, we can define “artificial intelligence” as the way to automate tasks that require human intelligence. A digital version of automotive production lines or &lt;<em>insert your industrial automation here&gt;</em>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="574" src="https://juliencoquet.com/wp-content/uploads/2025/06/superweek-julien-coquet-disambiguation-ai-artificial-intelligence-machine-learning-1024x574.png" alt="" class="wp-image-3244" srcset="https://juliencoquet.com/wp-content/uploads/2025/06/superweek-julien-coquet-disambiguation-ai-artificial-intelligence-machine-learning-1024x574.png 1024w, https://juliencoquet.com/wp-content/uploads/2025/06/superweek-julien-coquet-disambiguation-ai-artificial-intelligence-machine-learning-300x168.png 300w, https://juliencoquet.com/wp-content/uploads/2025/06/superweek-julien-coquet-disambiguation-ai-artificial-intelligence-machine-learning-768x431.png 768w, https://juliencoquet.com/wp-content/uploads/2025/06/superweek-julien-coquet-disambiguation-ai-artificial-intelligence-machine-learning.png 1400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">We all talk about AI but in the vast majority of cases, we’re dealing with <a href="https://en.wikipedia.org/wiki/Machine_learning" rel="noreferrer noopener" target="_blank">machine learning</a> or <a href="https://en.wikipedia.org/wiki/Deep_learning" rel="noreferrer noopener" target="_blank">deep learning</a>, in which we feed/train an algorithmic model with various and diverse data.</p>



<p class="wp-block-paragraph">Through massive proximity calculations (usually K-Near) between elements, we are able to “predict” which element will come next. By expanding the process, we end up reproducing text, sound, or images. This is what we’re dealing with when we talk about generative AI or <em>gen-AI</em>.</p>



<p class="wp-block-paragraph">The use of generative AI therefore relies on a massive amount of data to guesstimate a version of what a prompt is asking for. This means that, besides the problems related to ownership, exploitation, and cleanliness of data used for model training, the relevance of results is conditioned by the relevance, completeness, and recency of training data. And obviously this means that <a href="https://www.euronews.com/next/2025/01/30/war-rooms-data-theft-allegations-and-open-source-how-tech-firms-reacted-to-deepseeks-ai" rel="noreferrer noopener" target="_blank">platforms like ChatGPT will have to stop siphoning content from other sites or other AI platforms</a>.</p>



<p class="wp-block-paragraph">In this brave new world where most content is just “evergreen” recycling or AI-assisted generation, <strong>the creation of new content by ChatGPT and sundry can look like well-formatted gibberish</strong>: no coherence, erroneous or obsolete data, etc.</p>



<h3 class="wp-block-heading">Stagnation or innovation?</h3>



<p class="wp-block-paragraph">This is the moment in my discussion where I draw a parallel with <a href="https://amzn.to/4kPbDHn" rel="noreferrer noopener" target="_blank">Cixin Liu’s book, The Three Body Problem</a>, in which extraterrestrials — to conquer Earth — prevent the scientific and technological development of earthlings who find themselves developing a defense strategy against an interplanetary race with a technology and research level from 2020.</p>



<p class="wp-block-paragraph">When we bring this back to AI usage that can only learn from an existing corpus of text, images, or sound, this only reinforces my previous point about data relevance and freshness: <strong>innovation cannot happen based solely on past data</strong>.</p>



<p class="wp-block-paragraph">This raises real questions about how humans will evolve as a species if our innovation and creativity is outsourced to an algorithm through intellectual laziness disguised as convenience.</p>



<h3 class="wp-block-heading">Kittens on skis, with hot chocolate</h3>



<p class="wp-block-paragraph">We get to the part of the debate that deals with generating photorealistic images, using “kittens on skis, with hot chocolate” (gross and deliberate exaggeration) as an example.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="480" height="480" src="https://juliencoquet.com/wp-content/uploads/2025/06/u6285756341_photorealistic_picture_of_a_skiing_kitten_complet_8ec8a68a-f5cb-4203-b19e-321c4361734b_2-e1750242083678.png" alt="" class="wp-image-3224"/><figcaption class="wp-element-caption">Kittens on skis with hot chocolate — real AF&nbsp;; Source: Midjourney</figcaption></figure>



<p class="wp-block-paragraph">We’ve seen similar images everywhere: on television, on social media, and in pretty much all media.</p>



<p class="wp-block-paragraph">More recently, political AI-generated material has cropped up on Facebook, Twitter, and other outlets. We have lost count of the number of conspiracy and disinformation posts that feature political leaders in compromising situations, in obviously photoshopped or generated photos.</p>



<p class="wp-block-paragraph">This problem is crucial because this phenomenon contributes to eroding our democracy by flooding media and secondary information channels (such as social media) with massive disinformation.</p>



<p class="wp-block-paragraph">We are also now receiving robocalls from AI chatbots selling us something while pretending to be human.</p>



<p class="wp-block-paragraph"><strong>Generative AI creates a distortion of reality and influences the perception of people who don’t know how to tell the difference between a real image and a generated image.</strong></p>



<h3 class="wp-block-heading">Can One Even Face This&nbsp;Tsunami?</h3>



<p class="wp-block-paragraph">The use of this image generation technique discredits historically trusted information sources and references: mainstream media, traditional information channels, as well as governmental entities.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://juliencoquet.com/wp-content/uploads/2025/06/ai-tsunami-1_IyVE8q_2zLeg42hUte8kkQ.png" alt="" class="wp-image-3260" style="aspect-ratio:3/4;object-fit:cover" srcset="https://juliencoquet.com/wp-content/uploads/2025/06/ai-tsunami-1_IyVE8q_2zLeg42hUte8kkQ.png 1024w, https://juliencoquet.com/wp-content/uploads/2025/06/ai-tsunami-1_IyVE8q_2zLeg42hUte8kkQ-300x300.png 300w, https://juliencoquet.com/wp-content/uploads/2025/06/ai-tsunami-1_IyVE8q_2zLeg42hUte8kkQ-150x150.png 150w, https://juliencoquet.com/wp-content/uploads/2025/06/ai-tsunami-1_IyVE8q_2zLeg42hUte8kkQ-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">“My sources are 100% trustworthy” — Source: Midjourney</figcaption></figure>



<p class="wp-block-paragraph">Thanks to <a href="https://en.wikipedia.org/wiki/Brandolini%27s_law" rel="noreferrer noopener" target="_blank">Brandolini’s law (aka the bullshit asymmetry principle)</a>, we know that the energy and effort needed to debunk a falsehood is several orders of magnitude greater than the energy needed to support a truth — or to create/generate disinformation. And thanks to AI, we can industrialize fake news creation.</p>



<p class="wp-block-paragraph">Clearly, we’ve moved beyond the stage of taking responsibility. That’s why we need more regulation on how AI is used, even though <a href="https://www.europarl.europa.eu/topics/en/article/20230601STO93804/eu-ai-act-first-regulation-on-artificial-intelligence" rel="noreferrer noopener" target="_blank">in Europe we’ve already taken the first steps with the AI Act</a>.</p>



<p class="wp-block-paragraph">We also need an education policy to be put in place to raise awareness, from an early age, for children to moderate their access to social media despite current habits and <strong>learn to distinguish an artificial image from a real image</strong>. On this last point, our older fellow citizens must also benefit from this kind of training.</p>



<p class="wp-block-paragraph">Finally, we need to teach everyone to know how to verify information by searching for contradictory or confirmatory sources.</p>



<h3 class="wp-block-heading">AI Is Not Sustainable</h3>



<p class="wp-block-paragraph">This MeasureCamp session was very interactive and questions started being asked about the sustainability of AI practice. If we’re concerned about carbon footprint, we can start looking at <a href="https://lookerstudio.google.com/u/0/reporting/9cce93f4-8979-4028-8393-e4c7573fe274/page/NRhEF" rel="noreferrer noopener" target="_blank">cloud service CO2 consumption levels</a>. <a href="https://medium.com/@juliencoquet/the-ghibli-ai-fad-is-a-symptom-of-the-cancer-eating-us-alive-ad6d2145a82b" target="_blank" rel="noreferrer noopener">During the “Ghibli style” or “starter pack” trend</a>, we started seeing impact estimates (in terms of water consumption) of an AI prompt just to create a blister-packed figurine illustration.</p>



<p class="wp-block-paragraph">Generative AI can be useful, fun, but clearly it has an impact on our resources.</p>



<h3 class="wp-block-heading">Not the Time to Get Depressed</h3>



<p class="wp-block-paragraph">Let’s not kid ourselves: the conclusions of this debate were quite negative about our prospects as a species, especially because of:</p>



<ul class="wp-block-list">
<li>overpopulation,</li>



<li>declining IQ,</li>



<li>innovation stagnation,</li>



<li>resource overuse,</li>



<li>digital divide,</li>



<li>environmental impact</li>
</ul>



<p class="wp-block-paragraph">Just like any other tool, AI must be used sparingly and with clear judgment. It requires very particular support and education on ethical, legal, sustainable, and educational aspects of AI.</p>



<p class="wp-block-paragraph">Obviously, a 30-minute debate was not going to save the world, but I like to think that participants felt invested with a mission of evangelization on the impact of AI.</p>



<p class="wp-block-paragraph">The discussions continued over drinks but need not stop there. If you’re reading this, I urge you to take an interest in the subject and get involved in education and evangelization efforts.</p>



<p class="wp-block-paragraph">See you soon and see you next year for <a href="https://www.measurecamp.org" rel="noreferrer noopener" target="_blank">MeasureCamp</a>, in Paris or elsewhere! Let me know your comments here!</p>
<p>The post <a href="https://juliencoquet.com/2025/10/27/ai-is-intellectual-fraud/">AI is intellectual fraud</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2025/10/27/ai-is-intellectual-fraud/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Opt out of LinkedIn AI before November 3</title>
		<link>https://juliencoquet.com/2025/10/20/opt-out-of-linkedin-ai-before-november-3/</link>
					<comments>https://juliencoquet.com/2025/10/20/opt-out-of-linkedin-ai-before-november-3/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Mon, 20 Oct 2025 09:33:57 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3252</guid>

					<description><![CDATA[<p>Starting on November 3, 2025, LinkedIn will start to use some data from members to train content-generating AI models. That data can be from user profiles but also from posts and other user-generated, or user-provided content. Not that they haven&#8217;t used your data in the past, but better late than never, am I right? At [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2025/10/20/opt-out-of-linkedin-ai-before-november-3/">Opt out of LinkedIn AI before November 3</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Starting on November 3, 2025, <a href="https://www.reddit.com/r/recruitinghell/comments/wfqm1c/off_of_my_chest_why_linkedin_is_the_worst_social/">LinkedIn</a> will start to use some data from members to train content-generating AI models. That data can be from user profiles but also from posts and other user-generated, or user-provided content. Not that they haven&#8217;t used your data in the past, but better late than never, am I right?</p>



<p class="wp-block-paragraph">At any rate, here is a super fast guide to opt out of LinkedIn AI.</p>



<span id="more-3252"></span>



<p class="wp-block-paragraph">Arguably, <a href="https://www.reddit.com/r/Futurology/comments/1hyt8dm/aigenerated_slop_is_slowly_killing_the_internet/">a sizeable portion of LinkedIn content is already AI slop</a>. Sometimes it&#8217;s poorly disguised MarkDown output. There is much to be said on the value of regurgitating rehashed content that&#8217;s already been re-hashed but let&#8217;s not dwell on this today: you&#8217;ve got to opt out!</p>



<h2 class="wp-block-heading"><a href="https://www.tiktok.com/@the_pastaqueen/video/7392220543111482654">Instructions</a></h2>



<p class="wp-block-paragraph">In order to restrict LinkedIn from using your data for their AI models, follow these simple steps:</p>



<ol class="wp-block-list">
<li><strong>Click on your profile icon (Me) and click on to Account > Settings and Privacy</strong></li>
</ol>



<figure class="wp-block-image size-medium"><img loading="lazy" decoding="async" width="145" height="300" src="https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-top-menu-145x300.png" alt="" class="wp-image-3253" srcset="https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-top-menu-145x300.png 145w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-top-menu-495x1024.png 495w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-top-menu.png 544w" sizes="auto, (max-width: 145px) 100vw, 145px" /></figure>



<ol start="2" class="wp-block-list">
<li><strong>Navigate to Data Privacy then check that <em>Data for Generative AI Improvement</em> is set to <em>Off</em>.</strong></li>
</ol>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="401" src="https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-settings-privacy-menu-1024x401.png" alt="" class="wp-image-3256" srcset="https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-settings-privacy-menu-1024x401.png 1024w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-settings-privacy-menu-300x118.png 300w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-settings-privacy-menu-768x301.png 768w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-settings-privacy-menu-1536x602.png 1536w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-settings-privacy-menu-2048x802.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<ol start="3" class="wp-block-list">
<li><strong>If not set to Off, click the item to be taken to the option page. Turn the feature off.</strong></li>
</ol>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1382" height="410" src="https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-Data-for-Generative-AI-Improvement.png" alt="" class="wp-image-3257" srcset="https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-Data-for-Generative-AI-Improvement.png 1382w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-Data-for-Generative-AI-Improvement-300x89.png 300w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-Data-for-Generative-AI-Improvement-1024x304.png 1024w, https://juliencoquet.com/wp-content/uploads/2025/10/linkedin-ai-optout-Data-for-Generative-AI-Improvement-768x228.png 768w" sizes="auto, (max-width: 1382px) 100vw, 1382px" /></figure>



<ol start="4" class="wp-block-list">
<li><strong>Profit?</strong></li>
</ol>



<p class="wp-block-paragraph">Now your content will not be used for AI modeling &#8211; for sure!</p>



<h2 class="wp-block-heading">In closing</h2>



<p class="wp-block-paragraph">Super short article for once, but I hope you had set the option to Off before reading this.</p>



<p class="wp-block-paragraph">It&#8217;s sort of sad that a global platform such as LinkedIn is not able to better monetize their content. </p>



<p class="wp-block-paragraph">It&#8217;s depressing that content curation cannot filter out that slop.</p>



<p class="wp-block-paragraph">It&#8217;s bad enough that every post on there makes you weep for the decline of human intellect.</p>



<p class="wp-block-paragraph">Thoughts? Comments? Let me know!</p>
<p>The post <a href="https://juliencoquet.com/2025/10/20/opt-out-of-linkedin-ai-before-november-3/">Opt out of LinkedIn AI before November 3</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2025/10/20/opt-out-of-linkedin-ai-before-november-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Traffic consolidation with server-side tag management</title>
		<link>https://juliencoquet.com/2025/09/29/traffic-consolidation-with-server-side-tag-management/</link>
					<comments>https://juliencoquet.com/2025/09/29/traffic-consolidation-with-server-side-tag-management/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Sun, 28 Sep 2025 23:00:00 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3234</guid>

					<description><![CDATA[<p>When you manage data for multiple websites and mobile applications, you will be tempted &#8211; with good reason &#8211; to consolidate the data into a single data source. Because we are now slimming down our data footprint, this post shows how to achieve data consolidation using server-side tag management. The post will be focusing for [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2025/09/29/traffic-consolidation-with-server-side-tag-management/">Traffic consolidation with server-side tag management</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When you manage data for multiple websites and mobile applications, you will be tempted &#8211; with good reason &#8211; to consolidate the data into a single data source. Because we are now slimming down our data footprint, this post shows how to achieve data consolidation using server-side tag management. The post will be focusing for Google products, but rest assured this can be done with other vendors.</p>



<span id="more-3234"></span>



<p class="wp-block-paragraph">A few years back, back when we were still using Google Universal Analytics, <a href="https://juliencoquet.com/en/blog/2019/02/28/consolidate-traffic-data-across-sites-google-analytics/">I wrote about consolidating traffic from multiple sites and apps</a>. When Google Analytics 4 came out, its data collection API was missing the equivalent of a <em><a href="https://www.simoahava.com/analytics/customtask-the-guide/">customTask</a></em> method, which could perform data requests from the original data event request. Because of the lack of a <em>customTask</em>-like feature, the workaround method was to multiply tags, this meant more implementation work and more risks of crossing beams.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Ghostbusters - Don&#039;t Cross The Streams" width="500" height="281" src="https://www.youtube.com/embed/wyKQe_i9yyo?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Introducing server-side data collection</h2>



<p class="wp-block-paragraph">Server-side tag management may look adorable but it&#8217;s deceptively powerful. </p>



<figure class="wp-block-image alignright size-full"><img loading="lazy" decoding="async" width="400" height="400" src="https://juliencoquet.com/wp-content/uploads/2025/09/server-side-consolidation-in-google-analytics-4-using-google-tag-manager-400.png" alt="" class="wp-image-3235" srcset="https://juliencoquet.com/wp-content/uploads/2025/09/server-side-consolidation-in-google-analytics-4-using-google-tag-manager-400.png 400w, https://juliencoquet.com/wp-content/uploads/2025/09/server-side-consolidation-in-google-analytics-4-using-google-tag-manager-400-300x300.png 300w, https://juliencoquet.com/wp-content/uploads/2025/09/server-side-consolidation-in-google-analytics-4-using-google-tag-manager-400-150x150.png 150w" sizes="auto, (max-width: 400px) 100vw, 400px" /></figure>



<p class="wp-block-paragraph">In a nutshell, a sTMS (server-side tag management system) is used to funnel API calls from marketing tags before processing them and finally dispatching them to the right endpoints. </p>



<p class="wp-block-paragraph">Unlike regular, client-side tag management (essentially a direct tag delivery platform), using a sTMS reduces the number of client-side requests. sTMS products of choice include <a href="https://developers.google.com/tag-platform/tag-manager/server-side">Google Tag Manager</a>, <a href="https://piwik.pro/tag-manager/">Piwik Pro</a> or <a href="https://www.jentis.com">Jentis</a>. Based on hosting options, you may want to use a sTMS broker/proxy such as <a href="https://lp.juliencoquet.com/en/addingwell">Addingwell</a> or Stape. </p>



<p class="wp-block-paragraph">&#8220;But what does it have to do with data consolidation?&#8221;, you ask?</p>



<p class="wp-block-paragraph">Let&#8217;s use the example from my older post: let&#8217;s say we manage three websites, cleverly named sitea.com, siteb.com, and sitec.com, each using their own tag data silo. In this example, we will use Google Analytics 4 measurement IDs as an example but feel free to use &lt;insert that analytics solution you use>.</p>



<p class="wp-block-paragraph">Let&#8217;s assume we have different measurement IDs for each site, as well as a separate measurement ID that will be used for consolidation. Right now, there are no concerns for GA4 account/property structure but that can come later.</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>&#8220;Local&#8221; Site</strong></td><td><strong>&#8220;Local&#8221; Measurement ID</strong></td><td><strong>&#8220;Global&#8221; Measurement ID</strong></td></tr><tr><td>sitea.com</td><td>G-WHATEVER-1</td><td>G-ALLDATA-1</td></tr><tr><td>siteb.com</td><td>G-WHATEVER-2</td><td>G-ALLDATA-1</td></tr><tr><td>sitec.com</td><td>G-WHATEVER-3</td><td>G-ALLDATA-1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Like I hinted at before, we want to avoid multiplying tag implementation work on each site &#8211; and each site&#8217;s client-side TMS.</p>



<h2 class="wp-block-heading">sTMS to the rescue</h2>



<p class="wp-block-paragraph">Let&#8217;s make a couple assumptions: </p>



<ul class="wp-block-list">
<li>you have set up server-side tag management (<a href="https://lp.juliencoquet.com/en/addingwell">Google Tag Manager server-side over Addingwell</a>)</li>



<li>You are using your Google Analytics 4 as a trojan horse or as the &#8220;&#8216;pig&#8217; in &#8216;piggyback'&#8221; server call. </li>
</ul>



<p class="wp-block-paragraph">From there, you are very likely using GA4 event data from the server side to fire other tags, as shown below:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="826" height="724" src="https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-regular-tag.png" alt="Google Analytics 4 tag in server-side Google Tag Manager" class="wp-image-3237" srcset="https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-regular-tag.png 826w, https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-regular-tag-300x263.png 300w, https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-regular-tag-768x673.png 768w" sizes="auto, (max-width: 826px) 100vw, 826px" /></figure>



<p class="wp-block-paragraph">At this point, all it takes is to add another &#8220;GA4 consolidation&#8221; tag to your sGTM container that fires along every GA4 tag request:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="808" height="870" src="https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-consolidation-tag.png" alt="" class="wp-image-3238" srcset="https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-consolidation-tag.png 808w, https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-consolidation-tag-279x300.png 279w, https://juliencoquet.com/wp-content/uploads/2025/09/server-side-gtm-google-analytics-4-consolidation-tag-768x827.png 768w" sizes="auto, (max-width: 808px) 100vw, 808px" /></figure>



<p class="wp-block-paragraph">As you can see, I added:</p>



<ul class="wp-block-list">
<li>a GA4 measurement ID for my consolidation property</li>



<li>consolidation-specific event parameters</li>
</ul>



<p class="wp-block-paragraph">These parameters will be used to overwrite or enrich the data from each site into that single measurement silo. Of course, you can add additional rules and triggers to only include some information or to only fire in a specific page folder &#8211; or something &#8211; so go crazy. </p>



<p class="wp-block-paragraph">Depending on your setup, you may be using subdomains with specific data collection, or even track multiple domains using the same sGTM instance mapped on multiple domains (thanks, <a href="https://lp.juliencoquet.com/en/addingwell">Addingwell</a>!). </p>



<p class="wp-block-paragraph">This method will also grant you a level of data governance especially if multiple parties can access/modify site tagging. With sTMS and transformations (like in sGTM), you can correct or redact data before it gets sent to your favorite data analytics provider.</p>



<h2 class="wp-block-heading">In closing</h2>



<p class="wp-block-paragraph">If you have not yet made the move to server-side data collection, now would be a good time to start a migration project because, despite the costs associated with running your sTMS instance, <strong>the battle of the next few years will be to own your first-party data</strong>. Server-side tag management is a major weapon in your data collection arsenal so you can win that battle and <a href="https://www.youtube.com/watch?v=Oo9buo9Mtos">crush your competitors, see them driven before you and hear the lamentations of their marketing teams.</a> </p>



<p class="wp-block-paragraph">If you have multiple digital assets, make sure you use a server-side methodology to tie all that data neatly into a single source of truth. </p>



<p class="wp-block-paragraph">Thoughts? Feedback? Let me know in the comments!</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://juliencoquet.com/2025/09/29/traffic-consolidation-with-server-side-tag-management/">Traffic consolidation with server-side tag management</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2025/09/29/traffic-consolidation-with-server-side-tag-management/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>On expertise and client relationships</title>
		<link>https://juliencoquet.com/2025/01/06/on-expertise-and-client-relationships/</link>
					<comments>https://juliencoquet.com/2025/01/06/on-expertise-and-client-relationships/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Mon, 06 Jan 2025 08:00:00 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3390</guid>

					<description><![CDATA[<p>If you watched&#160;Better Call Saul, there is this episode where Kim Wexler, the attorney for large fictional bank Mesa Verde, fires them as a client after they repeatedly ignore her expert legal advice. In the full episode, Saul Goodman was great at goading the client further towards ruin by playing on their emotions, while she [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2025/01/06/on-expertise-and-client-relationships/">On expertise and client relationships</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph" id="a7b1">If you watched&nbsp;<a href="https://www.netflix.com/watch/81232200" rel="noreferrer noopener" target="_blank">Better Call Saul</a>, there is this episode where Kim Wexler, the attorney for large fictional bank Mesa Verde, fires them as a client after they repeatedly ignore her expert legal advice.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Kim disagrees with Mesa Verde | Better Call Saul #shorts #movie #viralvideo #bettercallsaul #netflix" width="500" height="281" src="https://www.youtube.com/embed/GQuDvZ9jliU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph" id="8558"><a href="https://www.netflix.com/watch/81232206?trackId=268410292" rel="noreferrer noopener" target="_blank">In the full episode</a>, Saul Goodman was great at goading the client further towards ruin by playing on their emotions, while she remained the voice of reason, but that can be an excuse for another post.</p>



<p class="wp-block-paragraph" id="ea6b">My point is that if you&#8217;re going to hire outside expertise, it&#8217;s because you don&#8217;t have the skills or bandwidth to address a problem that your organization is facing. You’re hiring&nbsp;<a href="https://en.wikipedia.org/wiki/Agency_(philosophy)" rel="noreferrer noopener" target="_blank">agency</a>, competence, and&nbsp;<a href="https://lp.juliencoquet.com/en/services" rel="noreferrer noopener" target="_blank">experience</a>.</p>



<p class="wp-block-paragraph" id="79d4">You as a consultant come in and gather (then challenge &amp; refine) requirements, come up with a plan based on your expert opinion and actual experience, then execute on the plan.</p>



<p class="wp-block-paragraph" id="de51">If your client ignores you or second-guesses your advice at every turn, you know it&#8217;s time for both parties to take a different path.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="609" src="https://juliencoquet.com/wp-content/uploads/2025/12/tug-of-war-julien-coquet-1024x609.avif" alt="" class="wp-image-3391" srcset="https://juliencoquet.com/wp-content/uploads/2025/12/tug-of-war-julien-coquet-1024x609.avif 1024w, https://juliencoquet.com/wp-content/uploads/2025/12/tug-of-war-julien-coquet-300x179.avif 300w, https://juliencoquet.com/wp-content/uploads/2025/12/tug-of-war-julien-coquet-768x457.avif 768w, https://juliencoquet.com/wp-content/uploads/2025/12/tug-of-war-julien-coquet-1536x914.avif 1536w, https://juliencoquet.com/wp-content/uploads/2025/12/tug-of-war-julien-coquet.avif 1875w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Image credit: SvetaZi/Getty Images</figcaption></figure>



<p class="wp-block-paragraph" id="2eea">This highly toxic behavior has a terrible effect on your self-confidence. If you were already suffering from&nbsp;<a href="https://en.wikipedia.org/wiki/Impostor_syndrome" rel="noreferrer noopener" target="_blank">impostor syndrome</a>, this will only make things worse.</p>



<p class="wp-block-paragraph" id="383f">When you are part of a larger organization, there is a support structure to… support you with this type of situation. When you’re your own boss, however, you have to be able to manage that difficult client relationship.</p>



<p class="wp-block-paragraph" id="8967">You have to learn how to spot red flags and also back yourself up with facts and data. Depending on the level of corporate verbiage, here are a couple ways to provide reinforcement in communications:</p>



<ul class="wp-block-list">
<li>“<strong>I’ll make myself available for an in-depth review</strong>”: you’re offering time and energy to ensure your point is understood</li>



<li>“<strong>How would you like me to measure whether I’ve implemented this correctly?</strong>” : let’s both agree beforehand on what success looks like</li>



<li>“<strong>Help me understand where you’re coming from</strong>” : attempt to dispell misconceptions</li>



<li>“<strong>Per my last email</strong>”: I’m referencing something important that was missed or ignored</li>



<li>“<strong>This outcome was identified early on</strong>” : Corporate for “I told you so”</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="682" src="https://juliencoquet.com/wp-content/uploads/2025/12/set-clear-boundaries-0_cvfh7gpah9wmCAfI-1024x682.webp" alt="" class="wp-image-3392" srcset="https://juliencoquet.com/wp-content/uploads/2025/12/set-clear-boundaries-0_cvfh7gpah9wmCAfI-1024x682.webp 1024w, https://juliencoquet.com/wp-content/uploads/2025/12/set-clear-boundaries-0_cvfh7gpah9wmCAfI-300x200.webp 300w, https://juliencoquet.com/wp-content/uploads/2025/12/set-clear-boundaries-0_cvfh7gpah9wmCAfI-768x512.webp 768w, https://juliencoquet.com/wp-content/uploads/2025/12/set-clear-boundaries-0_cvfh7gpah9wmCAfI-930x620.webp 930w, https://juliencoquet.com/wp-content/uploads/2025/12/set-clear-boundaries-0_cvfh7gpah9wmCAfI.webp 1400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Set clear boundaries &#8211; Photo by&nbsp;<a href="https://unsplash.com/@sylwiabartyzel?utm_source=medium&amp;utm_medium=referral" rel="noreferrer noopener" target="_blank">Sylwia Bartyzel</a>&nbsp;on&nbsp;<a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral" rel="noreferrer noopener" target="_blank">Unsplash</a></figcaption></figure>



<p class="wp-block-paragraph" id="fac6">If you’re cynical, you will see the above as <a href="https://www.dictionary.com/browse/cya" target="_blank" rel="noreferrer noopener">CYA</a>. I for one see that as a way to establish clear work boundaries. Whenever possible, <a href="https://en.wikipedia.org/wiki/Active_listening" target="_blank" rel="noreferrer noopener">use active listening</a>. This helps cement expectations and deliverables.<a href="https://medium.com/plans?source=upgrade_membership---post_li_non_moc_upsell--19b72339a0cb---------------------------------------"></a></p>



<p class="wp-block-paragraph" id="c4fa">Unfortunately, despite your best efforts, there will come a time when that relationship with the client will become untenable because your advice is ignored or (worse) an adverse result can be misconstrued as failure on your part.</p>



<h3 class="wp-block-heading" id="b8cf">“It’s not me, it’s you”</h3>



<p class="wp-block-paragraph" id="3b2e">This situation has happened to me a couple times as a freelance data consultant and, despite the fact that you are effectively ending a business relationship, you realize your energy and talent can be put to better use, without the toxicity and negativity you just experienced with that client.</p>



<p class="wp-block-paragraph" id="bb4d">Here are a couple ways to start broach the topic with your toxic client (apart from linking the video at the top of this post).</p>



<ul class="wp-block-list">
<li>“There appears to be a disconnect between the data-driven insights I’ve provided and the current strategic direction.”</li>



<li>“The data strongly supports [your recommendation], and I’m concerned that deviating from this may lead to suboptimal results.”</li>



<li>“My role is to provide data-backed recommendations. The current strategy seems to be operating outside of these insights.”</li>



<li>“The evidence suggests a different course of action would be more beneficial. I want to ensure we are leveraging the data effectively to make informed decisions.”</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="682" src="https://juliencoquet.com/wp-content/uploads/2025/12/its-not-me-its-you-broken-heart-0_WFLf_N6JRT2W6zU5-1024x682.webp" alt="" class="wp-image-3393" srcset="https://juliencoquet.com/wp-content/uploads/2025/12/its-not-me-its-you-broken-heart-0_WFLf_N6JRT2W6zU5-1024x682.webp 1024w, https://juliencoquet.com/wp-content/uploads/2025/12/its-not-me-its-you-broken-heart-0_WFLf_N6JRT2W6zU5-300x200.webp 300w, https://juliencoquet.com/wp-content/uploads/2025/12/its-not-me-its-you-broken-heart-0_WFLf_N6JRT2W6zU5-768x512.webp 768w, https://juliencoquet.com/wp-content/uploads/2025/12/its-not-me-its-you-broken-heart-0_WFLf_N6JRT2W6zU5-930x620.webp 930w, https://juliencoquet.com/wp-content/uploads/2025/12/its-not-me-its-you-broken-heart-0_WFLf_N6JRT2W6zU5.webp 1400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">It’s not me, it’s you — Photo by&nbsp;<a href="https://unsplash.com/@kellysikkema?utm_source=medium&amp;utm_medium=referral" rel="noreferrer noopener" target="_blank">Kelly Sikkema</a>&nbsp;on&nbsp;<a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral" rel="noreferrer noopener" target="_blank">Unsplash</a></figcaption></figure>



<h3 class="wp-block-heading" id="c33d">“We’re done”</h3>



<p class="wp-block-paragraph" id="88c7">Once you’re at the point of no return, assuming you cannot objectively be at fault, you can use breakup phrasing such as:</p>



<ul class="wp-block-list">
<li>“Over the course of our engagement, it has become apparent that there is a fundamental difference in our approaches to [mention the area, e.g., data strategy, implementation]. As a result, I have decided to conclude our collaboration, effective [some date soon].”</li>



<li>“While I appreciate the opportunity to have worked with [Client Company Name], it has become clear that our methodologies and priorities are not fully aligned. Therefore, I will be concluding our consulting engagement on [some date soon].”</li>
</ul>



<p class="wp-block-paragraph" id="eb90">What about you? Have you had to make tough decisions such as firing a client? Let me know in the comments.</p>
<p>The post <a href="https://juliencoquet.com/2025/01/06/on-expertise-and-client-relationships/">On expertise and client relationships</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2025/01/06/on-expertise-and-client-relationships/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Google Analytics 4 now offers benchmarking</title>
		<link>https://juliencoquet.com/2024/09/17/google-analytics-4-now-offers-benchmarking/</link>
					<comments>https://juliencoquet.com/2024/09/17/google-analytics-4-now-offers-benchmarking/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Tue, 17 Sep 2024 06:00:00 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3127</guid>

					<description><![CDATA[<p>Google Analytics 4 has introduced a benchmarking feature, enabling businesses to compare their performance against industry peers. While this functionality was previously available in the now defunct Universal Analytics, GA4 offers enhanced standardization through the use of reserved and recommended events, providing more accurate and reliable comparisons. The process for enabling benchmarking in Google Analytics [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2024/09/17/google-analytics-4-now-offers-benchmarking/">Google Analytics 4 now offers benchmarking</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-3a88641f wp-block-group-is-layout-flex">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="300" height="300" src="https://juliencoquet.com/wp-content/uploads/2024/09/google-analtytics-benchmarking-comparison-pexels-maksgelatin-4412924-300px-1.png" alt="" class="wp-image-3139" style="width:217px;height:auto" srcset="https://juliencoquet.com/wp-content/uploads/2024/09/google-analtytics-benchmarking-comparison-pexels-maksgelatin-4412924-300px-1.png 300w, https://juliencoquet.com/wp-content/uploads/2024/09/google-analtytics-benchmarking-comparison-pexels-maksgelatin-4412924-300px-1-150x150.png 150w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>



<p class="wp-block-paragraph"><a href="https://support.google.com/analytics/answer/13771577">Google Analytics 4 has introduced a benchmarking feature</a>, enabling businesses to compare their performance against industry peers. While this functionality was previously available in the now defunct Universal Analytics, GA4 offers enhanced standardization through the use of reserved and recommended events, providing more accurate and reliable comparisons.</p>
</div>



<p class="wp-block-paragraph">The process for enabling benchmarking in Google Analytics 4  is straightforward: just check  the box labeled &#8220;Contribute to modeling&#8221; option in account settings to authorize Google to use your property&#8217;s data to feed the benchmarking model. In return, you gain a comprehensive overview of your position relative to competitors in terms of volume, conversions, and key behaviors.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="683" height="126" src="https://juliencoquet.com/wp-content/uploads/2024/09/google-analytics-option-contribution-modelistation-benchmarking-en.png" alt="" class="wp-image-3136" style="width:629px;height:auto" srcset="https://juliencoquet.com/wp-content/uploads/2024/09/google-analytics-option-contribution-modelistation-benchmarking-en.png 683w, https://juliencoquet.com/wp-content/uploads/2024/09/google-analytics-option-contribution-modelistation-benchmarking-en-300x55.png 300w" sizes="auto, (max-width: 683px) 100vw, 683px" /></figure>



<p class="wp-block-paragraph">It&#8217;s important to note that the quality of benchmarking results heavily depends on the participation of businesses &amp; brands. The more data and the more consistent it is, the more meaningful the comparisons. Therefore, it&#8217;s crucial for businesses to accurately declare their industry, size, and correctly configure their conversion events.</p>



<p class="wp-block-paragraph">The advantages of this new approach are manifold:</p>



<ul class="wp-block-list">
<li><strong>Standardized measurements:</strong> Reserved and recommended events allow for comparison of similar metrics across different businesses, reducing bias caused by varying definitions.</li>



<li><strong>Focus on key events:</strong> By concentrating on industry-specific events (form submissions, purchases, bookings, games played, etc.), benchmarking provides more relevant insights for decision-makers.</li>



<li><strong>Competitive positioning:</strong> The ability to position oneself relative to the industry average allows for the identification of improvement opportunities and the setting of more ambitious goals.</li>
</ul>



<p class="wp-block-paragraph">However, certain limitations should be kept in mind:</p>



<ul class="wp-block-list">
<li><strong>Dependence on declared data:</strong> The quality of results depends on the accuracy of information provided by businesses.</li>



<li><strong>Comparative nature:</strong> Benchmarking allows for performance comparisons but does not provide explanations for the reasons behind differences.</li>



<li><strong>Lack of in-depth competitive analysis:</strong> It&#8217;s not a tool for competitive intelligence but rather a means of obtaining a broader market overview.</li>
</ul>



<h2 class="wp-block-heading"><strong>In conclusion</strong></h2>



<p class="wp-block-paragraph">GA4 benchmarking is a valuable tool for businesses seeking to assess their market position and identify areas for improvement. Nonetheless, it should be used judiciously and complemented by other analyses to make informed decisions.</p>
<p>The post <a href="https://juliencoquet.com/2024/09/17/google-analytics-4-now-offers-benchmarking/">Google Analytics 4 now offers benchmarking</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2024/09/17/google-analytics-4-now-offers-benchmarking/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>New post on Medium on cookie death</title>
		<link>https://juliencoquet.com/2024/04/10/new-post-on-medium-on-cookie-death/</link>
					<comments>https://juliencoquet.com/2024/04/10/new-post-on-medium-on-cookie-death/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 10 Apr 2024 09:07:27 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3122</guid>

					<description><![CDATA[<p>I just published a new post on Medium in which I finally put the &#8220;death of the cookie&#8221; hoopla to rest. Read the article : Cookies are delicious and I just can&#8217;t get enough</p>
<p>The post <a href="https://juliencoquet.com/2024/04/10/new-post-on-medium-on-cookie-death/">New post on Medium on cookie death</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I just published a new post on Medium in which I finally put the &#8220;death of the cookie&#8221; hoopla to rest.</p>



<p class="wp-block-paragraph">Read the article : <a href="https://medium.com/@juliencoquet/cookies-are-delicious-and-i-just-cant-get-enough-32edd9c7cbb8">Cookies are delicious and I just can&#8217;t get enough</a> </p>
<p>The post <a href="https://juliencoquet.com/2024/04/10/new-post-on-medium-on-cookie-death/">New post on Medium on cookie death</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2024/04/10/new-post-on-medium-on-cookie-death/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Google Analytics v4 is all grown up, and finally a freemium product</title>
		<link>https://juliencoquet.com/2020/10/14/google-analytics-v4-is-all-grown-up-and-finally-a-freemium-product/</link>
					<comments>https://juliencoquet.com/2020/10/14/google-analytics-v4-is-all-grown-up-and-finally-a-freemium-product/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Wed, 14 Oct 2020 13:35:54 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3054</guid>

					<description><![CDATA[<p>What if Google Analytics v4 (App+Web) was the best thing to happen to Google Analytics in the last 15 years? Will it finally give all the insights? Can I get free access to GA360? Will it cure cancer? Will it revive Steve Jobs? All I know is that my data is going to be a [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2020/10/14/google-analytics-v4-is-all-grown-up-and-finally-a-freemium-product/">Google Analytics v4 is all grown up, and finally a freemium product</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">What if Google Analytics v4 (App+Web) was the best thing to happen to Google Analytics in the last 15 years? Will it finally give all the insights? Can I get free access to GA360? Will it cure cancer? Will it revive Steve Jobs? </p>



<p class="wp-block-paragraph">All I know is that my data is going to be a lot tastier and scalable very soon &#8211; provided I add my credit card.</p>



<span id="more-3054"></span>



<h2 class="wp-block-heading">What is Google Analytics v4?</h2>



<p class="wp-block-paragraph">Google just announced the <strong>rebranding of its latest version of <a href="https://analytics.google.com/analytics/web/">Google Analytics</a></strong>, its website tracking platform. Until recently, the latest version was called App + Web and adopted a new data model compatible with <a href="https://firebase.google.com/">Firebase</a>, Google’s mobile marketing platform. Until now, Google Analytics was offered as Standard (free) and Premium (aka GA 360) reserved for enterprises.</p>



<p class="wp-block-paragraph">Google Analytics App+Web is now called <strong>Google Analytics 4</strong> to reinforce the principles of continuity with the previous version of the beloved analytics platform.</p>



<p class="wp-block-paragraph">If you&#8217;re not using the new version yet, it&#8217;s not the end of the world but you can upgrade at your own pace in order to reap the rewards of the new system. <br>Fair warning, though: Google will only keep developing new features for V4 and later going forward.</p>



<h2 class="wp-block-heading">Well, is it any good?</h2>



<p class="wp-block-paragraph">First of all, you need to resist the temptation to judge GA v4 on its user interface.&nbsp; You will however judge GA v4 on the power of its data model: with GA v4, Google is moving away from a proprietary data model with aggregated data and towards a <strong>flat data model where everything is an event</strong> and sessions become artefacts from 20 years ago (although they will remain for a while).</p>



<p class="wp-block-paragraph">With this new data model, we&#8217;re now able to <strong>measure and process data at a very granular level</strong>,&nbsp; which was impossible unless you were a Google Analytics 360 (née Premium) customer, with access to Google BigQuery, the data… querying and storage service running on Google’s Cloud Platform.&nbsp;</p>



<p class="wp-block-paragraph">Starting at a low 6-figure subscription, GA360 includes access to BigQuery. That price tag comes with quite a few bells and whistles (data integration, activation, and more), which meant <strong>only enterprises could afford all the features of Google Analytics 360 as well as BigQuery</strong>.&nbsp;</p>



<h2 class="wp-block-heading">Still, I wish I could afford 360</h2>



<p class="wp-block-paragraph">I for one have hounded Google for years to <strong>make GA 360 available for small and medium businesses</strong>, but that never happened from a product offering perspective, despite intermediate tiers.  Sadly, many startup accounts racked up lots of traffic, exceeding the dreaded 10 million monthly visits without being able to afford GA360.</p>



<p class="wp-block-paragraph">Because you’re a savvy data person, you know you can also access BigQuery for your cloud-based big data projects. You may know that all you need is a credit card and Google will bill you for the amount of data you store and process on its cloud platform by using BigQuery and other services.</p>



<p class="wp-block-paragraph">From Google&#8217;s announcement, you will have noticed that Google Analytics v4 data can be streamed automatically to BigQuery.&nbsp; <em>Note that this feature is not yet generally available but will be eventually</em>.</p>



<p class="wp-block-paragraph">If you are following my train of thought from the beginning of this article the other shoe is about to drop: <strong>&nbsp;you can use GA v4 with Big Query and suddenly gain godlike data powers by using your credit card for Google Cloud platform billing</strong>.</p>



<h2 class="wp-block-heading">Is this too good to be true?</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="500" height="281" src="https://juliencoquet.com/wp-content/uploads/2020/10/shut-up-and-take-my-money.gif" alt="" class="wp-image-3056"/></figure>



<p class="wp-block-paragraph">Almost. Using GA v4 with BigQuery is going to unlock the power of big data, machine learning, data science, <s>and artificial intelligence</s> for only a few dollars/euros per month.</p>



<p class="wp-block-paragraph">Arguably, this does not make you a GA 360 customer but gets you closer to that goal. For instance, many integrations still won’t be possible (especially with Google Marketing Platform). Before you ask, you can try to build everything over GCP but it won’t be the same.&nbsp;</p>



<p class="wp-block-paragraph">Right now, focus on GA v4. It will be made available as a premium360 version but the free version of <strong>Google analytics v4 truly becomes a freemium product</strong> with the BigQuery option.</p>



<h2 class="wp-block-heading">What’s next?</h2>



<p class="wp-block-paragraph">What have we learned, boys and girls?</p>



<ul class="wp-block-list"><li>Google Analytics adopts a flat(-ter) data model</li><li>Creates a data structure *finally* compatible with Apps and Web</li><li>Integrate with Firebase and the <a href="https://juliencoquet.com/en/2017/09/11/switch-google-analytics-global-site-tag/">Global Site tag</a></li><li>Offers exports to BigQuery and GA360-like data access</li><li>Essentially makes GA v4 a freemium product</li></ul>



<p class="wp-block-paragraph">Stay tuned for improvements and upgrades from the Google Analytics team (I can’t say more or Sundar will come to my house and slaughter me in my sleep or something) in the coming months:&nbsp; <strong><a href="https://www.youtube.com/watch?v=mQIZ-Esbg_c">the best is yet to come</a></strong>.</p>
<p>The post <a href="https://juliencoquet.com/2020/10/14/google-analytics-v4-is-all-grown-up-and-finally-a-freemium-product/">Google Analytics v4 is all grown up, and finally a freemium product</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2020/10/14/google-analytics-v4-is-all-grown-up-and-finally-a-freemium-product/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apple ITP, Safari &#038; analytics trackers &#8211; a flowchart</title>
		<link>https://juliencoquet.com/2020/06/27/apple-itp-safari-analytics-trackers-a-flowchart/</link>
					<comments>https://juliencoquet.com/2020/06/27/apple-itp-safari-analytics-trackers-a-flowchart/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Sat, 27 Jun 2020 16:26:48 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3046</guid>

					<description><![CDATA[<p>After all the hoopla around Safari v14 and unfounded rumors about Safari blocking Google Analytics, here is a handy flowchart to know where your digital marketing data collection stands:</p>
<p>The post <a href="https://juliencoquet.com/2020/06/27/apple-itp-safari-analytics-trackers-a-flowchart/">Apple ITP, Safari &#038; analytics trackers &#8211; a flowchart</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After all the hoopla around Safari v14 and <a href="https://mightyhive.com/does-safari-block-google-analytics/">unfounded rumors about Safari blocking Google Analytics</a>, here is a handy flowchart to know where your digital marketing data collection stands:</p>



<div class="wp-block-file"><a href="https://juliencoquet.com/wp-content/uploads/2020/06/Safari-ITP-tracking-flowchart.pdf">[PDF] Safari ITP tracking flowchart</a><a href="https://juliencoquet.com/wp-content/uploads/2020/06/Safari-ITP-tracking-flowchart.pdf" class="wp-block-file__button" download>Download</a></div>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://juliencoquet.com/2020/06/27/apple-itp-safari-analytics-trackers-a-flowchart/">Apple ITP, Safari &#038; analytics trackers &#8211; a flowchart</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2020/06/27/apple-itp-safari-analytics-trackers-a-flowchart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Google Analytics eCommerce: upload product data with Google Sheets</title>
		<link>https://juliencoquet.com/2020/01/21/google-analytics-ecommerce-upload-product-data-with-google-sheets/</link>
					<comments>https://juliencoquet.com/2020/01/21/google-analytics-ecommerce-upload-product-data-with-google-sheets/#comments</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Tue, 21 Jan 2020 21:32:53 +0000</pubDate>
				<guid isPermaLink="false">https://juliencoquet.com/?p=3009</guid>

					<description><![CDATA[<p>In this post, I will show you how to streamline your eCommerce tracking implementation and upload product data to Google Analytics. From a remote CSV file.Over Google Sheets.Automatically. Sounds good? Here we go! TL;DR: I have a Github project to help you upload product data for Google Analytics Enhanced eCommerce via the API Your Google [&#8230;]</p>
<p>The post <a href="https://juliencoquet.com/2020/01/21/google-analytics-ecommerce-upload-product-data-with-google-sheets/">Google Analytics eCommerce: upload product data with Google Sheets</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In this post, I will show you how to streamline your eCommerce tracking implementation and upload product data to Google Analytics. <br>From a remote CSV file.<br>Over Google Sheets.<br>Automatically.</p>



<p class="wp-block-paragraph">Sounds good? Here we go!</p>



<p class="wp-block-paragraph"><strong>TL;DR</strong>: <a href="https://github.com/analyticsftw/GoogleAnalyticsCSVProductUpload">I have a Github project to help you upload product data for Google Analytics Enhanced eCommerce via the API</a></p>



<span id="more-3009"></span>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="700" height="350" src="https://juliencoquet.com/wp-content/uploads/2020/01/ecommerce_banner.png" alt="" class="wp-image-3010" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/ecommerce_banner.png 700w, https://juliencoquet.com/wp-content/uploads/2020/01/ecommerce_banner-300x150.png 300w" sizes="auto, (max-width: 700px) 100vw, 700px" /></figure>



<h2 class="wp-block-heading">Your Google Analytics eCommerce tracking is a temple</h2>



<p class="wp-block-paragraph">So you implemented Google Analytics Enhanced eCommerce tracking on your site? You charged up on product attributes? Everything looked great but you&#8217;re missing lots of data and/or transactions? I get this a lot from clients because their setup is far from perfect&#8230; </p>



<p class="wp-block-paragraph">Many clients of mine saw GA&#8217;s EEC (Enhanced eCommerce) as a potential data <em>smorgasbord</em>, in which every single product attribute should be filled: tons of custom dimensions, custom metrics, extensive product categories &#8211; the works! Unfortunately, overloading your EEC tracking code with so much data tends to break tracking requests. <br>It is time to take better care of your EEC implementation!</p>



<h2 class="wp-block-heading">GET, POST and FAIL</h2>



<p class="wp-block-paragraph">The main culprit when it comes to GA EEC tracking failure is when the size of the tracking request exceeds the maximum allowed size.</p>



<p class="wp-block-paragraph">If we consider how Google Analytics&#8217; Measurement Protocol works, with all of its parameters, hits can fail if the requests get too big.</p>



<p class="wp-block-paragraph">When the request size exceeds 8192 bytes (characters), the tracking request fails and traffic data does not get sent to Google Analytics servers.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>How or why would you ever exceed that limitation? </p><cite>So glad you asked!</cite></blockquote>



<p class="wp-block-paragraph">Let&#8217;s assume you&#8217;re tracking a shopping cart containing 10 items. Each item contains a whole slew of attributes:</p>



<ul class="wp-block-list"><li>Product ID (SKU) and name</li><li>Category (w/ hierarchy)</li><li>Brand</li><li>Custom dimensions</li><li>Custom metrics</li><li>Product variant</li><li>Product price</li><li>And more!</li></ul>



<p class="wp-block-paragraph">Now imagine all the attributes are populated with sizeable values and labels and you can quickly reach 8192 characters, not including all the boilerplate <a href="https://juliencoquet.com/en/blog/2017/09/12/google-universal-analytics-cheat-sheet-measurement-protocol/">Measurement Protocol parameters</a>.</p>



<h2 class="wp-block-heading">What can I do to fix it?</h2>



<p class="wp-block-paragraph">The first thing you can do is streamline tracking requests and only send the data you really need. </p>



<p class="wp-block-paragraph"><strong>Stick to basics</strong>: only supply a product ID (SKU), quantity and unit price.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>But what about all my attributes?</p><cite>&#8211; You, shocked by such a minimalist approach</cite></blockquote>



<p class="wp-block-paragraph">Fear not, we can use Google Analytics&#8217; <strong>Data Import</strong> functionality to send those attributes! The goal here is to build a text file (comma-separated values, aka CSV) containing a common key (product ID/SKU) and related attributes. For instance:</p>



<figure class="wp-block-table"><table class=""><tbody><tr><td><strong>ID</strong></td><td><strong>Name</strong></td><td><strong>Category</strong></td></tr><tr><td>1234</td><td>Awesome Widget</td><td>Widgets</td></tr><tr><td>2345</td><td>Super Widget</td><td>Widgets</td></tr><tr><td>3456</td><td>Ultimate Widget </td><td>Widgets</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Once we have a CSV set up (manually or generated via PHP/Python/R/etc.) we can create a Data Import schema in Google Analytics.</p>



<p class="wp-block-paragraph">Go to your administration panel, go to your property then go to Data Import.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="773" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step1-1024x773.png" alt="" class="wp-image-3012" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step1-1024x773.png 1024w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step1-300x227.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step1-768x580.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step1-1080x815.png 1080w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step1.png 1478w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Select Product Data</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="954" height="788" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step2.png" alt="" class="wp-image-3013" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step2.png 954w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step2-300x248.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step2-768x634.png 768w" sizes="auto, (max-width: 954px) 100vw, 954px" /><figcaption>Name the import and select views where data will be processed</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="740" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step3-1024x740.png" alt="" class="wp-image-3014" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step3-1024x740.png 1024w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step3-300x217.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step3-768x555.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step3-1536x1110.png 1536w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step3-1080x780.png 1080w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step3.png 1736w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Map columns</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="177" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step4-1024x177.png" alt="" class="wp-image-3015" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step4-1024x177.png 1024w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step4-300x52.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step4-768x133.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step4-1080x187.png 1080w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-step4.png 1492w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Define overwrite settings</figcaption></figure>



<p class="wp-block-paragraph">Mapping your columns provides you with a CSV schema with column headers you will need to follow. </p>



<p class="wp-block-paragraph">Once you go through the steps, you&#8217;re all set! Now you can manually upload  product data thanks to your CSV file.</p>



<p class="wp-block-paragraph">Your Google Analytics Enhanced eCommerce reports now contain all the attributes contained in your CSV upload. </p>



<p class="wp-block-paragraph">Every time Google Analytics sees a product ID, it will look in the import data and map provided values for product fields matching the product ID/SKU key. Amazing, right?</p>



<h2 class="wp-block-heading">How often do I need to upload product data?</h2>



<p class="wp-block-paragraph">It boils down to how often new products appear/disappear in your catalog. If you add/remove products from your catalog on a daily basis then you need to upload your CSV on a daily basis. Unfortunately, unless you have strong publishing processes in place, you will tend to forget to upload said CSV and your reports will not contain the right product attributes <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f610.png" alt="😐" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Which is why I am offering a method to automatically upload your CSV file ad upload product data to Google Analytics. Of course you could use the <a href="https://developers.google.com/analytics/devguides/config/mgmt/v3">Google Analytics Management API</a> and code something with Python, Java or the language of your choice. Then you&#8217;d need to add scheduling in the form of a <em>cron</em> job.</p>



<p class="wp-block-paragraph">With my method, I&#8217;m going to show you how to do it all in Google Sheets!</p>



<p class="wp-block-paragraph">Create a blank Google Sheet</p>



<ol class="wp-block-list"><li>Visit my <a href="https://github.com/analyticsftw/GoogleAnalyticsCSVProductUpload">Github repository</a></li><li>Go to <em>Tools</em> > <em>Script Editor</em></li><li>Edit the <em>Code.gs</em> file and use/adjust the code provided in this project to match your Google Analytics account / import settings</li></ol>



<p class="wp-block-paragraph">In the editor, go to <em>Resources</em> > <em>Advanced Google services</em></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="320" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step1-1024x320.png" alt="" class="wp-image-3017" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step1-1024x320.png 1024w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step1-300x94.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step1-768x240.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step1.png 1050w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">In the list of services, scroll down to <em>Google Analytics API</em> and enable it</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="625" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step12-1024x625.png" alt="" class="wp-image-3018" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step12-1024x625.png 1024w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step12-300x183.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step12-768x468.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step12-1080x659.png 1080w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step12.png 1400w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Testing your script</h2>



<p class="wp-block-paragraph">To test your script, simply select the <em>uploadProductFeed</em> function and click the &#8220;Play&#8221; button to the left of the drop-down menu. Go through the Google authentication dialog (you may need to use 2-factor authentication)</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="952" height="158" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step3.png" alt="" class="wp-image-3019" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step3.png 952w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step3-300x50.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step3-768x127.png 768w" sizes="auto, (max-width: 952px) 100vw, 952px" /></figure>



<p class="wp-block-paragraph">You also go to <em>View</em> > <em>Execution transcript</em> to look at console output</p>



<p class="wp-block-paragraph">Go to your Google Analytics property and look for new uploads sent by the script via the API</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="312" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step7-1024x312.png" alt="" class="wp-image-3025" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step7-1024x312.png 1024w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step7-300x91.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step7-768x234.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step7-1080x329.png 1080w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step7.png 1476w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Extra credit: scheduling uploads</h2>



<p class="wp-block-paragraph">Assuming your product feed is updated regularly, you can schedule your script to run on a regular basis. Thankfully, Google Sheets provides this scheduling for you.</p>



<ul class="wp-block-list"><li>From the script editor, click the &#8220;clock&#8221; icon or go to <em>Edit</em> &gt; <em>Current project&#8217;s triggers</em></li><li>If the trigger list is empty, click the blue button to create a new trigger</li><li>In the function dropdown menu, select your <em>uploadProductFeed</em> function</li><li>In event source, select Time-driven then select a frequency, e.g. <em>Week timer</em> and set it to run (for instance) every Monday at 8am</li><li>Save your trigger and enjoy your automatically updated product attributes in Google Analytics!</li></ul>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1024" height="384" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step4-1024x384.png" alt="" class="wp-image-3020" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step4-1024x384.png 1024w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step4-300x113.png 300w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step4-768x288.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step4-1536x576.png 1536w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step4-1080x405.png 1080w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step4.png 1898w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="904" height="1024" src="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step6-904x1024.png" alt="" class="wp-image-3023" srcset="https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step6-904x1024.png 904w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step6-265x300.png 265w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step6-768x870.png 768w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step6-1356x1536.png 1356w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step6-1080x1224.png 1080w, https://juliencoquet.com/wp-content/uploads/2020/01/google-analytics-data-upload-product-appscript-step6.png 1442w" sizes="auto, (max-width: 904px) 100vw, 904px" /></figure>



<h2 class="wp-block-heading">In closing</h2>



<p class="wp-block-paragraph">When it comes to working with data, it&#8217;s good to be lazy, erm, I mean to have efficient tools <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f605.png" alt="😅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">The method I describe in this post minimizes the risk if tracking hits failing because of data overload and ensures that I can upload product data via the Google Analytics API.</p>



<p class="wp-block-paragraph">What about you? Have you set up data imports in Google Analytics? What went well? What went wrong? Let me know in the comments!</p>
<p>The post <a href="https://juliencoquet.com/2020/01/21/google-analytics-ecommerce-upload-product-data-with-google-sheets/">Google Analytics eCommerce: upload product data with Google Sheets</a> appeared first on <a href="https://juliencoquet.com">Julien Coquet</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://juliencoquet.com/2020/01/21/google-analytics-ecommerce-upload-product-data-with-google-sheets/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
			</item>
	</channel>
</rss>
