<?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: Alex Ran</title>
    <description>The latest articles on DEV Community by Alex Ran (@alexzran).</description>
    <link>https://dev.to/alexzran</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1216161%2F15a65c24-e654-4640-ab5d-2a3d42130f83.jpeg</url>
      <title>DEV Community: Alex Ran</title>
      <link>https://dev.to/alexzran</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexzran"/>
    <language>en</language>
    <item>
      <title>Naming Convention: How to name tracking events</title>
      <dc:creator>Alex Ran</dc:creator>
      <pubDate>Tue, 05 Dec 2023 22:16:24 +0000</pubDate>
      <link>https://dev.to/alexzran/naming-convention-how-to-name-tracking-events-23pl</link>
      <guid>https://dev.to/alexzran/naming-convention-how-to-name-tracking-events-23pl</guid>
      <description>&lt;p&gt;&lt;em&gt;Read time: 3min&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is this for
&lt;/h2&gt;

&lt;p&gt;This blog is for individuals and teams, who feel they need a naming system for their tracking events but are not sure what makes a good one.&lt;br&gt;
I will share a ready-to-use naming convention (if you are in a hurry), a guide to find a tailored naming convention for your team (if you have more than 120 seconds), and some tips on how to really solve your problems with a naming convention.&lt;/p&gt;

&lt;p&gt;I will not talk about why you need a naming convention in this blog. That deserves its own blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  The quick one
&lt;/h2&gt;

&lt;p&gt;For a quick solution suitable for most teams, here's how to name your events in platforms like Amplitude, Mixpanel, Pendo, mParticle, Rudderstack, Segment:&lt;br&gt;
&lt;code&gt;page_location.ui_component.action_past_tense&lt;br&gt;
&lt;/code&gt;For example,&lt;br&gt;
&lt;code&gt;web_product_detail_page.add_to_cart_button.clicked&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The tailored one
&lt;/h2&gt;

&lt;p&gt;If you want a solution that tailors better for your team, here is how to figure this out yourself in 5-10 min:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Figure out the 3 main sections
&lt;/h3&gt;

&lt;p&gt;Page Location: This should be the screen/page of your product. &lt;br&gt;
UI Component: What is the UI the user is interacting with? &lt;br&gt;
Action: What action is the user performing? This can be explicit action like clicked, or implicit action like loaded (the page with their browser)? Choose between past tense and present tense. &lt;br&gt;
Be verbose here; this is where you define the specifics that will save huge time afterward.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step2: connecting these 3 pieces
&lt;/h3&gt;

&lt;p&gt;Cases: &lt;br&gt;
Using all lowercase is usually safer as some analytics tools auto-convert everything to lowercase. However, you can use camelCase or PascalCase if case sensitivity is not a concern.&lt;/p&gt;

&lt;p&gt;Connectors: &lt;br&gt;
Choose from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;underscore '_'&lt;/li&gt;
&lt;li&gt;dash '-'&lt;/li&gt;
&lt;li&gt;dot '.'&lt;/li&gt;
&lt;li&gt;no explicit connector (e.g., camelCase, PascalCase. &lt;/li&gt;
&lt;li&gt;'justlowercase' is not recommended as it is hardtoread).&lt;/li&gt;
&lt;li&gt;space (as a programmer, I do shy away from this option).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Choose a connector for words within a section: The example above uses underscore “_” to connect words within a section. e.g. “add_to_cart_button”&lt;br&gt;
Choose a connector between sections: The example above uses dot “.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Step3: put these all down in a simple doc/message, share it out
&lt;/h3&gt;

