<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Om Yaduvanshi</title>
    <description>The latest articles on DEV Community by Om Yaduvanshi (@omyvnss).</description>
    <link>https://dev.to/omyvnss</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3837725%2F67e483d8-4951-4765-8b99-e909d93aca89.jpg</url>
      <title>DEV Community: Om Yaduvanshi</title>
      <link>https://dev.to/omyvnss</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/omyvnss"/>
    <language>en</language>
    <item>
      <title>i open my analytics once a day. for about thirty seconds.</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Tue, 27 Oct 2026 04:56:59 +0000</pubDate>
      <link>https://dev.to/omyvnss/i-open-my-analytics-once-a-day-for-about-thirty-seconds-3ilf</link>
      <guid>https://dev.to/omyvnss/i-open-my-analytics-once-a-day-for-about-thirty-seconds-3ilf</guid>
      <description>&lt;p&gt;most analytics dashboards want you to live inside them. tabs, segments, a report builder that takes longer than the work it is supposed to measure.&lt;/p&gt;

&lt;p&gt;i open mine once a day. for about thirty seconds.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer. i built cloudline, a cookieless analytics tool. day 32 now, two days past launch, and the check has settled into a shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  what i look at first
&lt;/h2&gt;

&lt;p&gt;the visitors over time chart, on one screen. did yesterday move, and in which direction. i do not need a reason yet. i need to know whether there is a reason to look further.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors over time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;then top pages. which page got read. then traffic sources. search, social, newsletters, ai assistants, grouped. a source showing up that was not there yesterday is a thread to pull.&lt;/p&gt;

&lt;h2&gt;
  
  
  the second screen, only if the first one earns it
&lt;/h2&gt;

&lt;p&gt;if a page moved, i check how far people got through it. scroll depth, in quarters. i check engaged time next to it. a page with a lot of visits and almost no engaged time is a headline problem, most of the time.&lt;/p&gt;

&lt;p&gt;if a button matters on that page, i check its clicks. cloudline stores the label you chose for the button. nothing about the person who pressed it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what i never open
&lt;/h2&gt;

&lt;p&gt;i do not build a segment before breakfast. i do not compare seven date ranges. the dashboard is there to tell me what changed, and then get out of the way.&lt;/p&gt;

&lt;p&gt;a pageview stores page, referrer, screen size, time. nothing else. no cookies. no ip addresses. nothing stored on a visitor's device. that is why the check stays short. there is nothing stored about any individual visitor to dig through.&lt;/p&gt;

&lt;h2&gt;
  
  
  the point of the check
&lt;/h2&gt;

&lt;p&gt;open it, see what changed, get back to building. that line is on the site, and it is the whole product idea, as far as i am concerned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>your funnel is two pages and one button</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Mon, 26 Oct 2026 04:15:49 +0000</pubDate>
      <link>https://dev.to/omyvnss/your-funnel-is-two-pages-and-one-button-he1</link>
      <guid>https://dev.to/omyvnss/your-funnel-is-two-pages-and-one-button-he1</guid>
      <description>&lt;p&gt;i used to think a funnel needed a whole setup. forms, events, a dashboard i had to configure before i could read anything.&lt;/p&gt;

&lt;p&gt;it turns out a funnel is two pages and one button. the page people land on, the page they go to next, and the button they press or skip.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer. i built cloudline, a cookieless analytics tool. yesterday was launch day. today is day 31, and this is the first thing i am watching now that anyone can install it.&lt;/p&gt;

&lt;h2&gt;
  
  
  what a funnel is when there is no cookie
&lt;/h2&gt;

&lt;p&gt;a pageview stores four things. page, referrer, screen size, time. nothing else.&lt;/p&gt;

&lt;p&gt;a button click stores the label you chose for it. nothing about the person who pressed it.&lt;/p&gt;

&lt;p&gt;cloudline turns those pageviews and clicks into a funnel. you see where people drop off. there is nothing to configure first.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  how i read a drop-off
&lt;/h2&gt;

&lt;p&gt;if people read the first page and never reach the second one, the first page is the problem. the headline, the length, the thing it promises and does not deliver.&lt;/p&gt;

