
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[ The Cloudflare Blog ]]></title>
        <description><![CDATA[ Get the latest news on how products at Cloudflare are built, technologies used, and join the teams helping to build a better Internet. ]]></description>
        <link>https://blog.cloudflare.com</link>
        <atom:link href="https://blog.cloudflare.com/" rel="self" type="application/rss+xml"/>
        <language>en-us</language>
        <image>
            <url>https://blog.cloudflare.com/favicon.png</url>
            <title>The Cloudflare Blog</title>
            <link>https://blog.cloudflare.com</link>
        </image>
        <lastBuildDate>Fri, 26 Jun 2026 07:58:52 GMT</lastBuildDate>
        <item>
            <title><![CDATA[Unlocking the Cloudflare app ecosystem with OAuth for all]]></title>
            <link>https://blog.cloudflare.com/oauth-for-all/</link>
            <pubDate>Wed, 24 Jun 2026 06:00:00 GMT</pubDate>
            <description><![CDATA[ Self-Managed OAuth is now available to all developers on Cloudflare. Here's how we executed a zero-downtime migration of our core OAuth engine to make it happen. ]]></description>
            <content:encoded><![CDATA[ <p>Cloudflare provides services that help run 20% of the web, but we don’t do it alone. Developers on our platform use a myriad of tools and services from other companies too. Cloudflare provides a rich API for our platform that enables developers to create automations, CI/CD, and integrations that glue together the various parts of their infrastructure. Earlier this month, we announced <a href="https://developers.cloudflare.com/changelog/post/2026-06-03-public-oauth-clients/"><u>self-managed OAuth</u></a>, making it easier for customers to create and manage their own OAuth clients for delegated access to the Cloudflare API.</p><p>Cloudflare isn’t new to OAuth. If you’ve used Wrangler, or used integrations from partners like PlanetScale, then you’ve already used it. However, until now, third-party OAuth was only available through a small number of manually onboarded integrations, and was not available to developers more broadly. That meant developers building their own integrations had to rely on API tokens, which are harder to manage and a poor fit for many delegated application flows. </p><p>Over the last year, we onboarded a growing number of early partners while improving the consent, revocation, and security model behind Cloudflare OAuth. But as our Developer Platform grew and agentic tools drove demand for delegated access, it became clear that opening up OAuth to all customers was critical to the success of our platform. </p><p>With self-managed OAuth, developers can now offer a standard OAuth flow where customers grant scoped access directly, making it easier to build SaaS integrations, internal developer platforms, and agentic tools while giving users clearer consent, easier revocation, and more control over what an application can do.</p>
    <div>
      <h2>Scaling the ecosystem securely</h2>
      <a href="#scaling-the-ecosystem-securely">
        
      </a>
    </div>
    <p>While our earlier OAuth solution was sufficient for a small number of carefully managed partners, we realized that our permissions model, our consent experience, and our ways of mitigating potential abuse vectors were not mature enough. </p><p>Earlier this year we <a href="https://blog.cloudflare.com/improved-developer-security/#improving-the-oauth-consent-experience"><u>updated our consent experience</u></a> to make it clearer which application is requesting access, and what permissions it will receive. We also added revocation to the dashboard so developers can easily control which applications have access to their data, and made app ownership more visible to prevent OAuth phishing attacks. </p><p>Opening self-managed OAuth to all customers also required major upgrades to our underlying OAuth engine. This process required a large amount of planning to do with minimal user interruption, while also ensuring data stability and security.</p>
    <div>
      <h2>Planning the upgrade to our OAuth engine</h2>
      <a href="#planning-the-upgrade-to-our-oauth-engine">
        
      </a>
    </div>
    <p>Years ago, we deployed <a href="https://github.com/ory/hydra"><u>Hydra</u></a>, an open-source OAuth engine, to power Cloudflare OAuth under the hood. That deployment served us well when usage was limited, but as the developer platform grew and agentic workflows became more common, it became clear that we needed a major upgrade to unlock new capabilities and improve performance. </p><p>As we planned the upgrade, we decided to do two smaller sequential upgrades rather than doing one large upgrade.  First, we would move to the latest 1.X release, evaluate any behavior or performance changes, and then proceed with the 2.X upgrade.</p><p>During our upgrade planning, it became clear that even the 1.X upgrade would<i> </i>still impact customers because the Hydra database required extensive schema migrations that:</p><ol><li><p>Created indexes in a manner that would claim an exclusive lock on critical tables, preventing active users from performing important OAuth operations </p></li><li><p>Added columns to critical tables, and moved other columns to new tables</p></li></ol><p>There was also a quirk in the version of Hydra we were using in which the SDK would perform SELECT * operations, causing deserialization issues with the schema changes.</p><p>To prevent user impact, we rewrote the SQL migrations to use features such as CREATE INDEX CONCURRENTLY, and built a custom version of Hydra which selected explicit columns rather than SELECT *.</p><p>With the latest 1.X upgrade planned out, we now needed to create a plan for the even larger 2.X upgrade. We identified three potential options, and weighed the benefits and drawbacks of each one. Doing an in-place upgrade was not going to work for us, due to the sheer amount of schema changes the major version bump brought with it. We decided that a blue-green strategy would work, but there was more that needed to be done than simply flipping a switch to start using the new version. The upgrade and migration process would take multiple hours, and we needed the system to continue functioning correctly in that time window.</p><p>The first blue-green option would involve disabling writes to the database, preventing any new authorizations from occurring. This means they would not be lost in the transition, but it also meant that nobody would be able to use existing OAuth apps unless they already had a valid credential. It also presented another large problem: if users needed to revoke access from an application for any reason, it would not be possible while the upgrade was being performed.</p><p>To combat these issues, we came up with a way to leave writes to the database enabled, at the cost of losing some of them in the switch to the green version. The first thing to solve was minimizing the number of writes for new tokens. There was an operational lever we pulled: increasing the expiry time of tokens to multiple hours. This would allow apps that received new tokens before the upgrade to continue using them without needing to refresh.</p><p>With reducing writes solved, we needed to come up with a way to not lose any revocations our users performed during the upgrade window. To do this, we created a queue system (using <a href="https://developers.cloudflare.com/queues/"><u>Cloudflare Queues</u></a>!) which, after a revocation event, would have a record written into the queue with information about that revocation. This would allow us to drain the queue with the database flipped to the green version, replaying all revocation events that took place in the time window in which they would have been lost. This was critical to get right, otherwise applications that users had revoked would inadvertently have their access restored.</p>
    <div>
      <h2>Executing the upgrade</h2>
      <a href="#executing-the-upgrade">
        
      </a>
    </div>
    
    <div>
      <h3>Upgrading to 1.X</h3>
      <a href="#upgrading-to-1-x">
        
      </a>
    </div>
    <p>From an operational point of view, our first upgrade to the last 1.X release went off without any hitches. Our custom database migrations ran faster than we expected, with no user impact. We had to do a hard cutover to the new version because the old version was unable to introspect tokens that were created by the newer version.</p><p>After the cutover, we saw an increase in refresh token errors that we had not seen before. This ended up being due to stricter refresh invalidation behaviors in the new version; if a refresh token was reused, Hydra would invalidate the whole access and refresh token chain. This is problematic for Wrangler and MCP clients. These clients both have a high request volume, and a single reused refresh token would invalidate the entire session.</p><p>We mitigated this by adding refresh token coalescing behavior to our Worker which routes OAuth traffic to the correct destination. This allowed us to briefly cache the refresh token request before it reached Hydra, so that if we detected a retry we could short-circuit the request and respond without invalidating the tokens. Fortunately, 2.X versions of Hydra have a configurable “refresh token grace period”, which resolves this by allowing a refresh token to be retried for a period of time without invalidating the whole chain.</p>
    <div>
      <h3>Upgrading to 2.X</h3>
      <a href="#upgrading-to-2-x">
        
      </a>
    </div>
    <p>Since multiple hours of high user-facing impact would not be acceptable, we had our blue-green upgrade strategy set. At a high level, this sounds simple; the migrations would run on a copy of our production database, and then cut over along with the new Hydra version after they complete. In reality, there were a <i>lot </i>more moving parts:</p><ul><li><p>Enable revocation replay capture queue</p></li><li><p>Copy and restore our database to the new target</p></li><li><p>Targeted data cleanup — existing data violated some new constraints introduced in the newer versions, which could prevent migrations from succeeding</p></li><li><p>Perform cutovers on the Hydra service along with two additional critical internal systems simultaneously to prevent any errors</p></li><li><p>Post-cutover monitoring and validation</p></li></ul>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/tbiQb2wX9zyyC2n6cOMmv/706bacb728d5abef09117c3893ec288d/hydra_upgrade_diagram.png" />
          </figure><p>We chose an upgrade window when Hydra had the lowest request volume per second to minimize lost token writes. Other than some timeout tuning, our production migrations ran well against the new database: the net runtime in production was approximately three hours. After the migrations completed, we carefully rolled out the new version of the Hydra service, along with two additional system configs to flip our systems to use the new SDK version.</p><p>Shortly after cutting traffic over, we observed that a data cleanup job in our authorization service (which relies on the Hydra consent session API) was being overeager in its purging of OAuth policy data. After investigation, we discovered that there was an issue in one of the Hydra migrations that corrupted the state of certain valid OAuth sessions, which resulted in the migration marking them as invalid. The valid sessions being corrupted caused a disagreement between Hydra and our authorization service, manifesting as an increase in 403s. To mitigate this, we did data restorations and began work on improvements for OAuth authorization behaviors to remove reliance on static policy data.</p><p>Beyond the data cleanup issue, there were some additional small fixes more driven by specific client behaviors which we landed quickly. </p><p>With the Hydra version upgrade complete, OAuth traffic has remained stable with improved system performance and reliability for our customers. It also brought production onto the same foundation our newer OAuth APIs had already been validated against in staging, clearing the way for our <a href="https://developers.cloudflare.com/changelog/post/2026-06-03-public-oauth-clients/"><u>self-managed OAuth release on June 3</u></a>. </p>
    <div>
      <h2>Performance improvements</h2>
      <a href="#performance-improvements">
        
      </a>
    </div>
    <p>After completing a large upgrade like this, it is always rewarding and illuminating to look at some broad metrics about the impact. We gathered additional metrics during the database migrations, and observed considerable performance improvements after the upgrade was complete.</p>
    <div>
      <h3>Database</h3>
      <a href="#database">
        
      </a>
    </div>
    
<table><colgroup>
<col></col>
<col></col>
</colgroup>
<thead>
  <tr>
    <th><span>Metric</span></th>
    <th><span>Approx. Value</span></th>
  </tr></thead>
<tbody>
  <tr>
    <td><span>Rows updated</span></td>
    <td><span>132.5M</span></td>
  </tr>
  <tr>
    <td><span>Rows inserted</span></td>
    <td><span>114.7M</span></td>
  </tr>
  <tr>
    <td><span>Temp bytes</span></td>
    <td><span>136.97GB</span></td>
  </tr>
  <tr>
    <td><span>Transaction commits</span></td>
    <td><span>22.2k</span></td>
  </tr>
</tbody></table>
    <div>
      <h3>Hydra performance</h3>
      <a href="#hydra-performance">
        
      </a>
    </div>
    
<table><colgroup>
<col></col>
<col></col>
<col></col>
<col></col>
</colgroup>
<thead>
  <tr>
    <th><span>Metric (avg)</span></th>
    <th><span>Before</span></th>
    <th><span>After</span></th>
    <th><span>Change</span></th>
  </tr></thead>
<tbody>
  <tr>
    <td><span>API P95</span></td>
    <td><span>185ms</span></td>
    <td><span>101ms</span></td>
    <td><span>-45%</span></td>
  </tr>
  <tr>
    <td><span>RSS memory</span></td>
    <td><span>888MB</span></td>
    <td><span>763MB</span></td>
    <td><span>-14%</span></td>
  </tr>
  <tr>
    <td><span>Go heap alloc</span></td>
    <td><span>449MB</span></td>
    <td><span>271MB</span></td>
    <td><span>-40%</span></td>
  </tr>
  <tr>
    <td><span>Goroutines</span></td>
    <td><span>4015</span></td>
    <td><span>3076</span></td>
    <td><span>-23%</span></td>
  </tr>
  <tr>
    <td><span>CPU</span></td>
    <td><span>1.07 cores</span></td>
    <td><span>0.67 cores</span></td>
    <td><span>-37%</span></td>
  </tr>
</tbody></table>
    <div>
      <h2>Self-managed OAuth for all</h2>
      <a href="#self-managed-oauth-for-all">
        
      </a>
    </div>
    <p>Opening up OAuth to all customers is an important step toward a broader Cloudflare app ecosystem. Today, any Cloudflare customer can create their own OAuth applications and build integrations on top of Cloudflare. We’re extremely excited to launch Cloudflare self-managed OAuth for all. </p><p>To get started, take a look at our <a href="https://developers.cloudflare.com/fundamentals/oauth/"><u>documentation</u></a> or jump straight to the OAuth apps page in the <a href="https://dash.cloudflare.com/?to=/:account/oauth-clients"><u>dashboard</u></a> and create your first OAuth app.</p> ]]></content:encoded>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[API]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[OAuth]]></category>
            <category><![CDATA[Developer Platform]]></category>
            <category><![CDATA[Agents]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Cloudflare Media Platform]]></category>
            <category><![CDATA[Identity]]></category>
            <guid isPermaLink="false">77AgsHNNnpUDvP0Z6gqgp6</guid>
            <dc:creator>Sam Cabell</dc:creator>
            <dc:creator>Mike Escalante</dc:creator>
            <dc:creator>Adam Bouhmad</dc:creator>
            <dc:creator>Nick Comer</dc:creator>
        </item>
        <item>
            <title><![CDATA[How we built Organizations to help enterprises manage Cloudflare at scale]]></title>
            <link>https://blog.cloudflare.com/organizations-beta/</link>
            <pubDate>Mon, 06 Apr 2026 21:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare Organizations is now in public beta, introducing a new management layer for enterprise customers with multiple accounts. Learn how we consolidated our authorization systems to enable org-wide management.  ]]></description>
            <content:encoded><![CDATA[ <p>Cloudflare was designed to be simple to use for even the smallest customers, but it’s also critical that it scales to meet the needs of the largest enterprises. While smaller customers might work solo or in a small team, enterprises often have thousands of users making use of Cloudflare’s developer, security, and networking capabilities. This scale can add complexity, as these users represent multiple teams and job functions. </p><p>Enterprise customers often use multiple <a href="https://developers.cloudflare.com/fundamentals/account/create-account/"><u>Cloudflare Accounts</u></a> to segment their teams (allowing more autonomy and separation of roles), but this can cause a new set of problems for the administrators by fragmenting their controls.</p><p>That’s why today, we’re launching our new Organizations feature in beta — to provide a cohesive place for administrators to manage users, configurations, and view analytics across many Cloudflare Accounts. </p>
    <div>
      <h2>Principle of least privilege</h2>
      <a href="#principle-of-least-privilege">
        
      </a>
    </div>
    <p>The principle of least privilege is one of the driving factors behind enterprises using multiple accounts. While Cloudflare’s role-based access control (RBAC) system now offers <a href="https://developers.cloudflare.com/changelog/post/2025-10-01-fine-grained-permissioning-beta/"><u>fine-grained permissions</u></a> for many resources, it can be cumbersome to enumerate all the resources one by one. Instead, we see enterprises use multiple accounts, so each team’s resources are managed by that team alone. This allows organic growth within the account: they can add new resources as needed, without giving Administrative control too widely. </p><p>While multiple accounts are great at limiting permissions for most of the users within an organization, they complicate things for the administrators, as the administrators need to be added to every account and given the appropriate permissions to handle tasks like reporting or setting policies. This situation is fragile, as other administrators could remove them.</p>
    <div>
      <h2>Organizations</h2>
      <a href="#organizations">
        
      </a>
    </div>
    <p>We designed <a href="https://developers.cloudflare.com/fundamentals/organizations/"><u>Cloudflare Organizations</u></a> with these scenarios in mind. Organizations adds a new layer to the hierarchy so that administrators can manage a collection of accounts together. Organizations is built on top of the <a href="https://developers.cloudflare.com/tenant/"><u>Tenant</u></a> system, which we created to support the needs of Cloudflare’s partner ecosystem. This provides a strong foundation for the many new features we’ve built with enterprises in mind. </p>
    <div>
      <h3>Features</h3>
      <a href="#features">
        
      </a>
    </div>
    
    <div>
      <h4>Account list</h4>
      <a href="#account-list">
        
      </a>
    </div>
    <p>The account list is at the core of the organization. This is a flat list of all the accounts that have been onboarded to the organization. “Org Super Administrator” is a new user role that is managed at the organization level; users with this role can add more accounts to the list as long as they are a Super Administrator of the account as well.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4LThxKEAFT6H3Tb8YypZUj/53baf77029a6da59b9cc2fd13be04f5d/BLOG-3245image2.png" />
          </figure>
    <div>
      <h4>Org Super Administrators</h4>
      <a href="#org-super-administrators">
        
      </a>
    </div>
    <p>Org Super Administrators have Super Administrator permissions to every account in the organization. They do not require a membership in any of the child accounts and will not be listed in the account level UI. Org Super Administrator is the first of many roles we anticipate adding at the organization layer over the course of the year.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2z7czWidmYeFay9jx6Gv4W/b1ebea039f5dc1e64c7dea9e30d4aa59/BLOG-3245image6.png" />
          </figure><p>This feature was the culmination of a major <a href="https://github.com/resources/articles/innersource"><u>innersource development</u></a> project that we ran within the organization to remove legacy codepaths and consolidate every authorization check on our <a href="https://blog.cloudflare.com/domain-scoped-roles-ga/"><u>domain-scoped roles system</u></a>. We added almost 133,000 lines of new code and removed about 32,000 lines of old code in support of this, making it one of the largest changes to our permissions system ever. This foundational improvement will make it easier to deliver additional roles in the future, both at the organization and account levels. We also made a 27% performance improvement in how we check permissions on enumeration calls like /accounts or /zones, which previously struggled with users that have access to thousands of accounts.</p>
    <div>
      <h4>Analytics</h4>
      <a href="#analytics">
        
      </a>
    </div>
    <p>Org super administrators can view a roll-up dashboard complete with analytics about their HTTP traffic from across all accounts and zones. HTTP traffic analytics is the first of many analytics dashboards that we expect to deliver over the course of the year as we add this feature for more products. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4GMhq9wMeoU95gawztpCXB/5cdba02f65008df0dc0a1327c9e242b9/BLOG-3245image4.png" />
          </figure>
    <div>
      <h4>Shared configurations</h4>
      <a href="#shared-configurations">
        
      </a>
    </div>
    <p>Managing shared policies across your organization allows one team to centrally manage features like WAF (Web Application Firewall) or Gateway policies. Org Super Administrators will have the ability to share a policy set from one account to the rest of the accounts within the organization. That means any users in the source account with permission to manage those configurations can update the policy sets. So security analysts can update WAF rules for an entire enterprise centrally, without needing to be org administrators or administrators of other accounts in the organization. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2S3NWXMyP6vl5EyeYC79qB/205c49f2e829509b7e7ea19fe6e1ef34/BLOG-3245image1.png" />
          </figure>
    <div>
      <h2>Roadmap</h2>
      <a href="#roadmap">
        
      </a>
    </div>
    <p>We’ve limited the initial launch of Organizations only to enterprise customers, but will be expanding it to all customers in the coming months starting with pay-as-you-go customers. We’ll be working to extend this to our partner ecosystem too, but have a number of special scenarios we need to address for them before we do.</p><p>There’s a lot more on the roadmap in this space. Keep an eye on the <a href="https://developers.cloudflare.com/changelog/"><u>changelog</u></a> for capabilities coming soon:</p><ul>
    <li>
        Organization-level audit logs
    </li>
    <li>
        Organization-level billing reports
    </li>
    <li>
        More organization-level analytics reports
    </li>
    <li>
        Additional organization user roles
    </li>
    <li>
        Self-serve account creation
    </li>
</ul>
    <div>
      <h2>A security-first rollout</h2>
      <a href="#a-security-first-rollout">
        
      </a>
    </div>
    <p>Organizations is rolling out in public beta over the next several days to enterprise customers. In introducing Organizations, our own key requirements are that we do not elevate privilege for any users, and that customers create just one organization each. To deliver on those requirements, we elected not to do a backfill and create organizations on your behalf, and are instead using a self-serve invitation process. </p><p>If you are a Super Administrator of an enterprise account, and nobody else has created an organization for your company, then you will see an invitation to create an organization in your Cloudflare dashboard. Once you have created an organization, you can add accounts to the organization if you are a super administrator of that account as well.</p><p>If another user in your company has already claimed the organization, then they can either invite you as an Org Super Administrator so that you can add your accounts to the organization, or you can invite them as a Super Administrator of your account, so they can add your account to the organization. This process ensures that no user ever gets permission to a Cloudflare account where a Super Administrator was not involved in approving it. Cloudflare support will not be making configuration changes on behalf of customers, so plan to work with other administrators to complete your internal rollout of Organizations. </p>
    <div>
      <h2>Get started</h2>
      <a href="#get-started">
        
      </a>
    </div>
    <p>If you’re a Super Administrator of an enterprise account, claim your company’s organization now. There is no additional fee for using Organizations. You can find more details on how to get started in the Dashboard under the new Organizations tab, or at our <a href="https://developers.cloudflare.com/fundamentals/organizations/"><u>developer docs</u></a>. </p><p>If you’re not an enterprise customer, keep an eye on our <a href="https://developers.cloudflare.com/changelog/"><u>changelog</u></a> for more information about when Organizations will be available for your plan. And to learn more about our enterprise offerings, our <a href="https://www.cloudflare.com/plans/enterprise/contact/"><u>enterprise sales team</u></a> can get you started today.</p> ]]></content:encoded>
            <category><![CDATA[Identity]]></category>
            <category><![CDATA[Enterprise]]></category>
            <guid isPermaLink="false">5wIrgcYpkdmQZSnU1skUjM</guid>
            <dc:creator>Justin Hutchings</dc:creator>
            <dc:creator>Adam Bouhmad</dc:creator>
            <dc:creator>Nick Zylstra</dc:creator>
        </item>
        <item>
            <title><![CDATA[What’s new in Cloudflare: Account Owned Tokens and Zaraz Automated Actions]]></title>
            <link>https://blog.cloudflare.com/account-owned-tokens-automated-actions-zaraz/</link>
            <pubDate>Thu, 14 Nov 2024 14:00:00 GMT</pubDate>
            <description><![CDATA[ Cloudflare customers can now create Account Owned Tokens , allowing more flexibility around access control for their Cloudflare services. Additionally, Zaraz Automation Actions streamlines event tracking and third-party tool integration.  ]]></description>
            <content:encoded><![CDATA[ <p>In October 2024, we started publishing roundup blog posts to share the latest features and updates from our teams. Today, we are announcing general availability for Account Owned Tokens, which allow organizations to improve access control for their Cloudflare services. Additionally, we are launching Zaraz Automated Actions, which is a new feature designed to streamline event tracking and tool integration when setting up third-party tools. By automating common actions like pageviews, custom events, and e-commerce tracking, it removes the need for manual configurations.</p>
    <div>
      <h2>Improving access control for Cloudflare services with Account Owned Tokens</h2>
      <a href="#improving-access-control-for-cloudflare-services-with-account-owned-tokens">
        
      </a>
    </div>
    <p>Cloudflare is critical infrastructure for the Internet, and we understand that many of the organizations that build on Cloudflare rely on apps and integrations outside the platform to make their lives easier. In order to allow access to Cloudflare resources, these apps and integrations interact with Cloudflare via our API, enabled by access tokens and API keys. Today, the API Access Tokens and API keys on the Cloudflare platform are owned by individual users, which can lead to some difficulty representing services, and adds an additional dependency on managing users alongside token permissions.</p>
    <div>
      <h3>What’s new about Account Owned Tokens</h3>
      <a href="#whats-new-about-account-owned-tokens">
        
      </a>
    </div>
    <p>First, a little explanation because the terms can be a little confusing. On Cloudflare, we have both Users and Accounts, and they mean different things, but sometimes look similar. Users are people, and they sign in with an email address. Accounts are not people, they’re the top-level bucket we use to organize all the resources you use on Cloudflare. Accounts can have many users, and that’s how we enable collaboration. If you use Cloudflare for your personal projects, both your User and Account might have your email address as the name, but if you use Cloudflare as a company, the difference is more apparent because your user is “<a href="#"><u>joe.smith@example.com</u></a>” and the account might be “Example Company”. </p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5tcNkxDjYz9jAXnfV0bPON/920a9dade7145de2adee21afa43d786e/image13.jpg" />
          </figure><p>Account Owned Tokens are not confined by the permissions of the creating user (e.g. a user can never make a token that can edit a field that they otherwise couldn’t edit themselves) and are scoped to the account they are owned by. This means that instead of creating a token belonging to the user “<a href="#"><u>joe.smith@example.com</u></a>”, you can now create a token belonging to the account “Example Company”.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/ibh4sT2wgVLVTgqgv2rtO/eb972a5b1c5fa0f70471631430a8ff91/image8.jpg" />
          </figure><p>The ability to make these tokens, owned by the account instead of the user, allows for more flexibility to represent what the access should be used for.</p><p>Prior to Account Owned Tokens, customers would have to have a user (<a href="#"><u>joe.smith@example.com</u></a>) create a token to pull a list of Cloudflare zones for their account and ensure their security settings are set correctly as part of a compliance workflow, for example. All of the actions this compliance workflow does are now attributed to joe.smith, and if joe.smith leaves the company and his permissions are revoked, the compliance workflow fails.</p><p>With this new release, an Account Owned Token could be created, named “compliance workflow”, with permissions to do this operation independently of <a href="#"><u>joe.smith@example.com</u></a>. All actions this token does are attributable to “compliance workflow”. This token is visible and manageable by all the superadmins on your Cloudflare account. If joe.smith leaves the company, the access remains independent of that user, and all super administrators on the account moving forward can still see, edit, roll, and delete the token as needed.</p><p>Any long-running services or programs can be represented by these types of tokens, be made visible (and manageable) by all super administrators in your Cloudflare account, and truly represent the service, instead of the users managing the service. Audit logs moving forward will log that a given token was used, and user access can be kept to a minimum.</p>
    <div>
      <h3>Getting started</h3>
      <a href="#getting-started">
        
      </a>
    </div>
    <p>Account Owned Tokens can be found on the new “API Tokens” tab under the “Manage Account” section of your Cloudflare dashboard, and any Super Administrators on your account have the capability to create, edit, roll, and delete these tokens. The API is the same, but at a new <code>/account/&lt;accountId&gt;/tokens</code> endpoint.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/uZFVUp1RRP1NgZli9RAYN/5e2b90bea51b7b45bb25478120fd9024/Screenshot_2024-11-13_at_20.14.43.png" />
          </figure>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1kiUi4lsJESJqr9HhgCS92/b4b0a3e955742346a5c945601fff4885/image3.png" />
          </figure>
    <div>
      <h3>Why/where should I use Account Owned Tokens?</h3>
      <a href="#why-where-should-i-use-account-owned-tokens">
        
      </a>
    </div>
    <p>There are a few places we would recommend replacing your User Owned Tokens with Account Owned Tokens:</p><p>1. <b>Long-running services that are managed by multiple people:</b> When multiple users all need to manage the same service, Account Owned Tokens can remove the bottleneck of requiring a single person to be responsible for all the edits, rotations, and deletions of the tokens. In addition, this guards against any user lifecycle events affecting the service. If the employee that owns the token for your service leaves the company, the service’s token will no longer be based on their permissions.</p><p>2.<b> Cloudflare accounts running any services that need attestable access records beyond user membership:</b> By restricting all of your users from being able to access the API, and consolidating all usable tokens to a single list at the account level, you can ensure that a complete list of all API access can be found in a single place on the dashboard, under “Account API Tokens”.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/2qtssh6bef5Ne6kugqUUnc/af11e3db733f4f38188988ac42034c26/image9.png" />
          </figure><p>3. <b>Anywhere you’ve created “Service Users”:</b> “Service Users”, or any identity that is meant to allow multiple people to access Cloudflare, are an active threat surface. They are generally highly privileged, and require additional controls (vaulting, password rotation, monitoring) to ensure non-repudiation and appropriate use. If these operations solely require API access, consolidating that access into an Account Owned Token is safe.</p>
    <div>
      <h3>Why/where should I use User Owned Tokens?</h3>
      <a href="#why-where-should-i-use-user-owned-tokens">
        
      </a>
    </div>
    <p>There are a few scenarios/situations where you should continue to use User Owned Tokens:</p><ol><li><p><b>Where programmatic access is done by a single person at an external interface:</b> If a single user has an external interface using their own access privileges at Cloudflare, it still makes sense to use a personal token, so that information access can be traced back to them. (e.g. using a personal token in a data visualization tool that pulls logs from Cloudflare)</p></li><li><p><a href="https://developers.cloudflare.com/api/operations/user-user-details"><b><u>User level operations</u></b></a><b>:</b> Any operations that operate on your own user (e.g. email changes, password changes, user preferences) still require a user level token.</p></li><li><p><b>Where you want to control resources over multiple accounts with the same credential:</b> As of November 2024, Account Owned Tokens are scoped to a single account. In 2025, we want to ensure that we can create cross-account credentials, anywhere that multiple accounts have to be called in the same set of operations should still rely on API Tokens owned by a user.</p></li><li><p><b>Where we currently do not support a given endpoint:</b> We are currently in the process of working through a <a href="https://developers.cloudflare.com/fundamentals/api/get-started/account-owned-tokens/"><u>list of our services</u></a> to ensure that they all support Account Owned Tokens. When interacting with any of these services that are not supported programmatically, please continue to use User Owned Tokens.</p></li><li><p><b>Where you need to do token management programmatically:</b> If you are in an organization that needs to create and delete large numbers of tokens programmatically, please continue to use User Owned Tokens. In late 2024, watch for the “Create Additional Tokens” template on the Account Owned Tokens Page. This template and associated created token will allow for the management of additional tokens.</p></li></ol>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4BGL99WFnh4oOgTFhRY5N3/26bca9fa8851729d4128c2836db62c3c/image6.png" />
          </figure>
    <div>
      <h3>What does this mean for my existing tokens and programmatic access moving forward?</h3>
      <a href="#what-does-this-mean-for-my-existing-tokens-and-programmatic-access-moving-forward">
        
      </a>
    </div>
    <p>We do not plan to decommission User Owned Tokens, as they still have a place in our overall access model and are handy for ensuring user-centric workflows can be implemented.</p><p>As of November 2024, we’re still working to ensure that ALL of our endpoints work with Account Owned Tokens, and we expect to deliver additional token management improvements continuously, with an expected end date of Q3 2025 to cover all endpoints.</p><p>A list of services that support, and do not support, Account Owned Tokens can be found in our <a href="https://developers.cloudflare.com/fundamentals/api/get-started/account-owned-tokens/"><u>documentation.</u></a></p>
    <div>
      <h3>What’s next?</h3>
      <a href="#whats-next">
        
      </a>
    </div>
    <p>If Account Owned Tokens could provide value to your or your organization, documentation is available <a href="https://developers.cloudflare.com/fundamentals/api/get-started/account-owned-tokens/"><u>here</u></a>, and you can give them a try today from the “API Tokens” menu in your dashboard.</p>
    <div>
      <h2>Zaraz Automated Actions makes adding tools to your website a breeze</h2>
      <a href="#zaraz-automated-actions-makes-adding-tools-to-your-website-a-breeze">
        
      </a>
    </div>
    
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/5DkxlchIDUZbQ15x0H0usK/eb656617c1c83805bda98c7dfe896bda/image2.png" />
          </figure><p><a href="https://www.cloudflare.com/en-gb/application-services/products/zaraz/"><u>Cloudflare Zaraz</u></a> is a tool designed to manage and optimize third-party tools like analytics, marketing tags, or social media scripts on websites. By loading these third-party services through Cloudflare’s network, Zaraz improves website performance, security, and privacy. It ensures that these external scripts don't slow down page loading times or expose sensitive user data, as it handles them efficiently through Cloudflare's global network, reducing latency and improving the user experience.</p><p>Automated Actions are a new product feature that allow users to easily setup page views, custom events, and e-commerce tracking without going through the tedious process of manually setting up triggers and actions.</p>
    <div>
      <h3>Why we built Automated Actions</h3>
      <a href="#why-we-built-automated-actions">
        
      </a>
    </div>
    <p>An action in Zaraz is a way to tell a third party tool that a user interaction or event has occurred when certain conditions, defined by <a href="https://developers.cloudflare.com/zaraz/custom-actions/create-trigger/"><u>triggers</u></a>, are met. You create actions from within the tools page, associating them with specific tools and triggers.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/6a0xBA0uG55z4mhVkN0aYl/10101523491c68e4f2eec022737d15d4/image12.png" />
          </figure><p>Setting up a tool in Zaraz has always involved a few steps: <a href="https://developers.cloudflare.com/zaraz/custom-actions/create-trigger/"><u>configuring a trigger</u></a>, <a href="https://developers.cloudflare.com/zaraz/custom-actions/create-action/"><u>linking it to a tool action</u></a> and finally calling <a href="https://developers.cloudflare.com/zaraz/web-api/track/"><code><u>zaraz.track()</u></code></a>. This process allowed advanced configurations with complex rules, and while it was powerful, it occasionally left users confused — why isn’t calling <code>zaraz.track()</code> enough? We heard your feedback, and we’re excited to introduce <b>Zaraz Automated Actions</b>, a feature designed to make Zaraz easier to use by reducing the amount of work needed to configure a tool.</p><p>With Zaraz Automated Actions, you can now automate sending data to your third-party tools without the need to create a manual configuration. Inspired by the simplicity of <a href="https://developers.cloudflare.com/zaraz/web-api/ecommerce/"><code><u>zaraz.ecommerce()</u></code></a>, we’ve extended this ease to all Zaraz events, removing the need for manual trigger and action setup. For example, calling <code>zaraz.track(‘myEvent’)</code> will send your event to the tool without the need to configure any triggers or actions.</p>
    <div>
      <h3>Getting started with Automated Actions</h3>
      <a href="#getting-started-with-automated-actions">
        
      </a>
    </div>
    <p>When adding a new tool in Zaraz, you’ll now see an additional step where you can choose one of three Automated Actions: <b>pageviews</b>, <b>all other events</b>, or <b>ecommerce</b>. These options allow you to specify what kind of events you want to automate for that tool.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1LRtb8XpSukCAgmK7uIA5Y/ab11ae9b58f474d08893b496a0eea764/image7.png" />
          </figure><ul><li><p><b>Pageviews</b>: Automatically sends data to the tool whenever someone visits a page on your site, without any manual configuration.</p></li><li><p><b>All other events</b>: Sends all custom events triggered using zaraz.track() to the selected tool, making it easy to automate tracking of user interactions.</p></li><li><p><b>Ecommerce</b>: Automatically sends all e-commerce events triggered via zaraz.ecommerce() to the tool, streamlining your sales and transaction tracking.</p></li></ul><p>These Automated Actions are also available for all your existing tools, which can be toggled on or off from the tool detail page in your Zaraz dashboard. This flexibility allows you to fine-tune which actions are automated based on your needs.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/xy1tIfYTfOo7p2IUeCS5d/42b26d6cfc4c05d8adc67edfc38ac34c/image10.png" />
          </figure>
    <div>
      <h3>Custom actions for tools without Automated Action support</h3>
      <a href="#custom-actions-for-tools-without-automated-action-support">
        
      </a>
    </div>
    <p>Some tools do not support automated actions because the tool itself does not support page view, custom, or e-commerce events. For such tools you can still create your own custom actions, just like before. Custom actions allow you to configure specific events to send data to your tools based on unique triggers. The process remains the same, and you can follow the detailed steps outlined in our<a href="https://developers.cloudflare.com/zaraz/get-started/create-actions/"> <u>Create Actions guide</u></a>. Remember to set up your trigger first, or choose an existing one, before configuring the action.</p>
    <div>
      <h4>Automatically enrich your payload</h4>
      <a href="#automatically-enrich-your-payload">
        
      </a>
    </div>
    <p>When creating a custom action, it is now easier to send Event Properties using the <b>Include Event Properties field.</b> When this is toggled on, you can automatically send client-specific data with each action, such as user behavior or interaction details. For example, to send an <code>userID</code> property when sending a <code>click</code> event you can do something like this: <code>zaraz.track(‘click’, { userID: “foo” })</code>.</p><p>Additionally, you can enable the <b>Include System Properties</b> option to send system-level information, such as browser, operating system, and more. In your action settings click on “Add Field”, pick the “Include System Properties”, click on confirm and then toggle the field on. </p><p>For a full list of system properties, visit our<a href="https://developers.cloudflare.com/zaraz/reference/context/"> <u>System Properties reference guide</u></a>. These options give you greater flexibility and control over the data you send with custom actions.</p><p>These two fields replace the now deprecated “Enrich Payload” dropdown field.</p>
          <figure>
          <img src="https://cf-assets.www.cloudflare.com/zkvhlag99gkb/73nCsNmeG58p6n0ylxMV8E/5cb87b516aaceb38319f9175dc7ccbf3/image5.png" />
          </figure><p>Zaraz Automated Actions marks a significant step forward in simplifying how you manage events across your tools. By automating common actions like page views, e-commerce events, and custom tracking, you can save time and reduce the complexity of manual configurations. Whether you’re leveraging Automated Actions for speed or creating custom actions for more tailored use cases, Zaraz offers the flexibility to fit your workflow. </p><p>We’re excited to see how you use this feature. Please don’t hesitate to reach out to us on Cloudflare <a href="https://discord.gg/2TRr6nSxdd"><u>Zaraz’s Discord Channel</u></a> — we’re always there fixing issues, listening to feedback, and announcing exciting product updates.</p>
    <div>
      <h2>Never miss an update</h2>
      <a href="#never-miss-an-update">
        
      </a>
    </div>
    <p>We’ll continue to share roundup blog posts as we continue to build and innovate. Be sure to follow along on the <a href="https://blog.cloudflare.com/"><u>Cloudflare Blog</u></a> for the latest news and updates.</p> ]]></content:encoded>
            <category><![CDATA[Identity]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Developers]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Zaraz]]></category>
            <category><![CDATA[Analytics]]></category>
            <category><![CDATA[Managed Components]]></category>
            <guid isPermaLink="false">5BHU4q5GpzBQ1OLQoUvkKN</guid>
            <dc:creator>Joseph So</dc:creator>
            <dc:creator>Omar Mohammad</dc:creator>
            <dc:creator>Yo'av Moshe</dc:creator>
        </item>
    </channel>
</rss>