&lt;p&gt;We have completed the “naming” part of naming convention, now is the time for making it a convention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do I need to do this?&lt;/strong&gt;&lt;br&gt;
Because it is not a naming convention until most of your team members accept it. Without accepting it, engineers will implement event tracking in malformed shapes, analytics tasks will waste time on questions like “what does this event means?” and “what is that new event called?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I do this?&lt;/strong&gt;&lt;br&gt;
Honestly, it is not as hard as it sounds:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put down the naming convention into a 1-page doc, or a short message. Be clear, be easy to understand and to follow. Here is a template:&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Tracking events naming convention:&lt;br&gt;
Connect these three section using dot “.”:&lt;br&gt;
page_location: e.g. web_home_page, ios_home_screen&lt;br&gt;
ui_component: e.g. cancel_button, home_menu&lt;br&gt;
action_past_tense: e.g. loaded, clicked, hovered, scrolled&lt;br&gt;
Use underscore “_” to connect words within each section.&lt;br&gt;
For example, web_product_detail_page.add_to_cart_button.clicked&lt;br&gt;
Question? Ping &lt;a class="mentioned-user" href="https://dev.to/someone"&gt;@someone&lt;/a&gt; or #some-channel &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Stick them to the top of a Slack channel or save this document to an obvious place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find some 5-10 minutes in a team meeting to talk about this, get everyone look at it. Address concern if any. Before this discussion, it could be helpful to take some minutes to get supporters (e.g. buy-in from tech lead) in advance if necessary. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common questions related
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Events separated vs. aggregated?&lt;/strong&gt;&lt;br&gt;
There are multiple buttons located in different places in UI doing similar things, should I name them the same event?&lt;/p&gt;

&lt;p&gt;Default to separate events. Aggregate events only when these events are eactly the same, just at different location. Keep a side note or tracking plan for similar events to group them together if needed. &lt;br&gt;
Some downstream tools might not support properties; Saving key information in a property can lead to problems there. It will also be easier to manage when things grow. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server-side vs. Client-side?&lt;/strong&gt;&lt;br&gt;
Should I log an event in the frontend or backend?&lt;/p&gt;

&lt;p&gt;Intent on frontend client side, action on backend server side. &lt;/p&gt;

&lt;p&gt;Sign up to receive updates of future blogs, where I will talk about these two problems in more detail.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally posted on &lt;a href="https://getseal.co"&gt;getseal.co&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>frontend</category>
      <category>backend</category>
      <category>devops</category>
    </item>
    <item>
      <title>6 Signs You Need a Tracking Plan on Top of Mixpanel</title>
      <dc:creator>Alex Ran</dc:creator>
      <pubDate>Wed, 22 Nov 2023 12:13:41 +0000</pubDate>
      <link>https://dev.to/alexzran/6-signs-you-need-a-tracking-plan-on-top-of-your-mixpanel-1pml</link>
      <guid>https://dev.to/alexzran/6-signs-you-need-a-tracking-plan-on-top-of-your-mixpanel-1pml</guid>
      <description>&lt;p&gt;read time: 5min&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;It is Tuesday morning, 9:45 AM, 15 minutes before the team meeting. You open Mixpanel (or your favorite analytics tool). You are excited to see the results: How are users interacting with the new detail page UI released last week?&lt;/p&gt;

&lt;p&gt;First, you want to check how many users (hopefully more) have been using the new UI, but it's hard to find the exact event. After searching, three events—&lt;code&gt;show_detail_page&lt;/code&gt;, &lt;code&gt;detail_page_view&lt;/code&gt;, and &lt;code&gt;load_detail_page_new&lt;/code&gt;—all seem possible. The product specs and Jira aren't very helpful either; they only mention “tracking usage of the new page” without specifying the exact name. You message the engineer who added the tracking and confirm the event is &lt;code&gt;load_detail_page_new&lt;/code&gt;. As you think about what "load" means, you see that the number of users has gone up by 50%. This increase is much bigger than what could be explained by the new UI design (even if it is a really good one). You then realize that this was logged differently than you had intended. But it’s now 10 AM, and the meeting is starting. You find yourself thinking about how to deliver this bad news to the team, plan out for a rework and another release.&lt;/p&gt;