&lt;p&gt;if people reach the second page and never press the button, the button is the problem. the label, the placement, the ask itself.&lt;/p&gt;

&lt;p&gt;that is the whole read. two places where people leave, and each one points at a different fix.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors over time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what it never needs
&lt;/h2&gt;

&lt;p&gt;no cookies. no ip addresses. nothing stored on a visitor's device. no user-agent storage, no fingerprinting.&lt;/p&gt;

&lt;p&gt;a click is tracked when you add a data attribute to the button, or call cloudline dot track with a label. only that label is stored. the rest of the page stays out of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  the morning after launch
&lt;/h2&gt;

&lt;p&gt;launch day is loud. the morning after is quiet, and quiet is where you learn whether anything actually works.&lt;/p&gt;

&lt;p&gt;i am not watching a number go up. i am watching where people stop. the page they leave from tells me more than any total ever will.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>cloudline is live. analytics without cookies.</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Sun, 25 Oct 2026 04:13:25 +0000</pubDate>
      <link>https://dev.to/omyvnss/cloudline-is-live-analytics-without-cookies-13do</link>
      <guid>https://dev.to/omyvnss/cloudline-is-live-analytics-without-cookies-13do</guid>
      <description>&lt;p&gt;29 days ago i started writing about a tool i was building. today you can install it.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer. i built cloudline, a cookieless analytics tool. this is day 30 of 90, and it's launch day.&lt;/p&gt;

&lt;h2&gt;
  
  
  what ships today
&lt;/h2&gt;

&lt;p&gt;one script tag, under 2kb. no cookie banner, because there is nothing to consent to.&lt;/p&gt;

&lt;p&gt;a pageview stores four things: page, referrer, screen size, time. nothing else. top pages and traffic sources, with every ai chatbot grouped into one source. engaged time, scroll depth at 25, 50, 75 and 100 percent. button clicks per page. funnels with nothing to configure. live visitors on one screen. up to 50 sites in one dashboard.&lt;/p&gt;

&lt;p&gt;install takes under a minute. removing it takes one deleted line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what it never does
&lt;/h2&gt;

&lt;p&gt;no cookies. no ip addresses. nothing stored on a visitor's device. no user-agent storage, no fingerprinting. device type comes from screen width and nothing else.&lt;/p&gt;

&lt;p&gt;when cloudline can't collect something, the dashboard shows an error message instead of a made-up number. same rule as the demo badge and the labelled roadmap: if it isn't there, you see that it isn't there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors over time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what's not shipping
&lt;/h2&gt;

&lt;p&gt;revenue attribution is coming soon and stays coming soon. countries, operating systems and browsers, core web vitals, weekly email reports — all on the roadmap, none of them live. i'd rather ship a short honest list than a long invented one.&lt;/p&gt;

&lt;h2&gt;
  
  
  30 days later
&lt;/h2&gt;

&lt;p&gt;i wrote about this thing for 29 days before asking anyone to install it. the ad blockers block it, the troubleshooting page lists every way it can fail, and the demo wears its sample-data badge in public.&lt;/p&gt;

&lt;p&gt;that was the whole strategy. be honest about the missing parts and people stop worrying about the hidden ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>my cookieless analytics gets blocked by ad blockers. that's the honest version.</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Sat, 24 Oct 2026 04:15:05 +0000</pubDate>
      <link>https://dev.to/omyvnss/my-cookieless-analytics-gets-blocked-by-ad-blockers-thats-the-honest-version-3a1m</link>
      <guid>https://dev.to/omyvnss/my-cookieless-analytics-gets-blocked-by-ad-blockers-thats-the-honest-version-3a1m</guid>
      <description>&lt;p&gt;ad blockers block my tracker.&lt;/p&gt;

&lt;p&gt;not the creepy one. mine. the one that stores no cookies and no ips.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer. i build cloudline, a cookieless analytics tool. day 29 of 90, building in public. it launches tomorrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  the page that lists my enemies
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;every tracker needs a troubleshooting page. mine lists four ways it can fail: your content security policy can refuse the script, an ad blocker can eat the request, localhost events get refused in production, and the domain can just not match.&lt;/p&gt;

