---
title: Streamlined Actions V2 deployment to Cloudflare Workers
description: Quickly test and deploy ZITADEL Actions V2 examples to Cloudflare Workers with one click. Explore ready-to-run demos, customize the code, and learn how to handle ZITADEL event signatures and responses in a serverless environment.
---

[Skip to content](https://help.zitadel.com/streamlined-actions-v2-deployment-to-cloudflare-workers#main-content)

[![zitadel-logo\_text-dark (1)](https://help.zitadel.com/hs-fs/hubfs/zitadel-logo_text-dark%20(1).png?width=210&height=60&name=zitadel-logo_text-dark%20(1).png)](https://help.zitadel.com/?hsLang=en)

Open main navigation

Close main navigation

- [Documentation](https://zitadel.com/docs)

[Documentation](https://zitadel.com/docs)

 How can we help you?

- There are no suggestions because the search field is empty.

1. [ZITADEL Knowledge Base](https://help.zitadel.com/?hsLang=en)
2. [Authentication & Login](https://help.zitadel.com/authentication-login?hsLang=en)

October 31, 2025

# Streamlined Actions V2 deployment to Cloudflare Workers

## Instantly spin up ready-to-run Cloudflare Worker examples to explore ZITADEL Actions V2

This repository provides a collection of **ready-to-deploy Cloudflare Worker examples** designed to help you **experiment with ZITADEL Actions V2:**

- [Actions V2 + Cloudflare Workers](https://github.com/zitadel/actions/tree/main/actions-v2-cloudflare-workers)

Each example demonstrates a common scenario — such as injecting custom claims, forwarding events, or mapping IDP attributes — and can be **deployed to your Cloudflare account with the deployment utility**. 

All the examples provided include the functionality to validate the HMAC signature sent by Zitadel to authenticate the webhook request.

 A minimal vanilla JS app can be used to login and decode the user tokens to demonstrate the final result:

- [Zitadel JS Quickstart](https://github.com/zitadel/zitadel-vanilla-js)

To call the Zitadel API to create the Targets, you can use the Zitadel Postman collection:

- [Zitadel Postman Collection](https://zitadel.com/docs/apis/introduction#postman-collection-beta)

### 1. Prepare the environment

- If you don’t have one yet, sign up for a [Zitadel Cloud instance](https://zitadel.com)
- Sign up for a [Cloudflare account](https://cloudflare.com/)
- Clone and run the [Zitadel JS Quickstart](https://github.com/zitadel/zitadel-vanilla-js)
- Fork the [Zitadel Postman Collection](https://zitadel.com/docs/apis/introduction#postman-collection-beta) and set the environment variables for your Zitadel instance

### 2. Deploy the script to Cloudflare

- Deploy a [sample script](https://github.com/zitadel/actions/blob/main/actions-v2-cloudflare-workers/CUSTOM-CLAIMS.md) from the repository with the [deployment utility](https://github.com/zitadel/actions/blob/main/actions-v2-cloudflare-workers/deployment-utility/README.md), following the configuration guide, this example will show you how to add a custom claim to the access token.

### 3. Login with a sample user and inspect the token claims

- In the **Access Token** box, you should see the following custom claim: 
    - `"group": "ADMIN"`

---

Feel free to **experiment with the code**, adjust the logic, or extend it with your own use cases. Each example is built to be simple, modular, and easy to customize — perfect for learning how ZITADEL Actions V2 integrate with Cloudflare Workers.

Don’t forget to **explore the other examples** in the repository.

- [Getting Started](https://help.zitadel.com/getting-started?hsLang=en)
- [User Management](https://help.zitadel.com/user-management?hsLang=en)
- [Authentication & Login](https://help.zitadel.com/authentication-login?hsLang=en)
- [Security & Compliance](https://help.zitadel.com/security-compliance?hsLang=en)
- [Troubleshooting](https://help.zitadel.com/troubleshooting?hsLang=en)
- [Account & Subscription](https://help.zitadel.com/account-subscription?hsLang=en#main-content)

    - [Support](https://help.zitadel.com/account-subscription?hsLang=en#support)
    - [Billing (Pro)](https://help.zitadel.com/account-subscription?hsLang=en#billing-pro)
    - [Billing (Enterprise)](https://help.zitadel.com/account-subscription?hsLang=en#billing-enterprise)
    - [Zitadel Cloud Account](https://help.zitadel.com/account-subscription?hsLang=en#zitadel-cloud-account)
    - [Service Description](https://help.zitadel.com/account-subscription?hsLang=en#service-description)
- [Default Settings](https://help.zitadel.com/default-settings?hsLang=en#main-content)

    - [Web Keys](https://help.zitadel.com/default-settings?hsLang=en#web-keys)
- [Self-Hosting](https://help.zitadel.com/self-hosting?hsLang=en)

[![zitadel-logo\_text-dark](https://help.zitadel.com/hs-fs/hubfs/zitadel-logo_text-dark.png?width=210&height=60&name=zitadel-logo_text-dark.png "zitadel-logo_text-dark")](http://zitadel.com)

1 Embarcadero Center, Suite 1200  
San Francisco, CA 94111

<https://github.com/zitadel/zitadel> <https://x.com/zitadel> <https://www.facebook.com/zitadel.social> <https://www.linkedin.com/company/zitadel/> <https://zitadel.com/chat> <https://www.youtube.com/@zitadel>

Copyright © 2025 All rights reserved.