# Tracking Plan Observability

<p>This guide walks you through the different tracking plan observability metrics that give you visibility into the events passing through your tracking plans.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="overview">Overview</h2><p>RudderStack gives you complete visibility into the events passing through a tracking plan and details on the tracking plan violations, that is, events that do not comply with the tracking plan rules.</p>
<p>To see these metrics, click the <strong>Events</strong> tab of the source connected to your tracking plan.</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans-observability.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans-observability.webp" 
         alt="Tracking plan observability"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="events-ingested">Events ingested</h3><p>This section shows the tracking plan currently linked to your source and the following details:</p>
<table>
  <thead>
      <tr>
          <th>Metric</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Total events</td>
          <td>Captures all events that pass through the source.</td>
      </tr>
      <tr>
          <td>Events validated</td>
          <td>Number of events validated by the tracking plan.</td>
      </tr>
      <tr>
          <td>Events with violations</td>
          <td>Number of events that do not comply with the tracking plan rules.</td>
      </tr>
      <tr>
          <td>Events dropped</td>
          <td>Number of events dropped due to tracking plan violations.</td>
      </tr>
  </tbody>
</table>
<p>You can see these metrics for all tracking plans connected to that source and filter them by version and time period (past one day, seven days, or 30 days).</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans-observability-1.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans-observability-1.webp" 
         alt="Events ingested section"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="event-flow">Event flow</h3><p>This section gives a graphical overview of all the events ingested per day over the specified period and the number of events with violations.</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans-observability-2.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans-observability-2.webp" 
         alt="Event flow section"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="event-details">Event details</h3><p>Click the <strong>Events</strong> tab to see the following event-related metrics:</p>
<table>
  <thead>
      <tr>
          <th>Metric</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Event name</td>
          <td>Name of the event.</td>
      </tr>
      <tr>
          <td>Count</td>
          <td>Number of events validated by the tracking plan according to filter set in <a href="#events-ingested" >Events ingested</a>.</td>
      </tr>
      <tr>
          <td>Last seen</td>
          <td>Number of days since the last violation occurred.</td>
      </tr>
  </tbody>
</table>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans-observability-3.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans-observability-3.webp" 
         alt="Events tab"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="violation-details">Violation details</h3><p>Click the <strong>Violations</strong> tab to see the following metrics:</p>
<table>
  <thead>
      <tr>
          <th>Metric</th>
          <th>Description</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Event name</td>
          <td>Name of the event.</td>
      </tr>
      <tr>
          <td>Event type</td>
          <td>Type of event (<code>identify</code>, <code>track</code>, <code>group</code>, <code>page</code>, or <code>screen</code>). <br /><br /><strong>Note</strong>: Tracking plans <strong>do not</strong> validate <code>alias</code> events. If you send any <code>alias</code> events, they are shown in this view and returned as is, without any validation.</td>
      </tr>
      <tr>
          <td>Events validated</td>
          <td>Number of events validated by the tracking plan according to filtering period.</td>
      </tr>
      <tr>
          <td>Events with violations</td>
          <td>Number of events that did not comply with the tracking plan rules.</td>
      </tr>
      <tr>
          <td>Events dropped</td>
          <td>Number of events that were not allowed to flow through.</td>
      </tr>
      <tr>
          <td>Last occurred</td>
          <td>Date and time of the last observed violation.</td>
      </tr>
  </tbody>
</table>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans-observability-4.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans-observability-4.webp" 
         alt="Violations tab"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<p>You can also click on an event to view the <a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/violation-management/" >violation type</a> and individual metrics.</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans-observability-5.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans-observability-5.webp" 
         alt="Tracking plan observability for individual event"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<p>Click the <strong>View</strong> option for more details, like the violation description and sample payload that caused the violation.</p>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans-observability-6.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans-observability-6.webp" 
         alt="Violation description"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="real-time-tracking-plan-validation">Real-time tracking plan validation</h2>
<blockquote class="announcement">
  <div class="tip-quote">
    
    <div class="tip-text">Real-time tracking plan validation is feature-flagged. Contact <a href="mailto:support@rudderstack.com" >RudderStack Support</a> to enable it for your workspace.</div>
  </div>
</blockquote>

<p>RudderStack supports real-time tracking plan validation at the source level — this means that RudderStack validates the events against the tracking plan rules as they are being sent from the source.</p>
<p>To see this feature in action:</p>
<ol>
<li>Create a tracking plan.</li>
<li>Connect a source to the tracking plan.</li>
<li>Send events from the source.</li>
<li>Go to the source&rsquo;s <strong>Live Events</strong> tab — see <a href="https://www.rudderstack.com/docs/monitor/live-events/#source-live-events" >Source live events</a> for more information.</li>
</ol>

<figure class="image--main "  >
    <a 
         href="/docs/images/rs-cloud/source-live-events.webp"
        
        >
        <img src="/docs/images/rs-cloud/source-live-events.webp" 
         alt="Source live events"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<ol start="5">
<li>See the <strong>Tracking Plan Validation</strong> panel on the bottom right, just below the <strong>Payload</strong> panel.</li>
</ol>

<figure class="image--main "  >
    <a 
         href="/docs/images/data-governance/tracking-plans/real-time-validation-panel.webp"
        
        >
        <img src="/docs/images/data-governance/tracking-plans/real-time-validation-panel.webp" 
         alt="Real-time tracking plan validation panel"  
         
         
        decoding="async" loading="lazy" class="img-shortcode"/>
    </a>
    
</figure>

