<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RudderStack Docs – RudderStack Features</title><link>https://www.rudderstack.com/docs/categories/rudderstack-features/</link><description>Recent content in RudderStack Features on RudderStack Docs</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Wed, 05 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.rudderstack.com/docs/categories/rudderstack-features/index.xml" rel="self" type="application/rss+xml"/><item><title>Releases: TOTP-based Multi-Factor Authentication (MFA)</title><link>https://www.rudderstack.com/docs/releases/totp-mfa/</link><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/totp-mfa/</guid><description>
&lt;p>You can now secure your RudderStack account with an authenticator app. Scan a QR code with Google Authenticator, Microsoft Authenticator, 1Password, Authy, or any other authenticator app, and RudderStack asks for a six-digit code from that app when you sign in. You also get a set of single-use backup codes so you can still get in if you lose your device.&lt;/p>
&lt;p>Org Admins can go a step further and require Multi-Factor Authentication (MFA) for everyone in the organization, with a seven-day grace period so no one is locked out without warning.&lt;/p>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/security/" >Security Settings&lt;/a> guide for full details.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-authenticator-app-support" data-heading="Why authenticator app support?" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/totp-mfa/" data-title="TOTP-based Multi-Factor Authentication (MFA)" -->
&lt;h2 id="why-authenticator-app-support">Why authenticator app support?&lt;/h2>&lt;p>Until now, SMS was the only second factor available on RudderStack. That works, but it has real limits. Text messages don&amp;rsquo;t arrive reliably everywhere — international users, roaming, and patchy coverage all cause delays or failures, which turns a security feature into a login blocker. SMS is also the weakest of the common second factors, since a phone number can be hijacked through a SIM-swap attack. Many security teams now require an app-based factor and won&amp;rsquo;t accept SMS.&lt;/p>
&lt;p>Authenticator apps solve both problems. Codes are generated on your device, so nothing has to be delivered over a phone network, and there&amp;rsquo;s no phone number for an attacker to take over. It&amp;rsquo;s also what most security teams and questionnaires expect to see.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/totp-mfa/" data-title="TOTP-based Multi-Factor Authentication (MFA)" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Authenticator app (TOTP) setup&lt;/strong>: Scan a QR code — or enter the key manually — and confirm one code to turn it on. Works with any standard authenticator app.&lt;/li>
&lt;li>&lt;strong>Backup codes&lt;/strong>: You get 10 single-use codes when you set up your second factor. They&amp;rsquo;re your recovery path if you lose your phone, and you can &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/security/#regenerate-backup-codes" >regenerate them&lt;/a> if you run low.&lt;/li>
&lt;li>&lt;strong>Your codes stay protected&lt;/strong>: The secret that generates your codes is held in a dedicated, hardened secrets vault — never in the RudderStack application database.&lt;/li>
&lt;li>&lt;strong>Require MFA across your organization&lt;/strong>: Org Admins can turn on the &lt;strong>Require 2FA&lt;/strong> toggle to mandate MFA for all members. Members who don&amp;rsquo;t have it yet get a seven-day grace period and an email with their deadline.&lt;/li>
&lt;li>&lt;strong>Choose your own method&lt;/strong>: Each user picks their own second factor. If you have both an authenticator app and SMS set up, RudderStack asks for the authenticator app code first — it&amp;rsquo;s the more secure option — and doesn&amp;rsquo;t send a text unless you choose &lt;strong>Verify with SMS instead&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Audit visibility for admins&lt;/strong>: MFA setup, sign-in attempts, and backup code use are recorded in your organization&amp;rsquo;s &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/audit-logs/" >audit logs&lt;/a>, and admins can export a per-member MFA status report for security reviews and compliance evidence.&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">If your organization signs in through SSO, RudderStack defers to your identity provider — enforce MFA in Okta, Azure AD, or your IdP of choice and RudderStack honors it, so your users aren&amp;rsquo;t asked for a second code on top.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/totp-mfa/" data-title="TOTP-based Multi-Factor Authentication (MFA)" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;ol>
&lt;li>Go to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Your Profile&lt;/strong> &amp;gt; &lt;strong>Security&lt;/strong> in the RudderStack dashboard.&lt;/li>
&lt;li>Click &lt;strong>Set up&lt;/strong> next to &lt;strong>Authenticator app&lt;/strong>.&lt;/li>
&lt;li>Scan the QR code with your authenticator app, then enter the generated code and click &lt;strong>Save&lt;/strong>.&lt;/li>
&lt;li>Save the backup codes you&amp;rsquo;re shown, then click &lt;strong>I&amp;rsquo;ve saved my codes&lt;/strong>. You&amp;rsquo;ll be signed out and asked to sign in again with your new second factor.&lt;/li>
&lt;/ol>
&lt;p>Org Admins who want to require MFA for the whole organization can use the &lt;strong>Require 2FA&lt;/strong> toggle in &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/#require-2fa-toggle" >Organization settings&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="resources" data-heading="Resources" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/totp-mfa/" data-title="TOTP-based Multi-Factor Authentication (MFA)" -->
&lt;h2 id="resources">Resources&lt;/h2>&lt;p>See the following guides for detailed instructions on using this feature:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dashboard-guides/security/" >Security Settings&lt;/a>: Set up an authenticator app or SMS, and regenerate backup codes&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dashboard-guides/#require-2fa-toggle" >Require 2FA toggle&lt;/a>: Require MFA for all organization members&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dashboard-guides/audit-logs/" >Audit Logs&lt;/a>: Review MFA-related activity across your organization&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/access-management/member-management/" >Member Management&lt;/a>: Roles and permissions, including who can change organization settings&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/totp-mfa/" data-title="TOTP-based Multi-Factor Authentication (MFA)" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Security settings in the RudderStack dashboard&lt;/strong>&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/security/security-settings.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/security/security-settings.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/security/security-settings.webp"
alt="Security settings in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>&lt;strong>Setting up an authenticator app&lt;/strong>&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/security/2fa-authenticator-app-method.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/security/2fa-authenticator-app-method.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/security/2fa-authenticator-app-method.webp"
alt="Authenticator app setup"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>&lt;strong>Single-use backup codes shown after setup&lt;/strong>&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/security/2fa-backup-codes.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/security/2fa-backup-codes.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/security/2fa-backup-codes.webp"
alt="Backup codes"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: PagerDuty and incident.io Alert Channels</title><link>https://www.rudderstack.com/docs/releases/pagerduty-incidentio-alert-channels/</link><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/pagerduty-incidentio-alert-channels/</guid><description>
&lt;p>You can now deliver RudderStack&amp;rsquo;s &lt;a href="https://www.rudderstack.com/docs/monitor/alerts/" >Configurable Alerts&lt;/a> directly into &lt;strong>PagerDuty&lt;/strong> and &lt;strong>incident.io&lt;/strong> — the two tools engineering teams use to run on-call and incident response — alongside the existing Slack, Microsoft Teams, email, and webhook channels. When a pipeline breaks, the alert lands where your on-call attention already lives instead of getting buried in a channel or inbox.&lt;/p>
&lt;p>This adds two new delivery destinations for the alerts RudderStack already detects. It does not change what RudderStack monitors or how alert thresholds work — only where those alerts can be sent.&lt;/p>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>&lt;strong>Not to be confused with the PagerDuty destination&lt;/strong>&lt;/p>
&lt;p>This feature sends RudderStack&amp;rsquo;s operational health signals out to your incident tooling. It is different to the &lt;a href="https://www.rudderstack.com/docs/destinations/streaming-destinations/pagerduty/" >PagerDuty destination&lt;/a>, which sends your event data into PagerDuty.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-route-alerts-to-your-incident-tools" data-heading="Why route alerts to your incident tools?" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/pagerduty-incidentio-alert-channels/" data-title="PagerDuty and incident.io Alert Channels" -->
&lt;h2 id="why-route-alerts-to-your-incident-tools">Why route alerts to your incident tools?&lt;/h2>&lt;p>A broken pipeline is a business-critical failure, not a cosmetic one. It can silently drop or corrupt the data feeding your analytics, ML models, and downstream marketing and product decisions — and the damage is often invisible until someone notices the numbers are wrong days later.&lt;/p>
&lt;p>The problem is that a Slack message or an email is easy to miss. A page is not.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>PagerDuty&lt;/strong> guarantees the right on-call human is actually notified — loudly, via phone, SMS, or push — and auto-escalates if nobody acknowledges.&lt;/li>
&lt;li>&lt;strong>incident.io&lt;/strong> coordinates the response once people are aware, spinning up an incident channel, assigning roles, and auto-capturing a timeline that becomes the postmortem.&lt;/li>
&lt;/ul>
&lt;p>Meeting your team where its on-call attention already lives turns a RudderStack failure from a buried notification into a real page. For a platform whose promise is data reliability, that closes a direct trust gap.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="what-you-can-route" data-heading="What you can route" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/pagerduty-incidentio-alert-channels/" data-title="PagerDuty and incident.io Alert Channels" -->
&lt;h2 id="what-you-can-route">What you can route&lt;/h2>&lt;p>RudderStack&amp;rsquo;s existing alert engine already detects the failures that matter most (this set is unchanged):&lt;/p>
&lt;ul>
&lt;li>A destination starts rejecting or failing to receive events (bad credentials, downtime, network errors)&lt;/li>
&lt;li>A warehouse sync aborts, or pre-sync processing fails&lt;/li>
&lt;li>A transformation starts erroring and dropping events&lt;/li>
&lt;li>Event volume drops suspiciously versus the same hour last week&lt;/li>
&lt;li>A source violates its Tracking Plan (data arriving in the wrong shape)&lt;/li>
&lt;li>A Reverse ETL sync fails partially or fatally&lt;/li>
&lt;li>A Profiles run fails&lt;/li>
&lt;/ul>
&lt;p>Any of these can now land as a &lt;strong>PagerDuty incident&lt;/strong> (with escalation policies, on-call schedules, and phone/SMS/push paging) or as an &lt;strong>incident.io alert&lt;/strong> (which can trigger an incident channel, role assignment, and an auto-built postmortem timeline).&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/pagerduty-incidentio-alert-channels/" data-title="PagerDuty and incident.io Alert Channels" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>&lt;strong>PagerDuty routing with real paging and escalation&lt;/strong>: Route any RudderStack alert into a PagerDuty service so the right on-call engineer is paged and alerts auto-escalate if unacknowledged.&lt;/li>
&lt;li>&lt;strong>incident.io routing with response coordination&lt;/strong>: Deliver alerts into incident.io to kick off an incident channel, assign roles, and capture a timeline for the postmortem.&lt;/li>
&lt;li>&lt;strong>Setup in minutes&lt;/strong>: Configuration is minimal — for PagerDuty, create a service with an Events API v2 integration and paste the 32-character integration/routing key. For incident.io, create an HTTP alert source and paste the secret API key plus the (non-secret) alert source config ID.&lt;/li>
&lt;li>&lt;strong>The same guardrails as every channel&lt;/strong>: Only org admins can configure workspace-level channels; alerts are de-duplicated (at most one notification per resource, per alert type, per channel every 24 hours, so on-call isn&amp;rsquo;t spammed); you can&amp;rsquo;t disable your last remaining production channel, so you&amp;rsquo;re never flying blind; and a &lt;strong>test alert&lt;/strong> button confirms the wiring before you rely on it.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/pagerduty-incidentio-alert-channels/" data-title="PagerDuty and incident.io Alert Channels" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;p>PagerDuty and incident.io alert channels are available on the RudderStack &lt;a href="https://rudderstack.com/pricing" >Growth&lt;/a> and &lt;a href="https://rudderstack.com/enterprise-quote" >Enterprise&lt;/a> plans and are configured at the workspace level from your RudderStack dashboard:&lt;/p>
&lt;ol>
&lt;li>Go to &lt;strong>Data Governance&lt;/strong> &amp;gt; &lt;strong>Alerts&lt;/strong> in your RudderStack dashboard.&lt;/li>
&lt;li>Choose the &lt;strong>PagerDuty&lt;/strong> or &lt;strong>incident.io&lt;/strong> channel.&lt;/li>
&lt;li>For PagerDuty, paste your 32-character Events API v2 integration key. For incident.io, paste your HTTP alert source API key and alert source config ID.&lt;/li>
&lt;li>Click the &lt;strong>test alert&lt;/strong> button to confirm the connection, then save.&lt;/li>
&lt;/ol>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/monitor/alerts/" >Configurable Alerts&lt;/a> guide for full setup instructions for both channels.&lt;/p>
&lt;p>For vendor-side context, see PagerDuty&amp;rsquo;s own &lt;a href="https://developer.pagerduty.com/docs/events-api-v2-overview" >Events API v2&lt;/a> documentation and incident.io&amp;rsquo;s &lt;a href="https://docs.incident.io/alerts/custom-http-sources#custom-http-alert-sources" >Custom HTTP alert source&lt;/a> documentation.&lt;/p></description></item><item><title>Releases: Rudder CLI</title><link>https://www.rudderstack.com/docs/releases/rudder-cli/</link><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/rudder-cli/</guid><description>
&lt;p>&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/" >Rudder CLI&lt;/a> lets you define, validate, and deploy RudderStack resources from your terminal using YAML files in Git.&lt;/p>
&lt;p>Manage &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/" >Tracking Plans and Data Catalog&lt;/a>, &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/sql-models/" >SQL models&lt;/a>, &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/event-stream-sources/" >Event Stream sources&lt;/a>, and &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/manage-transformations/" >Transformations&lt;/a> with the same review and version-control workflows you use for application code.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-cli/" data-title="Rudder CLI" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Resources as code&lt;/strong>: Define events, properties, tracking plan rules, SQL models, sources, and transformations in YAML.&lt;/li>
&lt;li>&lt;strong>Validate before deploy&lt;/strong>: Check YAML configurations, SQL syntax, and transformation logic locally before pushing to production.&lt;/li>
&lt;li>&lt;strong>Bi-directional sync&lt;/strong>: Create resources from the CLI or import existing workspace assets into Git.&lt;/li>
&lt;li>&lt;strong>CI/CD ready&lt;/strong>: Integrate validation and deployment with &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/" >GitHub Actions&lt;/a>.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-cli/" data-title="Rudder CLI" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;ol>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/installation/" >Install Rudder CLI&lt;/a> and &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/#authenticate-the-cli" >authenticate&lt;/a> with a workspace access token.&lt;/li>
&lt;li>Choose a workflow for &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/" >Tracking Plans&lt;/a>, &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/sql-models/" >SQL models&lt;/a>, &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/event-stream-sources/" >Event Stream sources&lt;/a>, or &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/manage-transformations/" >Transformations&lt;/a>.&lt;/li>
&lt;li>Validate locally, then apply changes to your workspace.&lt;/li>
&lt;/ol>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="resources" data-heading="Resources" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-cli/" data-title="Rudder CLI" -->
&lt;h2 id="resources">Resources&lt;/h2>&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/" >Rudder CLI Overview&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/commands/" >CLI Commands Reference&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/project-setup/" >Project Setup&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Releases: RudderStack Assistant</title><link>https://www.rudderstack.com/docs/releases/rudderstack-tracking-assistant/</link><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/rudderstack-tracking-assistant/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/voQzygxl2eU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br/>&lt;/p>
&lt;p>We are excited to announce the &lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/events-tracking-assistant/" >RudderStack Assistant&lt;/a>, a browser extension for Chrome and Firefox that transforms how you debug and validate your JavaScript SDK implementation. It provides instant visibility into your RudderStack setup directly in your browser.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-rudderstack-assistant" data-heading="Why RudderStack Assistant?" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudderstack-tracking-assistant/" data-title="RudderStack Assistant" -->
&lt;h2 id="why-rudderstack-assistant">Why RudderStack Assistant?&lt;/h2>&lt;p>Debugging SDK implementations has traditionally required waiting 1-5 minutes for events to appear in the dashboard, piecing together information from browser&amp;rsquo;s developer tools, or filing support tickets for complex issues. The RudderStack Assistant eliminates these friction points by providing real-time feedback in under one second.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudderstack-tracking-assistant/" data-title="RudderStack Assistant" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Real-time event monitoring&lt;/strong>: See events the moment they fire with full payload inspection, filtering by event type, and visual status indicators.&lt;/li>
&lt;li>&lt;strong>SDK health dashboard&lt;/strong>: Instantly view SDK version, write key, data plane URL, installation type (CDN vs NPM), and CSP compatibility.&lt;/li>
&lt;li>&lt;strong>Destination and plugin visibility&lt;/strong>: Monitor device-mode destination status and debug configuration issues without leaving your browser.&lt;/li>
&lt;li>&lt;strong>SDK injection&lt;/strong>: Test RudderStack JavaScript SDK on any website without code changes — ideal for evaluation, prototyping, and demos.&lt;/li>
&lt;li>&lt;strong>One-click debug export&lt;/strong>: Export comprehensive debug data including SDK state, events, and logs to streamline support communication.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="installation" data-heading="Installation" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudderstack-tracking-assistant/" data-title="RudderStack Assistant" -->
&lt;h2 id="installation">Installation&lt;/h2>&lt;ul>
&lt;li>&lt;a href="https://chromewebstore.google.com/detail/rudderstack-assistant/mldkpbdooncodocccgjjkjojkneohnif?pli=1" >Chrome Web Store&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://addons.mozilla.org/en-GB/firefox/addon/rudderstack-assistant/" >Firefox Add-ons&lt;/a>&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">All data processing occurs locally in your browser. The extension does not transmit captured events or SDK information to external servers.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudderstack-tracking-assistant/" data-title="RudderStack Assistant" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;ol>
&lt;li>Install the extension from the &lt;a href="https://chromewebstore.google.com/detail/rudderstack-assistant/mldkpbdooncodocccgjjkjojkneohnif?pli=1" >Chrome Web Store&lt;/a> or &lt;a href="https://addons.mozilla.org/en-GB/firefox/addon/rudderstack-assistant/" >Firefox Add-ons&lt;/a>.&lt;/li>
&lt;li>Navigate to any website with the RudderStack JavaScript SDK installed.&lt;/li>
&lt;li>Open the extension to instantly view your SDK configuration, health status, and real-time events.&lt;/li>
&lt;li>Use the &lt;strong>Events&lt;/strong> tab to monitor event payloads as they fire, or the &lt;strong>Overview&lt;/strong> tab to inspect destinations and plugins.&lt;/li>
&lt;li>Export debug data with one click to share with your team or RudderStack support.&lt;/li>
&lt;/ol>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="resources" data-heading="Resources" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudderstack-tracking-assistant/" data-title="RudderStack Assistant" -->
&lt;h2 id="resources">Resources&lt;/h2>&lt;p>See the following guides for detailed instructions on using the extension:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/events-tracking-assistant/" >RudderStack Assistant&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/events-tracking-assistant/quickstart/" >Quickstart Guide&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/events-tracking-assistant/interface-reference/" >Interface Reference&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/events-tracking-assistant/troubleshooting/" >Troubleshooting Guide&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Releases: RudderTyper 2.0</title><link>https://www.rudderstack.com/docs/releases/ruddertyper-v2/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/ruddertyper-v2/</guid><description>
&lt;blockquote class="announcement">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 640 640" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M544 96C526.3 96 512 110.3 512 128L512 137.1L126.8 247.2C123 233.8 110.6 224 96 224C78.3 224 64 238.3 64 256L64 384C64 401.7 78.3 416 96 416C110.6 416 123 406.2 126.8 392.8L198.5 413.3C194.3 424.1 192 435.8 192 448C192 501 235 544 288 544C334.9 544 374 510.3 382.3 465.8L512 502.8L512 511.9C512 529.6 526.3 543.9 544 543.9C561.7 543.9 576 529.6 576 511.9L576 127.9C576 110.2 561.7 95.9 544 95.9zM335.8 452.5C333.5 476.9 313 496 288 496C261.5 496 240 474.5 240 448C240 440.3 241.8 433 245 426.6L335.8 452.5z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">This feature is in &lt;strong>Public Beta&lt;/strong> as part of RudderStack&amp;rsquo;s Early Access Program, where we work with early users and customers to test new features and get feedback before making them generally available.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>We are introducing &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/ruddertyper-v2/" >RudderTyper 2.0&lt;/a>, which generates type-safe client bindings from your &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking Plans&lt;/a> for modern SDK languages —&lt;strong>TypeScript&lt;/strong>, &lt;strong>Swift&lt;/strong>, and &lt;strong>Kotlin&lt;/strong>. By generating native code that matches your Tracking Plan&amp;rsquo;s event definitions, you can catch instrumentation errors at compile time rather than runtime, with full IntelliSense support in your IDE.&lt;/p>
&lt;p>RudderTyper 2.0 is packaged into &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/" >Rudder CLI&lt;/a>, which already works with the &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking Plans&lt;/a> and &lt;a href="https://www.rudderstack.com/docs/api/data-catalog-api/" >Data Catalog&lt;/a> you maintain as code in your Git repositories. This lets you generate and update your typed bindings as part of the same workflow you already use to manage your tracking plans, keeping your instrumentation in sync with your governance definitions.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="whats-new" data-heading="What&amp;rsquo;s new" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/ruddertyper-v2/" data-title="RudderTyper 2.0" -->
&lt;h2 id="whats-new">What&amp;rsquo;s new&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Modern SDK language support&lt;/strong>: Generate strongly-typed bindings for TypeScript, Swift (iOS), and Kotlin (Android and JVM) that match your Tracking Plan&amp;rsquo;s event structure.&lt;/li>
&lt;li>&lt;strong>Compile-time type safety&lt;/strong>: Validation ensures your tracking code matches your Tracking Plan definitions before your application ships, with autocomplete and type checking in your IDE.&lt;/li>
&lt;li>&lt;strong>Packaged into Rudder CLI&lt;/strong>: Generate bindings directly from your Tracking Plans using the same CLI that manages your Data Catalog as code.&lt;/li>
&lt;li>&lt;strong>Git-native workflow&lt;/strong>: Works with the Tracking Plans and Data Catalog you already maintain as code in your repositories, so generated bindings stay version-controlled alongside the rest of your instrumentation.&lt;/li>
&lt;li>&lt;strong>Standard event coverage&lt;/strong>: Supports all standard RudderStack event types—&lt;code>track&lt;/code>, &lt;code>identify&lt;/code>, &lt;code>screen&lt;/code>, and &lt;code>group&lt;/code>.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/ruddertyper-v2/" data-title="RudderTyper 2.0" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Guide&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;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/ruddertyper-v2/" >RudderTyper v2&lt;/a>&lt;/td>
&lt;td style="text-align:left">Overview of RudderTyper 2.0, its features, and limitations&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/ruddertyper-v2-walkthrough/" >RudderTyper v2 Walkthrough Guide&lt;/a>&lt;/td>
&lt;td style="text-align:left">Step-by-step tutorial to generate and use type-safe bindings in your application&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/ruddertyper-v2-command-reference/" >RudderTyper v2 Command Reference&lt;/a>&lt;/td>
&lt;td style="text-align:left">Complete reference for RudderTyper v2 CLI commands and parameters&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;br /></description></item><item><title>Releases: Rudder AI</title><link>https://www.rudderstack.com/docs/releases/rudder-ai/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/rudder-ai/</guid><description>
&lt;p>&lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/" >Rudder AI&lt;/a> is now generally available — an AI agent that helps you monitor, debug, and interact with your RudderStack workspace from Slack using natural language.&lt;/p>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M8 16C12.4062 16 16 12.4375 16 8C16 3.59375 12.4062 0 8 0C3.5625 0 0 3.59375 0 8C0 12.4375 3.5625 16 8 16ZM11.5312 6.53125L7.53125 10.5312C7.21875 10.8438 6.75 10.8438 6.46875 10.5312L4.46875 8.53125C4.15625 8.25 4.15625 7.78125 4.46875 7.5C4.75 7.1875 5.21875 7.1875 5.53125 7.5L7 8.96875L10.4688 5.46875C10.75 5.1875 11.2188 5.1875 11.5 5.46875C11.8125 5.78125 11.8125 6.25 11.5 6.53125H11.5312Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">
Rudder AI operates with &lt;strong>read-only&lt;/strong> workspace access and automatically masks customer PII before data reaches the AI — your team gets faster answers without exposing sensitive values.
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/" >Rudder AI Overview&lt;/a> for full details.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-rudder-ai" data-heading="Why Rudder AI?" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-ai/" data-title="Rudder AI" -->
&lt;h2 id="why-rudder-ai">Why Rudder AI?&lt;/h2>&lt;p>When something breaks in your pipeline, finding the answer often means clicking through the dashboard, pulling event samples, and cross-checking destination metrics — while the incident is still open. Rudder AI meets your team in Slack and turns those investigations into natural language questions.&lt;/p>
&lt;p>You can check event volumes, analyze delivery failures, review tracking plan compliance, inspect transformations, and get product documentation answers without leaving the channel. Because Rudder AI is read-only, it supports investigation and monitoring without changing sources, destinations, or other workspace configuration.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-ai/" data-title="Rudder AI" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Monitor pipeline health&lt;/strong>: Check event volumes, success rates, and delivery metrics across sources and destinations.&lt;/li>
&lt;li>&lt;strong>Debug issues faster&lt;/strong>: Analyze failed events and transformation errors with masked PII protection.&lt;/li>
&lt;li>&lt;strong>Access configuration&lt;/strong>: View sources, destinations, transformations, and Tracking Plans in your production workspace.&lt;/li>
&lt;li>&lt;strong>Query documentation&lt;/strong>: Get AI-powered answers to RudderStack product questions grounded in the docs.&lt;/li>
&lt;li>&lt;strong>Slack-native workflow&lt;/strong>: Use Rudder AI in your designated shared Slack channel — responses are visible to the channel, and the assistant does not run in direct messages or other channels.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-ai/" data-title="Rudder AI" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;ol>
&lt;li>&lt;strong>Enable access&lt;/strong>: Contact your RudderStack representative to enable Rudder AI for your workspace.&lt;/li>
&lt;li>&lt;strong>Open your designated Slack channel&lt;/strong>: Rudder AI responds only in the shared channel configured for your workspace — not in DMs or other channels.&lt;/li>
&lt;li>&lt;strong>Ask questions in natural language&lt;/strong>: Start with monitoring or debugging prompts, for example event volume by source, destinations with delivery failures, or recent configuration changes.&lt;/li>
&lt;li>&lt;strong>Provide feedback&lt;/strong>: Use 👍 or 👎 on responses to help improve the assistant.&lt;/li>
&lt;/ol>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/capabilities/" >Rudder AI Key Capabilities&lt;/a> for example questions by use case.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="data-privacy-and-security" data-heading="Data privacy and security" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-ai/" data-title="Rudder AI" -->
&lt;h2 id="data-privacy-and-security">Data privacy and security&lt;/h2>&lt;ul>
&lt;li>Rudder AI uses &lt;a href="https://aws.amazon.com/bedrock/" >Amazon Bedrock&lt;/a> for AI processing. Your data is never used to train AI models, and conversations are not stored.&lt;/li>
&lt;li>Customer PII is automatically masked before reaching the AI. The masking preserves data structure for debugging while protecting actual values.&lt;/li>
&lt;/ul>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/security/" >Rudder AII Security and Compliance&lt;/a> for access controls, workspace isolation, and revocation details.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="resources" data-heading="Resources" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/rudder-ai/" data-title="Rudder AI" -->
&lt;h2 id="resources">Resources&lt;/h2>&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/" >Rudder AI Overview&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/capabilities/" >Rudder AI Key Capabilities&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/security/" >Rudder AI Security and Compliance&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/best-practices/" >Rudder AI Best Practices&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/ai-features/rudder-ai/faq/" >Rudder AI FAQ&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Releases: Stream Events to Snowflake Iceberg Tables</title><link>https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/yhcNAI6kufk" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>RudderStack&amp;rsquo;s Snowflake Streaming destination now supports &lt;strong>Snowflake-managed Apache Iceberg tables&lt;/strong>. When enabled, your event data streams in real-time into your own cloud storage — S3, GCS, or Azure — in the Iceberg table format.&lt;/p>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M8 16C12.4062 16 16 12.4375 16 8C16 3.59375 12.4062 0 8 0C3.5625 0 0 3.59375 0 8C0 12.4375 3.5625 16 8 16ZM11.5312 6.53125L7.53125 10.5312C7.21875 10.8438 6.75 10.8438 6.46875 10.5312L4.46875 8.53125C4.15625 8.25 4.15625 7.78125 4.46875 7.5C4.75 7.1875 5.21875 7.1875 5.53125 7.5L7 8.96875L10.4688 5.46875C10.75 5.1875 11.2188 5.1875 11.5 5.46875C11.8125 5.78125 11.8125 6.25 11.5 6.53125H11.5312Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">
Snowflake manages the Iceberg metadata catalog and you get the speed of Snowpipe Streaming with the openness and portability of the lakehouse.
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/iceberg-tables/" >Snowflake Streaming to Iceberg Tables&lt;/a> documentation for full details.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-iceberg-tables" data-heading="Why Iceberg tables?" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/" data-title="Stream Events to Snowflake Iceberg Tables" -->
&lt;h2 id="why-iceberg-tables">Why Iceberg tables?&lt;/h2>&lt;p>Organizations adopting lakehouse architecture want the best of both worlds: the performance and governance of Snowflake with the openness and flexibility of storing data in their own cloud storage. Until now, Snowpipe Streaming wrote exclusively to standard Snowflake tables locked in proprietary storage — forcing a choice between real-time delivery and data portability.&lt;/p>
&lt;p>That trade-off disappears with Iceberg table support. Your event data lands in open Parquet format on storage you control, accessible by any engine that reads Iceberg — Spark, Trino, Databricks, Athena — while Snowflake continues to serve as the primary query engine and catalog. You reduce vendor lock-in, gain multi-engine access, and maintain full storage lifecycle control, all without sacrificing delivery speed.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/" data-title="Stream Events to Snowflake Iceberg Tables" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Near real-time streaming to Iceberg&lt;/strong>: Events are delivered via Snowpipe Streaming with ~30 second latency directly into Snowflake-managed Iceberg tables — the same low-latency pipeline, now writing to open storage.&lt;/li>
&lt;li>&lt;strong>Open Parquet storage on your cloud&lt;/strong>: Data is stored as Parquet files in your external volume (S3, GCS, or Azure). Query it from Snowflake, Spark, Trino, Databricks, Athena, or any Iceberg-compatible engine.&lt;/li>
&lt;li>&lt;strong>Automatic table creation&lt;/strong>: RudderStack automatically creates Iceberg tables with the correct catalog, external volume, and base location configuration. No manual DDL required.&lt;/li>
&lt;li>&lt;strong>Automatic schema evolution&lt;/strong>: New event properties are detected and columns are added automatically — your Iceberg tables stay in sync with your event schemas as they evolve.&lt;/li>
&lt;li>&lt;strong>Automatic compaction&lt;/strong>: Snowflake handles compaction of the underlying Parquet files, keeping query performance optimized without manual maintenance.&lt;/li>
&lt;li>&lt;strong>All standard event types supported&lt;/strong>: Track, identify, page, screen, group, and alias events all stream to Iceberg tables.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/" data-title="Stream Events to Snowflake Iceberg Tables" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;ol>
&lt;li>&lt;strong>Ensure prerequisites are in place&lt;/strong>: You need a Snowflake account with Iceberg table support and an external volume configured in Snowflake pointing to your cloud storage (S3, GCS, or Azure).&lt;/li>
&lt;li>&lt;strong>Set up RSA key-pair authentication&lt;/strong>: Iceberg table support requires key-pair authentication. Password authentication is not supported for this feature.&lt;/li>
&lt;li>&lt;strong>Enable Iceberg in your Snowflake Streaming destination&lt;/strong>: Toggle on the &lt;strong>Create Iceberg Tables&lt;/strong> setting in your Snowflake destination configuration.&lt;/li>
&lt;li>&lt;strong>Specify the external volume name&lt;/strong>: Specify the name of the external volume you created by following the steps &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/iceberg-tables/configuration/#1-create-an-external-volume-for-iceberg-data" >here&lt;/a>&lt;/li>
&lt;li>&lt;strong>Start sending events&lt;/strong>: RudderStack handles Iceberg table creation, schema evolution, and compaction automatically.&lt;/li>
&lt;/ol>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/iceberg-tables/configuration/" >How to Configure Snowflake Streaming to Iceberg Tables&lt;/a> guide for detailed setup instructions.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-it-works" data-heading="How it works" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/" data-title="Stream Events to Snowflake Iceberg Tables" -->
&lt;h2 id="how-it-works">How it works&lt;/h2>&lt;p>When you enable Iceberg in your Snowflake Streaming destination, RudderStack:&lt;/p>
&lt;ul>
&lt;li>Sends events to Snowflake via the &lt;strong>Snowpipe Streaming API&lt;/strong>&lt;/li>
&lt;li>Lets Snowflake handle buffering and flushing rows to Parquet files&lt;/li>
&lt;li>Relies on Snowflake to manage the Iceberg metadata and catalog&lt;/li>
&lt;/ul>
&lt;p>The following diagram illustrates the high-level data flow:&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/warehouse-destinations/streaming-iceberg-workflow.webp" href="https://www.rudderstack.com/docs/docs/images/warehouse-destinations/streaming-iceberg-workflow.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/warehouse-destinations/streaming-iceberg-workflow.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="known-limitations" data-heading="Known limitations" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/" data-title="Stream Events to Snowflake Iceberg Tables" -->
&lt;h2 id="known-limitations">Known limitations&lt;/h2>&lt;ul>
&lt;li>&lt;strong>JSON fields stored as VARCHAR&lt;/strong>: Snowflake does not yet support the &lt;code>VARIANT&lt;/code> data type for Iceberg tables. JSON data is stored as &lt;code>VARCHAR&lt;/code> until Snowflake V3 adds &lt;code>VARIANT&lt;/code> support.&lt;/li>
&lt;li>&lt;strong>No USERS table&lt;/strong>: Streaming mode is append-only and does not support &lt;code>MERGE&lt;/code> operations, so the consolidated &lt;code>USERS&lt;/code> table is not available.&lt;/li>
&lt;li>&lt;strong>~30 second minimum latency&lt;/strong>: This is a Snowflake-imposed constraint for Iceberg table writes.&lt;/li>
&lt;li>&lt;strong>TIMESTAMP_NTZ(6) instead of TIMESTAMP_TZ&lt;/strong>: Timestamps do not include timezone information in Iceberg mode.&lt;/li>
&lt;li>&lt;strong>Immutable Iceberg settings&lt;/strong>: External volume and Iceberg configuration cannot be changed after table creation.&lt;/li>
&lt;li>&lt;strong>Key-pair authentication required&lt;/strong>: Password-based authentication is not supported.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="resources" data-heading="Resources" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/" data-title="Stream Events to Snowflake Iceberg Tables" -->
&lt;h2 id="resources">Resources&lt;/h2>&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/" >Snowflake Streaming destination documentation&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/iceberg-tables/configuration/" >How to Configure Snowflake Streaming to Iceberg Tables&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/iceberg-tables/migration-from-standard-streaming/" >How to Migrate from Standard Snowflake Streaming to Iceberg&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/iceberg-tables/reference/" >Snowflake Streaming to Iceberg Tables Reference&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/iceberg-tables/faq/" >Snowflake Streaming to Iceberg Tables FAQ&lt;/a>&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/stream-events-to-snowflake-iceberg-tables/" data-title="Stream Events to Snowflake Iceberg Tables" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/snowflake-streaming/iceberg-setting.webp" href="https://www.rudderstack.com/docs/docs/images/releases/snowflake-streaming/iceberg-setting.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/snowflake-streaming/iceberg-setting.webp"
alt="Toggle on Create Iceberg Tables in the RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: P95 Latency Alerts for Event Stream Destinations: General Availability</title><link>https://www.rudderstack.com/docs/releases/p95-latency/</link><pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/p95-latency/</guid><description>
&lt;p>&lt;a href="https://www.rudderstack.com/docs/monitor/alerts/#p95-latency-alerts" >P95 latency alerts&lt;/a> for Event Stream cloud destinations are now &lt;strong>Generally Available&lt;/strong> for all &lt;a href="https://www.rudderstack.com/enterprise-quote/" >Enterprise&lt;/a> customers.&lt;/p>
&lt;p>You can now configure P95 latency thresholds for your Event Stream cloud destinations and receive alerts whenever event delivery slows beyond acceptable limits. For example, if you set a P95 latency threshold of 15 minutes and 95% of events aren&amp;rsquo;t delivered within that window, RudderStack triggers an alert on your configured &lt;a href="https://www.rudderstack.com/docs/monitor/alerts/#set-up-alert-delivery-channels" >delivery channels&lt;/a> — Slack, email, Microsoft Teams, or a custom webhook.&lt;/p>
&lt;p>This helps you catch delivery delays early, troubleshoot proactively, and keep stakeholders informed before issues escalate.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="whats-new" data-heading="What&amp;rsquo;s new" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/p95-latency/" data-title="P95 Latency Alerts for Event Stream Destinations: General Availability" -->
&lt;h2 id="whats-new">What&amp;rsquo;s new&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Generally available&lt;/strong>: P95 latency alerts are no longer in beta. They are fully supported and available for all &lt;a href="https://www.rudderstack.com/enterprise-quote/" >Enterprise&lt;/a> customers.&lt;/li>
&lt;li>&lt;strong>Expanded access&lt;/strong>: Previously, only &lt;a href="https://www.rudderstack.com/docs/access-management/member-management/#member-roles" >Admins&lt;/a> could view the &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/event-metrics/#p95-latency" >P95 latency metric&lt;/a>. Now, any user subscribed to P95 latency alerts for a destination can also view its latency metrics directly in the &lt;strong>Events&lt;/strong> tab.&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>P95 latency alerts apply only to &lt;a href="https://www.rudderstack.com/docs/destinations/streaming-destinations/" >Event Stream destinations&lt;/a> connected to sources in &lt;a href="https://www.rudderstack.com/docs/destinations/rudderstack-connection-modes/#cloud-mode" >cloud mode&lt;/a>.&lt;/p>
&lt;p>They do not apply to &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/" >Reverse ETL connections&lt;/a>, &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/" >warehouse destinations&lt;/a>, and device mode connections.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>See the following guides for more details:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/monitor/alerts/#p95-latency-alerts" >Set up P95 latency alerts&lt;/a>: Configure alert thresholds for your destinations&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dashboard-guides/event-metrics/#p95-latency" >View the P95 latency event metric&lt;/a>: View and interpret the P95 latency metric for your destination&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/p95-latency/" data-title="P95 Latency Alerts for Event Stream Destinations: General Availability" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>&lt;ul>
&lt;li>Configure P95 latency alerts in the RudderStack dashboard:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/configurable-alerts/alerts-tab.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/alerts-tab.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/alerts-tab.webp"
alt="Alerts option in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>View the P95 latency metric for a destination:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/configurable-alerts/p95-latency-events.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/p95-latency-events.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/p95-latency-events.webp"
alt="P95 latency for destination"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>View the P95 latency for events coming from a particular source:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/configurable-alerts/filter-source-latency.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/filter-source-latency.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/filter-source-latency.webp"
alt="View source-specific P95 latency"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Bot Management</title><link>https://www.rudderstack.com/docs/releases/bot-management/</link><pubDate>Mon, 23 Feb 2026 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/bot-management/</guid><description>
&lt;p>We are excited to announce &lt;a href="https://www.rudderstack.com/docs/data-governance/bot-management/" >Bot Management&lt;/a>, a data governance feature that detects, flags, and drops bot traffic on web sources before it enters your data pipelines. By identifying and managing bot events early in your data flow, you can significantly improve data quality and reduce unnecessary costs.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-bot-management" data-heading="Why Bot Management?" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/bot-management/" data-title="Bot Management" -->
&lt;h2 id="why-bot-management">Why Bot Management?&lt;/h2>&lt;p>Managing bot traffic has traditionally required implementing custom detection logic in downstream systems, leading to inconsistent bot detection across your analytics stack and inflated costs from processing non-human events. Bot Management eliminates these challenges by providing a centralized, reliable filtering layer that standardizes bot detection across your web sources.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/bot-management/" data-title="Bot Management" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>&lt;strong>User agent-based detection&lt;/strong>: Automatically identifies bot events using predefined bot patterns to detect common bots, crawlers, and automated traffic.&lt;/li>
&lt;li>&lt;strong>Flexible event management&lt;/strong>: Choose to flag bot events for downstream analysis or drop them entirely at the gateway to prevent unnecessary processing costs.&lt;/li>
&lt;li>&lt;strong>Workspace and source-level configuration&lt;/strong>: Set global bot management settings for all web sources or apply custom configurations for individual sources based on your specific requirements.&lt;/li>
&lt;li>&lt;strong>Real-time bot metrics&lt;/strong>: Monitor bot event volume patterns at the source level through the source Events view. For more details, see &lt;a href="https://www.rudderstack.com/docs/data-governance/bot-management/#view-bot-event-metrics" >View Bot Event Metrics&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Cost optimization&lt;/strong>: Drop bot events at the gateway to reduce billable event volume and prevent unnecessary costs across pipelines, data stores, and analytics tools.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/bot-management/" data-title="Bot Management" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;p>Bot Management is available in all RudderStack &lt;a href="https://www.rudderstack.com/pricing/" >paid plans&lt;/a>. You can get started with just a couple of clicks — navigate to &lt;strong>Govern&lt;/strong> &amp;gt; &lt;strong>Bot Management&lt;/strong> in your RudderStack dashboard and enable bot detection for your workspace.&lt;/p>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/data-governance/bot-management/" >Bot Management documentation&lt;/a> for detailed instructions.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="resources" data-heading="Resources" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/bot-management/" data-title="Bot Management" -->
&lt;h2 id="resources">Resources&lt;/h2>&lt;p>See the following guides for detailed instructions on using this feature:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/data-governance/bot-management/" >Bot Management Overview&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/data-governance/bot-management/#how-bot-management-works" >How Bot Management Works&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/data-governance/bot-management/#configure-bot-management-settings" >Configure Bot Management Settings&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/data-governance/bot-management/#view-bot-event-metrics" >View Bot Event Metrics&lt;/a>&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/bot-management/" data-title="Bot Management" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>&lt;p>&lt;strong>Bot management view in the RudderStack dashboard&lt;/strong>&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/bot-management/bot-management-view.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/bot-management-view.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/bot-management-view.webp"
alt="Bot management setting in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>&lt;strong>Bot management global setting&lt;/strong>&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/bot-management/workspace-settings.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/workspace-settings.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/workspace-settings.webp"
alt="Bot management global setting in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>&lt;strong>Source-level bot event management&lt;/strong>&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/bot-management/source-level-settings.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/source-level-settings.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/source-level-settings.webp"
alt="Bot management source level settings in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>&lt;strong>Bot event metrics in the source page&lt;/strong>&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/bot-management/bot-events-metrics-new.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/bot-events-metrics-new.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/bot-management/bot-events-metrics-new.webp"
alt="Bot event metrics in source page"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Cloud Extract End of Support Announcement</title><link>https://www.rudderstack.com/docs/releases/etl-sunset/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/etl-sunset/</guid><description>
&lt;p>After careful consideration and a strategic evaluation of our product portfolio, RudderStack is ending support for Cloud Extract (our ETL offering).&lt;/p>
&lt;p>Here&amp;rsquo;s what you need to know:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>End-of-support date&lt;/strong>: December 1, 2025. Starting from this date, RudderStack will no longer provide support or respond to support tickets for ETL pipelines.&lt;/li>
&lt;li>&lt;strong>Pipeline shutdown date&lt;/strong>: January 10, 2026. All ETL pipelines will be turned off on this date. Users will no longer be able to activate or toggle on their pipelines.&lt;/li>
&lt;li>&lt;strong>Access until shutdown&lt;/strong>: Current RudderStack &lt;strong>Growth&lt;/strong> and &lt;strong>Enterprise&lt;/strong> customers will retain access to Cloud Extract pipelines until January 10, 2026.&lt;/li>
&lt;/ul>
&lt;p>For account-specific details or assistance with transition planning, contact &lt;a href="mailto:support@rudderstack.com" >RudderStack Support&lt;/a> for the specifics.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-rudderstack-is-sunsetting-cloud-extract" data-heading="Why RudderStack is sunsetting Cloud Extract" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/etl-sunset/" data-title="Cloud Extract End of Support Announcement" -->
&lt;h2 id="why-rudderstack-is-sunsetting-cloud-extract">Why RudderStack is sunsetting Cloud Extract&lt;/h2>&lt;p>RudderStack’s core competencies include &lt;strong>event collection&lt;/strong> (Event Stream), &lt;strong>governance&lt;/strong> (Data Quality and Data Compliance Toolkits), &lt;strong>unification&lt;/strong> (Profiles), and &lt;strong>activation&lt;/strong> (Reverse ETL &amp;amp; Real-time integration).&lt;/p>
&lt;p>By focusing on these areas, we are better positioned to continue to innovate and provide the best possible solutions for your data needs.&lt;/p>
&lt;p>&lt;a href="mailto:support@rudderstack.com" >Reach out to us&lt;/a> for any queries.&lt;/p>
&lt;br /></description></item><item><title>Releases: Snowflake Streaming Assisted Migration Feature</title><link>https://www.rudderstack.com/docs/releases/snowflake-streaming-assisted-migration/</link><pubDate>Tue, 28 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/snowflake-streaming-assisted-migration/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/TV3pVpjDogE" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br/>&lt;/p>
&lt;p>Migrating from RudderStack&amp;rsquo;s traditional &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake/" >Snowflake batch destination&lt;/a> to the new &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/" >Snowflake Streaming destination&lt;/a> unlocks real-time data ingestion using Snowflake&amp;rsquo;s Snowpipe Streaming API. However, manually managing this migration — including creating new destinations, reconnecting sources, and coordinating the cutover — can be complex and risky.&lt;/p>
&lt;p>With the assisted migration feature, you can now migrate your existing Snowflake pipelines with a guided workflow that handles all the heavy lifting for you. This feature automatically creates and configures your new Snowflake Streaming destination, manages the transition between pipelines, and minimizes duplicate records during the migration process.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-capabilities" data-heading="Key capabilities" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/snowflake-streaming-assisted-migration/" data-title="Snowflake Streaming Assisted Migration Feature" -->
&lt;h2 id="key-capabilities">Key capabilities&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Automated destination setup&lt;/strong>: RudderStack creates a new Snowflake Streaming destination using your existing batch destination credentials and configuration, preserving your schema and table mappings.&lt;/li>
&lt;li>&lt;strong>Guided verification&lt;/strong>: A step-by-step workflow prompts you to verify that events flow correctly through the new Snowflake Streaming pipeline before completing the migration.&lt;/li>
&lt;li>&lt;strong>Automatic pipeline coordination&lt;/strong>: The Snowflake batch destination is automatically paused during migration to minimize duplicate records while both pipelines are active.&lt;/li>
&lt;li>&lt;strong>Final sync trigger&lt;/strong>: You can trigger a final sync from the batch destination to ensure any events collected during the pause are loaded to your warehouse.&lt;/li>
&lt;li>&lt;strong>Rollback capability&lt;/strong>: If any errors occur during setup, you can roll back to your previous state &lt;strong>without any data loss&lt;/strong>.&lt;/li>
&lt;li>&lt;strong>Deduplication guidance&lt;/strong>: Receive migration timestamps and documentation to help you deduplicate any records that may have been ingested during the transition.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="why-migrate-to-snowflake-streaming" data-heading="Why migrate to Snowflake Streaming?" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/snowflake-streaming-assisted-migration/" data-title="Snowflake Streaming Assisted Migration Feature" -->
&lt;h3 id="why-migrate-to-snowflake-streaming">Why migrate to Snowflake Streaming?&lt;/h3>&lt;p>The Snowflake Streaming destination delivers event data to Snowflake in seconds via continuous micro-batches, enabling real-time analytics, alerting, A/B testing, and fresher data for personalization and AI/ML use cases. Because it uses the Snowpipe Streaming API instead of warehouse compute, it maintains the same or lower cost compared to the batch integration while dramatically reducing latency.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/snowflake-streaming-assisted-migration/" data-title="Snowflake Streaming Assisted Migration Feature" -->
&lt;h3 id="get-started">Get started&lt;/h3>&lt;ol>
&lt;li>Go to your existing Snowflake batch destination in the RudderStack dashboard.&lt;/li>
&lt;li>Look for the &lt;strong>Migrate to Snowflake Streaming&lt;/strong> banner.&lt;/li>
&lt;li>Click &lt;strong>Proceed&lt;/strong> to initiate the assisted migration process.&lt;/li>
&lt;/ol>
&lt;p>Follow the guided steps to verify your new Snowflake Streaming destination and complete the migration. If needed, reference the provided timestamps to deduplicate records in your target tables.&lt;/p>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/snowflake-streaming/migration-guide/" >Snowflake Streaming Migration Guide&lt;/a> for more information on manual migration options and deduplication queries.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/snowflake-streaming-assisted-migration/" data-title="Snowflake Streaming Assisted Migration Feature" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/snowflake-streaming-migration/migration-banner.webp" href="https://www.rudderstack.com/docs/docs/images/releases/snowflake-streaming-migration/migration-banner.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/snowflake-streaming-migration/migration-banner.webp"
alt="Proceed button in migration banner"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Conditional Validation Support in Rudder CLI</title><link>https://www.rudderstack.com/docs/releases/condtional-validation/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/condtional-validation/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/bwxpUz9Q4r8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br/>&lt;/p>
&lt;p>RudderStack&amp;rsquo;s &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking Plans&lt;/a> enable data teams to apply type-safe governance to event schemas. While our governance features ensure consistency and predictability, real-world applications often require schemas to adapt based on business context.&lt;/p>
&lt;p>With the release of &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/conditional-validation/" >Conditional Validation&lt;/a>, you can now define validation rules that dynamically adjust based on discriminator properties. This powerful capability addresses a common challenge — maintaining strict data quality standards while accommodating legitimate variations in your event data structure.&lt;/p>
&lt;p>With conditional validation, you can:&lt;/p>
&lt;ul>
&lt;li>Define context-aware validation rules that adapt based on specific property values&lt;/li>
&lt;li>Prevent event proliferation by consolidating similar events with varied requirements&lt;/li>
&lt;li>Enforce granular validation on custom types that need to behave differently in different scenarios&lt;/li>
&lt;li>Maintain data quality without sacrificing flexibility for legitimate business variations&lt;/li>
&lt;/ul>
&lt;p>You can leverage conditional validation both on the event schema level and within custom types, and manage everything via &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/" >workspace configuration files&lt;/a> using &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/" >Rudder CLI&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="use-cases" data-heading="Use cases" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h2 id="use-cases">Use cases&lt;/h2>&lt;p>This section provides some examples of using the conditional validation feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="event-level-conditional-validation" data-heading="Event-level conditional validation" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h3 id="event-level-conditional-validation">Event-level conditional validation&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Adaptive page tracking&lt;/strong>: Single &lt;code>Page Viewed&lt;/code> event with different required properties based on page type — for example, search term for search pages, product details for product pages, checkout step for checkout pages&lt;/li>
&lt;li>&lt;strong>Context-aware form submissions&lt;/strong>: Different required fields based on form type or user journey stage&lt;/li>
&lt;li>&lt;strong>Dynamic feature usage tracking&lt;/strong>: Varying property requirements based on feature context or user role&lt;/li>
&lt;/ul>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/conditional-validation/event-rules/" >Event Rule Variants&lt;/a> for more details on creating and managing event rule variants in your Tracking Plans using Rudder CLI.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="custom-type-conditional-validation" data-heading="Custom type conditional validation" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h3 id="custom-type-conditional-validation">Custom type conditional validation&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Regional address formats&lt;/strong>: Different required fields for US addresses (state + ZIP) vs. UK addresses (postcode) vs. Japanese addresses (prefecture + district)&lt;/li>
&lt;li>&lt;strong>Manufacturer vs. marketplace products&lt;/strong>: Require MSRP and Manufacturer ID for direct products, and require Seller ID for marketplace items&lt;/li>
&lt;li>&lt;strong>Account tier-specific profiles&lt;/strong>: Different required profile fields for individual vs. business vs. enterprise accounts&lt;/li>
&lt;/ul>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/conditional-validation/custom-type-rules/" >Custom Type Variants&lt;/a> for more details on creating and managing custom type variants using Rudder CLI.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-it-works" data-heading="How it works" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h2 id="how-it-works">How it works&lt;/h2>&lt;p>Conditional validation uses discriminator properties to determine which validation rules apply. A discriminator is a required property whose value triggers specific validation cases.&lt;/p>
&lt;p>For example, in an ecommerce tracking scenario:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Discriminator property&lt;/strong>: &lt;code>page_type&lt;/code> (enumerated list defined in Data Catalog)&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Variant cases&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>When &lt;code>page_type&lt;/code> = &lt;code>search_page&lt;/code>: Require the &lt;code>search_term&lt;/code> property&lt;/li>
&lt;li>When &lt;code>page_type&lt;/code> = &lt;code>product&lt;/code>: Require the &lt;code>product&lt;/code> object property&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Result&lt;/strong>: Same event handles both scenarios with appropriate validation.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="implementation" data-heading="Implementation" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h2 id="implementation">Implementation&lt;/h2>&lt;p>Conditional validation works at two levels:&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="event-rule-variants" data-heading="Event rule variants" data-level="4" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h4 id="event-rule-variants">Event rule variants&lt;/h4>&lt;p>Define variants within your &lt;code>tracking-plans.yaml&lt;/code> to create context-aware event validation:&lt;/p>
&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">yaml&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&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="s2">&amp;#34;rudder/v0.1&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">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;tp&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">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="s2">&amp;#34;ecommerce_tracking_plan&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">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">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;ecommerce_tracking_plan&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">display_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Ecommerce Store - Tracking Plan&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;Comprehensive tracking plan for the casual apparel e-commerce demo site built with React TypeScript. Captures user behavior across product discovery, cart interactions, and purchase completion for analytics and optimization.&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">rules&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">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;event_rule&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="s2">&amp;#34;page_viewed_rule&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&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;#/events/ecommerce_events/page_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">allow_unplanned&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;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="c"># Base properties required for all page views&lt;/span>&lt;span class="w">
&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/ecommerce_properties/page_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">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/ecommerce_properties/page_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">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;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/ecommerce_properties/page_url&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;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="c"># Conditional Validation Variants&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">variants&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">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">discriminator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">discriminator&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/ecommerce_properties/page_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">cases&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">display_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product Detail Page&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">match&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;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">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;When user is viewing a specific product page&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">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/ecommerce_properties/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">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>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">display_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Search Results Page&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">match&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;search&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;When user is on search or category pages&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">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/ecommerce_properties/search_term&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>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default case for home and other pages (only page_url required)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">default&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/ecommerce_properties/page_url&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="l">%&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="custom-type-variants" data-heading="Custom type variants" data-level="4" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h4 id="custom-type-variants">Custom type variants&lt;/h4>&lt;p>Define variants within your &lt;code>custom-types.yaml&lt;/code> to create reusable, context-aware object types:&lt;/p>
&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">yaml&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&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="s2">&amp;#34;rudder/v0.1&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">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;custom-types&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">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="s2">&amp;#34;ecommerce_types&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">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="c"># Product Type - Consolidates all product-related properties with conditional MSRP validation&lt;/span>&lt;span class="w">
&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_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">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product_Object&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 information with conditional manufacturer pricing 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="s2">&amp;#34;object&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">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/ecommerce_properties/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">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/ecommerce_properties/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">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/ecommerce_properties/product_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">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/ecommerce_properties/product_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">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/ecommerce_properties/product_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">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/ecommerce_properties/manufacturer_pricing&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;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Conditional Validation Variants for Product 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">variants&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">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">discriminator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">discriminator&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/ecommerce_properties/manufacturer_pricing&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">cases&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">display_name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product with Manufacturer Pricing&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">match&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="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">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Products that have manufacturer suggested retail price (MSRP)&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">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/ecommerce_properties/product_msrp&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>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="deploy-the-changes-to-your-workspace" data-heading="Deploy the changes to your workspace" data-level="4" data-permalink="https://www.rudderstack.com/docs/releases/condtional-validation/" data-title="Conditional Validation Support in Rudder CLI" -->
&lt;h4 id="deploy-the-changes-to-your-workspace">Deploy the changes to your workspace&lt;/h4>&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">bash&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l ~/path_to_tracking_plan_dir&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/conditional-validation/" >Conditional Validation&lt;/a> documentation for more details.&lt;/p>
&lt;br /></description></item><item><title>Releases: Custom Types Support in Rudder CLI</title><link>https://www.rudderstack.com/docs/releases/custom-types-in-rudder-cli/</link><pubDate>Thu, 17 Jul 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/custom-types-in-rudder-cli/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/zrSLXb7r7-I" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>Building on our recent &lt;a href="https://www.rudderstack.com/docs/releases/custom-types/" >Custom Types&lt;/a> release, you can now define Custom Types directly in your workspace configuration files and deploy them using &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/" >Rudder CLI&lt;/a>. This enhancement brings Custom Types into your existing infrastructure-as-code workflows, enabling you to version control and programmatically manage complex data validation rules.&lt;/p>
&lt;p>With workspace config and CLI support, you can now:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Define Custom Types as code&lt;/strong>: Create a &lt;code>custom-types.yaml&lt;/code> file alongside your existing Tracking Plan configurations, enabling version control and collaborative development of data governance rules.&lt;/li>
&lt;li>&lt;strong>Reference Custom Types in properties&lt;/strong>: Use Custom Types as property types in your &lt;code>properties.yaml&lt;/code> files, eliminating the need to redefine complex validation logic across multiple properties.&lt;/li>
&lt;li>&lt;strong>Deploy via CLI&lt;/strong>: Use the &lt;code>rudderstack tp apply&lt;/code> command to push Custom Types and their associated properties to your workspace, integrating seamlessly with your existing deployment workflows.&lt;/li>
&lt;/ul>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M8 16C12.4062 16 16 12.4375 16 8C16 3.59375 12.4062 0 8 0C3.5625 0 0 3.59375 0 8C0 12.4375 3.5625 16 8 16ZM11.5312 6.53125L7.53125 10.5312C7.21875 10.8438 6.75 10.8438 6.46875 10.5312L4.46875 8.53125C4.15625 8.25 4.15625 7.78125 4.46875 7.5C4.75 7.1875 5.21875 7.1875 5.53125 7.5L7 8.96875L10.4688 5.46875C10.75 5.1875 11.2188 5.1875 11.5 5.46875C11.8125 5.78125 11.8125 6.25 11.5 6.53125H11.5312Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">
This release complements the existing &lt;a href="https://www.rudderstack.com/docs/api/data-catalog-api/" >Data Catalog API&lt;/a> and &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/" >Git-Based Data Catalog and Tracking Plan Management&lt;/a>, giving development teams full flexibility in how they manage data governance across their organization.
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/custom-types-in-rudder-cli/" data-title="Custom Types Support in Rudder CLI" -->
&lt;h2 id="get-started">Get started&lt;/h2>&lt;ol>
&lt;li>&lt;strong>Create a workspace config file&lt;/strong>: Add &lt;code>custom-types.yaml&lt;/code> to your Tracking Plan directory alongside your existing configuration files.&lt;/li>
&lt;li>&lt;strong>Define your Custom Types&lt;/strong>: Define your custom type rules.&lt;/li>
&lt;li>&lt;strong>Reference your Custom Types&lt;/strong>: In your &lt;code>properties.yaml&lt;/code> file, you can define a property that references your previously defined custom types.&lt;/li>
&lt;li>&lt;strong>Validate and Deploy with CLI&lt;/strong>: Use the &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/" >Rudder CLI&lt;/a> tool to validate the YAML configurations and apply changes to your workspace.&lt;/li>
&lt;/ol>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/data-catalog/custom-types/" >Use Custom Data Types in Rudder CLI&lt;/a> guide for more details on creating and managing custom types using Rudder CLI.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="sample-snippets" data-heading="Sample snippets" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/custom-types-in-rudder-cli/" data-title="Custom Types Support in Rudder CLI" -->
&lt;h2 id="sample-snippets">Sample snippets&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Defining custom types in workspace configuration files&lt;/strong>&lt;/li>
&lt;/ul>
&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">yaml&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&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="s2">&amp;#34;rudder/v0.1&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">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;custom-types&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">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="s2">&amp;#34;ecommerce_types&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">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="c"># Product Type - Consolidates all product-related 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">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Product_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">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;Product_Object&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 information including ID, SKU, name, category, pricing&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;object&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">$ref&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/properties/ecommerce_properties/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">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/ecommerce_properties/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">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/ecommerce_properties/product_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">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/ecommerce_properties/product_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">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/ecommerce_properties/product_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">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/ecommerce_properties/product_msrp&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>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;ul>
&lt;li>&lt;strong>Reference custom types within a property configuration&lt;/strong>&lt;/li>
&lt;/ul>
&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">yaml&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&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="s2">&amp;#34;rudder/v0.1&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">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;properties&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">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="s2">&amp;#34;ecommerce_properties&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">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="c"># Product Custom Type Property&lt;/span>&lt;span class="w">
&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;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">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;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">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;#/custom-types/ecommerce_types/Product_Object&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;Product information object containing all product details&amp;#34;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;ul>
&lt;li>&lt;strong>Deploy the changes to your workspace&lt;/strong>&lt;/li>
&lt;/ul>
&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">bash&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">rudder-cli apply -l&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div></description></item><item><title>Releases: Cursor Column Support for Reverse ETL Syncs</title><link>https://www.rudderstack.com/docs/releases/cursor-column-support/</link><pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/cursor-column-support/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/ioSNY5QhLqo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>Previously, RudderStack’s Reverse ETL &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#upsert-mode" >Upsert mode&lt;/a> was diff-based, meaning it compared every column and row to detect changes from your source table in order to determine what records needed to synced. This led to longer sync times and higher warehouse costs, particularly for large tables.&lt;/p>
&lt;p>With &lt;strong>Cursor Column support&lt;/strong>, you can leverage a timestamp value checkpoint for the diff. This optimizes Reverse ETL syncs by allowing you to specify a comparable timestamp column (for example, &lt;code>updated_at&lt;/code>) to track incremental changes in Upsert mode. RudderStack will then query only records with a cursor value greater than the last checkpoint, avoiding resource-intensive, full-table comparisons.&lt;/p>
&lt;p>By reducing the computational load of warehouse queries, this feature lowers operational costs and speeds up syncs, especially for large datasets.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="setup-guide" data-heading="Setup guide" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/cursor-column-support/" data-title="Cursor Column Support for Reverse ETL Syncs" -->
&lt;h2 id="setup-guide">Setup guide&lt;/h2>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 18 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M16.8125 13.0312L10.1562 1.65625C9.625 0.78125 8.34375 0.78125 7.84375 1.65625L1.15625 13.0312C0.65625 13.9062 1.28125 15 2.3125 15H15.6562C16.6875 15 17.3125 13.9062 16.8125 13.0312ZM8.25 5.25C8.25 4.84375 8.5625 4.5 9 4.5C9.40625 4.5 9.75 4.84375 9.75 5.25V9.25C9.75 9.6875 9.40625 10 9 10C8.625 10 8.25 9.6875 8.25 9.25V5.25ZM9 13C8.4375 13 8 12.5625 8 12.0312C8 11.5 8.4375 11.0625 9 11.0625C9.53125 11.0625 9.96875 11.5 9.96875 12.0312C9.96875 12.5625 9.53125 13 9 13Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">RudderStack does not support migrating existing Reverse ETL connections from upsert mode to cursor mode. You must create a new Reverse ETL connection to use the cursor column feature.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;ol>
&lt;li>Create a new destination connected to a warehouse table or SQL model as a source.&lt;/li>
&lt;li>After adding the destination credentials and mappings, choose Upsert as your sync mode.&lt;/li>
&lt;li>Turn on the &lt;strong>Cursor Column&lt;/strong> toggle.&lt;/li>
&lt;li>Choose the timestamp column you want to use as the cursor column.&lt;/li>
&lt;li>Initiate your first sync.&lt;/li>
&lt;/ol>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>RudderStack will perform a &lt;strong>full sync on the first run&lt;/strong>.&lt;/p>
&lt;p>After the first run, RudderStack will use the cursor column to identify any new or updated records that arrive in the source table and sync those records on any subsequent sync jobs.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/cursor-column-support/" >Cursor Column Support docs&lt;/a> for more information on this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/cursor-column-support/" data-title="Cursor Column Support for Reverse ETL Syncs" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/cursor-col-images/upsert-and-enable-cursor-8.png" href="https://www.rudderstack.com/docs/docs/images/releases/cursor-col-images/upsert-and-enable-cursor-8.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/cursor-col-images/upsert-and-enable-cursor-8.png"
alt="Enable the Cursor Column"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/cursor-col-images/choose-cursor-column-9.png" href="https://www.rudderstack.com/docs/docs/images/releases/cursor-col-images/choose-cursor-column-9.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/cursor-col-images/choose-cursor-column-9.png"
alt="Input Destination Configurations and Mappings"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Full Sync Mode Support</title><link>https://www.rudderstack.com/docs/releases/full-sync-mode/</link><pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/full-sync-mode/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/1goYcKo0TrY" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>We’re excited to announce &lt;strong>Full Sync mode&lt;/strong>—a new Reverse ETL sync mode that gives you more control over how data flows from your warehouse to various business tools.&lt;/p>
&lt;p>Similar to &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#upsert-mode" >Upsert&lt;/a> and &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#mirror-mode" >Mirror&lt;/a> modes, &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#full-sync-mode" >Full Sync mode&lt;/a> is configured at the connection level. It ensures that &lt;strong>the entire dataset is sent on every sync&lt;/strong>—this is ideal for teams that already handle change detection or diffs inside the warehouse.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-details" data-heading="Key details" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/full-sync-mode/" data-title="Full Sync Mode Support" -->
&lt;h2 id="key-details">Key details&lt;/h2>&lt;ul>
&lt;li>Full Sync mode is configured when creating a Reverse ETL connection.&lt;/li>
&lt;li>RudderStack will send the full model result set on each sync, overwriting or resending all records based on the destination’s behavior.&lt;/li>
&lt;/ul>
&lt;p>This mode offers maximum flexibility for advanced teams that prefer to own the sync logic in their warehouse, while still benefiting from RudderStack’s destination coverage and scheduling infrastructure.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="when-to-use-full-sync-mode" data-heading="When to use Full Sync mode" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/full-sync-mode/" data-title="Full Sync Mode Support" -->
&lt;h2 id="when-to-use-full-sync-mode">When to use Full Sync mode&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Warehouse-managed diffs&lt;/strong>: If you&amp;rsquo;re using tools like &lt;strong>dbt&lt;/strong> or scheduled jobs to determine which records to send, &lt;strong>Full Sync mode&lt;/strong> lets you send that curated dataset downstream, exactly as it appears in your warehouse.&lt;/li>
&lt;li>&lt;strong>Destinations with limited support for updates&lt;/strong>: Some tools or custom endpoints do not handle upserts or partial updates well. Full Sync mode guarantees that the complete table is refreshed every time, reducing downstream inconsistencies.&lt;/li>
&lt;/ul>
&lt;p>Learn more about the Full Sync mode in our &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-modes/#full-sync-mode" >docs&lt;/a>&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/full-sync-mode/" data-title="Full Sync Mode Support" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/full-sync-mode-release/full-sync-mode-dropdown.png" href="https://www.rudderstack.com/docs/docs/images/releases/full-sync-mode-release/full-sync-mode-dropdown.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/full-sync-mode-release/full-sync-mode-dropdown.png"
alt="Full Sync Mode option"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Tracking Plan Code Generation</title><link>https://www.rudderstack.com/docs/releases/tracking-plan-codegen/</link><pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/tracking-plan-codegen/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/znWUpVa5ab8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>Event data quality has never been more important, but even for teams that run tight processes, details can get lost in translation. Between the creation of an event schema definition and the instrumentation of the API call to fire the event from the codebase of the website or app, simple mistakes can create big problems downstream.&lt;/p>
&lt;p>RudderStack&amp;rsquo;s new &lt;strong>Code Generation (Codegen)&lt;/strong> feature automatically creates clear code snippets that software engineers can use in their instrumentation. The code snippets ensure property and trait keys are accurate, provide samples for selected data types, and clearly denote whether the key is optional.&lt;/p>
&lt;blockquote class="announcement">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 640 640" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M544 96C526.3 96 512 110.3 512 128L512 137.1L126.8 247.2C123 233.8 110.6 224 96 224C78.3 224 64 238.3 64 256L64 384C64 401.7 78.3 416 96 416C110.6 416 123 406.2 126.8 392.8L198.5 413.3C194.3 424.1 192 435.8 192 448C192 501 235 544 288 544C334.9 544 374 510.3 382.3 465.8L512 502.8L512 511.9C512 529.6 526.3 543.9 544 543.9C561.7 543.9 576 529.6 576 511.9L576 127.9C576 110.2 561.7 95.9 544 95.9zM335.8 452.5C333.5 476.9 313 496 288 496C261.5 496 240 474.5 240 448C240 440.3 241.8 433 245 426.6L335.8 452.5z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>The Codegen feature is in &lt;strong>Public Beta&lt;/strong> as part of RudderStack&amp;rsquo;s Early Access Program, where we work with early users and customers to test new features and get feedback before making them generally available.&lt;/p>
&lt;p>&lt;a href="mailto:product@rudderstack.com" >Contact the Product team&lt;/a> if you have any questions.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>As part of this release, we&amp;rsquo;ve made significant updates to the UI for our schema view and have completely overhauled the schema editing experience, which significantly simplifies schema buildout and updates.&lt;/p>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/codegen/" >Tracking Plan Codegen docs&lt;/a> for more information.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/tracking-plan-codegen/" data-title="Tracking Plan Code Generation" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/tracking-plans-codegen/codegen-ui.png" href="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/codegen-ui.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/codegen-ui.png"
alt="Tracking Plans Codegen"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/tracking-plans-codegen/schema-edit-ui.png" href="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/schema-edit-ui.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/schema-edit-ui.png"
alt="Tracking Plan schema editing"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/tracking-plans-codegen/schema-edit-ui-select.png" href="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/schema-edit-ui-select.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/schema-edit-ui-select.png"
alt="Tracking Plan schema editing property selection"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/tracking-plans-codegen/schema-ui-search.png" href="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/schema-ui-search.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/tracking-plans-codegen/schema-ui-search.png"
alt="Tracking Plan schema editing property search"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: CLI-based Data Governance</title><link>https://www.rudderstack.com/docs/releases/git-based-data-governance/</link><pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/git-based-data-governance/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/k1Un9Uy8FLU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>We are excited to announce CLI-based data governance workflows in RudderStack. Our new CLI utility and other features make it easy to manage your &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/" >data catalog&lt;/a> and &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >tracking plans&lt;/a> as code.&lt;/p>
&lt;p>With CLI-based data governance, you can bring the same rigor and process to your data governance workflows that you apply to other development workflows, giving you more control, increased visibility, and ultimately better data quality.&lt;/p>
&lt;blockquote class="announcement">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 640 640" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M544 96C526.3 96 512 110.3 512 128L512 137.1L126.8 247.2C123 233.8 110.6 224 96 224C78.3 224 64 238.3 64 256L64 384C64 401.7 78.3 416 96 416C110.6 416 123 406.2 126.8 392.8L198.5 413.3C194.3 424.1 192 435.8 192 448C192 501 235 544 288 544C334.9 544 374 510.3 382.3 465.8L512 502.8L512 511.9C512 529.6 526.3 543.9 544 543.9C561.7 543.9 576 529.6 576 511.9L576 127.9C576 110.2 561.7 95.9 544 95.9zM335.8 452.5C333.5 476.9 313 496 288 496C261.5 496 240 474.5 240 448C240 440.3 241.8 433 245 426.6L335.8 452.5z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>This feature is in &lt;strong>Alpha&lt;/strong>, where we work with early users and customers to test new features and get feedback before making them generally available.&lt;/p>
&lt;p>Note that these features are functional but can change as we improve them. &lt;a href="mailto:product@rudderstack.com" >Contact the Product team&lt;/a> if you have any questions.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/git-based-data-governance/" data-title="CLI-based Data Governance" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;p>Some key features of CLI-based tracking plans management include:&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="declarative-yaml-configuration" data-heading="Declarative YAML configuration" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/git-based-data-governance/" data-title="CLI-based Data Governance" -->
&lt;h3 id="declarative-yaml-configuration">Declarative YAML configuration&lt;/h3>&lt;ul>
&lt;li>Define your events, including their names and descriptions, in YAML format.&lt;/li>
&lt;li>Create reusable properties with advanced validation rules like min/max length, patterns (through regular expressions), and enums.&lt;/li>
&lt;li>Define tracking plan rules by associating events with required properties using a structured reference system.&lt;/li>
&lt;li>Reuse property definitions across multiple events with a standardized path reference system.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="powerful-cli-tool" data-heading="Powerful CLI tool" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/git-based-data-governance/" data-title="CLI-based Data Governance" -->
&lt;h3 id="powerful-cli-tool">Powerful CLI tool&lt;/h3>&lt;p>The new workflow comes with a powerful &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/" >Rudder CLI tool&lt;/a> that lets you:&lt;/p>
&lt;ul>
&lt;li>Create, update, and delete data catalog and tracking plan resources via command line.&lt;/li>
&lt;li>Verify your YAML configurations before pushing changes.&lt;/li>
&lt;li>Sync changes in your local files or GitHub repo to RudderStack.&lt;/li>
&lt;/ul>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">The CLI utility currently only supports &lt;em>pushing&lt;/em> to RudderStack, so we recommend starting with a clean workspace (pulling existing assets from the UI is in the works!). Reach out to our team if you would like us to create a dedicated workspace for testing. &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/#limitations" >See our list of limitations&lt;/a> to learn more about current differences between the CLI and UI.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="git-integration--cicd-support" data-heading="Git Integration &amp;amp; CI/CD support" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/git-based-data-governance/" data-title="CLI-based Data Governance" -->
&lt;h3 id="git-integration--cicd-support">Git Integration &amp;amp; CI/CD support&lt;/h3>&lt;ul>
&lt;li>Leverage GitHub Actions to automatically validate and deploy tracking plans from your repository.&lt;/li>
&lt;li>Implement version control by tracking changes, managing branches, and reviewing modifications through standard Git workflows.&lt;/li>
&lt;li>Review any tracking plan changes before they reach production.&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/releases/git-based-data-governance/" data-title="CLI-based Data Governance" -->
&lt;h2 id="use-cases">Use Cases&lt;/h2>&lt;p>This feature is particularly valuable for teams who:&lt;/p>
&lt;ul>
&lt;li>Manage large tracking plans with hundreds of events and properties.&lt;/li>
&lt;li>Need better integration with existing development workflows.&lt;/li>
&lt;li>Want to maintain consistent tracking standards across multiple applications.&lt;/li>
&lt;li>Require version control and review processes for data governance.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="get-started" data-heading="Get started" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/git-based-data-governance/" data-title="CLI-based Data Governance" -->
&lt;h2 id="get-started">Get started&lt;/h2>
&lt;ol>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/installation/" >Install the Rudder CLI tool&lt;/a> in your preferred environment.&lt;/li>
&lt;li>Generate a &lt;a href="https://www.rudderstack.com/docs/access-management/service-access-tokens/#workspace-sat" >workspace-level Service Access Token&lt;/a> in the RudderStack dashboard with the following &lt;a href="https://www.rudderstack.com/docs/access-management/policies-overview/#resource-permissions" >permissions&lt;/a> to manage Data Catalog and Tracking Plans:&lt;/li>
&lt;/ol>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Resource&lt;/th>
&lt;th style="text-align:left">Permissions&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Tracking Plans&lt;/td>
&lt;td style="text-align:left">&lt;strong>Create &amp;amp; Delete&lt;/strong>, &lt;strong>Edit&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Data Catalog&lt;/td>
&lt;td style="text-align:left">&lt;strong>Edit&lt;/strong>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;ul>
&lt;li>&lt;strong>If you&amp;rsquo;re on Free or self-hosted plan, or for testing and development only&lt;/strong>: Generate a &lt;a href="https://www.rudderstack.com/docs/access-management/personal-access-tokens/" >Personal Access Token&lt;/a> with &lt;strong>Read-Write&lt;/strong> role&lt;/li>
&lt;/ul>
&lt;blockquote class="warning">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 18 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M16.8125 13.0312L10.1562 1.65625C9.625 0.78125 8.34375 0.78125 7.84375 1.65625L1.15625 13.0312C0.65625 13.9062 1.28125 15 2.3125 15H15.6562C16.6875 15 17.3125 13.9062 16.8125 13.0312ZM8.25 5.25C8.25 4.84375 8.5625 4.5 9 4.5C9.40625 4.5 9.75 4.84375 9.75 5.25V9.25C9.75 9.6875 9.40625 10 9 10C8.625 10 8.25 9.6875 8.25 9.25V5.25ZM9 13C8.4375 13 8 12.5625 8 12.0312C8 11.5 8.4375 11.0625 9 11.0625C9.53125 11.0625 9.96875 11.5 9.96875 12.0312C9.96875 12.5625 9.53125 13 9 13Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">Any action authenticated by a Personal Access Token will break if the user generating the token is removed from the organization or there is a breaking change to their permissions.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>&lt;strong>Token permissions for legacy RBAC system&lt;/strong>&lt;/p>
&lt;p>If you are on the &lt;a href="https://www.rudderstack.com/docs/archive/dashboard-guides/user-management/" >legacy Permissions Management (RBAC) system&lt;/a>, your workspace-level Service Access Token should have minimum &lt;strong>Admin&lt;/strong> permissions.&lt;/p>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/archive/dashboard-guides/service-access-tokens/#generate-service-access-token" >Generate a workspace-level Service Access Token&lt;/a> for steps to create the token.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/access-management/permissions/legacy/admin.webp" href="https://www.rudderstack.com/docs/docs/images/access-management/permissions/legacy/admin.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/access-management/permissions/legacy/admin.webp"
alt="workspace-level Service Access Token with Admin permission"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ol start="3">
&lt;li>&lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/data-catalog-and-tracking-plans/tracking-plans/" >Initialize a new Tracking Plan project&lt;/a> with &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/yaml-data-catalog-and-tracking-plans/" >YAML definitions&lt;/a>. Then, sync the changes to your workspace.&lt;/li>
&lt;li>Automate Tracking Plan management using &lt;a href="https://www.rudderstack.com/docs/dev-tools/rudder-cli/github-actions/" >GitHub Actions&lt;/a>.&lt;/li>
&lt;/ol>
&lt;br /></description></item><item><title>Releases: Event Stream Destination Latency Metrics</title><link>https://www.rudderstack.com/docs/releases/event-stream-destination-latency/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/event-stream-destination-latency/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/k3D4qiRFKWg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>For data teams, managing stakeholder expectations is critical - they want to see the right data arrive on time.&lt;/p>
&lt;p>For data engineers running RudderStack, a variety of factors can impact how quickly data is delivered to destinations. Some variables, like complexity of &lt;a href="https://www.rudderstack.com/docs/transformations/" >Transformations&lt;/a> attached to a destination, are within your control. In many cases, though, latency can increase due to external factors like sudden traffic spikes or degraded performance of a destination API.&lt;/p>
&lt;p>Previously, it was difficult for data engineers to troubleshoot data delays for specific destinations.&lt;/p>
&lt;p>Now, RudderStack &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/user-management/#organization-roles" >Org Admins&lt;/a> can see granular latency metrics for every cloud destination, giving them visibility into delivery latency and equipping them to better manage stakeholder expectations.&lt;/p>
&lt;p>These metrics include:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>P95 latency for the selected time window&lt;/strong>: 95% of data is delivered within or faster than this time. For example, if P95 latency for the last two hours is 9 seconds, that means that 95% of events delivered over the last two hours were delivered within 9 seconds or less.&lt;/li>
&lt;li>&lt;strong>Latency trend&lt;/strong>: The latency trend shows P95 latency at intervals over the selected time window. This view is helpful for isolating the timing and impact of increased or decreased latency.&lt;/li>
&lt;/ul>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/event-metrics/#p95-latency" >P95 Latency Event Metrics&lt;/a> documentation for more information on this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/event-stream-destination-latency/" data-title="Event Stream Destination Latency Metrics" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/p95-event-stream-latency.png" href="https://www.rudderstack.com/docs/docs/images/releases/p95-event-stream-latency.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/p95-event-stream-latency.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Destination Event Details</title><link>https://www.rudderstack.com/docs/releases/destination-events-detail/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/destination-events-detail/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/yhuAb8dx7K8" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>Data engineers running RudderStack often get questions from their stakeholders about potential problems with event delivery to a specific destination.&lt;/p>
&lt;p>Previously, the events view on destinations was limited, showing only a basic chart and failure responses by top-level event type.&lt;/p>
&lt;p>Now, you can see a full list of events that RudderStack has attempted to deliver to each destination, including diagnostic data for:&lt;/p>
&lt;ul>
&lt;li>Successful deliveries&lt;/li>
&lt;li>Time of last successful delivery&lt;/li>
&lt;li>Failures&lt;/li>
&lt;li>Time of last failure&lt;/li>
&lt;/ul>
&lt;p>You can also drill into individual events to see granular failure information, including sample payloads.&lt;/p>
&lt;p>Note that table shows post-transformation event names, which ensures you are seeing the exact events that RudderStack is delivering to your destination, even if you have modified the event name or have generated new events in a &lt;a href="https://www.rudderstack.com/docs/transformations/" >user transformation&lt;/a>.&lt;/p>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/event-metrics/#event-details-1" >Event Metrics&lt;/a> documentation for more information on this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/destination-events-detail/" data-title="Destination Event Details" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/destination-event-detail/destination-events-detail.png" href="https://www.rudderstack.com/docs/docs/images/releases/destination-event-detail/destination-events-detail.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/destination-event-detail/destination-events-detail.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Transformation Failure Alerts</title><link>https://www.rudderstack.com/docs/releases/transformations-failure-alerts/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/transformations-failure-alerts/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/4JtV2YRqAZo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>You can now configure dedicated alerts for &lt;a href="https://www.rudderstack.com/docs/data-governance/alerts/#transformation-alerts" >Transformation failures&lt;/a>, giving you the ability to take immediate action when problems arise.&lt;/p>
&lt;p>Transformation failures can happen for multiple reasons:&lt;/p>
&lt;ul>
&lt;li>Unexpected data causing errors&lt;/li>
&lt;li>Testing not covering all use cases across production data, or&lt;/li>
&lt;li>A source with new data is connected to the destination.&lt;/li>
&lt;/ul>
&lt;p>Previously, these failures would materialize as cloud destination failure alerts, making it difficult to trace problems. With dedicated transformation failure alerting, you&amp;rsquo;ll be notified if there is an unexpected problem and can take action immediately.&lt;/p>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M8 16C12.4062 16 16 12.4375 16 8C16 3.59375 12.4062 0 8 0C3.5625 0 0 3.59375 0 8C0 12.4375 3.5625 16 8 16ZM11.5312 6.53125L7.53125 10.5312C7.21875 10.8438 6.75 10.8438 6.46875 10.5312L4.46875 8.53125C4.15625 8.25 4.15625 7.78125 4.46875 7.5C4.75 7.1875 5.21875 7.1875 5.53125 7.5L7 8.96875L10.4688 5.46875C10.75 5.1875 11.2188 5.1875 11.5 5.46875C11.8125 5.78125 11.8125 6.25 11.5 6.53125H11.5312Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">
With this feature, you can configure a global failure rate threshold (applicable for all transformations) and specific thresholds for individual transformations.
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/data-governance/alerts/#transformation-alerts" >Transformation failure alerts&lt;/a> for more information on this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/transformations-failure-alerts/" data-title="Transformation Failure Alerts" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/transformation-failure-alerts/transformation-failure-alerts.png" href="https://www.rudderstack.com/docs/docs/images/releases/transformation-failure-alerts/transformation-failure-alerts.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/transformation-failure-alerts/transformation-failure-alerts.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/transformation-failure-alerts/transformation-failure-alerts-overrides.png" href="https://www.rudderstack.com/docs/docs/images/releases/transformation-failure-alerts/transformation-failure-alerts-overrides.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/transformation-failure-alerts/transformation-failure-alerts-overrides.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Events Tab 2-hour Time Window</title><link>https://www.rudderstack.com/docs/releases/events-tab-2-hour-time-window/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/events-tab-2-hour-time-window/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/NNNw26VCKZQ" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>Previously, the &lt;strong>Events&lt;/strong> tab view in the Sources, Transformations, and Destinations configured in RudderStack defaulted to a 1-day time window.&lt;/p>
&lt;p>Now, the &lt;strong>Events&lt;/strong> tab defaults to a 2-hour time window, giving you much more granular visibility into data flow over the last few hours.&lt;/p>
&lt;p>In the 2-hour view, data flow is shown in 5-minute increments, helping you:&lt;/p>
&lt;ul>
&lt;li>Review recent spikes or drops in traffic and events with higher precision.&lt;/li>
&lt;li>Troubleshoot potential issues as soon as they arise.&lt;/li>
&lt;li>Quickly validate if the fixes are having the desired effect.&lt;/li>
&lt;/ul>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/event-metrics/" >Event Metrics documentation&lt;/a> for more information on this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/events-tab-2-hour-time-window/" data-title="Events Tab 2-hour Time Window" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/events-tab-2-hour-time-window-screenshot.png" href="https://www.rudderstack.com/docs/docs/images/releases/events-tab-2-hour-time-window-screenshot.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/events-tab-2-hour-time-window-screenshot.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Custom Types for Data Catalog Properties</title><link>https://www.rudderstack.com/docs/releases/custom-types/</link><pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/custom-types/</guid><description>
&lt;p>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/WEY5q5KaPXo" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />&lt;/p>
&lt;p>RudderStack&amp;rsquo;s &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking Plans&lt;/a> feature makes it easy for data teams to apply type-safe governance to event schemas flowing through RudderStack. &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/properties/#advanced-rules" >Advanced rules&lt;/a> enable you to create types and rules on individual properties, but for teams managing hundreds of properties, individual rules can be limiting.&lt;/p>
&lt;p>With the release of &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/properties/#custom-data-types" >Custom Types&lt;/a>, you can now build and manage a separate, centralized library of rules, and apply them to multiple properties across your Data Catalog. Custom Types give you the ability to:&lt;/p>
&lt;ul>
&lt;li>More easily manage and apply the same rule across multiple properties.&lt;/li>
&lt;li>Implement more complex rules for properties.&lt;/li>
&lt;/ul>
&lt;p>You can also create and manage Custom Types via the &lt;a href="https://www.rudderstack.com/docs/api/data-catalog-api/#custom-types" >Data Catalog API&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="example-use-cases" data-heading="Example use cases" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/custom-types/" data-title="Custom Types for Data Catalog Properties" -->
&lt;h2 id="example-use-cases">Example use cases&lt;/h2>&lt;ul>
&lt;li>
&lt;p>&lt;strong>Array of enums&lt;/strong>: With Custom Types, you can combine rules and types for complex use cases. For example, you could define enum values as a Custom Type, then use that Custom Type in a property defined as an array, enabling you to govern an array of enums.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Sub-property bundles&lt;/strong>: If you need to add sub-properties to multiple properties, you can create an Object Custom Type, add the list of specific sub-properties, and apply them to properties in your Data Catalog.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Custom date formats&lt;/strong>: If you need to enforce a specific date format across multiple different date properties, you can create a Custom Type with your specific logic, then use that type for those properties.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Custom address formats&lt;/strong>: If you need to enforce formats for different types of addresses (residential and commercial, for example), you can create Custom Types for each and apply them to different properties.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/custom-types/" data-title="Custom Types for Data Catalog Properties" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/custom-types-release/custom-types-library.png" href="https://www.rudderstack.com/docs/docs/images/releases/custom-types-release/custom-types-library.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/custom-types-release/custom-types-library.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/custom-types-release/custom-types-property.png" href="https://www.rudderstack.com/docs/docs/images/releases/custom-types-release/custom-types-property.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/custom-types-release/custom-types-property.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Support for Azure DevOps Git URLs Starting with ssh while Importing Profiles Project</title><link>https://www.rudderstack.com/docs/releases/azure-git-urls/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/azure-git-urls/</guid><description>
&lt;p>RudderStack now supports Azure Git URLs starting with &lt;code>ssh&lt;/code> while importing your Profiles project from a Git repository.&lt;/p>
&lt;p>With this enhancement, you can now use Azure DevOps as a Git provider for your Profiles project in addition to the previously supported ones, that is, Google cloud sources, AWS CodeCommit, GitHub, GitLab, and Bitbucket.&lt;/p>
&lt;p>Read more about this feature in the &lt;a href="https://www.rudderstack.com/docs/profiles/management/import-from-git/" >Import Profiles Project from Git&lt;/a> guide.&lt;/p></description></item><item><title>Releases: RudderStack Dagster Integration</title><link>https://www.rudderstack.com/docs/releases/dagster/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/dagster/</guid><description>
&lt;p>Today, we are excited to announce the launch of the &lt;a href="https://github.com/rudderlabs/dagster-rudderstack" >&lt;code>dagster-rudderstack&lt;/code>&lt;/a> Python library, which integrates RudderStack with Dagster. This integration allows teams to seamlessly orchestrate RudderStack Profiles and Reverse ETL jobs within their existing Dagster workflows. You can also define cross-system dependencies, ensuring your warehouse operations are synchronized and optimized beyond the boundaries of RudderStack.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="overview" data-heading="Overview" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/dagster/" data-title="RudderStack Dagster Integration" -->
&lt;h2 id="overview">Overview&lt;/h2>&lt;p>As organizations integrate more data sources into their workflows, the processes of cleaning, transforming, and activating data become increasingly complex.&lt;/p>
&lt;p>Orchestration tools like &lt;a href="https://dagster.io/" >Dagster&lt;/a> simplify these processes by enabling teams to schedule jobs, define dependencies, and maintain reliable, maintainable, and observable data pipelines. Its modular design and support for modern data practices empower teams to streamline workflows, reduce errors, and focus on delivering actionable insights.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="feature-walkthrough" data-heading="Feature walkthrough" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/dagster/" data-title="RudderStack Dagster Integration" -->
&lt;h2 id="feature-walkthrough">Feature walkthrough&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/q1jpqoiUaFg" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="workflow" data-heading="Workflow" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/dagster/" data-title="RudderStack Dagster Integration" -->
&lt;h2 id="workflow">Workflow&lt;/h2>&lt;ol>
&lt;li>Install the &lt;a href="https://github.com/rudderlabs/dagster-rudderstack" >&lt;code>dagster-rudderstack&lt;/code>&lt;/a> Python package.&lt;/li>
&lt;li>Use the RudderStack-specific operations to define Profiles runs and Reverse ETL syncs within jobs.&lt;/li>
&lt;li>Define RudderStack-specific resources like connection details (access tokens, connection IDs, etc.)&lt;/li>
&lt;li>Define a schedule.&lt;/li>
&lt;/ol>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/orchestration/dagster/" >RudderStack Dagster integration docs&lt;/a> for more information on using this tool.&lt;/p></description></item><item><title>Releases: Profiles IDE</title><link>https://www.rudderstack.com/docs/releases/profiles-ide/</link><pubDate>Wed, 18 Dec 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/profiles-ide/</guid><description>
&lt;p>The &lt;a href="https://www.rudderstack.com/docs/profiles/ide/" >Profiles IDE&lt;/a> provides a seamless, production-ready environment for developing and deploying your Profiles projects directly within the &lt;a href="https://app.rudderstack.com/" >RudderStack dashboard&lt;/a>. It supports in-platform project management and integration with external version control systems like GitHub and GitLab.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="key-features" data-heading="Key features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/profiles-ide/" data-title="Profiles IDE" -->
&lt;h2 id="key-features">Key features&lt;/h2>&lt;ul>
&lt;li>Integrated editor for building and modifying YAML-based Profiles configuration files.&lt;/li>
&lt;li>Safe validation of workflows through separate development schemas.&lt;/li>
&lt;li>Easy rollbacks of uncommitted changes with a button click.&lt;/li>
&lt;li>Automated notifications when multiple users are editing a project simultaneously.&lt;/li>
&lt;/ul>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="workflow" data-heading="Workflow" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/profiles-ide/" data-title="Profiles IDE" -->
&lt;h2 id="workflow">Workflow&lt;/h2>&lt;p>You can use the Profiles IDE to modify inputs, build features, and safely validate the changes in a controlled session, before committing them to the production project.&lt;/p>
&lt;p>Here&amp;rsquo;s how to use the feature:&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="new-profiles-project" data-heading="New Profiles project" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/profiles-ide/" data-title="Profiles IDE" -->
&lt;h3 id="new-profiles-project">New Profiles project&lt;/h3>&lt;ol>
&lt;li>Select the &lt;strong>Web-based editor (IDE)&lt;/strong> option while creating a new Profiles project.&lt;/li>
&lt;li>Provide the project name, warehouse credentials, and output schema for storing the results.&lt;/li>
&lt;li>Click &lt;strong>Open in editor mode&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="existing-profiles-projects" data-heading="Existing Profiles projects" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/profiles-ide/" data-title="Profiles IDE" -->
&lt;h3 id="existing-profiles-projects">Existing Profiles projects&lt;/h3>&lt;ol>
&lt;li>Go to the &lt;strong>Settings&lt;/strong> tab of the Profiles project.&lt;/li>
&lt;li>Click &lt;strong>Editor mode&lt;/strong>.&lt;/li>
&lt;/ol>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/profiles/ide/" >Profiles IDE&lt;/a> documentation for more details on using this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/profiles-ide/" data-title="Profiles IDE" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>&lt;ul>
&lt;li>Editor mode option after creating a new Profiles project.&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/profiles/profiles-editor-mode-option.webp" href="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-option.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-option.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>Editor mode option in an existing Profiles project.&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/profiles/profiles-editor-mode-existing-project.webp" href="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-existing-project.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-existing-project.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>Specify development/validation schema for testing the changes.&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/profiles/profiles-editor-mode-specify-schema.webp" href="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-specify-schema.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-specify-schema.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>Modify configuration, view the changes, and commit to the production schema.&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/profiles/profiles-editor-mode-make-changes.webp" href="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-make-changes.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/profiles/profiles-editor-mode-make-changes.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: SSO Support for Other Providers</title><link>https://www.rudderstack.com/docs/releases/generic-sso-setup/</link><pubDate>Wed, 20 Nov 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/generic-sso-setup/</guid><description>
&lt;p>RudderStack now supports setting up and enabling SSO for your organization for various SSO providers in addition to the existing SSO providers like &lt;a href="https://www.rudderstack.com/docs/user-guides/sso-setup/okta/" >Okta&lt;/a>, &lt;a href="https://www.rudderstack.com/docs/user-guides/sso-setup/onelogin/" >OneLogin&lt;/a>, and &lt;a href="https://www.rudderstack.com/docs/user-guides/sso-setup/azure/" >Azure Entra ID&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="workflow" data-heading="Workflow" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/generic-sso-setup/" data-title="SSO Support for Other Providers" -->
&lt;h2 id="workflow">Workflow&lt;/h2>&lt;p>You can integrate RudderStack SSO with your own SSO provider by following these three simple steps:&lt;/p>
&lt;ol>
&lt;li>Specify the &lt;a href="https://www.rudderstack.com/docs/user-guides/sso-setup/other-providers/#configuration-settings" >configuration settings&lt;/a> in your SSO provider&amp;rsquo;s admin dashboard.&lt;/li>
&lt;li>Configure the &lt;a href="https://www.rudderstack.com/docs/user-guides/sso-setup/other-providers/#configure-saml-20-custom-attributes" >SAML 2.0 custom attributes&lt;/a>.&lt;/li>
&lt;li>Contact the &lt;a href="mailto:support@rudderstack.com" >RudderStack team&lt;/a> to enable SSO for your organization.&lt;/li>
&lt;/ol>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/user-guides/sso-setup/other-providers/" >Generic SSO Setup Guide&lt;/a> for more details.&lt;/p></description></item><item><title>Releases: Server-side Cookies</title><link>https://www.rudderstack.com/docs/releases/server-side-cookies/</link><pubDate>Tue, 19 Nov 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/server-side-cookies/</guid><description>
&lt;p>You can now set server-side cookies in the JavaScript SDK, ensuring users are tracked across sessions over time, even when browsers expire client-side cookies.&lt;/p>
&lt;p>Web browsers are increasingly implementing user tracking restrictions. For example, Safari’s Intelligent Tracking Prevention (ITP) automatically expires client-side, third-party cookies after 7 days. Suppose one of your visitor’s cookies expire and they return to your website. In that case, RudderStack’s JavaScript SDK sees them as a new user and assigns them a new unique &lt;code>anonymousId&lt;/code>- this can create challenges for customer journey tracking, attribution analytics, and identity resolution because the ID and session data would show two users when, in reality, it is the same user returning to your website.&lt;/p>
&lt;p>With this release, you can configure the JavaScript SDK to set server-side cookies, which aren’t subject to the client-side cookie expiration timelines enforced by Safari and other browsers.&lt;/p>
&lt;p>Read our &lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/server-side-cookies/" >server-side cookies documentation&lt;/a> for more information on this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="workflow" data-heading="Workflow" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/server-side-cookies/" data-title="Server-side Cookies" -->
&lt;h2 id="workflow">Workflow&lt;/h2>&lt;p>To implement server-side cookies, set the&lt;code>useServerSideCookies&lt;/code> option to &lt;code>true&lt;/code> while loading the JavaScript SDK.&lt;/p>
&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">javascript&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">rudderanalytics&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">load&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">WRITE_KEY&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">DATA_PLANE_URL&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">useServerSideCookies&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="kc">true&lt;/span> &lt;span class="c1">// Default is false
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">});&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>Setting server-side cookies requires that you make the cookie request to your website domain.&lt;/p>
&lt;p>Most customers use a &lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/server-side-cookies/#proxy" >proxy&lt;/a>, but the SDK also supports &lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/server-side-cookies/#custom-implementation" >custom implementations&lt;/a>.&lt;/p>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-it-works" data-heading="How it works" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/server-side-cookies/" data-title="Server-side Cookies" -->
&lt;h3 id="how-it-works">How it works&lt;/h3>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/event-stream-sources/server-side-cookies-js-sdk.webp" href="https://www.rudderstack.com/docs/docs/images/event-stream-sources/server-side-cookies-js-sdk.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/event-stream-sources/server-side-cookies-js-sdk.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>The JavaScript SDK makes explicit &lt;code>POST&lt;/code> requests to the server to set cookies via the &lt;code>/rsaRequest&lt;/code> endpoint:&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/event-stream-sources/rsa-request.webp" href="https://www.rudderstack.com/docs/docs/images/event-stream-sources/rsa-request.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/event-stream-sources/rsa-request.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>The response includes &lt;code>Set-Cookie&lt;/code> headers which set the &lt;code>rl_anonymous_id&lt;/code> cookie (user&amp;rsquo;s &lt;code>anonymousId&lt;/code> value which is persisted through the server-side cookie).&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/event-stream-sources/set-cookie-header.webp" href="https://www.rudderstack.com/docs/docs/images/event-stream-sources/set-cookie-header.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/event-stream-sources/set-cookie-header.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Service Access Tokens</title><link>https://www.rudderstack.com/docs/releases/service-access-tokens/</link><pubDate>Thu, 24 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/service-access-tokens/</guid><description>
&lt;p>We have expanded access to our APIs and services with &lt;a href="https://www.rudderstack.com/docs/access-management/service-access-tokens/" >Service Access Tokens (SATs)&lt;/a>. SATs can be created at the organization or workspace level and are not tied to individual user accounts.&lt;/p>
&lt;p>SATs are ideal for production use cases and centralized management of tokens across the RudderStack platform.&lt;/p>
&lt;p>Previously, access to RudderStack APIs required you to create &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/personal-access-token/" >Personal Access Tokens&lt;/a>, which are tied to an individual user’s account. If that user account was removed, or permissions on the account were changed, access to APIs and services was impacted as well.&lt;/p>
&lt;p>With this release, you can create and manage central SATs to ensure stability and security for critical production workflows.&lt;/p>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">Contact the &lt;a href="mailto:support@rudderstack.com" >RudderStack team&lt;/a> to get access to this feature.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="how-it-works" data-heading="How it works" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/service-access-tokens/" data-title="Service Access Tokens" -->
&lt;h2 id="how-it-works">How it works&lt;/h2>&lt;p>Org Admins can create SATs at the organization or workspace level.&lt;/p>
&lt;p>&lt;strong>Organization-level SATs&lt;/strong> can be used to access &lt;a href="https://www.rudderstack.com/docs/user-guides/sso-setup/" >SSO SCIM&lt;/a> and the &lt;a href="https://www.rudderstack.com/docs/api/audit-logs-api/" >Audit Log API&lt;/a>, used for managing SCIM users and accessing audit logs from the platform, respectively.&lt;/p>
&lt;p>&lt;strong>Workspace-level SATs&lt;/strong> can be used to access resources in a specific workspace. These are used to manage programmatic workflows that leverage RudderStack APIs. Some examples are:&lt;/p>
&lt;ul>
&lt;li>Using the &lt;a href="https://www.rudderstack.com/docs/api/transformation-api/" >Transformations API&lt;/a> to manage Transformations programmatically.&lt;/li>
&lt;li>Using the &lt;a href="https://www.rudderstack.com/docs/api/data-catalog-api/" >Data Catalog API&lt;/a> to programmatically manage your Data Catalog and Tracking Plans.&lt;/li>
&lt;li>Using the &lt;a href="https://www.rudderstack.com/docs/api/test-api/" >Test API&lt;/a> to run programmatic end-to-end pipeline tests.&lt;/li>
&lt;/ul>
&lt;p>Operations performed by both SAT types are logged and are available through the &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/audit-logs/" >Audit Logs view&lt;/a> and the &lt;a href="https://www.rudderstack.com/docs/api/audit-logs-api/" >Audit Logs API&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="create-a-sat" data-heading="Create a SAT" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/service-access-tokens/" data-title="Service Access Tokens" -->
&lt;h2 id="create-a-sat">Create a SAT&lt;/h2>&lt;p>To create SATs, Org Admins can access the Service Access Token view by going to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Organization&lt;/strong> &amp;gt; &lt;strong>Service Access Tokens&lt;/strong> tab.&lt;/p>
&lt;p>Click the &lt;strong>Organization&lt;/strong> or &lt;strong>Workspace&lt;/strong> tab followed by &lt;strong>Generate new Token&lt;/strong> to generate a new &lt;a href="https://www.rudderstack.com/docs/access-management/service-access-tokens/#organization-level-sats" >Organization-level SAT&lt;/a> or &lt;a href="https://www.rudderstack.com/docs/access-management/service-access-tokens/#workspace-level-sats" >Workspace-level SAT&lt;/a>.&lt;/p>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/access-management/service-access-tokens/" >Service Access Token documentation&lt;/a> for more information.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/service-access-tokens/" data-title="Service Access Tokens" -->
&lt;h3 id="screenshots">Screenshots&lt;/h3>&lt;p>The following screenshots highlight the SAT generation flow:&lt;/p>
&lt;ul>
&lt;li>Generate an organization-level SAT:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/service-access-tokens/service-access-tokens-1.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/service-access-tokens-1.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/service-access-tokens-1.webp"
alt="Service Access Tokens tab in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>Copy newly-generated organization-level SAT:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/service-access-tokens/org-sat.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/org-sat.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/org-sat.webp"
alt="Note org level SAT value"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>Generate a workspace-level SAT:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/service-access-tokens/service-access-tokens-2.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/service-access-tokens-2.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/service-access-tokens-2.webp"
alt="Service Access Tokens tab in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>Specify workspace-level SAT permissions:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/service-access-tokens/workspace-sat-generate.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/workspace-sat-generate.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/workspace-sat-generate.webp"
alt="Generate workspace level SAT"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;ul>
&lt;li>Copy newly-generated workspace-level SAT:&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/service-access-tokens/workspace-sat.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/workspace-sat.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/service-access-tokens/workspace-sat.webp"
alt="Create workspace level SAT"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;br /></description></item><item><title>Releases: Full Custom Consent Manager Support</title><link>https://www.rudderstack.com/docs/releases/custom-consent-management/</link><pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/custom-consent-management/</guid><description>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/n2JwMksqfYU" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />
&lt;p>Previously, RudderStack supported fully-integrated consent data flows for &lt;strong>OneTrust&lt;/strong> and &lt;strong>Ketch&lt;/strong> - two popular consent management tools.&lt;/p>
&lt;p>With this release, you can integrate your custom consent management solution with RudderStack, giving you granular control over consent settings for each individual destination.&lt;/p>
&lt;p>You can also use the &lt;a href="https://www.rudderstack.com/docs/data-governance/consent-management/custom-consent-mgmt/" >Custom Consent Management&lt;/a> feature to implement compliant pre-consent user tracking, with the options to store no cookies, store only the session tracking cookie, or only persist the &lt;code>anonymousId&lt;/code>.&lt;/p>
&lt;p>RudderStack also supports running multiple consent management solutions simultaneously, which is useful when consent management solutions differ across platforms.&lt;/p>
&lt;p>Custom Consent Management is now available on all RudderStack plans. See our &lt;a href="https://www.rudderstack.com/docs/data-governance/consent-management/custom-consent-mgmt/" >documentation&lt;/a> for more information on using this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="workflow-overview" data-heading="Workflow overview" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/custom-consent-management/" data-title="Full Custom Consent Manager Support" -->
&lt;h2 id="workflow-overview">Workflow overview&lt;/h2>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>Before capturing user consent, make sure that:&lt;/p>
&lt;ul>
&lt;li>You are running the latest version of the &lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/" >JavaScript SDK&lt;/a>.&lt;/li>
&lt;li>You have set the &lt;code>enabled&lt;/code> key to true in the &lt;code>consentManagement&lt;/code> API object. See the &lt;a href="https://www.rudderstack.com/docs/data-governance/consent-management/custom-consent-mgmt/#sdk-initialized-before-capturing-user-consent" >JavaScript SDK documentation&lt;/a> for more information.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;ol>
&lt;li>
&lt;p>Update the code on your website to grab consent IDs from your custom consent manager.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Add the consent setting in the &lt;code>load&lt;/code> object, or pass them to the SDK&amp;rsquo;s consent API using the &lt;code>consent&lt;/code> method, as shown:&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="rs-code">
&lt;div class="rs-code__head">&lt;span class="rs-code__lang">javascript&lt;/span>&lt;button class="rs-code__copy" type="button" aria-label="Copy code">
&lt;svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">&lt;rect x="9" y="9" width="13" height="13" rx="2"/>&lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/>&lt;/svg>
&lt;span class="rs-code__copy-label">Copy&lt;/span>
&lt;/button>
&lt;/div>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-javascript" data-lang="javascript">&lt;span class="line">&lt;span class="cl">&lt;span class="nx">rudderanalytics&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nx">consent&lt;/span>&lt;span class="p">({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">consentManagement&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">allowedConsentIds&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;performance&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;analytics&amp;#39;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">deniedConsentIds&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;advertising&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;p>Using the &lt;code>consent&lt;/code> method is helpful for tracking users who update consent settings and then go on to perform other actions on the same page and in the same session.&lt;/p>
&lt;ol start="3">
&lt;li>Specify the consent settings for each destination by adding the allowed consent ID values in the &lt;strong>Consent settings&lt;/strong> section of the destination configuration. In the below example, the destination accepts data from users have consented to only &lt;code>performance&lt;/code> or &lt;code>analytics&lt;/code> tracking:&lt;/li>
&lt;/ol>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/consent-management-settings.webp" href="https://www.rudderstack.com/docs/docs/images/releases/consent-management-settings.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/consent-management-settings.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Global Advanced Property Rules across Tracking Plans</title><link>https://www.rudderstack.com/docs/releases/advanced-properties/</link><pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/advanced-properties/</guid><description>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe src="https://www.youtube.com/embed/9we2iLrb19Q" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" allowfullscreen title="YouTube Video">&lt;/iframe>
&lt;/div>
&lt;br />
&lt;p>Our &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking Plans&lt;/a> feature evaluates advanced rules for properties, allowing you to flag data that does not align to your settings for enums, data formats, minimum/maximum values, and more.&lt;/p>
&lt;p>Previously, you had to apply &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/#advanced-rules" >advanced rules&lt;/a> individually to each event in each Tracking Plan — a time consuming and error-prone process.&lt;/p>
&lt;p>With this release, advanced rules for properties are now set globally through the &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/" >Data Catalog&lt;/a>. That means the advanced rules are now applied to the property across all events and Tracking Plans, eliminating the need to update rules in multiple places.&lt;/p>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">Advanced rules for properties are now only managed globally through the Data Catalog. You can no longer set individual advanced rules for properties through Tracking Plans.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>Note that:&lt;/p>
&lt;ul>
&lt;li>If you had any existing advanced rules, you have been automatically migrated. Existing settings for advanced rules will not be affected, and any property-level advanced rules you created previously have automatically be propagated to the Data Catalog for global management across all Tracking Plans.&lt;/li>
&lt;li>This release applies to all the customers using our UI-based Tracking Plans features.&lt;/li>
&lt;/ul>
&lt;p>Read our &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/#advanced-rules" >Data Catalog documentation&lt;/a> for more information on this feature.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="screenshots" data-heading="Screenshots" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/advanced-properties/" data-title="Global Advanced Property Rules across Tracking Plans" -->
&lt;h2 id="screenshots">Screenshots&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/global-advanced-property-rules-release-note-screenshot.png" href="https://www.rudderstack.com/docs/docs/images/releases/global-advanced-property-rules-release-note-screenshot.png"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/global-advanced-property-rules-release-note-screenshot.png"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure></description></item><item><title>Releases: Support for URLs Starting with ssh while Importing Profiles Project from Git</title><link>https://www.rudderstack.com/docs/releases/ssh-url-profiles/</link><pubDate>Fri, 27 Sep 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/ssh-url-profiles/</guid><description>
&lt;p>RudderStack now supports URLs starting with &lt;code>ssh&lt;/code> (for example, &lt;code>ssh://git@host:port/path.git&lt;/code>) while importing your Profiles project from a Git repository.&lt;/p>
&lt;p>With this enhancement, you can now use more Git providers like Google cloud sources, &lt;a href="https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-connect.html" >AWS CodeCommit&lt;/a>, etc. for your Profiles project in addition to the previously supported ones, that is, GitHub, GitLab, and Bitbucket.&lt;/p>
&lt;p>Read more about this feature in the &lt;a href="https://www.rudderstack.com/docs/profiles/get-started/import-from-git/" >Import Profiles Project from Git&lt;/a> guide.&lt;/p></description></item><item><title>Releases: Configurable Alerts for Profiles</title><link>https://www.rudderstack.com/docs/releases/profiles-alerts/</link><pubDate>Thu, 08 Aug 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/profiles-alerts/</guid><description>
&lt;p>RudderStack now supports setting up notifications for any failures in your Profiles project runs. This helps you troubleshoot the issues and take remedial actions on time.&lt;/p>
&lt;p>To use this feature:&lt;/p>
&lt;ol>
&lt;li>Navigate to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Workspace&lt;/strong> in your &lt;a href="" >RudderStack dashboard&lt;/a> and go to the &lt;strong>Alerts&lt;/strong> tab.&lt;/li>
&lt;li>Click the &lt;strong>Profiles&lt;/strong> tab and toggle on the &lt;strong>Run failures&lt;/strong> setting.&lt;/li>
&lt;/ol>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/configurable-alerts/profiles-alert-settings.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/profiles-alert-settings.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/profiles-alert-settings.webp"
alt="Profiles alert settings"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>Read more about this feature in the &lt;a href="https://www.rudderstack.com/docs/data-governance/alerts/" >Configurable Alerts&lt;/a> guide.&lt;/p></description></item><item><title>Releases: Snowflake Key Pair Authentication Support for Profiles</title><link>https://www.rudderstack.com/docs/releases/snowflake-key-pair-auth-profiles/</link><pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/snowflake-key-pair-auth-profiles/</guid><description>
&lt;p>RudderStack now supports Snowflake&amp;rsquo;s &lt;a href="https://docs.snowflake.com/en/user-guide/key-pair-auth" >key pair authentication&lt;/a> mechanism while setting up your &lt;a href="https://www.rudderstack.com/docs/profiles/dev-docs/create-new-project/#grant-warehouse-permissions" >Profiles connection&lt;/a>. You can now configure a key pair in Snowflake and use the private key for user authentication.&lt;/p>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">Snowflake&amp;rsquo;s key pair authentication mechanism leverages a 2048-bit RSA key pair and offers better security over basic authentication (username + password).&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>To use this feature:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="https://docs.snowflake.com/en/user-guide/key-pair-auth#configuring-key-pair-authentication" >Set up a key pair&lt;/a> in Snowflake.&lt;/li>
&lt;li>&lt;a href="" >Create a warehouse connection&lt;/a> to allow Profiles Builder (PB) to access your data by running the &lt;code>pb init connection&lt;/code> command.&lt;/li>
&lt;li>In the subsequent setup, enter &lt;strong>y&lt;/strong> (yes) for &lt;strong>Do you want to use key-pair authentication&lt;/strong>.&lt;/li>
&lt;li>Enter the file path containing the private key.&lt;/li>
&lt;li>If the private key is encrypted, specify the &lt;strong>Private Key Passphrase&lt;/strong> used for encryption.&lt;/li>
&lt;li>Continue with the rest of the warehouse connection setup.&lt;/li>
&lt;/ol>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/profiles/dev-docs/create-new-project/#grant-warehouse-permissions" >Profiles CLI Setup&lt;/a> guide for more information.&lt;/p></description></item><item><title>Releases: Transformation Credential Store</title><link>https://www.rudderstack.com/docs/releases/transformation-credentials/</link><pubDate>Tue, 02 Jul 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/transformation-credentials/</guid><description>
&lt;p>RudderStack allows you to create and pass sensitive user secrets or environment variables as configurable credentials to your &lt;a href="https://www.rudderstack.com/docs/transformations/overview/" >transformations&lt;/a>.&lt;/p>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M8 16C12.4062 16 16 12.4375 16 8C16 3.59375 12.4062 0 8 0C3.5625 0 0 3.59375 0 8C0 12.4375 3.5625 16 8 16ZM11.5312 6.53125L7.53125 10.5312C7.21875 10.8438 6.75 10.8438 6.46875 10.5312L4.46875 8.53125C4.15625 8.25 4.15625 7.78125 4.46875 7.5C4.75 7.1875 5.21875 7.1875 5.53125 7.5L7 8.96875L10.4688 5.46875C10.75 5.1875 11.2188 5.1875 11.5 5.46875C11.8125 5.78125 11.8125 6.25 11.5 6.53125H11.5312Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">
By storing secrets and variables in RudderStack’s credential store, you can avoid hardcoding sensitive information in your transformations and avoid any security risks.
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>RudderStack credential store supports two types of credentials:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Secrets&lt;/strong> let you store text values encrypted. You can use them to securely store sensitive information like passwords, app secrets, API keys and authorization tokens.&lt;/li>
&lt;li>&lt;strong>Variables&lt;/strong> are non-encrypted strings that you can use to store application configuration.&lt;/li>
&lt;/ul>
&lt;p>See the &lt;a href="https://rudderstack.com/docs/transformations/credentials/" >Transformation Credentials&lt;/a> documentation for more information on this feature.&lt;/p></description></item><item><title>Releases: Tracking Plan Nested Properties Support</title><link>https://www.rudderstack.com/docs/releases/nested-properties/</link><pubDate>Thu, 23 May 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/nested-properties/</guid><description>
&lt;p>RudderStack supports defining nested properties for an event in your tracking plan, allowing you to validate complex data structures in your inbound events and metadata.&lt;/p>
&lt;p>While editing your tracking plan, choose an event property of object or array data type, click the &lt;strong>+&lt;/strong> sign next to it and choose the event property to nest.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/nested-properties.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/nested-properties.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/nested-properties.webp"
alt="Nested event properties"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">&lt;p>Note that:&lt;/p>
&lt;ul>
&lt;li>RudderStack supports up to three levels of nesting.&lt;/li>
&lt;li>You can nest properties within an event property of object or array data type.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking Plans&lt;/a> documentation for more details.&lt;/p></description></item><item><title>Releases: Cohorts and Activations</title><link>https://www.rudderstack.com/docs/releases/cohorts-activations/</link><pubDate>Thu, 16 May 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/cohorts-activations/</guid><description>
&lt;p>RudderStack Profiles now provides the &lt;strong>Cohorts&lt;/strong> and &lt;strong>Activations&lt;/strong> features, which let you define target customer segments in your warehouse and activate them in downstream marketing tools like Braze, Mailchimp, etc. They give business users unprecedented access to complete customer profiles through an intuitive UI.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="cohorts" data-heading="Cohorts" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/cohorts-activations/" data-title="Cohorts and Activations" -->
&lt;h2 id="cohorts">Cohorts&lt;/h2>&lt;p>Using cohorts, you can define core customer segments in your warehouse via a simple YAML configuration, and the entire business can use them as a single source of truth. It is a subset of instances of an entity meeting a specified set of characteristics, behaviors, or attributes. For example, if you have a user as an entity, you can define cohorts like known users, new users, or North American users, etc.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/profiles/cohorts-view-ui.webp" href="https://www.rudderstack.com/docs/docs/images/profiles/cohorts-view-ui.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/profiles/cohorts-view-ui.webp"
alt="Activation API"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>By leveraging cohorts, you can target specific customer segments by enabling targeted campaigns and analysis. See &lt;a href="https://www.rudderstack.com/docs/profiles/cohorts/" >Cohorts&lt;/a> for more information.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="activations" data-heading="Activations" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/cohorts-activations/" data-title="Cohorts and Activations" -->
&lt;h2 id="activations">Activations&lt;/h2>&lt;p>Activations provide business users the access to explore the customer 360, build audiences from cohorts, and sync them directly to the desired destinations. This helps you make informed decisions, run personalized marketing campaigns, and enhance the overall customer experience across multiple platforms.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/profiles/activation-view-ui.webp" href="https://www.rudderstack.com/docs/docs/images/profiles/activation-view-ui.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/profiles/activation-view-ui.webp"
alt="Activation"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>See &lt;a href="https://www.rudderstack.com/docs/profiles/activations/" >Activations&lt;/a> for more information.&lt;/p></description></item><item><title>Releases: Reverse ETL 1:Many Connections Enhancement</title><link>https://www.rudderstack.com/docs/releases/retl-1-many-enhancements/</link><pubDate>Thu, 25 Apr 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/retl-1-many-enhancements/</guid><description>
&lt;p>RudderStack now supports 1:many connections for the &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/" >Reverse ETL&lt;/a> feature, meaning you can now connect a Reverse ETL source to multiple destinations:&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/one-to-many-retl-connection.webp" href="https://www.rudderstack.com/docs/docs/images/releases/one-to-many-retl-connection.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/one-to-many-retl-connection.webp"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>Previously, RudderStack supported connecting a Reverse ETL source to only one destination, and you had to set up multiple pipelines with the same source to send data to multiple destinations. With this enhancement, you can send data from one warehouse source to multiple destinations across your entire stack.&lt;/p>
&lt;p>See our documentation on &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/retl-connection-setup/" >Setting Up Reverse ETL Connections&lt;/a> for more information.&lt;/p></description></item><item><title>Releases: Sync Schedule Enhancement for Reverse ETL Pipelines</title><link>https://www.rudderstack.com/docs/releases/sync-frequency/</link><pubDate>Tue, 12 Mar 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/sync-frequency/</guid><description>
&lt;p>RudderStack lets you specify a &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-schedule-settings/" >sync schedule&lt;/a> that defines how frequently data is synced from your Reverse ETL sources. When you set the schedule type to &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-schedule-settings/#basic" >Basic&lt;/a>, you can now set this interval to as low as 5 minutes, so you can sync more frequently and keep the destination data up to date.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/basic-schedule-frequency.webp" href="https://www.rudderstack.com/docs/docs/images/releases/basic-schedule-frequency.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/basic-schedule-frequency.webp"
alt="Basic schedule settings"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>See the &lt;a href="https://www.rudderstack.com/docs/data-pipelines/reverse-etl/developer-guides/sync-schedule-settings/" >Sync Schedule Settings&lt;/a> for more information on this update.&lt;/p></description></item><item><title>Releases: Configurable Alerts Enhancement</title><link>https://www.rudderstack.com/docs/releases/configurable-alerts/</link><pubDate>Tue, 05 Mar 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/configurable-alerts/</guid><description>
&lt;p>RudderStack now supports smart alerting capabilities that let you set up timely notifications for critical data issues, helping you take necessary actions before they escalate into major problems.&lt;/p>
&lt;p>With this &lt;a href="https://www.rudderstack.com/docs/data-governance/alerts/" >alerting feature&lt;/a>, you can:&lt;/p>
&lt;ul>
&lt;li>Configure alerts for event delivery failures, warehouse pre-sync or sync failures, and tracking plan violations.&lt;/li>
&lt;li>Set failure thresholds at a workspace and resource level, so you are notified only when absolutely necessary.&lt;/li>
&lt;li>Break alerting silos by setting up alert delivery channels of your choice like email, webhook, Slack, PagerDuty, or any other tool of your choice.&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/data-governance/configurable-alerts/resource-level-alert-settings.webp" href="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/resource-level-alert-settings.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/data-governance/configurable-alerts/resource-level-alert-settings.webp"
alt="Resource-level alert settings"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>Read more about this feature in our &lt;a href="https://www.rudderstack.com/docs/data-governance/alerts/" >Configurable Alerts&lt;/a> guide.&lt;/p></description></item><item><title>Releases: Feature Launch: Health Dashboard for Data Quality Monitoring and Alerting</title><link>https://www.rudderstack.com/docs/releases/monitoring-alerting/</link><pubDate>Thu, 01 Feb 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/monitoring-alerting/</guid><description>
&lt;p>Today, we’re introducing the &lt;a href="https://rudderstack.com/docs/data-governance/health-dashboard/" >Health Dashboard&lt;/a>, the final tool in our &lt;a href="https://www.rudderstack.com/product/data-quality-toolkit/" >Data Quality toolkit&lt;/a>. It provides a centralized place to monitor data quality and manage alerts across your entire stack.&lt;/p>
&lt;p>With the Health Dashboard, you can drive data trust and ensure that every strategic decision, from marketing campaigns to product development, is based on accurate and reliable information. It exposes the key metrics related to your pipelines like:&lt;/p>
&lt;ul>
&lt;li>Event ingestion metrics&lt;/li>
&lt;li>Event delivery metrics&lt;/li>
&lt;li>Warehouse load metrics&lt;/li>
&lt;li>Tracking plan violations&lt;/li>
&lt;/ul>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/health-dashboard.webp" href="https://www.rudderstack.com/docs/docs/images/releases/health-dashboard.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/health-dashboard.webp"
alt="RudderStack health dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>You can also set up timely notifications for critical issues so you can take appropriate action immediately. You can configure thresholds for key alerts by source and destination, and deliver alerts to your system of choice like email, webhook, Slack, or any other tool of your choice.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/alert-channels.webp" href="https://www.rudderstack.com/docs/docs/images/releases/alert-channels.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/alert-channels.webp"
alt="Alert channels"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>For more information on this feature, see our &lt;a href="https://www.rudderstack.com/blog/feature-launch-health-dashboard-for-data-quality-monitoring-and-alerting/" >Health Dashboard for Data Quality Monitoring and Alerting&lt;/a> launch blog.&lt;/p></description></item><item><title>Releases: Feature Launch: Transformations for Real-time Schema Fixes</title><link>https://www.rudderstack.com/docs/releases/realtime-schema-fixes/</link><pubDate>Wed, 31 Jan 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/realtime-schema-fixes/</guid><description>
&lt;p>&lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking plans&lt;/a> enable you to catch violations and quarantine or drop bad data before it gets downstream. But without remedying the bad data, you’re left with an incomplete dataset and a partial picture of your customer.&lt;/p>
&lt;p>Today, we’re introducing real-time schema fixes with &lt;a href="https://www.rudderstack.com/docs/transformations/overview/" >Transformations&lt;/a> so you can fix bad data while maintaining an efficient workflow. This feature is part of our &lt;a href="https://www.rudderstack.com/product/data-quality-toolkit/" >Data Quality Toolkit&lt;/a>, a set of capabilities that help you guarantee quality data from the source so you can spend less time wrangling and more time helping your business drive revenue.&lt;/p>
&lt;p>Using Tracking plans, you can enrich your events with violation information like erroneous property names, incorrect data types, or wrong payload structures. Then, you can write transformations in JavaScript or Python to correct these violations before they impact your stakeholders downstream.&lt;/p>
&lt;p>Because transformations occur in your pipeline – after event collection and before delivery – you don’t have to worry about submitting a dev ticket. You can fix bad data in real-time without redeploying sites or apps, a critical benefit especially during code freezes.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/transformations.webp" href="https://www.rudderstack.com/docs/docs/images/releases/transformations.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/transformations.webp"
alt="Transformations for realtime schema fixes"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>For more information on this feature, see our &lt;a href="https://www.rudderstack.com/blog/feature-launch-transformations-for-real-time-schema-fixes/" >Transformations for real-time schema fixes&lt;/a> launch blog.&lt;/p></description></item><item><title>Releases: Feature launch: Tracking Plans for Violation Management</title><link>https://www.rudderstack.com/docs/releases/violation-management/</link><pubDate>Tue, 30 Jan 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/violation-management/</guid><description>
&lt;p>Bad data may be inevitable, but it doesn’t have to keep you from supporting your business. With advanced violation management via Tracking Plans, you can spend less time wrangling and more time helping your business drive revenue.&lt;/p>
&lt;p>Tracking Plans, part of RudderStack&amp;rsquo;s &lt;a href="https://www.rudderstack.com/blog/announcing-the-data-quality-toolkit-guarantee-quality-data-from-the-source/" >Data Quality Toolkit&lt;/a>, allow you to easily enforce data quality standards on your incoming events. This feature works seamlessly with the &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/" >Data Catalog&lt;/a> feature and lets you define the required attributes and expected data formats for your event data. The tracking plans then automatically evaluate every incoming event against your standards and flag violations of any type on any level – be it unplanned events, errant key/value properties, missing required fields, and so on.&lt;/p>
&lt;p>When you catch a violation, you can use RudderStack’s custom logic to determine what to do with the events based on your use cases, data volumes, and risk tolerance. You can drop the erroneous events, deliver them with a flag, or send them only to a data lake destination for replay later.&lt;/p>
&lt;p>For more information on this feature, see our &lt;a href="https://www.rudderstack.com/blog/feature-launch-tracking-plans-for-violation-management/" >Tracking Plans for Violation Management&lt;/a> launch blog.&lt;/p></description></item><item><title>Releases: Feature launch: Data Catalog</title><link>https://www.rudderstack.com/docs/releases/data-catalog/</link><pubDate>Mon, 29 Jan 2024 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/data-catalog/</guid><description>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/data-catalog-screenshot.webp" href="https://www.rudderstack.com/docs/docs/images/releases/data-catalog-screenshot.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/data-catalog-screenshot.webp"
alt="RudderStack Data Catalog screenshot"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>Data definitions should be a team sport. In the real world, though, hard-to-bridge divides exist between different business units. Development, data, and business teams have different incentives and operate independently.&lt;/p>
&lt;p>This means data teams and developers rarely get complete requirements from business teams. A shared document may be floating somewhere in the ether, but it’s often an incomplete, out-of-date spreadsheet. This scenario results in messy event instrumentation that creates issues downstream. Issues that the data team has to fix.&lt;/p>
&lt;p>With our tools for collaborative event definitions, you can align every team around the same event definitions and integrate data quality into your existing workflow. Our &lt;a href="https://www.rudderstack.com/docs/data-governance/data-catalog/" >Data Catalog&lt;/a> and &lt;a href="https://www.rudderstack.com/docs/api/event-audit-api/" >Event Audit API&lt;/a> help you guarantee quality customer data from the source.&lt;/p>
&lt;p>For more information on this feature, see our &lt;a href="https://www.rudderstack.com/blog/feature-launch-data-catalog-for-collaborative-event-definitions/" >Data Catalog&lt;/a> launch blog.&lt;/p></description></item><item><title>Releases: In-app Event Usage Reporting Enhancements</title><link>https://www.rudderstack.com/docs/releases/ssot-enhancements/</link><pubDate>Thu, 07 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/ssot-enhancements/</guid><description>
&lt;p>We have completely revamped our in-app usage reporting across Event Stream and Reverse ETL features. You can now view your usage data across time and break it down by source.&lt;/p>
&lt;p>To see this reporting feature, log in to the RudderStack dashboard and navigate to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Organization&lt;/strong> &amp;gt; &lt;strong>Usage&lt;/strong>. Here, you can view the event usage by product.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/usage/usage-tab-latest.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/usage/usage-tab-latest.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/usage/usage-tab-latest.webp"
alt="Usage tab in RudderStack dashboard"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/usage/" >Events Usage&lt;/a> guide for more information on this feature.&lt;/p></description></item><item><title>Releases: Multiple Workspaces and Environments</title><link>https://www.rudderstack.com/docs/releases/workspaces-enhancement/</link><pubDate>Thu, 07 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/workspaces-enhancement/</guid><description>
&lt;p>RudderStack now supports multiple workspaces within an organization in its &lt;a href="https://rudderstack.com/pricing/" >Starter, Growth, and Enterprise&lt;/a> plans.&lt;/p>
&lt;p>A workspace is an environment or nested grouping of resources and related settings. You can use the multiple workspaces feature for separating your development and production pipeline workflows and switch seamlessly between them. You can also add/remove members who are a part of your RudderStack organization to the relevant workspaces.&lt;/p>
&lt;html lang="en">
&lt;blockquote class="info">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 512 512" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path fill="currentColor" d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">The number of available workspaces depends on your RudderStack Cloud plan. See the &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/workspaces/#available-workspaces-by-plan" >Workspaces&lt;/a> documentation for more information.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;p>To view the workspace details and manage its settings, go to &lt;strong>Settings&lt;/strong> &amp;gt; &lt;strong>Workspace&lt;/strong> in your RudderStack dashboard.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/workspaces/workspace.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/workspaces/workspace.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/workspaces/workspace.webp"
alt="Workspace in RudderStack"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>To switch between workspaces, click &lt;strong>Workspace&lt;/strong> &amp;gt; &lt;strong>Switch workspace&lt;/strong>. Then, select the workspace you want to view.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/dashboard-guides/workspaces/switch-workspace.webp" href="https://www.rudderstack.com/docs/docs/images/dashboard-guides/workspaces/switch-workspace.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/dashboard-guides/workspaces/switch-workspace.webp"
alt="Switch workspace"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>For more information on this feature, see our &lt;a href="https://www.rudderstack.com/docs/dashboard-guides/workspaces/" >Workspaces&lt;/a> guide.&lt;/p></description></item><item><title>Releases: Reverse ETL Connection Limit Enhancement</title><link>https://www.rudderstack.com/docs/releases/retl-enhancements/</link><pubDate>Thu, 07 Dec 2023 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/retl-enhancements/</guid><description>
&lt;p>RudderStack now supports setting up to 10 &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/" >Reverse ETL&lt;/a> connections in the RudderStack &lt;a href="https://www.rudderstack.com/pricing/" >Free and Starter&lt;/a> plans and unlimited connections in the &lt;a href="https://www.rudderstack.com/pricing/" >Growth and Enterprise&lt;/a> plans.&lt;/p>
&lt;p>Earlier, our &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/" >Reverse ETL&lt;/a> feature was limited to just 1 connection for the &lt;a href="https://www.rudderstack.com/pricing/" >Free and Starter&lt;/a> plans. Now, you can set up to 10 connections to sync the customer data residing in your data warehouse to the downstream destinations of your choice.&lt;/p></description></item><item><title>Releases: Cancellable Reverse ETL Syncs</title><link>https://www.rudderstack.com/docs/releases/cancellable-syncs/</link><pubDate>Thu, 30 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/cancellable-syncs/</guid><description>
&lt;p>RudderStack lets you cancel an ongoing Reverse ETL sync at any point to fix any configuration or destination-related issues without having to contact &lt;a href="mailto:support@rudderstack.com" >RudderStack Support&lt;/a>.&lt;/p>
&lt;p>At times, there might be scenarios where you might want to cancel an ongoing sync because of the following reasons:&lt;/p>
&lt;ul>
&lt;li>Missing/incorrect mappings leading to inaccurate data for an otherwise healthy Reverse ETL pipeline&lt;/li>
&lt;li>Wrong destination configuration&lt;/li>
&lt;li>Missing required data in the warehouse table, etc.&lt;/li>
&lt;/ul>
&lt;p>Now, you can cancel your ongoing syncs by going to the &lt;strong>Syncs&lt;/strong> tab of your reverse ETL source and clicking &lt;strong>Stop Now&lt;/strong>.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/warehouse-actions-sources/stop-syncs.webp" href="https://www.rudderstack.com/docs/docs/images/warehouse-actions-sources/stop-syncs.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/warehouse-actions-sources/stop-syncs.webp"
alt="Stop syncs"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>In the confirmation popup, click &lt;strong>Stop Sync&lt;/strong> to cancel and stop the sync. RudderStack automatically cancels the sync and stops reading data from the warehouse.&lt;/p>
&lt;p>After you stop a sync, RudderStack automatically triggers this draining process in the background. The time taken for this process to complete depends on the amount of data. Hence, waiting for some time before triggering next sync is recommended.&lt;/p>
&lt;p>To read more about this feature, read our &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/syncing-events/" >Syncing Events&lt;/a> guide.&lt;/p></description></item><item><title>Releases: Health Dashboard for Pipelines and Tracking Plans Observability</title><link>https://www.rudderstack.com/docs/releases/health-dashboard/</link><pubDate>Thu, 16 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/health-dashboard/</guid><description>
&lt;p>We have released the &lt;a href="https://www.rudderstack.com/docs/data-governance/health-dashboard/" >Health dashboard&lt;/a> to help you get better observability into your &lt;a href="https://www.rudderstack.com/docs/destinations/streaming-destinations/" >Event Stream&lt;/a> pipelines and &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >tracking plans&lt;/a>.&lt;/p>
&lt;p>This dashboard gives you visibility into the event delivery and failures for all the Event Stream destinations in your workspace. You can filter your destinations by type (&lt;a href="https://www.rudderstack.com/docs/destinations/streaming-destinations/" >Cloud&lt;/a> or &lt;a href="https://www.rudderstack.com/docs/destinations/warehouse-destinations/" >Warehouse&lt;/a>) or view metrics for only the destinations that have event failures.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/features/health-dashboard/event-stream-overview.webp" href="https://www.rudderstack.com/docs/docs/images/features/health-dashboard/event-stream-overview.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/features/health-dashboard/event-stream-overview.webp"
alt="Event stream destinations overview"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>In the &lt;strong>Tracking Plans&lt;/strong> tab, you get a list of all sources connected to a tracking plan in your workspace along with metrics for validated events and violations.&lt;/p>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/features/health-dashboard/tracking-plan-overview.webp" href="https://www.rudderstack.com/docs/docs/images/features/health-dashboard/tracking-plan-overview.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/features/health-dashboard/tracking-plan-overview.webp"
alt="Tracking plans overview"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;blockquote class="success">
&lt;div class="tip-quote">
&lt;span class="callout-icon" aria-hidden="true">&lt;svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">&lt;path d="M8 16C12.4062 16 16 12.4375 16 8C16 3.59375 12.4062 0 8 0C3.5625 0 0 3.59375 0 8C0 12.4375 3.5625 16 8 16ZM11.5312 6.53125L7.53125 10.5312C7.21875 10.8438 6.75 10.8438 6.46875 10.5312L4.46875 8.53125C4.15625 8.25 4.15625 7.78125 4.46875 7.5C4.75 7.1875 5.21875 7.1875 5.53125 7.5L7 8.96875L10.4688 5.46875C10.75 5.1875 11.2188 5.1875 11.5 5.46875C11.8125 5.78125 11.8125 6.25 11.5 6.53125H11.5312Z" fill="currentColor"/>&lt;/svg>&lt;/span>
&lt;div class="tip-text">
We&amp;rsquo;re also planning to add a tab for observability into your Reverse ETL syncs in the upcoming release. Stay tuned!
&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;p>See our &lt;a href="https://www.rudderstack.com/docs/data-governance/health-dashboard/" >Health Dashboard&lt;/a> documentation for more information on this feature.&lt;/p></description></item><item><title>Releases: Tracking Plans for Growth Customers</title><link>https://www.rudderstack.com/docs/releases/tracking-plan-updates/</link><pubDate>Thu, 16 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/tracking-plan-updates/</guid><description>
&lt;p>We are thrilled to announce the expansion of our &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >Tracking Plans&lt;/a> feature! Previously exclusive to Enterprise customers, tracking plans are now available in the &lt;a href="https://rudderstack.com/pricing/" >RudderStack Cloud Growth plan&lt;/a> as well, starting November 15th.&lt;/p>
&lt;p>Tracking plans are a powerful tool that help you ensure data quality, enhancing your analytics experience. See our &lt;a href="https://www.rudderstack.com/docs/data-governance/tracking-plans/" >documentation&lt;/a> for more information on this feature.&lt;/p>
&lt;p>Before diving in, make sure to connect with your &lt;a href="mailto:support@rudderstack.com" >Customer Success&lt;/a> team for guidance.&lt;/p></description></item><item><title>Releases: Fall 2023 Product Roundup</title><link>https://www.rudderstack.com/docs/releases/fall23-roundup/</link><pubDate>Wed, 01 Nov 2023 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/releases/fall23-roundup/</guid><description>
&lt;p>RudderStack is the &lt;a href="https://www.rudderstack.com/blog/the-warehouse-native-customer-data-platform/" >warehouse native Customer Data Platform&lt;/a> and makes it easier for you to collect, unify, and activate your customer data to drive better business outcomes.&lt;/p>
&lt;p>Over the past few months, we’ve released a lot of new features and enhancements to make RudderStack a more powerful tool. Check out the product roundup below to ensure you don’t miss anything.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="the-compliance-toolkit" data-heading="The compliance toolkit" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h2 id="the-compliance-toolkit">The compliance toolkit&lt;/h2>
&lt;figure class="image--main " >
&lt;a
data-lightbox="image-images/releases/compliance-toolkit.webp" href="https://www.rudderstack.com/docs/docs/images/releases/compliance-toolkit.webp"
>
&lt;img src="https://www.rudderstack.com/docs/docs/images/releases/compliance-toolkit.webp"
alt="The RudderStack compliance toolkit"
decoding="async" loading="lazy" class="img-shortcode"/>
&lt;/a>
&lt;/figure>
&lt;p>We launched a toolkit to help you simplify compliance across the entire data lifecycle. You can now continuously manage consent, collection, storage, and deletion all within RudderStack. Each tool runs within your own data infrastructure and supports first-class integrations with compliance tools like OneTrust and Ketch.&lt;/p>
&lt;p>Read our &lt;a href="https://www.rudderstack.com/blog/announcing-the-compliance-toolkit-painless-customer-data-compliance-in-one-platform/" >launch blog&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="new-features" data-heading="New features" data-level="2" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h2 id="new-features">New features&lt;/h2>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="real-time-activation-api" data-heading="Real-time activation API" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="real-time-activation-api">Real-time activation API&lt;/h3>&lt;p>With the real-time Activation API, you can extend RudderStack Profiles to every corner of the enterprise through real-time, RudderStack-managed API. Now, anyone in your company can access your customer 360 data in real time using a single API integration.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/announcing-rudderstacks-activation-api/" >launch announcement&lt;/a> to learn more and contact the &lt;a href="mailto:product@rudderstack.com" >RudderStack Product Team&lt;/a> to join our &lt;a href="https://www.rudderstack.com/docs/resources/early-access-program/" >Early Access Program&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="profilesml" data-heading="ProfilesML" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="profilesml">ProfilesML&lt;/h3>&lt;p>ProfilesML enables you to build predictive features in your warehouse without MLOps. The new feature brings out-of-the-box predictive capabilities to RudderStack Profiles. It fits within your existing Profiles workflow, allowing you to start building predictive features in four steps:&lt;/p>
&lt;ol>
&lt;li>Choose your ProfilesML model (churn prediction and lead scoring are currently available, and more models are on the way).&lt;/li>
&lt;li>Specify the predictive feature or define it yourself.&lt;/li>
&lt;li>Push the ProfilesML project to Github and kick off a run.&lt;/li>
&lt;li>Monitor model performance and tweak as necessary.&lt;/li>
&lt;/ol>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/introducing-profilesml-build-predictive-features-in-your-warehouse-without-mlops/" >launch announcement&lt;/a> to learn more and contact the &lt;a href="mailto:product@rudderstack.com" >RudderStack Product Team&lt;/a> to join our &lt;a href="https://www.rudderstack.com/docs/resources/early-access-program/" >Early Access Program&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="real-time-braze-deduplication" data-heading="Real-time Braze deduplication" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="real-time-braze-deduplication">Real-time Braze deduplication&lt;/h3>&lt;p>With this new feature, RudderStack prevents duplicate data from being sent to Braze, saving data points and avoiding unnecessary billing overages. No more custom work and no more accidental overages from duplicate data points. The Braze deduplication feature is available in both cloud and device mode for Event Stream and for Reverse ETL pipelines.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/rudderstack-introduces-real-time-data-deduplication-for-braze/" >launch announcement&lt;/a> and the &lt;a href="https://www.rudderstack.com/docs/releases/braze-dedup/" >release notes&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="user-suppression-api" data-heading="User Suppression API" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="user-suppression-api">User Suppression API&lt;/h3>&lt;p>You can use the user suppression API suppress event collection across multiple data sources and delete user information from multiple destinations with a single endpoint.&lt;/p>
&lt;p>With this API, you can create a suppression rule that automatically stops tracking user events across data sources when a user opts out of tracking and automatically deletes user data from downstream destinations when a user requests to be forgotten.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/feature-launch-stay-compliant-with-the-user-suppression-api/" >launch announcement&lt;/a> and the &lt;a href="https://www.rudderstack.com/docs/releases/user-suppression-api/" >release notes&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="cookieless-tracking" data-heading="Cookieless tracking" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="cookieless-tracking">Cookieless tracking&lt;/h3>&lt;p>RudderStack&amp;rsquo;s cookieless tracking feature, now a part of our JavaScript SDK, gives you control over what user information you collect and where to store it, so you can adapt to fast-changing regulatory environments.&lt;/p>
&lt;p>While loading the JavaScript SDK, you can specify the user information you want to store, such as &lt;code>userId&lt;/code>, &lt;code>anonymousId&lt;/code>, and session information, and you can decide where to store it. Store data in browser cookies or use one of four cookieless storage methods: local storage, in-memory storage, session storage, or none.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/feature-launch-cookieless-tracking-puts-you-in-control/" >launch announcement&lt;/a> and the &lt;a href="https://www.rudderstack.com/docs/sources/event-streams/sdks/rudderstack-javascript-sdk/data-storage-cookies/persistent-data-storage/" >documentation&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="integrated-consent-management" data-heading="Integrated consent management" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="integrated-consent-management">Integrated consent management&lt;/h3>&lt;p>RudderStack&amp;rsquo;s consent management features give you fine-grained control of which integrations are loaded and receive customer data based on any combination of consent preferences chosen by the user.&lt;/p>
&lt;p>Our fully integrated consent solution works with first-class consent tools like OneTrust, as well as custom-built systems, and it now allows for both client-side and server-side consent categorization of each individual downstream integration.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/feature-launch-fully-integrated-consent-management/" >launch announcement&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="databricks-reverse-etl-source" data-heading="Databricks Reverse ETL source" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="databricks-reverse-etl-source">Databricks Reverse ETL source&lt;/h3>&lt;p>If you’re using Databricks, you can now easily sync data from your data lakehouse to your entire stack. This new integration is a big unlock if you’re building models or audiences in Databricks and want to push that data to marketing and product tools. It supports Databricks Unity Catalog and works with our visual data mapper and mirror mode features.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/announcing-databricks-as-a-reverse-etl-source-in-rudderstack/" >launch announcement&lt;/a> and the &lt;a href="https://www.rudderstack.com/docs/sources/reverse-etl/databricks/" >documentation&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="apache-kafka-source" data-heading="Apache Kafka source" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="apache-kafka-source">Apache Kafka source&lt;/h3>&lt;p>Our Kafka source integration enables you to automatically forward Kafka streams to key business tools and standardize schemas for data used in identity resolution and customer 360 projects – all without customer integration and pipeline work. With RudderStack, you can get more out of your Kafka implementation.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/announcing-the-rudderstack-kafka-source-integration/" >launch announcement&lt;/a> to learn more and contact the &lt;a href="mailto:product@rudderstack.com" >RudderStack Product Team&lt;/a> to join our &lt;a href="https://www.rudderstack.com/docs/resources/early-access-program/" >Early Access Program&lt;/a>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="materialize-destination" data-heading="Materialize destination" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="materialize-destination">Materialize destination&lt;/h3>&lt;p>With the RudderStack Materialize destination, you can now get the power of a data warehouse and the speed of real-time streaming. Use the Materialize destination integration to stream real-time events from RudderStack directly into &lt;a href="https://materialize.com/" >Materialize&lt;/a> – the operational data warehouse – where it’s available for real-time materialized views, alerts, and analytics. Check out the &lt;a href="https://materialize.com/docs/ingest-data/rudderstack/" >Materialize documentation&lt;/a> to learn how to set up the connection.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/blog/feature-launch-use-your-customer-data-in-real-time-with-the-materialize-integration/" >launch announcement&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="more-updates" data-heading="More updates" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="more-updates">More updates&lt;/h3>&lt;p>&lt;strong>JavaScript SDK v3&lt;/strong>&lt;/p>
&lt;p>Our latest Javascript SDK (currently in beta) is more lightweight and efficient, and it’s less vulnerable to adblockers. Best of all, you can now load specific SDK features by leveraging SDK plugins.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/docs/releases/js-sdk-v3/" >release notes&lt;/a> for more information.&lt;/p>
&lt;p>&lt;strong>JSON mapping support&lt;/strong>&lt;/p>
&lt;p>With JSON mapping, you can now map RudderStack events to a destination’s expected format using an intuitive mapping UI or a JSON text editor.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/docs/releases/json-mapper/" >release notes&lt;/a> to learn more.&lt;/p>
&lt;p>&lt;strong>Billing and plans UI enhancement&lt;/strong>&lt;/p>
&lt;p>We released a new billing and plans UI, making it easier for you to manage your RudderStack Cloud plan and update your payment and billing information.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/docs/releases/billing-plans-ui/" >release notes&lt;/a> to learn more.&lt;/p>
&lt;p>&lt;strong>Databricks Partner Connect&lt;/strong>&lt;/p>
&lt;p>RudderStack is now featured on &lt;a href="https://www.databricks.com/partnerconnect" >Databricks Partner Connect&lt;/a>, making it easy for Databricks users to get started with RudderStack directly from Databricks.&lt;/p>
&lt;p>Read the &lt;a href="https://www.rudderstack.com/docs/releases/databricks-partner-connect/" >release notes&lt;/a> to learn more.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="new-integration-releases-and-enhancements" data-heading="New integration releases and enhancements" data-level="3" data-permalink="https://www.rudderstack.com/docs/releases/fall23-roundup/" data-title="Fall 2023 Product Roundup" -->
&lt;h3 id="new-integration-releases-and-enhancements">New integration releases and enhancements&lt;/h3>&lt;p>This fall, we added a host of new sources and destinations to our &lt;a href="https://www.rudderstack.com/integration/" >integrations directory&lt;/a> and released important enhancements for many others.&lt;/p>
&lt;p>Here&amp;rsquo;s a quick summary of what&amp;rsquo;s new:&lt;/p>
&lt;ul>
&lt;li>ActiveCampaign Hybrid mode (&lt;a href="https://www.rudderstack.com/docs/releases/activecampaign-hybrid-mode/" >release notes&lt;/a>)&lt;/li>
&lt;li>Bing ads Audience rETL destination (&lt;a href="https://www.rudderstack.com/docs/releases/bing-ads-audience/" >release notes&lt;/a>)&lt;/li>
&lt;li>comScore destination (&lt;a href="https://www.rudderstack.com/docs/releases/comscore/" >release notes&lt;/a>)&lt;/li>
&lt;li>Eloqua ReverseETL destination (&lt;a href="https://www.rudderstack.com/docs/releases/eloqua/" >release notes&lt;/a>)&lt;/li>
&lt;li>Facebook Conversions destination (&lt;a href="https://www.rudderstack.com/docs/releases/facebook-conversions/" >release notes&lt;/a>)&lt;/li>
&lt;li>Ortto destination (&lt;a href="https://www.rudderstack.com/docs/releases/ortto/" >release notes&lt;/a>)&lt;/li>
&lt;li>Ortto source (&lt;a href="https://www.rudderstack.com/docs/releases/ortto-source/" >release notes&lt;/a>)&lt;/li>
&lt;/ul>
&lt;p>Enhancements:&lt;/p>
&lt;ul>
&lt;li>Google Cloud Functions enhancements (&lt;a href="https://www.rudderstack.com/docs/releases/gcf-updates/" >release notes&lt;/a>)&lt;/li>
&lt;li>Marketo Static Lists enhancement (&lt;a href="https://www.rudderstack.com/docs/releases/marketo-static-lists-enhancement/" >release notes&lt;/a>)&lt;/li>
&lt;li>Mixpanel enhancements (&lt;a href="https://www.rudderstack.com/docs/releases/mixpanel-enhancements/" >release notes&lt;/a>)&lt;/li>
&lt;li>Clevertap enhancements (&lt;a href="https://www.rudderstack.com/docs/releases/clevertap-batching/" >release notes&lt;/a>)&lt;/li>
&lt;li>Pinterest Ads mapping enhancements (&lt;a href="https://www.rudderstack.com/docs/releases/pinterest-mapping-enhancements/" >release notes&lt;/a>)&lt;/li>
&lt;/ul></description></item></channel></rss>