&lt;p&gt;i wrote all four down instead of pretending they don't happen. a visitor with a blocker shows up as a visitor who never loaded the script. i won't know they visited. that's the price.&lt;/p&gt;

&lt;h2&gt;
  
  
  why i don't fight back
&lt;/h2&gt;

&lt;p&gt;the fix exists. i could rotate domains, disguise the request, do the cat-and-mouse thing the creepy tools do every day.&lt;/p&gt;

&lt;p&gt;every trick that would beat a blocker is a trick i refuse to use. so the script stays dumb. one tag, under 2kb, from one domain. if your blocker takes it down, it takes it down.&lt;/p&gt;

&lt;h2&gt;
  
  
  the honest part of the dashboard
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors over time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;what i can do is be honest about what's missing. when cloudline can't collect something, the dashboard shows an error message instead of a made-up number. no silent zeros pretending to be real data.&lt;/p&gt;

&lt;p&gt;same instinct as the demo badge and the labelled roadmap. if the number isn't there, you should see that it isn't there.&lt;/p&gt;

&lt;h2&gt;
  
  
  one day left
&lt;/h2&gt;

&lt;p&gt;launch day is tomorrow. day 30 of 90. the thing i'm most sure about after 29 days: people don't punish you for the missing parts. they punish you for the hidden ones.&lt;/p&gt;

&lt;p&gt;day 29 of 90. see you tomorrow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>i count clicks without knowing who clicked</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Fri, 23 Oct 2026 04:12:15 +0000</pubDate>
      <link>https://dev.to/omyvnss/i-count-clicks-without-knowing-who-clicked-4jpm</link>
      <guid>https://dev.to/omyvnss/i-count-clicks-without-knowing-who-clicked-4jpm</guid>
      <description>&lt;p&gt;i want to know which button people click. i don't want to know who clicked it.&lt;/p&gt;

&lt;p&gt;most analytics tools treat those as the same question. they're not.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer. i build cloudline, a cookieless analytics tool. day 28 of 90, building in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  how click tracking usually works
&lt;/h2&gt;

&lt;p&gt;open any analytics tool's click feature. it's usually a session replay, or a heatmap of real cursors on your actual page.&lt;/p&gt;

&lt;p&gt;those need to follow one person around your site. that takes an identity: a cookie, a session id, something that says "this click and that scroll belong to the same visitor". the click count you see is built on top of that identity.&lt;/p&gt;

&lt;h2&gt;
  
  
  how cloudline does it
&lt;/h2&gt;

&lt;p&gt;you put data-cloudline-track="signup" on a button. or you call Cloudline.track('click', {label}) from your own code.&lt;/p&gt;

&lt;p&gt;the label you chose gets stored. the page gets stored. the count goes up. nothing else.&lt;/p&gt;

&lt;p&gt;no cookies, no ip addresses, no user agents, no session ids. a click is a number attached to a page. no trail, no person.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what i gave up
&lt;/h2&gt;

&lt;p&gt;i can't tell you if the same person clicked twice. i can't tie a click to the visitor who scrolled to 100% and then left. there is no heatmap of actual cursors, because there are no cursors to record.&lt;/p&gt;

&lt;p&gt;that's the trade, and i'd rather name it than hide it.&lt;/p&gt;

&lt;h2&gt;
  
  
  why this is the shape i want
&lt;/h2&gt;

&lt;p&gt;the whole product works like this. a pageview stores four things: page, referrer, screen size, time. that's the entire row. clicks fit the same shape: label, page, count.&lt;/p&gt;

&lt;p&gt;funnels are built from these counts. pageviews and clicks in order, showing where people drop off. nothing in them knows who anyone is.&lt;/p&gt;

&lt;h2&gt;
  
  
  the part that changed how i read
&lt;/h2&gt;

&lt;p&gt;this changed how i read other tools' privacy pages. "we don't track individuals" next to a feature called session replay. a replay needs a session. a session is an identity wearing a mask.&lt;/p&gt;

