<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Cloudflare changelogs | Pipelines</title><description>Cloudflare changelogs for Pipelines</description><link>https://developers.stormtrust.net/changelog/</link><item><title>Pipelines - Billing is now enabled for Pipelines</title><link>https://developers.stormtrust.net/changelog/post/2026-08-03-pipelines-billing-enabled/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2026-08-03-pipelines-billing-enabled/</guid><description>&lt;p&gt;Billing is now enabled for &lt;a href=&quot;https://developers.stormtrust.net/pipelines/&quot;&gt;Cloudflare Pipelines&lt;/a&gt; on non-enterprise accounts. Pipelines usage beyond the included free tier will appear on your next invoice.&lt;/p&gt;
&lt;p&gt;Pipelines charges based on two usage dimensions. Ingress into a Pipeline stream remains free regardless of volume:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SQL transforms&lt;/strong&gt;: $0.04 / GB for stateless transforms (filter, reshape, unnest, cast, compute).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sinks (egress)&lt;/strong&gt;: $0.03 / GB for JSON output, $0.06 / GB for Parquet or Iceberg output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Workers Paid plans include 50 GB / month for both SQL transforms and sinks. Standard &lt;a href=&quot;https://developers.stormtrust.net/r2/pricing/&quot;&gt;R2 storage and operations&lt;/a&gt; charges apply for data written to R2 buckets, and &lt;a href=&quot;https://developers.stormtrust.net/r2-data-catalog/platform/pricing/&quot;&gt;R2 Data Catalog&lt;/a&gt; charges apply when writing to Iceberg tables.&lt;/p&gt;
&lt;p&gt;For example, a pipeline that ingests 500 GB of event data per month, uses a SQL transform to filter and reshape it, and writes 300 GB to an R2 Data Catalog Iceberg table would be billed as follows:&lt;/p&gt;
&lt;div class=&quot;table-scroll&quot; tabindex=&quot;0&quot; role=&quot;region&quot; aria-label=&quot;Table&quot;&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Usage&lt;/th&gt;
&lt;th&gt;Included&lt;/th&gt;
&lt;th&gt;Billable&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Streams&lt;/td&gt;
&lt;td&gt;500 GB&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;0 GB&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SQL transforms&lt;/td&gt;
&lt;td&gt;500 GB&lt;/td&gt;
&lt;td&gt;50 GB&lt;/td&gt;
&lt;td&gt;450 GB&lt;/td&gt;
&lt;td&gt;$18.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sinks (Iceberg)&lt;/td&gt;
&lt;td&gt;300 GB&lt;/td&gt;
&lt;td&gt;50 GB&lt;/td&gt;
&lt;td&gt;250 GB&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$33.00&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;For full pricing details and billing examples, refer to &lt;a href=&quot;https://developers.stormtrust.net/pipelines/platform/pricing/&quot;&gt;Pipelines pricing&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate><product>Pipelines</product><category>Pipelines</category></item><item><title>Pipelines, Workers - Pipeline binding configuration field renamed to stream</title><link>https://developers.stormtrust.net/changelog/post/2026-05-27-pipeline-binding-stream-field/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2026-05-27-pipeline-binding-stream-field/</guid><description>
&lt;p&gt;The &lt;code&gt;pipeline&lt;/code&gt; field inside the &lt;code&gt;pipelines&lt;/code&gt; binding configuration in your &lt;a href=&quot;https://developers.stormtrust.net/workers/wrangler/configuration/&quot;&gt;Wrangler configuration file&lt;/a&gt; has been renamed to &lt;code&gt;stream&lt;/code&gt;. The old field is deprecated but still accepted.&lt;/p&gt;
&lt;p&gt;Update your configuration to use &lt;code&gt;stream&lt;/code&gt; to avoid the deprecation warning.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Before (deprecated):&lt;/strong&gt;&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;pipelines&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_PIPELINE&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;pipeline&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&amp;#x3C;STREAM_ID&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;pipelines&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_PIPELINE&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;pipeline = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&amp;#x3C;STREAM_ID&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script type=&quot;module&quot; src=&quot;https://developers.stormtrust.net/home/runner/work/infrastructure/infrastructure/org/apps/developers/src/components/ui/tabs/Tabs.astro?astro&amp;type=script&amp;index=0&amp;lang.ts&quot;&gt;&lt;/script&gt;
&lt;p&gt;&lt;strong&gt;After:&lt;/strong&gt;&lt;/p&gt;
&lt;div data-nb-tabs data-nb-sync-key=&quot;wranglerConfig&quot; class&gt;&lt;div class=&quot;relative flex border-b border-border&quot; role=&quot;tablist&quot; data-nb-tabs-list&gt;&lt;span class=&quot;bg-primary pointer-events-none absolute -bottom-px h-0.5 rounded-t-sm transition-[left,width] duration-200 ease-out&quot; data-nb-tabs-indicator aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;mt-3&quot;&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.jsonc&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;jsonc&quot; data-nb-lang=&quot;jsonc&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;$schema&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;./node_modules/wrangler/config-schema.json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  &quot;pipelines&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;binding&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_PIPELINE&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;      &quot;stream&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&amp;#x3C;STREAM_ID&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;div role=&quot;tabpanel&quot; data-nb-tabs-content data-nb-tab-label=&quot;wrangler.toml&quot; class&gt;&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;toml&quot; data-nb-lang=&quot;toml&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;[[&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;pipelines&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;binding = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;MY_PIPELINE&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;stream = &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&amp;#x3C;STREAM_ID&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;No other changes are required. The binding name, TypeScript types, and runtime API (&lt;code&gt;env.MY_PIPELINE.send(...)&lt;/code&gt;) remain the same.&lt;/p&gt;
&lt;p&gt;For more information on configuring pipeline bindings, refer to &lt;a href=&quot;https://developers.stormtrust.net/pipelines/streams/writing-to-streams/#configure-pipeline-binding&quot;&gt;Writing to streams&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><product>Pipelines</product><category>Pipelines</category><category>Workers</category></item><item><title>Pipelines - Pipelines pricing announced</title><link>https://developers.stormtrust.net/changelog/post/2026-05-11-pipelines-pricing-announced/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2026-05-11-pipelines-pricing-announced/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.stormtrust.net/pipelines/&quot;&gt;Cloudflare Pipelines&lt;/a&gt; is a streaming data platform that ingests events, transforms them with SQL, and writes to &lt;a href=&quot;https://developers.stormtrust.net/r2/&quot;&gt;R2&lt;/a&gt; as JSON, Parquet, or &lt;a href=&quot;https://iceberg.apache.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Apache Iceberg&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt; tables. Pipelines now has published pricing based on two usage dimensions: the volume of data processed by SQL transforms and the volume of data delivered to sinks. Ingress into a Pipeline stream is free.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Billing is not yet enabled. We will provide at least 30 days notice before we start charging for Pipelines usage.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pipelines pricing model is designed to charge per GB based on what you use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Streams (ingress)&lt;/strong&gt;: Free, regardless of volume.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL transforms&lt;/strong&gt;: $0.04 / GB for stateless transforms (filter, reshape, unnest, cast, compute).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sinks&lt;/strong&gt;: $0.03 / GB for JSON, $0.06 / GB for Parquet or Iceberg output.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Workers Free plans include 1 GB / month for each dimension. Workers Paid plans include 50 GB / month.&lt;/p&gt;
&lt;p&gt;For full pricing details and billing examples, refer to &lt;a href=&quot;https://developers.stormtrust.net/pipelines/platform/pricing/&quot;&gt;Pipelines pricing&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><product>Pipelines</product><category>Pipelines</category></item><item><title>Pipelines - Pipelines and R2 Data Catalog now supported in Terraform</title><link>https://developers.stormtrust.net/changelog/post/2026-04-27-terraform-support/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2026-04-27-terraform-support/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.stormtrust.net/pipelines/&quot;&gt;Cloudflare Pipelines&lt;/a&gt; ingests streaming data via &lt;a href=&quot;https://developers.stormtrust.net/workers/&quot;&gt;Workers&lt;/a&gt; or HTTP endpoints, transforms it with SQL, and writes it to &lt;a href=&quot;https://developers.stormtrust.net/r2/&quot;&gt;R2&lt;/a&gt; as Apache Iceberg tables. &lt;a href=&quot;https://developers.stormtrust.net/r2-data-catalog/&quot;&gt;R2 Data Catalog&lt;/a&gt; manages those Iceberg tables, compaction, and compatibility with query engines like &lt;a href=&quot;https://developers.stormtrust.net/r2-sql/&quot;&gt;R2 SQL&lt;/a&gt;, &lt;a href=&quot;https://developers.stormtrust.net/r2-data-catalog/config-examples/spark-scala/&quot;&gt;Spark&lt;/a&gt;, and &lt;a href=&quot;https://developers.stormtrust.net/r2-data-catalog/config-examples/duckdb/&quot;&gt;DuckDB&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You can now create and manage both products using Terraform, supported in the &lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cloudflare Terraform provider v5.19.0&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This adds four new resources that let you define your entire data pipeline as infrastructure-as-code: a data catalog, a stream for ingestion, a sink that writes to R2 Data Catalog or R2, and a pipeline that connects them with SQL.&lt;/p&gt;
&lt;p&gt;The new Terraform resources are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/r2_data_catalog&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_r2_data_catalog&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt; — enable the data catalog on an R2 bucket&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/pipeline_stream&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_pipeline_stream&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt; — create a stream that receives events via HTTP or Worker bindings&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/pipeline_sink&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_pipeline_sink&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt; — create a sink that writes to R2 Data Catalog or R2&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://registry.terraform.io/providers/cloudflare/cloudflare/latest/docs/resources/pipeline&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;code&gt;cloudflare_pipeline&lt;/code&gt;&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt; — create a pipeline with SQL connecting a stream to a sink&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is a minimal example that creates a stream, an R2 Data Catalog sink, and a pipeline:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;hcl&quot; data-nb-lang=&quot;hcl&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_pipeline_stream&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_stream&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;       =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my_stream&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  format&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { type &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;json&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  schema&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    fields &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      name     &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;value&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      type     &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;json&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;      required &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    }]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  http&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;           =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { enabled &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; true&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, authentication &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; false&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, cors &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {} }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  worker_binding&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { enabled &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; false&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_pipeline_sink&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_sink&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;       =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my_sink&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  type&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;       =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;r2_data_catalog&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  format&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { type &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;parquet&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  schema&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;     =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; { fields &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; [] }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  config&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    account_id &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var.cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    bucket     &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-pipeline-bucket&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    table_name &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my_table&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;    token      &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var.catalog_token&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;resource&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;cloudflare_pipeline&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; &quot;my_pipeline&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  account_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; var&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_account_id&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;       =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my_pipeline&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  sql&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;        =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;INSERT INTO &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_pipeline_sink&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;my_sink&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; SELECT * FROM &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;${&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;cloudflare_pipeline_stream&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;my_stream&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For a full end-to-end example that includes R2 bucket creation, data catalog setup, and scoped API token provisioning, refer to the &lt;a href=&quot;https://developers.stormtrust.net/pipelines/reference/terraform/&quot;&gt;Pipelines Terraform documentation&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><product>Pipelines</product><category>Pipelines</category></item><item><title>Logs, Pipelines - Cloudflare Pipelines as a Logpush destination</title><link>https://developers.stormtrust.net/changelog/post/2026-04-20-pipelines-logpush-destination/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2026-04-20-pipelines-logpush-destination/</guid><description>&lt;p&gt;Logpush has traditionally been great at delivering Cloudflare logs to a variety of destinations in JSON format. While JSON is flexible and easily readable, it can be inefficient to store and query at scale.&lt;/p&gt;
&lt;p&gt;With this release, you can now send your logs directly to &lt;a href=&quot;https://developers.stormtrust.net/pipelines/&quot;&gt;Pipelines&lt;/a&gt; to ingest, transform, and store your logs in &lt;a href=&quot;https://developers.stormtrust.net/r2/&quot;&gt;R2&lt;/a&gt; as Parquet files or Apache Iceberg tables managed by &lt;a href=&quot;https://developers.stormtrust.net/r2-data-catalog/&quot;&gt;R2 Data Catalog&lt;/a&gt;. This makes the data footprint more compact and more efficient at querying your logs instantly with &lt;a href=&quot;https://developers.stormtrust.net/r2-sql/&quot;&gt;R2 SQL&lt;/a&gt; or any other query engine that supports Apache Iceberg or Parquet.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;transform-logs-before-storage&quot;&gt;Transform logs before storage&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#transform-logs-before-storage&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Pipelines SQL runs on each log record in-flight, so you can reshape your data before it is written. For example, you can drop noisy fields, redact sensitive values, or derive new columns:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;INSERT INTO&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; http_logs_sink&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;SELECT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  ClientIP,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  EdgeResponseStatus,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  to_timestamp_micros(EdgeStartTimestamp) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; event_time,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  upper&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(ClientRequestMethod) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; method,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  sha256(ClientIP) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; hashed_ip&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; http_logs_stream&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;WHERE&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; EdgeResponseStatus &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; 400&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Pipelines SQL supports string functions, regex, hashing, JSON extraction, timestamp conversion, conditional expressions, and more. For the full list, refer to the &lt;a href=&quot;https://developers.stormtrust.net/pipelines/sql-reference/&quot;&gt;Pipelines SQL reference&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;get-started&quot;&gt;Get started&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#get-started&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;To configure Pipelines as a Logpush destination, refer to &lt;a href=&quot;https://developers.stormtrust.net/logs/logpush/logpush-job/enable-destinations/pipelines/&quot;&gt;Enable Cloudflare Pipelines&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><product>Logs</product><category>Logs</category><category>Pipelines</category></item><item><title>Pipelines, Workers - Dropped event metrics, typed Pipelines bindings, and improved setup</title><link>https://developers.stormtrust.net/changelog/post/2026-02-24-typed-bindings-setup-improvements-error-metrics/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2026-02-24-typed-bindings-setup-improvements-error-metrics/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.stormtrust.net/pipelines/&quot;&gt;Cloudflare Pipelines&lt;/a&gt; ingests streaming data via &lt;a href=&quot;https://developers.stormtrust.net/workers/&quot;&gt;Workers&lt;/a&gt; or HTTP endpoints, transforms it with SQL, and writes it to &lt;a href=&quot;https://developers.stormtrust.net/r2/&quot;&gt;R2&lt;/a&gt; as Apache Iceberg tables. Today we&apos;re shipping three improvements to help you understand why streaming events get dropped, catch data quality issues early, and set up Pipelines faster.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;dropped-event-metrics&quot;&gt;Dropped event metrics&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#dropped-event-metrics&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;When &lt;a href=&quot;https://developers.stormtrust.net/pipelines/streams/&quot;&gt;stream&lt;/a&gt; events don&apos;t match the expected schema, Pipelines accepts them during ingestion but drops them when attempting to deliver them to the &lt;a href=&quot;https://developers.stormtrust.net/pipelines/sinks/&quot;&gt;sink&lt;/a&gt;. To help you identify the root cause of these issues, we are introducing a new dashboard and metrics that surface dropped events with detailed error messages.&lt;/p&gt;
&lt;img src=&quot;https://developers.stormtrust.net/cdn-cgi/image/onerror=redirect,width=3066,height=1466,format=webp/_astro/pipelines-error-log-dash.6JIa7r5d.png&quot; alt=&quot;The Errors tab in the Cloudflare dashboard showing deserialization errors grouped by type with individual error details&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3066&quot; height=&quot;1466&quot;&gt;
&lt;p&gt;Dropped events can also be queried programmatically via the new &lt;code&gt;pipelinesUserErrorsAdaptiveGroups&lt;/code&gt; GraphQL dataset. The dataset breaks down failures by specific error type (&lt;code&gt;missing_field&lt;/code&gt;, &lt;code&gt;type_mismatch&lt;/code&gt;, &lt;code&gt;parse_failure&lt;/code&gt;, or &lt;code&gt;null_value&lt;/code&gt;) so you can trace issues back to the source.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;graphql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;graphql&quot; data-nb-lang=&quot;graphql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;query&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; GetPipelineUserErrors&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	$accountTag&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	$pipelineId&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	$datetimeStart&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	$datetimeEnd&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;Time&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;	viewer&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;		accounts&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: { &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;accountTag&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;$accountTag&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; }) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;			pipelinesUserErrorsAdaptiveGroups&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;				limit&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;100&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;				filter&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					pipelineId&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;$pipelineId&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					datetime_geq&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;$datetimeStart&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;					datetime_leq&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: &lt;/span&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;$datetimeEnd&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;				orderBy&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;: [&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;count_DESC&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;				count&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;				dimensions&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;					errorFamily&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;					errorType&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;				}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For the full list of dimensions, error types, and additional query examples, refer to &lt;a href=&quot;https://developers.stormtrust.net/pipelines/observability/metrics/#user-error-metrics&quot;&gt;User error metrics&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;typed-pipelines-bindings&quot;&gt;Typed Pipelines bindings&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#typed-pipelines-bindings&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Sending data to a Pipeline from a Worker previously used a generic &lt;code&gt;Pipeline&amp;lt;PipelineRecord&amp;gt;&lt;/code&gt; type, which meant schema mismatches (wrong field names, incorrect types) were only caught at runtime as dropped events.&lt;/p&gt;
&lt;p&gt;Running &lt;code&gt;wrangler types&lt;/code&gt; now generates schema-specific TypeScript types for your &lt;a href=&quot;https://developers.stormtrust.net/pipelines/streams/writing-to-streams/#send-via-workers&quot;&gt;Pipeline bindings&lt;/a&gt;. TypeScript catches missing required fields and incorrect field types at compile time, before your code is deployed.&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;ts&quot; data-nb-lang=&quot;ts&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;declare&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; namespace&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	type&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; EcommerceStreamRecord&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;		user_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; string&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;		event_type&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; string&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;		product_id&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;?:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; string&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;		amount&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;?:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; number&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	};&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;	interface&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt; Env&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1jdh33&quot;&gt;		STREAM&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; import&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&quot;cloudflare:pipelines&quot;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Pipeline&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Cloudflare&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;EcommerceStreamRecord&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;&amp;gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;For more information, refer to &lt;a href=&quot;https://developers.stormtrust.net/pipelines/streams/writing-to-streams/#typed-pipeline-bindings&quot;&gt;Typed Pipeline bindings&lt;/a&gt;.&lt;/p&gt;
&lt;div tabindex=&quot;-1&quot; class=&quot;heading-wrapper level-h4&quot;&gt;&lt;h4 id=&quot;improved-pipelines-setup&quot;&gt;Improved Pipelines setup&lt;/h4&gt;&lt;a class=&quot;anchor-link&quot; href=&quot;#improved-pipelines-setup&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;anchor-icon&quot;&gt;&lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot;&gt;&lt;path fill=&quot;currentcolor&quot; d=&quot;m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Setting up a new Pipeline previously required multiple manual steps: creating an R2 bucket, enabling R2 Data Catalog, generating an API token, and configuring format, compression, and rolling policies individually.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;wrangler pipelines setup&lt;/code&gt; command now offers a &lt;strong&gt;Simple&lt;/strong&gt; setup mode that applies recommended defaults and automatically creates the &lt;a href=&quot;https://developers.stormtrust.net/r2/buckets/&quot;&gt;R2 bucket&lt;/a&gt; and enables &lt;a href=&quot;https://developers.stormtrust.net/r2-data-catalog/&quot;&gt;R2 Data Catalog&lt;/a&gt; if they do not already exist. Validation errors during setup prompt you to retry inline rather than restarting the entire process.&lt;/p&gt;
&lt;p&gt;For a full walkthrough, refer to the &lt;a href=&quot;https://developers.stormtrust.net/pipelines/getting-started/&quot;&gt;Getting started guide&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><product>Pipelines</product><category>Pipelines</category><category>Workers</category></item><item><title>Pipelines - Pipelines now supports SQL transformations and Apache Iceberg</title><link>https://developers.stormtrust.net/changelog/post/2025-09-25-pipelines-sql/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2025-09-25-pipelines-sql/</guid><description>
&lt;p&gt;Today, we&apos;re launching the new &lt;a href=&quot;https://developers.stormtrust.net/pipelines/&quot;&gt;Cloudflare Pipelines&lt;/a&gt;: a streaming data platform that ingests events, transforms them with &lt;a href=&quot;https://developers.stormtrust.net/pipelines/sql-reference/select-statements/&quot;&gt;SQL&lt;/a&gt;, and writes to &lt;a href=&quot;https://developers.stormtrust.net/r2/&quot;&gt;R2&lt;/a&gt; as &lt;a href=&quot;https://iceberg.apache.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Apache Iceberg&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt; tables or Parquet files.&lt;/p&gt;
&lt;p&gt;Pipelines can receive events via &lt;a href=&quot;https://developers.stormtrust.net/pipelines/streams/writing-to-streams/#send-via-http&quot;&gt;HTTP endpoints&lt;/a&gt; or &lt;a href=&quot;https://developers.stormtrust.net/pipelines/streams/writing-to-streams/#send-via-workers&quot;&gt;Worker bindings&lt;/a&gt;, transform them with SQL, and deliver to R2 with exactly-once guarantees. This makes it easy to build analytics-ready warehouses for server logs, mobile application events, IoT telemetry, or clickstream data without managing streaming infrastructure.&lt;/p&gt;
&lt;p&gt;For example, here&apos;s a pipeline that ingests clickstream events and filters out bot traffic while extracting domain information:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;sql&quot; data-nb-lang=&quot;sql&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;INSERT into&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; events_table&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;SELECT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  user_id,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  lower&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;event&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; event_type,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  to_timestamp_micros(ts_us) &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; event_time,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  regexp_match(&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;url&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;^https?://([^/]+)&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;)[1]  &lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;AS&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; domain,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  url&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  referrer,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;  user_agent&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;FROM&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; events_json&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;WHERE&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; event&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; =&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &apos;page_view&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt;  AND&lt;/span&gt;&lt;span class=&quot;nb-shiki-1itgoe&quot;&gt; NOT&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt; regexp_like(user_agent, &lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;&apos;(?i)bot|spider&apos;&lt;/span&gt;&lt;span class=&quot;nb-shiki-140thh&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Get started by creating a pipeline in the dashboard or running a single command in &lt;a href=&quot;https://developers.stormtrust.net/workers/wrangler/&quot;&gt;Wrangler&lt;/a&gt;:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pipelines&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; setup&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Check out our &lt;a href=&quot;https://developers.stormtrust.net/pipelines/getting-started/&quot;&gt;getting started guide&lt;/a&gt; to learn how to create a pipeline that delivers events to an &lt;a href=&quot;https://developers.stormtrust.net/r2-data-catalog/&quot;&gt;Iceberg table&lt;/a&gt; you can query with R2 SQL. Read more about today&apos;s announcement in our &lt;a href=&quot;https://blog.cloudflare.com/cloudflare-data-platform&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;blog post&lt;span class=&quot;external-link&quot;&gt; ↗&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Thu, 25 Sep 2025 13:00:00 GMT</pubDate><product>Pipelines</product><category>Pipelines</category></item><item><title>Pipelines, R2, Workers - Cloudflare Pipelines now available in beta</title><link>https://developers.stormtrust.net/changelog/post/2025-04-10-launching-pipelines/</link><guid isPermaLink="true">https://developers.stormtrust.net/changelog/post/2025-04-10-launching-pipelines/</guid><description>&lt;p&gt;&lt;a href=&quot;https://developers.stormtrust.net/pipelines&quot;&gt;Cloudflare Pipelines&lt;/a&gt; is now available in beta, to all users with a &lt;a href=&quot;https://developers.stormtrust.net/workers/platform/pricing&quot;&gt;Workers Paid&lt;/a&gt; plan.&lt;/p&gt;
&lt;p&gt;Pipelines let you ingest high volumes of real time data, without managing the underlying infrastructure. A single pipeline can ingest up to 100 MB of data per second, via HTTP or from a &lt;a href=&quot;https://developers.stormtrust.net/workers&quot;&gt;Worker&lt;/a&gt;. Ingested data is automatically batched, written to output files, and delivered to an &lt;a href=&quot;https://developers.stormtrust.net/r2&quot;&gt;R2 bucket&lt;/a&gt; in your account. You can use Pipelines to build a data lake of clickstream data, or to store events from a Worker.&lt;/p&gt;
&lt;p&gt;Create your first pipeline with a single command:&lt;/p&gt;
&lt;figure class=&quot;nb-code-figure nb-code-figure-titled&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;figcaption class=&quot;nb-code-title&quot;&gt;&lt;span class=&quot;nb-code-title-name&quot;&gt;Create a pipeline&lt;/span&gt;&lt;span class=&quot;nb-code-title-lang&quot;&gt;bash&lt;/span&gt;&lt;/figcaption&gt;&lt;pre class=&quot;astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz&quot; tabindex=&quot;0&quot; data-language=&quot;bash&quot; data-nb-lang=&quot;bash&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; npx&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; wrangler@latest&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pipelines&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; create&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; my-clickstream-pipeline&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt; --r2-bucket&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; my-bucket&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;🌀&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Authorizing&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; R2&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; bucket&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-bucket&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;🌀&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Creating&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pipeline&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; named&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; &quot;my-clickstream-pipeline&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;✅&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; Successfully&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; created&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pipeline&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; my-clickstream-pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Id:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    0e00c5ff09b34d018152af98d06f5a1xvc&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Name:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  my-clickstream-pipeline&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Sources:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  HTTP:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    Endpoint:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;        https://0e00c5ff09b34d018152af98d06f5a1xvc.pipelines.cloudflare.com/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    Authentication:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  off&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    Format:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;          JSON&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Worker:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;    Format:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  JSON&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Destination:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Type:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;         R2&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Bucket:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;       my-bucket&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Format:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;       newline-delimited&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; JSON&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Compression:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  GZIP&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Batch&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; hints:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Max&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; bytes:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;     100&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; MB&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Max&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; duration:&lt;/span&gt;&lt;span class=&quot;nb-shiki-dzsirb&quot;&gt;  300&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; seconds&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;  Max&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; records:&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;   100,000&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;🎉&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; You&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; can&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; now&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; send&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; data&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pipeline!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-1t8gfj&quot;&gt;Send&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; data&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; to&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; your&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; pipeline&apos;s HTTP endpoint:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;curl &quot;https://0e00c5ff09b34d018152af98d06f5a1xvc.pipelines.cloudflare.com/&quot; -d &apos;[{&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; ...JSON_DATA...&lt;/span&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt; }]&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;To send data to your pipeline from a Worker, add the following configuration to your config file:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  &quot;pipelines&quot;: [&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      &quot;pipeline&quot;: &quot;my-clickstream-pipeline&quot;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;      &quot;binding&quot;: &quot;PIPELINE&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;  ]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nb-shiki-mdbnqw&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;Head over to our &lt;a href=&quot;https://developers.stormtrust.net/pipelines/getting-started&quot;&gt;getting started guide&lt;/a&gt; for an in-depth tutorial to building with Pipelines.&lt;/p&gt;</description><pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate><product>Pipelines</product><category>Pipelines</category><category>R2</category><category>Workers</category></item></channel></rss>