&lt;p&gt;When there are only a few things to track, these tasks move along okay, facilitated by a combination of Slack messages, Jira comments, a section in each prod spec, and verbal agreements in meetings. However, as the product starts to grow, we often feel tracking issues creep up, consuming more and more of our team’s resources. Sometimes we are moving too fast to realize how much time it has taken until it leads to missed deadlines or poor decisions. &lt;/p&gt;

&lt;p&gt;Luckily, this is a problem that can be effectively solved. The solution is a data tracking plan. &lt;/p&gt;

&lt;h2&gt;
  
  
  What this post is about
&lt;/h2&gt;

&lt;p&gt;I have worked as a data specialist, a software engineer, and a product owner. I have solved similar problems for different teams as different roles. Today I want to share my experience in combating data tracking messes.&lt;/p&gt;

&lt;p&gt;In this post, we'll explore six key signs that indicate the need for a tracking plan, and explain how a small effort that can save you a lot of headaches later on.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;‘measure twice, cut once'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Signs You Need a Tracking Plan
&lt;/h2&gt;

&lt;p&gt;First things first, do you actually need a tracking plan?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;New Team Members Are Lost&lt;/strong&gt;: When new members join and ask “What events are we tracking?”, or “What event should I look up if I want to analyze this button/flow” it shows a lack of accessible, organized tracking information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Delayed Product Decisions&lt;/strong&gt;: If you're waiting to make product decisions because the analytics or A/B test data is missing or seems unreliable, it’s a red flag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Engineers Seeking Clarifications&lt;/strong&gt;: If engineers on your team frequently ask about tracking requirements, it means the tracking goals were not planned beforehand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Misaligned Tracking Implementation&lt;/strong&gt;: Discovering that the tracking implemented doesn’t match what was initially intended is a clear sign of disorganized tracking processes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overloaded Feature Specs&lt;/strong&gt;: When more than three of your feature specifications or Jira tickets include sections on data tracking, it's a sign your tracking needs deserve a dedicated place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Reporting Doubts&lt;/strong&gt;: Find yourself wondering if the data is ready to be reported to leadership? This indicates a lack of confidence in your data's readiness and accuracy.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you've noticed one or more these signs, it's time to consider a tracking plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Tracking Plan
&lt;/h2&gt;

&lt;p&gt;A tracking plan is a living document that outlines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Events: What user interactions you are tracking. 

&lt;ul&gt;
&lt;li&gt;Naming convention for events&lt;/li&gt;
&lt;li&gt;Using a naming convention is the most cost-effective way to achieve a tracking system that is both easy to maintain and use. There are many philosophical approaches to naming convention. Here at Seal, we use: &lt;code&gt;page_location.ui_name.action&lt;/code&gt;, for example, &lt;code&gt;product_detail.add_to_cart.clicked&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Stay tuned for our next blog, which will talk about event naming conventions in more depth.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Properties: The additional details of these interactions. &lt;/li&gt;
&lt;li&gt;Details: 

&lt;ul&gt;
&lt;li&gt;Descriptions&lt;/li&gt;
&lt;li&gt;Status (Here is the steps we use at Seal, feel free to tune it according to your team’s workflow: 📝 In planning → 🧑‍💻 Ready for dev → 🛠 Implemented → ✅ Ready to use → ⛔️ Update needed → 🗂 Archived)&lt;/li&gt;
&lt;li&gt;Platforms (e.g., web, desktop, iOS, Android, server, etc.)&lt;/li&gt;
&lt;li&gt;UI screenshot (Or, plan directly on Figma designs, see below)&lt;/li&gt;
&lt;li&gt;Other relevant information (like owners, data source, priority, QA notes, etc.)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This document makes sure everyone knows what data is being tracked and how. &lt;/p&gt;