&lt;p&gt;i'm not naming anyone. but if a tool needs to recognise you to count you, the count is the smaller feature and the recognition is the bigger one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors over time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  two days to launch
&lt;/h2&gt;

&lt;p&gt;day 30 of this plan was always launch day. it's two days away now. the click tracking you just read about is the kind of thing launching with it: small, named, and honest about what it doesn't do.&lt;/p&gt;

&lt;p&gt;day 28 of 90. still building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>i track every site i run from one dashboard</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Thu, 22 Oct 2026 04:14:29 +0000</pubDate>
      <link>https://dev.to/omyvnss/i-track-every-site-i-run-from-one-dashboard-kap</link>
      <guid>https://dev.to/omyvnss/i-track-every-site-i-run-from-one-dashboard-kap</guid>
      <description>&lt;p&gt;i run more than one website. every analytics tool i tried made me log in somewhere else for each one, or gave me one dashboard per property with no overview.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer. i build cloudline, a cookieless analytics tool. day 27 of 90, building in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  why one dashboard
&lt;/h2&gt;

&lt;p&gt;if you have one site, this feature is invisible. if you have five, it's the whole product.&lt;/p&gt;

&lt;p&gt;i keep a few projects alive. stores, side pages, landing pages for this campaign. checking them used to mean clicking between properties and losing the thread of what actually mattered. nobody checks analytics they have to hunt for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  how it works
&lt;/h2&gt;

&lt;p&gt;cloudline lets you add up to 50 sites under one account. same login. one dashboard for every site you run.&lt;/p&gt;

&lt;p&gt;50 is a ceiling, not a target. the point is that adding a new site is a one-line install, not a new decision. one script tag, data-site-id, done. deleting the line removes it.&lt;/p&gt;

&lt;h2&gt;
  
  
  the part i dogfood
&lt;/h2&gt;

