<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RudderStack Docs – Manage Data Catalog using Rudder CLI</title><link>https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/</link><description>Recent content in Manage Data Catalog using Rudder CLI on RudderStack Docs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/index.xml" rel="self" type="application/rss+xml"/><item><title>Archive: Manage Events using Rudder CLI</title><link>https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/</guid><description>
&lt;p>Events are the foundation of your tracking implementation in RudderStack. This guide shows you how to define and manage events in your Data Catalog using YAML configuration files.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="event-types" data-heading="Event types" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h2 id="event-types">Event types&lt;/h2>&lt;p>You can define the following event types in your Data Catalog project using Rudder CLI:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Event type&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Track&lt;/td>
&lt;td style="text-align:left">Record user actions and behaviors&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Identify&lt;/td>
&lt;td style="text-align:left">Capture user identification and associated traits&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Page&lt;/td>
&lt;td style="text-align:left">Track web page views&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Screen&lt;/td>
&lt;td style="text-align:left">Monitor mobile app screen views&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Group&lt;/td>
&lt;td style="text-align:left">Associate users with organizations&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="define-events" data-heading="Define events" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h2 id="define-events">Define events&lt;/h2>&lt;p>Using your preferred text editor, create a YAML file in your &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/project-setup/" >Data Catalog project&lt;/a> and add the below content:&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="basic-structure" data-heading="Basic structure" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="basic-structure">Basic structure&lt;/h3>&lt;p>You can define events in YAML files with the &lt;code>kind: events&lt;/code> specification. See &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/yaml-data-catalog-and-tracking-plans/" >Data Catalog YAML Reference&lt;/a> for the detailed YAML spec containing event definitions.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">myeventgroup&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">events&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">product_viewed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product Viewed&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">// Only applicable for track events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a user views a product&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/browsing_category&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to the Browsing category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each event definition requires:&lt;/p>
&lt;ul>
&lt;li>A unique identifier (&lt;code>id&lt;/code>)&lt;/li>
&lt;li>The event type (&lt;code>event_type&lt;/code>)&lt;/li>
&lt;li>A descriptive name (&lt;code>name&lt;/code>) (applicable &lt;strong>only&lt;/strong> for &lt;code>track&lt;/code> events)&lt;/li>
&lt;li>Optional description (&lt;code>description&lt;/code>)&lt;/li>
&lt;li>Optional event category (&lt;code>category&lt;/code>) — see &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/#event-categories" >Manage Event Categories using Rudder CLI&lt;/a> for more information.&lt;/li>
&lt;/ul>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/warning.svg alt="warning" loading="lazy" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Do not include the &lt;code>name&lt;/code> parameter for &lt;code>identify&lt;/code>, &lt;code>page&lt;/code>, or &lt;code>group&lt;/code> events as they will not pass validation and result in an error.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>The following snippets highlight the YAML definitions for different event types:&lt;/p>
&lt;nav>
&lt;div class="nav nav-tabs" id="nav-tab" role="tablist">
&lt;a class="nav-item nav-link active "
id="nav-eabfcd" data-toggle="tab" href="#eabfcd"
role="tab" aria-controls="nav-home" aria-selected="true">Identify&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-dbceaf" data-toggle="tab" href="#dbceaf"
role="tab" aria-controls="nav-home" aria-selected="true">Track&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-ebfcad" data-toggle="tab" href="#ebfcad"
role="tab" aria-controls="nav-home" aria-selected="true">Page/Screen&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-ceabfd" data-toggle="tab" href="#ceabfd"
role="tab" aria-controls="nav-home" aria-selected="true">Group&lt;/a>
&lt;/div>
&lt;/nav>
&lt;div class="tab-content" id="nav-tab-content">
&lt;div class="tab-pane fade show active " id="eabfcd" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user_identify&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">identify&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Captures user profile information&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/signup_category&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to the Signup category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="dbceaf" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">events&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">checkout_completed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Checkout Completed&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a user completes the checkout process&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/checkout_category&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to the Checkout category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="ebfcad" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">homepage_viewed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">page&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Tracks homepage views&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/browsing_category&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to the Browsing category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">settings_screen&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">screen&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Tracks settings screen views&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/miscellaneous_category&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to the Miscellaneous category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="ceabfd" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">org_association&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">group&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Associates users with their organization&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/association_category&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to the Association category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="event-groups" data-heading="Event groups" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="event-groups">Event groups&lt;/h3>&lt;p>You can group related events in a single YAML file based on business context (like ecommerce or user management) or other logical categories. Define each group with a unique &lt;code>metadata.name&lt;/code> and list related events under &lt;code>spec.events&lt;/code>.&lt;/p>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;p>When defining event groups, ensure that:&lt;/p>
&lt;ul>
&lt;li>Events in the same group share similar validation requirements.&lt;/li>
&lt;li>Related events that are often used together in Tracking Plans are grouped together.&lt;/li>
&lt;li>Each event group has a clear, specific purpose (for example, &lt;code>ecommerce_events&lt;/code> for ecommerce-related tracking).&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>The following examples show how to organize events into meaningful groups, along with their YAML definitions:&lt;/p>
&lt;nav>
&lt;div class="nav nav-tabs" id="nav-tab" role="tablist">
&lt;a class="nav-item nav-link active "
id="nav-bcdfae" data-toggle="tab" href="#bcdfae"
role="tab" aria-controls="nav-home" aria-selected="true">Ecommerce events&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-debfca" data-toggle="tab" href="#debfca"
role="tab" aria-controls="nav-home" aria-selected="true">User events&lt;/a>
&lt;/div>
&lt;/nav>
&lt;div class="tab-content" id="nav-tab-content">
&lt;div class="tab-pane fade show active " id="bcdfae" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ecommerce_events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">events&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">product_viewed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product Viewed&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a user views a product&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/browsing_category&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">add_to_cart&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Add to Cart&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a user adds a product to cart&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">checkout_started&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Checkout Started&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a user starts checkout&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="debfca" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user_events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">events&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user_registered&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User Registered&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a new user registers&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/signup_category&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user_login&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User Login&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a user logs in&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">profile_updated&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Profile Updated&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Triggered when a user updates their profile&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/miscellaneous_category&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="best-practices" data-heading="Best practices" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="best-practices">Best practices&lt;/h3>&lt;p>Follow these best practices when defining events and event groups:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Naming conventions&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use clear, descriptive names&lt;/li>
&lt;li>Follow consistent capitalization&lt;/li>
&lt;li>Avoid special characters&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Organization&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use event groups to group related events together&lt;/li>
&lt;li>Use meaningful names that reflect the group&amp;rsquo;s purpose&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Validation&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use unique identifiers&lt;/li>
&lt;li>Validate event definitions&lt;/li>
&lt;li>Test before deployment&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Avoid resource duplication&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Do not define the same event in multiple event YAML files. Each event should exist in only one file to prevent duplication and potential confusion.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-and-deploy-events" data-heading="Validate and deploy events" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h2 id="validate-and-deploy-events">Validate and deploy events&lt;/h2>&lt;p>Before deploying your events to the workspace, validate them to ensure they follow the correct structure and meet your requirements.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-events" data-heading="Validate events" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="validate-events">Validate events&lt;/h3>&lt;p>Run the following command to validate your event definitions:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli validate -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The command checks your event definitions for:&lt;/p>
&lt;ul>
&lt;li>Required fields and correct structure&lt;/li>
&lt;li>Valid event types and property references&lt;/li>
&lt;li>Unique identifiers across your catalog&lt;/li>
&lt;li>Proper YAML syntax&lt;/li>
&lt;/ul>
&lt;p>If validation succeeds, the command returns no output. If it finds any issues, it displays specific error messages to help you fix them.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="deploy-events" data-heading="Deploy events" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="deploy-events">Deploy events&lt;/h3>&lt;p>After validating your events, deploy them to your RudderStack workspace:&lt;/p>
&lt;ol>
&lt;li>Review the changes before deploying:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog --dry-run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Deploy the validated events:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The above command:&lt;/p>
&lt;ul>
&lt;li>Creates new events in your workspace&lt;/li>
&lt;li>Updates existing events if you&amp;rsquo;ve modified them&lt;/li>
&lt;li>Reports the status of each operation&lt;/li>
&lt;li>Requires confirmation before making changes (unless you use &lt;code>--confirm=false&lt;/code>)&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">See the &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-governance-walkthrough/" >End-to-end Walkthrough&lt;/a> for steps on validating and deploying events along with other Data Catalog resources.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="next-steps" data-heading="Next steps" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h2 id="next-steps">Next steps&lt;/h2>&lt;ul>
&lt;li>Define &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" >properties&lt;/a> for your events&lt;/li>
&lt;li>Create &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" >custom types&lt;/a> for validation&lt;/li>
&lt;li>Build &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/tracking-plans/" >Tracking Plans&lt;/a> using your events and properties&lt;/li>
&lt;li>Automate changes to Tracking Plans by leveraging &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/github-actions/" >CLI-based workflows&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="event-categories" data-heading="Event categories" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h2 id="event-categories">Event categories&lt;/h2>&lt;p>Event categories help you organize and classify events in your RudderStack Data Catalog based on business context, functionality, or any other logical classification system. This section shows you how to define event categories and associate them with events using YAML configuration files.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="overview" data-heading="Overview" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="overview">Overview&lt;/h3>&lt;p>In the RudderStack dashboard, you can use the &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/" >Data Catalog&lt;/a> to:&lt;/p>
&lt;ul>
&lt;li>Define custom categories for your events&lt;/li>
&lt;li>Assign predefined categories to your events&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/event-categories.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/event-categories.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/event-categories.webp"
alt="Event categories in the RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>You can also use Rudder CLI to define event categories as YAML configuration files in your &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/project-setup/" >Data Catalog project&lt;/a> and reference them in your event definitions.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="define-event-categories" data-heading="Define event categories" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="define-event-categories">Define event categories&lt;/h3>&lt;p>Using your preferred text editor, create a YAML file in your &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/project-setup/" >Data Catalog project&lt;/a> and add the below content:&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="basic-structure-1" data-heading="Basic structure" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h4 id="basic-structure-1">Basic structure&lt;/h4>&lt;p>You can define event categories in YAML files with the &lt;code>kind: categories&lt;/code> specification. See &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/yaml-data-catalog-and-tracking-plans/" >Data Catalog YAML Reference&lt;/a> for the detailed YAML spec containing event definitions.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">categories&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">event-categories&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">categories&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">signup_category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Signup&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">login_category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Login&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">browsing_category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Browsing&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">miscellaneous_category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Miscellaneous&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each event category definition requires:&lt;/p>
&lt;ul>
&lt;li>A unique identifier (&lt;code>id&lt;/code>)&lt;/li>
&lt;li>A descriptive name (&lt;code>name&lt;/code>)&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="best-practices-1" data-heading="Best practices" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h4 id="best-practices-1">Best practices&lt;/h4>&lt;p>Follow these best practices when defining event categories:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Naming conventions&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use clear, descriptive category names that reflect their purpose&lt;/li>
&lt;li>Follow consistent capitalization (for example, &lt;code>Marketing&lt;/code> instead of &lt;code>marketing&lt;/code>)&lt;/li>
&lt;li>Keep names concise but meaningful&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Organization&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Create categories that align with your business objectives&lt;/li>
&lt;li>Consider your team&amp;rsquo;s workflow and how events will be used&lt;/li>
&lt;li>Avoid creating too many categories that could complicate organization&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Uniqueness&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Ensure each category has a unique identifier&lt;/li>
&lt;li>Avoid duplicate category names within the same configuration&lt;/li>
&lt;li>Use descriptive IDs that relate to the category name (for example, &lt;code>marketing_category&lt;/code> for &amp;ldquo;Marketing&amp;rdquo;)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="reference-categories-in-events" data-heading="Reference categories in events" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="reference-categories-in-events">Reference categories in events&lt;/h3>&lt;p>Once you&amp;rsquo;ve defined your categories, you can associate them with events in your event definitions.&lt;/p>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/warning.svg alt="warning" loading="lazy" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Each event can have only one category assigned to it. See &lt;a href="#limitations" >Limitations&lt;/a> for the other key points to consider while referencing categories in events.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>To reference a category in an event definition, use the &lt;code>category&lt;/code> field with a &lt;code>$ref&lt;/code> pointer to your category:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">categorized-events&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">events&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">product_viewed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product Viewed&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/browsing_category&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">signup_completed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">event_type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">track&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Signup Completed&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">category&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/categories/event-categories/signup_category&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>$ref&lt;/code> format follows the below syntax:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="s2">&amp;#34;#/categories/{categories-metadata-name}/{category-id}&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Where:&lt;/p>
&lt;ul>
&lt;li>&lt;code>categories-metadata-name&lt;/code> is the name specified in your categories file&amp;rsquo;s metadata.&lt;/li>
&lt;li>&lt;code>category-id&lt;/code> is the unique identifier of the specific category.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-and-deploy-event-categories" data-heading="Validate and deploy event categories" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="validate-and-deploy-event-categories">Validate and deploy event categories&lt;/h3>&lt;p>Before deploying your event categories to the workspace, validate them to ensure they follow the correct structure and meet your requirements.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-categories" data-heading="Validate categories" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h4 id="validate-categories">Validate categories&lt;/h4>&lt;p>Run the following command to validate your category definitions and event associations:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli validate -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The command checks your category definitions for:&lt;/p>
&lt;ul>
&lt;li>Required fields and correct structure&lt;/li>
&lt;li>Unique category identifiers and names&lt;/li>
&lt;li>Valid category references in event definitions&lt;/li>
&lt;li>Proper YAML syntax and formatting&lt;/li>
&lt;li>No duplicate categories within the same configuration&lt;/li>
&lt;/ul>
&lt;p>If validation succeeds, the command returns no output. If it finds any issues, it displays specific error messages to help you fix them.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="deploy-categories" data-heading="Deploy categories" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h4 id="deploy-categories">Deploy categories&lt;/h4>&lt;p>After validating your categories and events, deploy them to your RudderStack workspace:&lt;/p>
&lt;ol>
&lt;li>Review the changes before deploying:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog --dry-run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Deploy the validated categories:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The above command:&lt;/p>
&lt;ul>
&lt;li>Creates new categories in your workspace&lt;/li>
&lt;li>Updates existing categories if you&amp;rsquo;ve modified them&lt;/li>
&lt;li>Associates events with their specified categories&lt;/li>
&lt;li>Reports the status of each operation&lt;/li>
&lt;li>Requires confirmation before making changes (unless you use &lt;code>--confirm=false&lt;/code>)&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">Categories are applied alongside other Data Catalog resources. When you deploy, both your categories and the events that reference them will be updated in your workspace.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-governance-walkthrough/" >End-to-end Walkthrough&lt;/a> for steps on validating and deploying event categories along with other Data Catalog resources.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="limitations" data-heading="Limitations" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="limitations">Limitations&lt;/h3>&lt;p>The current Rudder CLI implementation of event categories has the following limitations:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Event-only support&lt;/strong>: Categories can only be assigned to events. Other Data Catalog assets like properties or custom types do not support categories in this version.&lt;/li>
&lt;li>&lt;strong>Single category per event&lt;/strong>: Each event can be assigned to only one category. Multiple categories per event are not supported.&lt;/li>
&lt;li>&lt;strong>No duplicate categories&lt;/strong>: You cannot create duplicate categories with the same name, regardless of whether they are defined within the same configuration file or across different configuration files.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="next-steps-1" data-heading="Next steps" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" data-title="Manage Events using Rudder CLI" -->
&lt;h3 id="next-steps-1">Next steps&lt;/h3>&lt;ul>
&lt;li>Create &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" >events&lt;/a> and reference the event categories in them&lt;/li>
&lt;li>Define &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" >properties&lt;/a> for your categorized events&lt;/li>
&lt;li>Build &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/tracking-plans/" >Tracking Plans&lt;/a> using your categorized events&lt;/li>
&lt;li>Explore the &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/yaml-data-catalog-and-tracking-plans/" >Data Catalog YAML Reference&lt;/a> for advanced configuration options&lt;/li>
&lt;li>Automate changes to categories and events by leveraging &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/github-actions/" >CLI-based workflows&lt;/a>&lt;/li>
&lt;/ul>
&lt;br /></description></item><item><title>Archive: Manage Properties using Rudder CLI</title><link>https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/</guid><description>
&lt;p>Properties provide context to your events by capturing additional attributes and metadata. This guide shows you how to define and manage properties in your Data Catalog using YAML configuration files.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="property-types" data-heading="Property types" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h2 id="property-types">Property types&lt;/h2>&lt;p>RudderStack supports the following property types in your Data Catalog:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Property type&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">String&lt;/td>
&lt;td style="text-align:left">Text values&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Integer/Number&lt;/td>
&lt;td style="text-align:left">Number values&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Boolean&lt;/td>
&lt;td style="text-align:left">True/False values&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Array&lt;/td>
&lt;td style="text-align:left">Lists of values&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Object&lt;/td>
&lt;td style="text-align:left">Nested structures&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Custom Types&lt;/td>
&lt;td style="text-align:left">User-defined types with specific validation rules&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="define-properties" data-heading="Define properties" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h2 id="define-properties">Define properties&lt;/h2>&lt;p>Using your preferred text editor, create a YAML file in your &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/project-setup/" >Data Catalog project&lt;/a> and add the below content:&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="basic-structure" data-heading="Basic structure" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h3 id="basic-structure">Basic structure&lt;/h3>&lt;p>You can define properties in YAML files with the &lt;code>kind: properties&lt;/code> specification. See &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/yaml-data-catalog-and-tracking-plans/" >Data Catalog YAML Reference&lt;/a> for the detailed YAML spec containing property definitions.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">properties&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">mypropertygroup&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">properties&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user_email&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Email&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User&amp;#39;s email address&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Each property definition requires:&lt;/p>
&lt;ul>
&lt;li>A unique identifier (&lt;code>id&lt;/code>)&lt;/li>
&lt;li>A property name (&lt;code>name&lt;/code>)&lt;/li>
&lt;li>A data type (&lt;code>type&lt;/code>)&lt;/li>
&lt;li>Optional description (&lt;code>description&lt;/code>) and validation rules&lt;/li>
&lt;/ul>
&lt;p>The following snippets highlight the YAML definitions for different property types:&lt;/p>
&lt;nav>
&lt;div class="nav nav-tabs" id="nav-tab" role="tablist">
&lt;a class="nav-item nav-link active "
id="nav-ebacfd" data-toggle="tab" href="#ebacfd"
role="tab" aria-controls="nav-home" aria-selected="true">Simple properties&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-bfcead" data-toggle="tab" href="#bfcead"
role="tab" aria-controls="nav-home" aria-selected="true">Properties with validation&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-bdcfae" data-toggle="tab" href="#bdcfae"
role="tab" aria-controls="nav-home" aria-selected="true">Array properties&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-adfbec" data-toggle="tab" href="#adfbec"
role="tab" aria-controls="nav-home" aria-selected="true">Object properties&lt;/a>
&lt;/div>
&lt;/nav>
&lt;div class="tab-content" id="nav-tab-content">
&lt;div class="tab-pane fade show active " id="ebacfd" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">product_price&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Price&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">number&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product price in USD&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">is_premium&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;isPremium&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">boolean&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Whether the user has a premium subscription&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="bfcead" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">username&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Username&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User&amp;#39;s name&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">3&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">50&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;^[a-zA-Z0-9_-]+$&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">age&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Age&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">integer&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User&amp;#39;s age&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minimum&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">13&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maximum&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">120&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="bdcfae" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">categories&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Categories&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">array&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User&amp;#39;s favorite product categories&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">5&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uniqueItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="adfbec" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">shipping_address&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Address&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">object&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User&amp;#39;s shipping address&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">properties&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">street&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">city&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">postal_code&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">country&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/tick.svg loading="lazy" alt="success" decoding="async" class="img__small" style="
margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">
RudderStack supports &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/tracking-plans/create/#nested-properties" >nesting properties&lt;/a> while defining Tracking Plan rules — this lets you validate hierarchical data structures that mirror your actual data model.
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="property-groups" data-heading="Property groups" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h3 id="property-groups">Property groups&lt;/h3>&lt;p>You can group related properties in a single YAML file based on business context (like user profiles or product details) or other logical categories. Define each group with a unique &lt;code>metadata.name&lt;/code> and list related properties under &lt;code>spec.properties&lt;/code>.&lt;/p>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;p>When defining property groups, ensure that:&lt;/p>
&lt;ul>
&lt;li>Properties in the same group share similar validation requirements&lt;/li>
&lt;li>Related properties that are often used together in Tracking Plans are grouped together&lt;/li>
&lt;li>Each property group has a clear, specific purpose (for example, &lt;code>user_properties&lt;/code> for user-related attributes)&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>The following examples show how to organize properties into meaningful groups:&lt;/p>
&lt;nav>
&lt;div class="nav nav-tabs" id="nav-tab" role="tablist">
&lt;a class="nav-item nav-link active "
id="nav-dfceab" data-toggle="tab" href="#dfceab"
role="tab" aria-controls="nav-home" aria-selected="true">User properties&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-bfcead" data-toggle="tab" href="#bfcead"
role="tab" aria-controls="nav-home" aria-selected="true">Product properties&lt;/a>
&lt;/div>
&lt;/nav>
&lt;div class="tab-content" id="nav-tab-content">
&lt;div class="tab-pane fade show active " id="dfceab" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">properties&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user_properties&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">properties&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">user_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;ID&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Unique identifier for the user&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">64&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">email&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Email&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;User&amp;#39;s email address&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">format&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;email&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">account_type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Account Type&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Type of user account&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enum&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s2">&amp;#34;personal&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s2">&amp;#34;business&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s2">&amp;#34;enterprise&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-pane fade show " id="bfcead" role="tabpanel" aria-labelledby="nav-1">
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">properties&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">product_properties&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">properties&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">product_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product ID&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Unique identifier for the product&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;^PRD-[0-9]{6}$&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">price&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Price&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">number&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product price in USD&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minimum&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">exclusiveMinimum&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">categories&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Categories&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">array&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product categories&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">propConfig&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">3&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uniqueItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="best-practices" data-heading="Best practices" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h3 id="best-practices">Best practices&lt;/h3>&lt;p>Follow these best practices when defining properties and property groups:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Naming conventions&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use clear, descriptive names&lt;/li>
&lt;li>Follow consistent casing&lt;/li>
&lt;li>Use meaningful prefixes for grouping&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Organization&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use property groups to group related properties together&lt;/li>
&lt;li>Use meaningful names that reflect the group&amp;rsquo;s purpose&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Validation&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Add meaningful constraints&lt;/li>
&lt;li>Document validation requirements&lt;/li>
&lt;li>Test edge cases&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Avoid resource duplication&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Do not define the same property in multiple property YAML files. Each property should exist in only one file to prevent duplication and potential confusion.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-and-deploy-properties" data-heading="Validate and deploy properties" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h2 id="validate-and-deploy-properties">Validate and deploy properties&lt;/h2>&lt;p>Before deploying your properties to the workspace, validate them to ensure they follow the correct structure and meet your requirements.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-properties" data-heading="Validate properties" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h3 id="validate-properties">Validate properties&lt;/h3>&lt;p>Run the following command to validate your property definitions:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli validate -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The command checks your property definitions for:&lt;/p>
&lt;ul>
&lt;li>Required fields and correct structure&lt;/li>
&lt;li>Valid property types and validation rules&lt;/li>
&lt;li>Unique identifiers across your catalog&lt;/li>
&lt;li>Proper YAML syntax&lt;/li>
&lt;/ul>
&lt;p>If validation succeeds, the command returns no output. If it finds any issues, it displays specific error messages to help you fix them.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="deploy-properties" data-heading="Deploy properties" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h3 id="deploy-properties">Deploy properties&lt;/h3>&lt;p>After validating your properties, deploy them to your RudderStack workspace:&lt;/p>
&lt;ol>
&lt;li>Review the changes before deploying:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog --dry-run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Deploy the validated properties:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The above command:&lt;/p>
&lt;ul>
&lt;li>Creates new properties in your workspace&lt;/li>
&lt;li>Updates existing properties if you&amp;rsquo;ve modified them&lt;/li>
&lt;li>Reports the status of each operation&lt;/li>
&lt;li>Requires confirmation before making changes (unless you use &lt;code>--confirm=false&lt;/code>)&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">See the &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-governance-walkthrough/" >End-to-end Walkthrough&lt;/a> for steps on validating and deploying properties along with other Data Catalog resources.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="next-steps" data-heading="Next steps" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/properties/" data-title="Manage Properties using Rudder CLI" -->
&lt;h2 id="next-steps">Next steps&lt;/h2>&lt;ul>
&lt;li>Create &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" >custom types&lt;/a> for complex validation&lt;/li>
&lt;li>Associate properties with &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/events/" >events&lt;/a>&lt;/li>
&lt;li>Build &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/tracking-plans/" >Tracking Plans&lt;/a> using your events and properties&lt;/li>
&lt;li>Automate changes to Tracking Plans by leveraging &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/github-actions/" >CLI-based workflows&lt;/a>&lt;/li>
&lt;/ul>
&lt;br /></description></item><item><title>Archive: Use Custom Data Types in Rudder CLI</title><link>https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/</guid><description>
&lt;p>This guide walks you through creating and managing custom data types as YAML files in Rudder CLI.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="overview" data-heading="Overview" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="overview">Overview&lt;/h2>&lt;p>&lt;strong>Custom Data Types&lt;/strong> extend RudderStack&amp;rsquo;s &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/" >CLI-based Tracking Plan management&lt;/a> capabilities, allowing you to define reusable data validation patterns that can be referenced across multiple properties in your RudderStack Tracking Plans, improving consistency and reducing duplication.&lt;/p>
&lt;p>With custom data types, you can:&lt;/p>
&lt;ul>
&lt;li>Define custom data types in YAML files with specific validation rules&lt;/li>
&lt;li>Reference these custom data types in property definitions&lt;/li>
&lt;li>Validate and sync using existing Rudder CLI commands&lt;/li>
&lt;li>Version control your data types along with events, properties, and Tracking Plans&lt;/li>
&lt;li>Deploy to your RudderStack workspace through your established Git workflow&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="use-cases" data-heading="Use cases" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="use-cases">Use cases&lt;/h2>&lt;p>This section highlights some common scenarios where custom data types can be helpful.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="standardizing-validation" data-heading="Standardizing validation" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h4 id="standardizing-validation">Standardizing validation&lt;/h4>&lt;p>Alice is a Product Manager responsible for maintaining data quality across her organization. She needs to ensure that email properties consistently follow the same validation rules regardless of which team implements them.&lt;/p>
&lt;p>With custom data types, she creates an &lt;code>EmailType&lt;/code> with specific validation rules once, and then teams throughout the organization can reference this type in their property definitions, ensuring consistency.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="simplifying-implementation" data-heading="Simplifying implementation" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h4 id="simplifying-implementation">Simplifying implementation&lt;/h4>&lt;p>Bob is a Product Engineer implementing event tracking for a new feature.&lt;/p>
&lt;p>Instead of figuring out the correct validation rules for each property, he references custom types defined by Alice. This ensures his implementation follows company standards without requiring detailed knowledge of validation patterns.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="define-custom-types" data-heading="Define custom types" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="define-custom-types">Define custom types&lt;/h2>&lt;p>You can define &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" >custom data types&lt;/a> in your Rudder CLI project as YAML files with the required validation rules.&lt;/p>
&lt;p>A sample YAML file &lt;code>~/tutorial-catalog/my-custom-types.yaml&lt;/code> that defines two custom data types (&lt;code>SKU Type&lt;/code> and &lt;code>Category Type&lt;/code>) is shown:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">custom-types&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">identifier-types&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">types&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">sku_type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;SKUType&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Custom type for SKU validation&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Validation rules for the custom data type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">5&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">255&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;^SKU-[0-9]+$&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">category_type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;CategoryType&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Custom type for product identifiers&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">string&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Validation rules for the custom data type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxLength&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pattern&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;^PROD-[0-9]+$&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can then &lt;a href="#reference-custom-types-in-properties" >reference these custom data types&lt;/a> in your property definitions.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="yaml-spec" data-heading="YAML spec" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h3 id="yaml-spec">YAML spec&lt;/h3>&lt;p>You can define custom data types in the YAML file by setting &lt;code>kind&lt;/code> to &lt;code>custom-types&lt;/code>.&lt;/p>
&lt;p>The &lt;code>spec&lt;/code> parameter of the YAML file has the following structure:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Property&lt;/th>
&lt;th style="text-align:left">Type&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>types&lt;/code> &lt;br/> &lt;span style="color: #4D4DFF;font-size:12px;">Required&lt;/span>&lt;/td>
&lt;td style="text-align:left">Array of &lt;a href="#custom-type-definition" >custom type definitions&lt;/a>&lt;/td>
&lt;td style="text-align:left">An array of custom type objects grouped together in the same file.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="custom-type-definition" data-heading="Custom type definition" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h4 id="custom-type-definition">Custom type definition&lt;/h4>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Property&lt;/th>
&lt;th style="text-align:left">Type&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>id&lt;/code> &lt;br/> &lt;span style="color: #4D4DFF;font-size:12px;">Required&lt;/span>&lt;/td>
&lt;td style="text-align:left">String&lt;/td>
&lt;td style="text-align:left">Unique identifier for the custom type within the project. This parameter must be unique across all custom types in all the YAML files within the project.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>name&lt;/code> &lt;br/> &lt;span style="color: #4D4DFF;font-size:12px;">Required&lt;/span>&lt;/td>
&lt;td style="text-align:left">String&lt;/td>
&lt;td style="text-align:left">Display name of the custom type. &lt;br />&lt;br />&lt;strong>Note&lt;/strong>: The custom type name must be between 2 and 65 characters long. It must start with a capital letter and contain only letters, numbers, underscores and dashes. Spaces are &lt;strong>not&lt;/strong> allowed.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>type&lt;/code> &lt;br/> &lt;span style="color: #4D4DFF;font-size:12px;">Required&lt;/span>&lt;/td>
&lt;td style="text-align:left">String&lt;/td>
&lt;td style="text-align:left">Base data type for the custom type. &lt;br />&lt;br /> Acceptable values are: &lt;code>string&lt;/code>, &lt;code>integer&lt;/code>, &lt;code>number&lt;/code>, &lt;code>object&lt;/code>, &lt;code>array&lt;/code>, &lt;code>boolean&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>config&lt;/code> &lt;br/> &lt;span style="color: #4D4DFF;font-size:12px;">Required&lt;/span>&lt;/td>
&lt;td style="text-align:left">&lt;a href="#config-options" >&lt;code>config&lt;/code>&lt;/a> object&lt;/td>
&lt;td style="text-align:left">Validation rules for the custom type. The configuration options vary depending on the &lt;code>type&lt;/code> parameter.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>description&lt;/code>&lt;/td>
&lt;td style="text-align:left">String&lt;/td>
&lt;td style="text-align:left">Description of the custom type.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="config-options" data-heading="&lt;code>config&lt;/code> options" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h4 id="config-options">&lt;code>config&lt;/code> options&lt;/h4>&lt;p>The &lt;code>config&lt;/code> object&amp;rsquo;s configuration varies depending on the &lt;code>type&lt;/code> parameter.&lt;/p>
&lt;nav>
&lt;div class="nav nav-tabs" id="nav-tab" role="tablist">
&lt;a class="nav-item nav-link active "
id="nav-decbaf" data-toggle="tab" href="#decbaf"
role="tab" aria-controls="nav-home" aria-selected="true">String&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-efcadb" data-toggle="tab" href="#efcadb"
role="tab" aria-controls="nav-home" aria-selected="true">Number/Integer&lt;/a>
&lt;a class="nav-item nav-link "
id="nav-cdbaef" data-toggle="tab" href="#cdbaef"
role="tab" aria-controls="nav-home" aria-selected="true">Array&lt;/a>
&lt;/div>
&lt;/nav>
&lt;div class="tab-content" id="nav-tab-content">
&lt;div class="tab-pane fade show active " id="decbaf" role="tabpanel" aria-labelledby="nav-1">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Parameter&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>minLength&lt;/code>&lt;/td>
&lt;td style="text-align:left">Minimum string length&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>maxLength&lt;/code>&lt;/td>
&lt;td style="text-align:left">Maximum string length&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>pattern&lt;/code>&lt;/td>
&lt;td style="text-align:left">Regular expression patterns. RudderStack supports the following patterns:&lt;br />&lt;br /> &lt;ul>&lt;li>Email&lt;/li>&lt;li>Date-time&lt;/li>&lt;li>Date&lt;/li>&lt;li>Time&lt;/li>&lt;li>URL&lt;/li>&lt;li>IPv4&lt;/li>&lt;li>IPv6&lt;/li>&lt;li>Custom (define a custom pattern)&lt;/li>&lt;/ul>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>format&lt;/code>&lt;/td>
&lt;td style="text-align:left">Predefined format in which the values should be captured. RudderStack accepts the following formats:&lt;br />&lt;br /> &lt;ul>&lt;li>date-time&lt;/li>&lt;li>date&lt;/li>&lt;li>time&lt;/li>&lt;li>email&lt;/li>&lt;li>hostname&lt;/li>&lt;li>ipv4&lt;/li>&lt;li>ipv6&lt;/li>&lt;li>uuid&lt;/li>&lt;/ul>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>enum&lt;/code>&lt;/td>
&lt;td style="text-align:left">Array of acceptable values&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div class="tab-pane fade show " id="efcadb" role="tabpanel" aria-labelledby="nav-1">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Parameter&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>minimum&lt;/code>&lt;/td>
&lt;td style="text-align:left">Minimum value&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>maximum&lt;/code>&lt;/td>
&lt;td style="text-align:left">Maximum value&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>exclusiveMinimum&lt;/code>&lt;/td>
&lt;td style="text-align:left">Exclusive minimum value&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>exclusiveMaximum&lt;/code>&lt;/td>
&lt;td style="text-align:left">Exclusive maximum value&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>multipleOf&lt;/code>&lt;/td>
&lt;td style="text-align:left">Multiple of value&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;div class="tab-pane fade show " id="cdbaef" role="tabpanel" aria-labelledby="nav-1">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Parameter&lt;/th>
&lt;th style="text-align:left">Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;code>itemTypes&lt;/code>&lt;/td>
&lt;td style="text-align:left">List of acceptable types for array items&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>minItems&lt;/code>&lt;/td>
&lt;td style="text-align:left">Minimum number of items&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>maxItems&lt;/code>&lt;/td>
&lt;td style="text-align:left">Maximum number of items&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;code>uniqueItems&lt;/code>&lt;/td>
&lt;td style="text-align:left">Boolean requiring uniqueness of items&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/div>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="best-practices" data-heading="Best practices" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h3 id="best-practices">Best practices&lt;/h3>&lt;p>Follow these best practices when defining custom types:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Naming conventions&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Use clear, descriptive names&lt;/li>
&lt;li>Follow consistent capitalization&lt;/li>
&lt;li>Use meaningful prefixes for grouping&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Organization&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Group related custom types together in the same file&lt;/li>
&lt;li>Use meaningful names that reflect the type&amp;rsquo;s purpose&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Validation&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Add meaningful constraints&lt;/li>
&lt;li>Document validation requirements&lt;/li>
&lt;li>Test edge cases&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Avoid resource duplication&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Do not define the same custom type in multiple custom type YAML files. Each custom type should exist in only one file to prevent duplication and potential confusion.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="reference-custom-types-in-properties" data-heading="Reference custom types in properties" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="reference-custom-types-in-properties">Reference custom types in properties&lt;/h2>&lt;p>Properties can reference custom types using the standard reference format consistent with how events and properties are referenced in Tracking Plans.&lt;/p>
&lt;p>The following snippet references two custom types (&lt;code>SKU Type&lt;/code> and &lt;code>Category Type&lt;/code>) in the properties &lt;code>SKU&lt;/code> and &lt;code>Category&lt;/code>, respectively:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">properties&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">mypropertygroup&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">properties&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">product_sku&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;SKU&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/custom-types/identifier-types/sku_type&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to custom type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product SKU&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">category&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Category&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/custom-types/identifier-types/category_type&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to custom type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product&amp;#39;s category&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;p>Note that:&lt;/p>
&lt;ul>
&lt;li>Custom types can reference other custom types, allowing for complex type hierarchies. See &lt;a href="#advanced-features" >Advanced custom type features&lt;/a> for more information.&lt;/li>
&lt;li>While there&amp;rsquo;s no limit on nesting depth, circular references are not supported currently.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="advanced-features" data-heading="Advanced features" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="advanced-features">Advanced features&lt;/h2>&lt;p>This section covers some advanced use cases where you can leverage custom types.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="array-of-custom-types" data-heading="Array of custom types" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h3 id="array-of-custom-types">Array of custom types&lt;/h3>&lt;p>You can define arrays of custom types, as shown:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">custom-types&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">advanced-types&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">types&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;emails_array_type&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;EmailArrayType&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Array of email addresses&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">array&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">itemTypes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="s2">&amp;#34;#/custom-types/email-types/email_type&amp;#34;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c"># Reference to another custom type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">minItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">uniqueItems&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="object-custom-types" data-heading="Object custom types" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h3 id="object-custom-types">Object custom types&lt;/h3>&lt;p>You can define object types with specific properties:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">rudder/v0.1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">custom-types&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">object-types&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">types&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">address_type&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;AddressType&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Physical address information&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">object&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">properties&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/address/street&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/address/city&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/address/zip&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/address/country&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">required&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-and-deploy-custom-types" data-heading="Validate and deploy custom types" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="validate-and-deploy-custom-types">Validate and deploy custom types&lt;/h2>&lt;p>Before deploying your custom types to the workspace, validate them to ensure they follow the correct structure and meet your requirements.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="validate-custom-types" data-heading="Validate custom types" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h3 id="validate-custom-types">Validate custom types&lt;/h3>&lt;p>Run the following command to validate your custom type definitions:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli validate -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The command checks your custom type definitions for:&lt;/p>
&lt;ul>
&lt;li>Required fields and correct structure&lt;/li>
&lt;li>Valid custom type definitions&lt;/li>
&lt;li>Proper YAML syntax&lt;/li>
&lt;/ul>
&lt;p>If validation succeeds, the command returns no output. If it finds any issues, it displays specific error messages to help you fix them.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="deploy-custom-types" data-heading="Deploy custom types" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h3 id="deploy-custom-types">Deploy custom types&lt;/h3>&lt;p>After validating your custom types, deploy them to your RudderStack workspace:&lt;/p>
&lt;ol>
&lt;li>Review the changes before deploying:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog --dry-run
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Deploy the validated changes:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-shell" data-lang="shell">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/tutorial-catalog
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The above command:&lt;/p>
&lt;ul>
&lt;li>Creates new custom types in your workspace&lt;/li>
&lt;li>Updates existing custom types if you&amp;rsquo;ve modified them&lt;/li>
&lt;li>Reports the status of each operation&lt;/li>
&lt;li>Requires confirmation before making changes (unless you use &lt;code>--confirm=false&lt;/code>)&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/info.svg loading="lazy" alt="info" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">See the &lt;a href="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-governance-walkthrough/" >End-to-end Walkthrough&lt;/a> for steps on validating and deploying custom types along with other Data Catalog resources.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="limitations" data-heading="Limitations" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="limitations">Limitations&lt;/h2>&lt;ul>
&lt;li>Circular reference checks are not currently performed.&lt;/li>
&lt;li>When modifying a custom type that&amp;rsquo;s already in use, the changes will propagate to all properties that reference this custom type, potentially affecting validation behavior across all related properties.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="faq" data-heading="FAQ" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h2 id="faq">FAQ&lt;/h2>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-do-custom-types-differ-from-property-definitions" data-heading="How do custom types differ from property definitions?" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h4 id="how-do-custom-types-differ-from-property-definitions">How do custom types differ from property definitions?&lt;/h4>&lt;p>Custom types are reusable type definitions that can be referenced by multiple properties. They encapsulate validation rules that can be consistently applied across multiple properties.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="will-new-custom-data-types-work-with-existing-tracking-plans" data-heading="Will new custom data types work with existing Tracking Plans?" data-level="4" data-permalink="https://www.rudderstack.com/docs/archive/rudder-cli/v0.1/data-catalog-and-tracking-plans/data-catalog/custom-types/" data-title="Use Custom Data Types in Rudder CLI" -->
&lt;h4 id="will-new-custom-data-types-work-with-existing-tracking-plans">Will new custom data types work with existing Tracking Plans?&lt;/h4>&lt;p>Yes, existing Tracking Plans will continue to work without modification. Custom types are an enhancement that you can adopt gradually.&lt;/p>
&lt;br /></description></item></channel></rss>