&lt;h2&gt;
  
  
  Tracking Plan Quickstart
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aWcjhV9W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d64tng13nsz3ugqcahmz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aWcjhV9W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d64tng13nsz3ugqcahmz.png" alt="Simple Data Tracking Plan Template" width="800" height="382"&gt;&lt;/a&gt;&lt;br&gt;
To begin, you can &lt;a href="https://getseal.co/tracking-plan-templates"&gt;download a simple Google Sheet template here&lt;/a&gt;.&lt;br&gt;
If you are comfortable with Figma, &lt;a href="https://www.figma.com/community/widget/1293629666452338642"&gt;this Figma extension&lt;/a&gt; allows you to annotate event tracking plan on design files.&lt;br&gt;
You can also &lt;a href="https://calendly.com/alex-at-seal/chat"&gt;book a free 30-minute consulting session&lt;/a&gt; with us for more customized help.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use a Tracking Plan
&lt;/h2&gt;

&lt;p&gt;Unfortunately, the magic doesn’t happen the moment you download the spreadsheet. It will not solve the problem if your team doesn’t use it. &lt;br&gt;
The good news is, it only takes a little more step: to convey the next steps beyond this spreadsheet with your team:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Assign Clear Next Steps for Each Role: Each team member should know their next step in the tracking process.&lt;/li&gt;
&lt;li&gt;The exact task for each role should be depending on your team’s culture. Here is what we do as a reference:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plan&lt;/strong&gt;: Planner(often the PM) will take some minutes to map out what to track in Figma, or in the tracking plan. The status is now &lt;code&gt;📝 In planning&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curation&lt;/strong&gt;: The team, especially the engineers, spend 10 minutes reviewing and adjusting tracking details. Mark status as &lt;code&gt;🧑‍💻 Ready for dev&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementation&lt;/strong&gt;: With detailed requirements in hand, engineers go implement code. Mark status as &lt;code&gt;🛠 Implemented&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation&lt;/strong&gt;: After the code shipped to users, a validator(PM, eng, or data) will check the trackers trigger right and data looks right. Mark as &lt;code&gt;✅ Ready to use&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates&lt;/strong&gt;: Sometimes things changes, and tracking needs updates. Mark status as &lt;code&gt;⛔️ Update needed&lt;/code&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Team Reviews: Regularly review the plan as a team to make sure everyone understands and follows it.

&lt;ul&gt;
&lt;li&gt;The review usually takes 15-30 minutes. It finds outdated events and tracking debts. We usually do this every month to quarter, depending on how many tracking were changed. 
## More Resources about Tracking Plans&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Tracking plans vary depending on the project's needs. Here are a few other tracking plans resources:&lt;br&gt;
&lt;a href="https://help.amplitude.com/hc/en-us/articles/19717053646107-Create-a-tracking-plan"&gt;Amplitude&lt;/a&gt;: Create a tracking plan&lt;br&gt;
&lt;a href="https://segment.com/blog/what-is-a-tracking-plan/"&gt;Segment&lt;/a&gt;: What is a tracking plan?&lt;br&gt;
&lt;a href="https://docs.mixpanel.com/docs/best-practices/create-a-tracking-plan"&gt;Mixpanel&lt;/a&gt;: Create A Tracking Plan&lt;br&gt;
&lt;a href="https://www.avo.app/docs/data-design"&gt;AVO&lt;/a&gt;: What is a Tracking Plan?&lt;br&gt;
I also recommend this article: &lt;a href="https://www.reforge.com/blog/why-most-analytics-efforts-fail"&gt;Why most analytics efforts fail&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;A tracking plan is not just a document; it’s a roadmap for successful, organized data tracking in your product. By noticing this six signs and introducing a tracking plan early, you can save huge for your team by move fast with accurate and reliable data. &lt;br&gt;
Next time a new UI released, you will plan detail from Figma design, adjust tracking plan with engineers, look up this detail in one place, put together a chart, share the result and proceed confidently without any delays.&lt;/p&gt;

&lt;h2&gt;
  
  
  CTA
&lt;/h2&gt;

&lt;p&gt;I would love to know your thoughts. Please let me know your thoughts and follow for more contents 😎&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>frontend</category>
      <category>mobile</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
