---
id: "cloudflare-zaraz"
type: "component"
kind: "worker"
provider: "cloudflare"
category: "compute"
docs: "https://developers.cloudflare.com/zaraz/reference/settings/"
url: "https://localhost:3000/catalogue/components/cloudflare-zaraz"
---

# Cloudflare Zaraz

Loads third-party tags and analytics tools on Cloudflare's edge instead of in the browser.

| | |
|---|---|
| Provider | [cloudflare](https://localhost:3000/catalogue?provider=cloudflare) |
| Kind | [Worker](https://localhost:3000/catalogue/kinds/worker) |
| Category | Compute |
| Official docs | [https://developers.cloudflare.com/zaraz/reference/settings/](https://developers.cloudflare.com/zaraz/reference/settings/) |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `accelerator` | enum | `none`, `gpu`, `asic` | no | "none" | inherited |
| `autoInjectScript` | boolean | — | no | true | inherited |
| `automaticPageviewTracking` | boolean | — | no | true | inherited |
| `concurrency` | integer | — | no | — | inherited |
| `consentRequired` | boolean | — | no | false | inherited |
| `fanoutStrategy` (advanced) | enum | `none`, `push`, `pull`, `hybrid` | no | "none" | inherited |
| `fanoutThreshold` (advanced) | integer | — | no | — | inherited |
| `idempotent` | boolean | — | no | false | inherited |
| `instances` | integer | — | no | — | inherited |
| `managed` | boolean | — | no | false | **true** |
| `rateControl` (advanced) | enum | `none`, `fixed`, `aimd` | no | "none" | inherited |
| `schedule` | string | — | no | — | inherited |
| `singlePageApplicationSupport` | boolean | — | no | true | inherited |
| `trigger` | enum | `queue`, `stream`, `schedule`, `batch`, `manual` | yes | — | **"manual"** |

Bold values are the ones this component pins.

## Rules that apply · 3

### Push fan-out without a celebrity threshold `push-fanout-without-celebrity-path` (warning)

- Page: https://localhost:3000/catalogue/rules/push-fanout-without-celebrity-path.md
- Why: Pure push fan-out over a social graph is brutal at the tail: one post from an account with millions of followers becomes millions of cache writes. A follower threshold above which readers merge at read time bounds that write amplification.
- Applies to: every node of kind worker
- Message: Worker '{{node.id}}' pushes fan-out over a social graph with no fanoutThreshold. Declare a follower threshold above which timelines are merged at read time.

It fires when:

- all of these hold:
  - the node's `fanoutStrategy` is "push"
  - the node's `fanoutThreshold` has no value
  - the design contains a node of kind graph-database

### Shared worker pool across queues `shared-worker-pool-across-queues` (warning)

- Page: https://localhost:3000/catalogue/rules/shared-worker-pool-across-queues.md
- Why: One worker pool consuming several queues lets a slow or poisoned queue starve the others. That is precisely what the design's per-queue isolation requirement forbids.
- Applies to: every node of kind worker
- Message: Worker '{{node.id}}' consumes more than one queue while the design requires per-queue isolation. Give each queue its own worker pool.

It fires when:

- all of these hold:
  - the node has more than 1 incoming edge from a queue
  - the design requirement `isolation.perQueue` is true

### Stateful node without zone redundancy `stateful-node-without-zone-redundancy` (error)

- Page: https://localhost:3000/catalogue/rules/stateful-node-without-zone-redundancy.md
- Why: A stateful compute node pinned to exactly one availability zone disappears with that zone, and its state goes with it. Nodes inside a cell are exempt, because there the cell is deliberately single-zone and redundancy comes from the other cells.
- Applies to: every node in category compute
- Message: Stateful node '{{node.id}}' lives in exactly one availability zone. A zone outage takes its state with it.

It fires when:

- all of these hold:
  - the node's `stateless` is false
  - the node sits inside exactly 1 availability-zone group
  - this does not hold:
    - the node sits inside at least one cell group

## Other products of the same kind · 82

- [SchedulerX](https://localhost:3000/catalogue/components/alibaba-schedulerx.md) `alibaba-schedulerx` — alibabacloud
- [Amazon AppFlow](https://localhost:3000/catalogue/components/aws-appflow.md) `aws-appflow` — aws
- [AWS B2B Data Interchange](https://localhost:3000/catalogue/components/aws-b2b-data-interchange.md) `aws-b2b-data-interchange` — aws
- [AWS Batch](https://localhost:3000/catalogue/components/aws-batch.md) `aws-batch` — aws
- [AWS Glue DataBrew](https://localhost:3000/catalogue/components/aws-databrew.md) `aws-databrew` — aws
- [AWS DataSync](https://localhost:3000/catalogue/components/aws-datasync.md) `aws-datasync` — aws
- [AWS Deadline Cloud](https://localhost:3000/catalogue/components/aws-deadline-cloud.md) `aws-deadline-cloud` — aws
- [AWS Entity Resolution](https://localhost:3000/catalogue/components/aws-entity-resolution.md) `aws-entity-resolution` — aws
- [Amazon EventBridge Scheduler](https://localhost:3000/catalogue/components/aws-eventbridge-scheduler.md) `aws-eventbridge-scheduler` — aws
- [AWS Fault Injection Service](https://localhost:3000/catalogue/components/aws-fis.md) `aws-fis` — aws
- [AWS Glue crawler](https://localhost:3000/catalogue/components/aws-glue-crawler.md) `aws-glue-crawler` — aws
- [AWS Glue for Ray job](https://localhost:3000/catalogue/components/aws-glue-ray-job.md) `aws-glue-ray-job` — aws
- [AWS Application Migration Service](https://localhost:3000/catalogue/components/aws-mgn.md) `aws-mgn` — aws
- [Amazon MSK Connect](https://localhost:3000/catalogue/components/aws-msk-connect.md) `aws-msk-connect` — aws
- [Amazon SageMaker AI Training Job](https://localhost:3000/catalogue/components/aws-sagemaker-training-job.md) `aws-sagemaker-training-job` — aws
- [AWS Systems Manager](https://localhost:3000/catalogue/components/aws-systems-manager.md) `aws-systems-manager` — aws
- [AWS Thinkbox Deadline 10](https://localhost:3000/catalogue/components/aws-thinkbox-deadline.md) `aws-thinkbox-deadline` — aws
- [AWS Glue job](https://localhost:3000/catalogue/components/glue-job.md) `glue-job` — aws
- [Azure Automation](https://localhost:3000/catalogue/components/azure-automation.md) `azure-automation` — azure
- [Azure Batch](https://localhost:3000/catalogue/components/azure-batch.md) `azure-batch` — azure
- [Azure Chaos Studio](https://localhost:3000/catalogue/components/azure-chaos-studio.md) `azure-chaos-studio` — azure
- [Azure Data Factory](https://localhost:3000/catalogue/components/azure-data-factory.md) `azure-data-factory` — azure
- [Azure Data Share](https://localhost:3000/catalogue/components/azure-data-share.md) `azure-data-share` — azure
- [Azure Database Migration Service](https://localhost:3000/catalogue/components/azure-database-migration-service.md) `azure-database-migration-service` — azure
- [Microsoft Entra Connect Sync](https://localhost:3000/catalogue/components/azure-entra-connect-sync.md) `azure-entra-connect-sync` — azure
- [Microsoft Graph Data Connect](https://localhost:3000/catalogue/components/azure-graph-data-connect.md) `azure-graph-data-connect` — azure
- [Azure Storage Mover](https://localhost:3000/catalogue/components/azure-storage-mover.md) `azure-storage-mover` — azure
- [Azure Update Manager](https://localhost:3000/catalogue/components/azure-update-manager.md) `azure-update-manager` — azure
- [Browser Run](https://localhost:3000/catalogue/components/cloudflare-browser-run.md) `cloudflare-browser-run` — cloudflare
- [Cloudflare Snippets](https://localhost:3000/catalogue/components/cloudflare-snippets.md) `cloudflare-snippets` — cloudflare
- [Airbyte](https://localhost:3000/catalogue/components/airbyte.md) `airbyte` — default
- [Airflow DAG](https://localhost:3000/catalogue/components/airflow-dag.md) `airflow-dag` — default
- [Chaos Mesh](https://localhost:3000/catalogue/components/chaos-mesh.md) `chaos-mesh` — default
- [Chunkr](https://localhost:3000/catalogue/components/chunkr.md) `chunkr` — default
- [Container worker](https://localhost:3000/catalogue/components/container-worker.md) `container-worker` — default
- [Cron job](https://localhost:3000/catalogue/components/cron-job.md) `cron-job` — default
- [Daytona](https://localhost:3000/catalogue/components/daytona.md) `daytona` — default
- [E2B](https://localhost:3000/catalogue/components/e2b.md) `e2b` — default
- [Embulk](https://localhost:3000/catalogue/components/embulk.md) `embulk` — default
- [Fan-out daemon](https://localhost:3000/catalogue/components/fanout-daemon.md) `fanout-daemon` — default
- and 42 more: https://localhost:3000/catalogue/kinds/worker.md

## Use it in a design

```yaml
nodes:
  - { id: "cloudflare-zaraz", component: "cloudflare-zaraz" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# Cloudflare Zaraz: loads third-party tags on Cloudflare's edge instead of the browser.
# "Zaraz settings": the script is auto-injected, SPA support and automatic pageview tracking are on;
# a newly added tool is assigned no consent purpose and so skips consent by default.
schemaVersion: "1"
type: "component"
id: "cloudflare-zaraz"
kind: "worker"
provider: "cloudflare"
docs: "https://developers.cloudflare.com/zaraz/reference/settings/"
defaults:
  managed: true
  trigger: "manual"
properties:
  autoInjectScript:
    type: "boolean"
    default: true
  singlePageApplicationSupport:
    type: "boolean"
    default: true
  automaticPageviewTracking:
    type: "boolean"
    default: true
  consentRequired:
    type: "boolean"
    default: false
```

Human page: https://localhost:3000/catalogue/components/cloudflare-zaraz