&lt;p&gt;my own sites run on it. that's how i notice what actually gets checked and what doesn't. real traffic finds your weak spots faster than sample data. (i wrote about labelled demo data last time. this is the other side of that.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors over time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the honest part
&lt;/h2&gt;

&lt;p&gt;the dashboard still doesn't show countries. or operating systems. or core web vitals. the roadmap lists them, they aren't shipped, and cloudline doesn't pretend otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  what i'd like to know
&lt;/h2&gt;

&lt;p&gt;if you run more than one site: do you actually check all of them?&lt;/p&gt;

&lt;p&gt;day 27 of 90. still building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>my demo dashboard is full of fake numbers. they're all labelled.</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Wed, 21 Oct 2026 04:20:00 +0000</pubDate>
      <link>https://dev.to/omyvnss/my-demo-dashboard-is-full-of-fake-numbers-theyre-all-labelled-1830</link>
      <guid>https://dev.to/omyvnss/my-demo-dashboard-is-full-of-fake-numbers-theyre-all-labelled-1830</guid>
      <description>&lt;p&gt;my demo dashboard is full of fake numbers.&lt;/p&gt;

&lt;p&gt;nothing on it is real. not a single number. and every one of them is labelled.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer. i build cloudline, a cookieless analytics tool. day 26 of 90, building in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  the demo problem
&lt;/h2&gt;

&lt;p&gt;every saas product has a demo. almost every demo is fake. most demos never say so. you look at a dashboard full of beautiful made-up numbers and walk away with expectations the real product can never meet.&lt;/p&gt;

&lt;p&gt;some products don't fake the demo. they fake the real thing. a chart shows you an estimate and never tells you it's guessing. i've been thinking about this because i had to build a demo this month.&lt;/p&gt;

&lt;h2&gt;
  
  
  what i actually did
&lt;/h2&gt;

&lt;p&gt;the cloudline demo lives at studio.cloudline.demo. it wears a "demo" badge on every screen. every preview says "preview uses sample data". your own dashboard never shows sample data. your sites only show real visits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and when something breaks, cloudline shows an error message instead of a wrong number. i wrote about that one already. it's the same instinct.&lt;/p&gt;

&lt;h2&gt;
  
  
  the lesson
&lt;/h2&gt;

&lt;p&gt;labelling the fake numbers turned out to be a feature. it forced me to be careful about what the real dashboard promises too. once you've drawn the line between made-up and real in one place, you can't blur it anywhere else.&lt;/p&gt;

&lt;h2&gt;
  
  
  the honest part
&lt;/h2&gt;

&lt;p&gt;the demo can't tell you what your traffic will look like. it's orientation, not a promise. the label doesn't make the numbers true. it tells you they aren't.&lt;/p&gt;

&lt;h2&gt;
  
  
  the question i keep coming back to
&lt;/h2&gt;

&lt;p&gt;when did you last see a demo that told you the numbers were made up?&lt;/p&gt;

&lt;p&gt;day 26 of 90. still building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>my analytics deletes your data every night. on purpose</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Tue, 20 Oct 2026 04:17:56 +0000</pubDate>
      <link>https://dev.to/omyvnss/my-analytics-deletes-your-data-every-night-on-purpose-2b92</link>
      <guid>https://dev.to/omyvnss/my-analytics-deletes-your-data-every-night-on-purpose-2b92</guid>
      <description>&lt;p&gt;my analytics keeps your data for about 13 months. then it deletes it. every night, on a schedule, whether i remember to or not.&lt;/p&gt;

&lt;p&gt;the pageview is small on purpose. page, referrer, screen size, time. four things, nothing else. no cookies, no ip addresses, no user agents, no fingerprints. but small data still piles up. four fields times a million pageviews is a database full of other people's browsing history, and "we only stored a little" stops being a defense when you store it forever.&lt;/p&gt;

&lt;p&gt;so cloudline deletes it. about 13 months of history, then the nightly job takes the oldest day out. 13 months is long enough for year-over-year comparisons and short enough that i'm not holding data from a version of your site that doesn't exist anymore.&lt;/p&gt;

&lt;p&gt;deleting a site is even simpler. delete the site, the data goes with it. immediately. not queued, not anonymized later. gone.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer building cloudline, a cookieless analytics tool. day 25 of 90, building in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  the problem i kept avoiding
&lt;/h2&gt;

&lt;p&gt;retention was the setting i never wanted to build. every analytics tool i looked at defaults to keeping everything until you tell it to stop, and most people never tell it to stop. so the default became the product: keep everything, forever.&lt;/p&gt;

&lt;p&gt;that default is a liability. old data is the stuff that gets breached. it's also the stuff that ends up in a feature you didn't plan. the privacy conversation is always about what you collect. nobody asks how long you keep it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline live visitors dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what deleting taught me
&lt;/h2&gt;

&lt;p&gt;a delete button you have to press is a delete button you'll forget. so the nightly job presses it for me. boring infrastructure, doing the thing nobody claps for.&lt;/p&gt;

&lt;p&gt;there's a side effect i didn't expect. knowing the data expires made me more careful about what i store in the first place. when every field has an expiration date, adding a new one feels like a commitment. i've &lt;a href="https://dev.to/omyvnss/what-i-refused-to-build-and-why-the-subtraction-is-the-product-3ngp"&gt;written before&lt;/a&gt; about refusing to build things. the four-field pageview survived that test.&lt;/p&gt;

&lt;h2&gt;
  
  
  the honest caveat
&lt;/h2&gt;

&lt;p&gt;13 months isn't right for everyone. if your business runs on five-year trend lines, this isn't your tool. i'm not going to pretend one number fits every site. it's the privacy-preserving default for the sites i build for: indie projects, blogs, small products, where last year is the furthest back that matters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors-over-time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and if you want out entirely, deleting one line of code removes the tracker. the data follows.&lt;/p&gt;

&lt;h2&gt;
  
  
  the question i don't have an answer to
&lt;/h2&gt;

&lt;p&gt;do you know your analytics retention setting? not the default. the number you actually chose.&lt;/p&gt;

&lt;p&gt;most of us inherited it. i'd bet most of us never looked.&lt;/p&gt;

&lt;p&gt;day 25 of 90. still building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>i measure scroll depth without watching anyone scroll</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Mon, 19 Oct 2026 04:13:38 +0000</pubDate>
      <link>https://dev.to/omyvnss/i-measure-scroll-depth-without-watching-anyone-scroll-4a7d</link>
      <guid>https://dev.to/omyvnss/i-measure-scroll-depth-without-watching-anyone-scroll-4a7d</guid>
      <description>&lt;p&gt;your best article has a graveyard at the 40% mark.&lt;/p&gt;

&lt;p&gt;most people who open it never reach the end. you already suspect this. the question is whether your analytics can prove it without also proving everything else about your reader.&lt;/p&gt;

&lt;p&gt;most scroll-depth tooling comes bundled with the rest of the surveillance kit. heatmaps, session recordings. the scroll number is the excuse and the recording is the product. you wanted one number and you bought a security camera.&lt;/p&gt;

&lt;p&gt;cloudline tracks scroll depth as four markers: 25, 50, 75, 100%. when a visitor crosses one, that's a data point. the page, the marker, nothing else. no replay, no heatmap, no pixel path of where the cursor wandered while they read. the interesting thing about a scroll marker is that it doesn't need a who. "somebody reached 75% of this page" is already the whole decision.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer building cloudline, a cookieless analytics tool. day 24 of 90, building in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  the four markers
&lt;/h2&gt;

&lt;p&gt;a pageview in cloudline stores four things: page, referrer, screen size, time. scroll depth adds the marker crossed. that's the event. four thresholds, coarse by design. finer markers would be more precise. they would also cost more of the visitor's privacy for a number nobody acts on.&lt;/p&gt;

&lt;p&gt;coarse numbers are harder to game, too. you can't inflate the number without changing the page, and changing the page is the actual work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline live visitors dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what the markers changed for me
&lt;/h2&gt;

&lt;p&gt;i used to read pageviews and feel good. then i looked at scroll depth on my own articles and felt worse, in a useful way. the drop-off point is the most honest feedback a writer gets. comments tell you what the loudest reader thinks. scroll depth tells you what the quiet ones did. it told me my intros were too long. they were.&lt;/p&gt;

&lt;p&gt;pair it with &lt;a href="https://dev.to/omyvnss/my-analytics-doesnt-do-bounce-rate-it-does-engaged-time-3jb6"&gt;engaged time&lt;/a&gt; and you get the full story. time without scrolling is an open tab. scrolling without time is a skim. both together, still no identity, and you know whether the piece landed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors-over-time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the honest caveat
&lt;/h2&gt;

&lt;p&gt;four markers can't tell you which paragraph lost them. a heatmap could. i don't have heatmaps, and i don't want the data they'd need. if your whole job is squeezing a landing page, this isn't your tool. that's fine. most pages just need to know where the graveyard is.&lt;/p&gt;

&lt;h2&gt;
  
  
  the question i don't have an answer to
&lt;/h2&gt;

&lt;p&gt;does 100% mean they read it, or does it mean they scrolled fast looking for the link? i don't know. my money is on "looking for the link," but that's a guess. if you run a content site, what does your 100% row look like?&lt;/p&gt;

&lt;p&gt;day 24 of 90. still building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>i grouped every ai chatbot into one traffic source</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Sun, 18 Oct 2026 04:13:26 +0000</pubDate>
      <link>https://dev.to/omyvnss/i-grouped-every-ai-chatbot-into-one-traffic-source-3koh</link>
      <guid>https://dev.to/omyvnss/i-grouped-every-ai-chatbot-into-one-traffic-source-3koh</guid>
      <description>&lt;p&gt;your next hundred visitors might come from a chatbot.&lt;/p&gt;

&lt;p&gt;not from google. from a chat window where somebody asked a question and your page was the answer it picked.&lt;/p&gt;

&lt;p&gt;cloudline groups its traffic sources: search, social, newsletters, and one more row. "ai assistants."&lt;/p&gt;

&lt;p&gt;here is why it is grouped instead of listed per bot.&lt;/p&gt;

&lt;p&gt;every referrer you store is a little piece of somebody's browsing history that you now own. a pageview in cloudline stores exactly four things: page, referrer, screen size, time. nothing else, no user agents, no fingerprints. a per-bot breakdown would turn one useful number (how much of my traffic comes from ai) into a detail nobody needs and everybody stores.&lt;/p&gt;

&lt;p&gt;so the grouping is the default, and defaults are the product. "ai assistants" answers the question that changes decisions: a growing share of your visitors arrives pre-sold by something that quoted you. which exact bot did the quoting is trivia for most sites.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer building cloudline, a cookieless analytics tool. day 23 of 90, building in public.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline live visitors dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the part i like about grouped sources
&lt;/h2&gt;

&lt;p&gt;search tells you what people typed. social tells you who shared it. "ai assistants" tells you something new: your content is being read by machines on behalf of humans. the visitor skips your homepage and lands on the page that answered the question. docs or a specific feature page.&lt;/p&gt;

&lt;p&gt;that changes what "top pages" means. your most important page might be the one nobody browses to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors-over-time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the honest caveat
&lt;/h2&gt;

&lt;p&gt;grouping hides things some people genuinely want. if you are doing seo for ai search, per-bot numbers would be useful. i am not pretending one row fits everyone. it is the privacy-preserving default, and you can argue with defaults. some of you will, and that is fine.&lt;/p&gt;

&lt;h2&gt;
  
  
  the question i don't have an answer to
&lt;/h2&gt;

&lt;p&gt;do visitors who arrive through a chatbot behave like search visitors, or like referrals from a friend who already explained the product? i don't have enough of them yet to say honestly. if you run a site with real ai-referred traffic, i would love to hear what yours do. genuinely asking.&lt;/p&gt;

&lt;p&gt;day 23 of 90. still building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;cloudline&lt;/strong&gt; is free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
    </item>
    <item>
      <title>i wrote a cookie policy for a product that sets no cookies</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Sat, 17 Oct 2026 04:10:48 +0000</pubDate>
      <link>https://dev.to/omyvnss/i-wrote-a-cookie-policy-for-a-product-that-sets-no-cookies-2bin</link>
      <guid>https://dev.to/omyvnss/i-wrote-a-cookie-policy-for-a-product-that-sets-no-cookies-2bin</guid>
      <description>&lt;p&gt;most cookie policies are confessions written by lawyers. mine is a confession written by me.&lt;/p&gt;

&lt;p&gt;i’m om yaduvanshi, 18, an applied ai developer building &lt;strong&gt;cloudline&lt;/strong&gt;, a cookieless analytics tool. day 22 of 90, building in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  the policy a cookieless product keeps anyway
&lt;/h2&gt;

&lt;p&gt;cloudline sets no cookies. stores no ip addresses. nothing gets saved on your visitors’ devices. a pageview stores exactly four things: page, referrer, screen size, time.&lt;/p&gt;

&lt;p&gt;so why does the site have a cookie policy page at all? because not having one looks like you forgot, and looking like you forgot is worse than overexplaining.&lt;/p&gt;

&lt;h2&gt;
  
  
  what the policy actually says
&lt;/h2&gt;

&lt;p&gt;the short version: there are no cookies to declare, so it says what’s stored instead. four fields. pages stored as path and query only, no fragments, no domain. no user agents. no fingerprinting.&lt;/p&gt;

&lt;p&gt;there’s also a “what we’ll never do” list on the features page. it lives on the site, and it means more there than quoted in a blog post.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline live visitors dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  why write it at all
&lt;/h2&gt;

&lt;p&gt;conventional wisdom says privacy pages exist to satisfy regulators. the honest alternative: for a small tool, the privacy page is the sales page. nobody trusts a one-person analytics product on vibes. they trust it because you wrote down exactly what you collect, in plain words, and there’s nothing surprising in the list.&lt;/p&gt;

&lt;p&gt;the page costs nothing to maintain. every time someone asks “but what do you actually store?” i send the link instead of typing the answer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors-over-time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the caveat
&lt;/h2&gt;

&lt;p&gt;none of this is legal advice. it’s only about my own product: cloudline itself sets no cookies and needs no consent banner for its analytics. i’m not telling you what the law requires anywhere. i write code, not disclaimers.&lt;/p&gt;

&lt;p&gt;what i will say: if your tool collects almost nothing, write the almost-nothing down. short and exact. say it plainly and move on.&lt;/p&gt;

&lt;p&gt;day 22 of 90. still building.&lt;/p&gt;

&lt;p&gt;free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>my cookieless analytics knows your device from pixels, not user agents</title>
      <dc:creator>Om Yaduvanshi</dc:creator>
      <pubDate>Fri, 16 Oct 2026 04:10:46 +0000</pubDate>
      <link>https://dev.to/omyvnss/my-cookieless-analytics-knows-your-device-from-pixels-not-user-agents-1fg2</link>
      <guid>https://dev.to/omyvnss/my-cookieless-analytics-knows-your-device-from-pixels-not-user-agents-1fg2</guid>
      <description>&lt;p&gt;every website you visit files away what phone you have.&lt;br&gt;
you hand it to them yourself, in the user agent string on every page load.&lt;br&gt;
mine throws it away.&lt;/p&gt;

&lt;p&gt;i'm om yaduvanshi, 18, an applied ai developer building &lt;strong&gt;cloudline&lt;/strong&gt;, a cookieless analytics tool. day 21 of 90, building in public.&lt;/p&gt;

&lt;h2&gt;
  
  
  what the user agent actually is
&lt;/h2&gt;

&lt;p&gt;your browser sends a paragraph with every page load. it looks like this:&lt;/p&gt;

&lt;p&gt;Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15&lt;/p&gt;

&lt;p&gt;phone model, OS version, browser build. every visit, everywhere, unasked.&lt;/p&gt;

&lt;p&gt;conventional analytics stores the whole string and derives your device, browser, and OS from it. precise, useful, and quietly identifying. enough of these signals together and you're looking at fingerprinting.&lt;/p&gt;

&lt;h2&gt;
  
  
  why we don't store it
&lt;/h2&gt;

&lt;p&gt;cloudline stores no user agents and does no fingerprinting. a pageview stores exactly four things: page, referrer, screen size, time. that's the whole receipt.&lt;/p&gt;

&lt;p&gt;the screen size does double duty. device type (mobile, tablet, desktop) gets worked out from screen width alone. no cookie, no IP, no user agent string sitting in a database.&lt;/p&gt;

&lt;p&gt;the honest trade-off: it's a coarse bucket. a tablet in landscape reads as desktop. foldables are chaos. a vertical monitor reads weird.&lt;/p&gt;

&lt;p&gt;but a coarse honest bucket beats a fake precise one. same rule i wrote about on day 16: show the honest number or show nothing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0a6fcd9x6yf588id33ip.webp" alt="cloudline live visitors dashboard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  the part nobody markets
&lt;/h2&gt;

&lt;p&gt;every data point you don't collect is a thing you can't leak, can't sell, and can't be asked to hand over. the settings page for data you never stored doesn't exist. that's the entire privacy argument for not storing user agents. not a toggle. an absence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1l0bx4wu9tsdfuxo6lnk.webp" alt="cloudline visitors-over-time chart" width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  what's next, honestly
&lt;/h2&gt;

&lt;p&gt;the roadmap says operating systems and browsers are coming. not shipped yet. countries, core web vitals, weekly email reports — also coming, none shipped.&lt;/p&gt;

&lt;p&gt;the question i'm sitting with: how do we add browsers without storing user agent strings? maybe a coarse browser-family bucket, like the device ones. maybe "we don't know" stays where it is. i'd rather ship the coarse honest bucket than a fake precise one, and i'd rather ship nothing than a bucket i can't defend.&lt;/p&gt;

&lt;p&gt;day 21 of 90. still figuring out the line between knowing enough and knowing too much.&lt;/p&gt;

&lt;p&gt;free while in early access. no card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://trycloudline.space" rel="noopener noreferrer"&gt;https://trycloudline.space&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— om&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>privacy</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