<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="how-validation-works">How validation works</h3><p>RudderStack always validates each incoming event against a specific tracking plan version.</p>

<blockquote class="success">
  <div class="tip-quote">
    
    <div class="tip-text">
      Validating against an explicit tracking plan version prevents false validation errors when multiple app versions send events instrumented against different tracking plan versions.
    </div>
  </div>
</blockquote>
<p>The following sections describe how validation works in different scenarios.</p>
<!-- end-chunk -->
<!-- begin-chunk -->
<h4 id="when-using-ruddertyper">When using RudderTyper</h4><p>When you use <a href="https://www.rudderstack.com/docs/dev-tools/ruddertyper/" >RudderTyper</a> to generate type-safe SDK code:</p>
<ul>
<li>RudderTyper includes the tracking plan version in the event payload. This makes validation deterministic across multiple app versions because each event carries the exact schema version it was generated from.</li>
<li>You can see the tracking plan version used for validation in the <a href="#real-time-tracking-plan-validation" ><strong>Tracking Plan Validation</strong> panel</a> of the <strong>Live Events</strong> viewer.</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h4 id="when-using-dashboard-based-sources-non-ruddertyper">When using dashboard-based sources (non-RudderTyper)</h4><p>For sources connected to a tracking plan in the RudderStack dashboard:</p>
<ul>
<li>Events do not include the tracking plan version in the payload.</li>
<li>RudderStack automatically looks up the tracking plan version linked to the source in the backend and uses that version for validation.</li>
</ul>
<p><strong>Example scenario</strong></p>
<ul>
<li>App version 1.0 uses tracking plan version 90</li>
<li>App version 1.1 uses tracking plan version 92</li>
<li>Events from both versions are validated against their respective tracking plan versions (90 and 92)</li>
<li>This ensures each event is validated against the rules it was designed to follow</li>
</ul>
<!-- end-chunk -->
<!-- begin-chunk -->
<h3 id="validation-status-messages">Validation status messages</h3><table>
  <thead>
      <tr>
          <th>Status</th>
          <th>Message</th>
          <th><div>Description</div></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Valid</td>
          <td>This event will pass validation</td>
          <td>The event adheres to all the tracking plan rules and will be forwarded for processing.</td>
      </tr>
      <tr>
          <td>Invalid</td>
          <td>This event will not pass validation</td>
          <td>The event has <a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/violation-management/#violation-types" >validation errors</a> but will be processed because your <a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/create-tracking-plans/#configure-tracking-plan-settings" >tracking plan settings</a> are configured to allow such events.</td>
      </tr>
      <tr>
          <td>Dropped</td>
          <td>This event will not pass validation and will be dropped</td>
          <td>The event has <a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/violation-management/#violation-types" >validation errors</a> and your <a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/create-tracking-plans/#configure-tracking-plan-settings" >tracking plan settings</a> are configured to drop such events.</td>
      </tr>
      <tr>
          <td>API Error</td>
          <td>Failed to validate events with tracking plan</td>
          <td>The validation process failed due to network/server issues and the validation status is unknown.</td>
      </tr>
  </tbody>
</table>
<p>Some screenshots depicting the above statuses are shown:</p>
<div class="rs-tabs">
	<div class="rs-tabs__list">
		<button type="button" class="rs-tabs__tab"
			id="tab-fdbcae"
		
		>Valid</button>
		<button type="button" class="rs-tabs__tab"
			id="tab-dbeafc"
		
		>Invalid</button>
		<button type="button" class="rs-tabs__tab"
			id="tab-ebadfc"
		
		>Dropped</button>
		<button type="button" class="rs-tabs__tab"
			id="tab-fecadb"
		
		>API Error</button>
	</div>
	
<div class="rs-tabs__panel" id="panel-fdbcae">

<figure><img src="/docs/images/data-governance/tracking-plans/valid.webp" class="img-shortcode"
         alt="Valid event"/>
</figure>

</div>

<div class="rs-tabs__panel" id="panel-dbeafc" hidden>

<figure><img src="/docs/images/data-governance/tracking-plans/invalid.webp" class="img-shortcode"
         alt="Invalid event"/>
</figure>

</div>

<div class="rs-tabs__panel" id="panel-ebadfc" hidden>

<figure><img src="/docs/images/data-governance/tracking-plans/dropped.webp" class="img-shortcode"
         alt="Dropped event"/>
</figure>

</div>

<div class="rs-tabs__panel" id="panel-fecadb" hidden>

<figure><img src="/docs/images/data-governance/tracking-plans/api-error.webp" class="img-shortcode"
         alt="API error"/>
</figure>

</div>

</div>

<!-- end-chunk -->
<!-- begin-chunk -->
<h2 id="faq">FAQ</h2><!-- end-chunk -->
<!-- begin-chunk -->
<h4 id="which-events-are-supported-by-the-tracking-plans">Which events are supported by the tracking plans?</h4><p>The tracking plans support <a href="https://www.rudderstack.com/docs/event-spec/standard-events/identify/" ><code>identify</code></a>, <a href="https://www.rudderstack.com/docs/event-spec/standard-events/track/" ><code>track</code></a>, <a href="https://www.rudderstack.com/docs/event-spec/standard-events/page/" ><code>page</code></a>, <a href="https://www.rudderstack.com/docs/event-spec/standard-events/screen/" ><code>screen</code></a>, and <a href="https://www.rudderstack.com/docs/event-spec/standard-events/group/" ><code>group</code></a> events.</p>
<p>Note that the <a href="https://www.rudderstack.com/docs/event-spec/standard-events/alias/" ><code>alias</code></a> call is not supported.</p>
<br />

