From 4ab54b935919ba3f4bb92f436ae4e757108e4f8a Mon Sep 17 00:00:00 2001 From: Riccardo Busetti Date: Fri, 2 Oct 2026 20:40:44 +0200 Subject: [PATCH] ref(docs): Make ClickHouse, Snowflake and DuckLake in public alpha (#51195) --- .../content/guides/database/replication.mdx | 14 +- .../database/replication/pipelines-faq.mdx | 2 +- .../replication/pipelines/clickhouse.mdx | 2 - .../replication/pipelines/ducklake.mdx | 4 +- .../replication/pipelines/snowflake.mdx | 2 - .../DestinationTypeSelection.test.tsx | 73 +++---- .../DestinationTypeSelection.tsx | 14 +- ...5-12-02-introducing-supabase-pipelines.mdx | 2 + ...-07-21-supabase-pipelines-public-alpha.mdx | 2 + apps/www/_go/index.tsx | 4 - ...e-pipelines-new-destinations-thank-you.tsx | 26 --- .../supabase-pipelines-new-destinations.tsx | 181 ------------------ apps/www/data/features.tsx | 2 +- apps/www/lib/redirects.js | 10 + 14 files changed, 55 insertions(+), 283 deletions(-) delete mode 100644 apps/www/_go/pre-release/supabase-pipelines-new-destinations-thank-you.tsx delete mode 100644 apps/www/_go/pre-release/supabase-pipelines-new-destinations.tsx diff --git a/apps/docs/content/guides/database/replication.mdx b/apps/docs/content/guides/database/replication.mdx index f4e2feddda2..a47c5d0291b 100644 --- a/apps/docs/content/guides/database/replication.mdx +++ b/apps/docs/content/guides/database/replication.mdx @@ -34,14 +34,12 @@ See [Set up manual replication](/docs/guides/database/replication/manual-replica ## Supported destinations -| Destination | Status | -| -------------------------------------------------------------------- | ------------- | -| [BigQuery](/docs/guides/database/replication/pipelines/bigquery) | Public alpha | -| [ClickHouse](/docs/guides/database/replication/pipelines/clickhouse) | Private alpha | -| [DuckLake](/docs/guides/database/replication/pipelines/ducklake) | Private alpha | -| [Snowflake](/docs/guides/database/replication/pipelines/snowflake) | Private alpha | - -[Request access](/go/supabase-pipelines-new-destinations) to destinations in private alpha. +| Destination | Status | +| -------------------------------------------------------------------- | ------------ | +| [BigQuery](/docs/guides/database/replication/pipelines/bigquery) | Public alpha | +| [ClickHouse](/docs/guides/database/replication/pipelines/clickhouse) | Public alpha | +| [DuckLake](/docs/guides/database/replication/pipelines/ducklake) | Public alpha | +| [Snowflake](/docs/guides/database/replication/pipelines/snowflake) | Public alpha | ## Use cases diff --git a/apps/docs/content/guides/database/replication/pipelines-faq.mdx b/apps/docs/content/guides/database/replication/pipelines-faq.mdx index 36db3c1432d..0b060131cd4 100644 --- a/apps/docs/content/guides/database/replication/pipelines-faq.mdx +++ b/apps/docs/content/guides/database/replication/pipelines-faq.mdx @@ -14,7 +14,7 @@ Pipelines requires a Pro, Team, or Enterprise plan. During public alpha, availab ## What destinations are supported? -BigQuery is in public alpha. ClickHouse, DuckLake, and Snowflake are in private alpha and require access approval. See [supported destinations](/docs/guides/database/replication#supported-destinations) for their status and access request. +BigQuery, ClickHouse, DuckLake, and Snowflake are in public alpha. For setup guides, see [supported destinations](/docs/guides/database/replication#supported-destinations). ## Does the destination's region affect performance? diff --git a/apps/docs/content/guides/database/replication/pipelines/clickhouse.mdx b/apps/docs/content/guides/database/replication/pipelines/clickhouse.mdx index e0d77b7c6e0..42836d6c1e3 100644 --- a/apps/docs/content/guides/database/replication/pipelines/clickhouse.mdx +++ b/apps/docs/content/guides/database/replication/pipelines/clickhouse.mdx @@ -8,8 +8,6 @@ sidebar_label: 'ClickHouse' <$Partial path="pipelines-public-alpha.mdx" /> -The ClickHouse destination is in private alpha and available only to approved organizations. [Request access](/go/supabase-pipelines-new-destinations) before following this guide. - [ClickHouse](https://clickhouse.com/) is a database for analytics. Supabase Pipelines replicates Postgres tables to ClickHouse as either current-state tables or an append-only history of changes. To replicate data to ClickHouse: diff --git a/apps/docs/content/guides/database/replication/pipelines/ducklake.mdx b/apps/docs/content/guides/database/replication/pipelines/ducklake.mdx index 917f68bcaef..d6ff3179cd8 100644 --- a/apps/docs/content/guides/database/replication/pipelines/ducklake.mdx +++ b/apps/docs/content/guides/database/replication/pipelines/ducklake.mdx @@ -8,8 +8,6 @@ sidebar_label: 'DuckLake' <$Partial path="pipelines-public-alpha.mdx" /> -The DuckLake destination is in private alpha and available only to approved organizations. [Request access](/go/supabase-pipelines-new-destinations) before following this guide. - Replicate Postgres tables to [DuckLake](https://ducklake.select/) for current-state lakehouse queries. [Prepare resources](#understand-the-ducklake-components), [configure the destination](#choose-a-configuration-mode), then [query replicated data](#query-the-destination). ## Source table requirements @@ -102,7 +100,7 @@ select * from my_ducklake.public.orders; ``` -See the [DuckDB connection guide](https://ducklake.select/docs/stable/duckdb/usage/connecting) for the current `ducklake` extension and `ATTACH` syntax. If your query client can't read a Supabase-backed catalog during private alpha, [contact support](/dashboard/support/new). +See the [DuckDB connection guide](https://ducklake.select/docs/stable/duckdb/usage/connecting) for the current `ducklake` extension and `ATTACH` syntax. If your query client can't read a Supabase-backed catalog during public alpha, [contact support](/dashboard/support/new). ## Replica identity diff --git a/apps/docs/content/guides/database/replication/pipelines/snowflake.mdx b/apps/docs/content/guides/database/replication/pipelines/snowflake.mdx index 86797003898..c222411d82d 100644 --- a/apps/docs/content/guides/database/replication/pipelines/snowflake.mdx +++ b/apps/docs/content/guides/database/replication/pipelines/snowflake.mdx @@ -8,8 +8,6 @@ sidebar_label: 'Snowflake' <$Partial path="pipelines-public-alpha.mdx" /> -The Snowflake destination is in private alpha and available only to approved organizations. [Request access](/go/supabase-pipelines-new-destinations) before following this guide. - [Snowflake](https://www.snowflake.com/) is a managed data platform. Supabase Pipelines replicates each Postgres table to Snowflake as an append-only history of changes. To replicate data to Snowflake: diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.test.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.test.tsx index b8e190e2b87..3197d0389dd 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.test.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.test.tsx @@ -1,4 +1,4 @@ -import { fireEvent, screen } from '@testing-library/react' +import { fireEvent, screen, within } from '@testing-library/react' import { platformComponents as components } from 'api-types' import { mockAnimationsApi } from 'jsdom-testing-mocks' import { HttpResponse } from 'msw' @@ -52,16 +52,15 @@ const addBackgroundMocks = () => { describe('DestinationTypeSelection', () => { beforeEach(() => { window.localStorage.clear() - }) - - test('shows placeholder when no type is selected', async () => { mockBigQueryEnabled.mockReturnValue(false) mockIcebergEnabled.mockReturnValue(false) mockDucklakeEnabled.mockReturnValue(false) mockSnowflakeEnabled.mockReturnValue(false) mockClickHouseEnabled.mockReturnValue(false) addBackgroundMocks() + }) + test('shows placeholder when no type is selected', async () => { customRender() expect(await screen.findByText('Select a destination type')).toBeInTheDocument() @@ -71,69 +70,53 @@ describe('DestinationTypeSelection', () => { mockBigQueryEnabled.mockReturnValue(true) mockIcebergEnabled.mockReturnValue(true) mockDucklakeEnabled.mockReturnValue(true) - mockSnowflakeEnabled.mockReturnValue(false) - mockClickHouseEnabled.mockReturnValue(false) - addBackgroundMocks() + mockSnowflakeEnabled.mockReturnValue(true) + mockClickHouseEnabled.mockReturnValue(true) customRender() fireEvent.click(await screen.findByRole('combobox')) - expect(await screen.findByText('Public Alpha')).toBeInTheDocument() - expect(screen.getByText('Early Access')).toBeInTheDocument() + const publicAlphaGroup = await screen.findByRole('group', { name: 'Public Alpha' }) + expect(screen.queryByText('Early Access')).not.toBeInTheDocument() expect(screen.getByText('Deprecated')).toBeInTheDocument() - expect(screen.getByText('BigQuery')).toBeInTheDocument() - expect(screen.getByText('DuckLake')).toBeInTheDocument() + for (const destination of ['BigQuery', 'ClickHouse', 'DuckLake', 'Snowflake']) { + expect(within(publicAlphaGroup).getByText(destination)).toBeInTheDocument() + } expect(screen.getByText('Analytics Bucket')).toBeInTheDocument() - expect(screen.queryByText('Pipelines')).not.toBeInTheDocument() }) test('hides destinations behind disabled feature flags', async () => { - mockBigQueryEnabled.mockReturnValue(false) - mockIcebergEnabled.mockReturnValue(false) - mockDucklakeEnabled.mockReturnValue(false) - mockSnowflakeEnabled.mockReturnValue(false) - mockClickHouseEnabled.mockReturnValue(false) - addBackgroundMocks() - customRender() fireEvent.click(await screen.findByRole('combobox')) - expect(screen.queryByText('Read Replica')).not.toBeInTheDocument() - expect(screen.queryByText('BigQuery')).not.toBeInTheDocument() - expect(screen.queryByText('DuckLake')).not.toBeInTheDocument() - expect(screen.queryByText('Analytics Bucket')).not.toBeInTheDocument() - expect(screen.queryByText('Pipelines')).not.toBeInTheDocument() + expect(screen.queryAllByRole('option')).toHaveLength(0) }) - test('shows the public alpha warning for a Pipelines destination', async () => { - mockBigQueryEnabled.mockReturnValue(true) - mockIcebergEnabled.mockReturnValue(false) - mockDucklakeEnabled.mockReturnValue(false) - mockSnowflakeEnabled.mockReturnValue(false) - mockClickHouseEnabled.mockReturnValue(false) - addBackgroundMocks() + test.each(['BigQuery', 'ClickHouse', 'DuckLake', 'Snowflake'])( + 'shows the public alpha warning for %s', + async (destination) => { + mockBigQueryEnabled.mockReturnValue(true) + mockDucklakeEnabled.mockReturnValue(true) + mockSnowflakeEnabled.mockReturnValue(true) + mockClickHouseEnabled.mockReturnValue(true) - customRender() + customRender() - fireEvent.click(await screen.findByRole('combobox')) - fireEvent.click(await screen.findByText('BigQuery')) + fireEvent.click(await screen.findByRole('combobox')) + fireEvent.click(await screen.findByText(destination)) - expect( - await screen.findByText( - 'Destination type cannot be changed after creation. BigQuery support is in public alpha.' - ) - ).toBeInTheDocument() - }) + expect( + await screen.findByText( + `Destination type cannot be changed after creation. ${destination} support is in public alpha.` + ) + ).toBeInTheDocument() + } + ) test('disables the selector in edit mode so the destination type cannot be changed', async () => { mockBigQueryEnabled.mockReturnValue(true) - mockIcebergEnabled.mockReturnValue(false) - mockDucklakeEnabled.mockReturnValue(false) - mockSnowflakeEnabled.mockReturnValue(false) - mockClickHouseEnabled.mockReturnValue(false) - addBackgroundMocks() // Edit mode triggers useDestinationInformation({ id: 1 }) which fires destination-by-id addAPIMock({ method: 'get', diff --git a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.tsx b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.tsx index d8ee413d9dd..50ea80272d0 100644 --- a/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.tsx +++ b/apps/studio/components/interfaces/Database/Replication/DestinationPanel/DestinationTypeSelection.tsx @@ -25,7 +25,7 @@ interface DestinationTypeOption { value: DestinationType label: string description: string - stage: 'Public Alpha' | 'Early Access' | 'Deprecated' | null + stage: 'Public Alpha' | 'Deprecated' | null enabled: boolean } @@ -78,30 +78,25 @@ export const DestinationTypeSelection = () => { stage: 'Public Alpha', enabled: isOptionVisible('BigQuery', etlEnableBigQuery), }, - ], - }, - { - label: 'Early Access', - options: [ { value: 'DuckLake', label: 'DuckLake', description: 'Replicate changes to DuckLake for open lakehouse storage', - stage: 'Early Access', + stage: 'Public Alpha', enabled: isOptionVisible('DuckLake', etlEnableDucklake), }, { value: 'Snowflake', label: 'Snowflake', description: 'Replicate changes to Snowflake for cloud data warehousing', - stage: 'Early Access', + stage: 'Public Alpha', enabled: isOptionVisible('Snowflake', etlEnableSnowflake), }, { value: 'ClickHouse', label: 'ClickHouse', description: 'Replicate changes to ClickHouse for real-time analytics', - stage: 'Early Access', + stage: 'Public Alpha', enabled: isOptionVisible('ClickHouse', etlEnableClickHouse), }, ], @@ -132,7 +127,6 @@ export const DestinationTypeSelection = () => { (type: DestinationType) => string > = { 'Public Alpha': (type) => `${type} support is in public alpha.`, - 'Early Access': (type) => `${type} support is in early access.`, Deprecated: (type) => `${type} is deprecated.`, } diff --git a/apps/www/_blog/2025-12-02-introducing-supabase-pipelines.mdx b/apps/www/_blog/2025-12-02-introducing-supabase-pipelines.mdx index 67d19cff91c..ae1be599158 100644 --- a/apps/www/_blog/2025-12-02-introducing-supabase-pipelines.mdx +++ b/apps/www/_blog/2025-12-02-introducing-supabase-pipelines.mdx @@ -11,6 +11,8 @@ date: '2025-12-02T11:00' toc_depth: 2 --- +> **Update: October 2, 2026.** BigQuery, ClickHouse, DuckLake, and Snowflake are now available in public alpha. The destination early-access form has been retired. To get started, see the [destination guides](/docs/guides/database/replication#supported-destinations). The original announcement follows. + Today we're introducing **Supabase Pipelines**: managed change-data-capture pipelines that replicate your Postgres tables to analytical destinations in near real time. Pipelines reads changes from your Postgres database and writes them to supported destination systems. It uses logical replication to capture inserts, updates, deletes, and truncates as they happen. **Setup takes minutes in the Supabase Dashboard.** diff --git a/apps/www/_blog/2026-07-21-supabase-pipelines-public-alpha.mdx b/apps/www/_blog/2026-07-21-supabase-pipelines-public-alpha.mdx index 82541195ed9..5c8369322cb 100644 --- a/apps/www/_blog/2026-07-21-supabase-pipelines-public-alpha.mdx +++ b/apps/www/_blog/2026-07-21-supabase-pipelines-public-alpha.mdx @@ -14,6 +14,8 @@ date: '2026-07-21' toc_depth: 2 --- +> **Update: October 2, 2026.** BigQuery, ClickHouse, DuckLake, and Snowflake are now available in public alpha. The destination early-access form has been retired. To get started, see the [destination guides](/docs/guides/database/replication#supported-destinations). The original announcement follows. + Today we're moving **Supabase Pipelines** into public alpha. The biggest addition is schema change support: Pipelines can now detect supported schema changes in your source tables and apply them to the destination automatically. This release also brings a faster initial sync and a new destination request form for ClickHouse, Snowflake, and DuckLake. Supabase Pipelines replicates your Supabase Postgres data to external analytical systems in near real time. It is powered by [Supabase ETL](https://github.com/supabase/etl), our open source change-data-capture pipeline written in Rust. Supabase ETL reads changes from Postgres through logical replication, copies existing table data, streams inserts, updates, deletes, and truncates, and writes them to your destination. diff --git a/apps/www/_go/index.tsx b/apps/www/_go/index.tsx index 1b4650ce11d..a5556ead938 100644 --- a/apps/www/_go/index.tsx +++ b/apps/www/_go/index.tsx @@ -38,8 +38,6 @@ import contestRules from './legal/contest-rules' import byocEarlyAccess from './pre-release/byoc-early-access' import multigresEarlyAccess from './pre-release/multigres-early-access' import multigresEarlyAccessThankYou from './pre-release/multigres-early-access-thank-you' -import supabasePipelinesNewDestinations from './pre-release/supabase-pipelines-new-destinations' -import supabasePipelinesNewDestinationsThankYou from './pre-release/supabase-pipelines-new-destinations-thank-you' import supabaseStripeProjects from './stripe-projects/supabase-stripe-projects' const pages: GoPageInput[] = [ @@ -47,8 +45,6 @@ const pages: GoPageInput[] = [ awsActivateOffer, // maintain forever exampleLeadGen, // sample lead gen page byocEarlyAccess, // maintain until PM says to remove - supabasePipelinesNewDestinations, // maintain while Pipelines destination early access is active - supabasePipelinesNewDestinationsThankYou, // maintain while Pipelines destination early access is active multigresEarlyAccess, // maintain while the Multigres private alpha is active multigresEarlyAccessThankYou, // maintain while the Multigres private alpha is active amoe, // maintain forever diff --git a/apps/www/_go/pre-release/supabase-pipelines-new-destinations-thank-you.tsx b/apps/www/_go/pre-release/supabase-pipelines-new-destinations-thank-you.tsx deleted file mode 100644 index b467fce7e9d..00000000000 --- a/apps/www/_go/pre-release/supabase-pipelines-new-destinations-thank-you.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import type { GoPageInput } from 'marketing' - -const page: GoPageInput = { - template: 'thank-you', - slug: 'supabase-pipelines-new-destinations/thank-you', - metadata: { - title: 'Supabase Pipelines destination request received', - description: 'Thanks for requesting early access to upcoming Supabase Pipelines destinations.', - ogImage: '/images/blog/2025-12-02-introducing-supabase-pipelines/og.png', - }, - hero: { - title: 'Thanks for your request', - subtitle: 'Early Access', - description: - "We received your destination preferences for Supabase Pipelines. If your workspace is selected for early access to ClickHouse, Snowflake, or DuckLake destinations, we'll reach out with next steps.", - ctas: [ - { - label: 'Back to Supabase', - href: '/', - variant: 'secondary', - }, - ], - }, -} - -export default page diff --git a/apps/www/_go/pre-release/supabase-pipelines-new-destinations.tsx b/apps/www/_go/pre-release/supabase-pipelines-new-destinations.tsx deleted file mode 100644 index c16ed311442..00000000000 --- a/apps/www/_go/pre-release/supabase-pipelines-new-destinations.tsx +++ /dev/null @@ -1,181 +0,0 @@ -import type { GoPageInput } from 'marketing' - -const page: GoPageInput = { - template: 'lead-gen', - slug: 'supabase-pipelines-new-destinations', - metadata: { - title: 'Supabase Pipelines Destinations - Early Access', - description: - 'Request early access to upcoming Supabase Pipelines destinations for ClickHouse, Snowflake, and DuckLake.', - ogImage: '/images/blog/2025-12-02-introducing-supabase-pipelines/og.png', - }, - hero: { - title: 'Supabase Pipelines destinations', - subtitle: 'Early Access', - description: - "Managed change-data-capture pipelines that replicate your Supabase Postgres data to analytical systems in near real time. Request early access to the destinations we're adding next: ClickHouse, Snowflake, and DuckLake.", - image: { - src: '/images/blog/2025-12-02-introducing-supabase-pipelines/thumb.png', - alt: 'Introducing Supabase Pipelines', - width: 2400, - height: 1260, - }, - ctas: [ - { - label: 'Request early access', - href: '#form', - variant: 'primary', - }, - { - label: 'Read the announcement', - href: '/blog/introducing-supabase-pipelines', - variant: 'secondary', - }, - ], - }, - sections: [ - { - type: 'feature-grid', - className: 'border-y border-muted bg-surface-75 py-16 sm:py-24', - title: 'Bring Supabase Postgres into your analytics stack', - description: - 'Pipelines keeps your application workload on Postgres while ongoing replication sends production changes to systems built for analytics, reporting, and lakehouse workflows.', - columns: 3, - items: [ - { - title: 'ClickHouse', - description: - 'Replicate operational data into ClickHouse for high-volume analytical queries, dashboards, and event workloads.', - }, - { - title: 'Snowflake', - description: - 'Replicate Supabase Postgres data into Snowflake for warehouse analytics, BI, and governed data workflows.', - }, - { - title: 'DuckLake', - description: - 'Move data into an open lakehouse destination for portable analytics and long-term data workflows.', - }, - ], - }, - { - type: 'form', - id: 'form', - className: 'py-4 sm:py-8', - title: 'Request early access to new Pipelines destinations', - description: - "This form is for early access to upcoming destinations for Supabase Pipelines, not access to Supabase Pipelines itself. Tell us which destinations your team wants to use. If your workspace is selected, we'll reach out with next steps.", - fields: [ - { - type: 'email', - name: 'email', - label: 'Email address', - placeholder: 'Work email', - required: true, - }, - { - type: 'text', - name: 'org_slug', - label: 'Supabase organization slug', - placeholder: 'acme-inc', - description: 'Use the slug from your Supabase Dashboard URL, for example /org/acme-inc.', - required: true, - }, - { - type: 'checkbox', - name: 'destination_clickhouse', - label: 'ClickHouse', - description: - 'For high-throughput analytical queries, event data, logs, and dashboard workloads.', - group: 'requested_destinations', - groupRequired: true, - }, - { - type: 'checkbox', - name: 'destination_snowflake', - label: 'Snowflake', - description: 'For teams running warehouse analytics, BI, or governed data workflows.', - group: 'requested_destinations', - groupRequired: true, - }, - { - type: 'checkbox', - name: 'destination_ducklake', - label: 'DuckLake', - description: - 'For open lakehouse workflows where you want portable data and flexible analytics.', - group: 'requested_destinations', - groupRequired: true, - }, - ], - submitLabel: 'Request destination access', - successRedirect: '/go/supabase-pipelines-new-destinations/thank-you', - disclaimer: - 'By submitting this form, I confirm that I have read and understood the [Privacy Policy](https://supabase.com/privacy).', - crm: { - notion: { - database_id: '3825004b775f80828179e7bdd7ee4b8d', - columnMap: { - email: 'Email', - org_slug: 'Organization Slug', - destination_clickhouse: 'ClickHouse', - destination_snowflake: 'Snowflake', - destination_ducklake: 'DuckLake', - }, - }, - }, - }, - { - type: 'three-column', - className: 'pb-16 sm:pb-24', - title: 'Suggested reading', - description: 'Get the product context and setup details behind Supabase Pipelines.', - children: ( - <> - - Blog - - Introducing Supabase Pipelines - - - Learn how managed CDC pipelines move Postgres changes to analytical destinations in - near real time. - - - - Docs - - Set up Pipelines - - - Review publications, destination setup, monitoring, and how pipelines are managed from - the Dashboard. - - - - Guide - - Realtime or Pipelines? - - - Compare live user experiences over WebSocket with reliable data movement into - analytical systems. - - - - ), - }, - ], -} - -export default page diff --git a/apps/www/data/features.tsx b/apps/www/data/features.tsx index 35d813bbd02..597092badce 100644 --- a/apps/www/data/features.tsx +++ b/apps/www/data/features.tsx @@ -654,7 +654,7 @@ Foreign Data Wrappers simplify data integration by bringing external data into y 4. Workload isolation: Keep analytical queries away from the primary database. ## Destinations -BigQuery is currently available. ClickHouse, DuckLake, and Snowflake are in Early Access. [Request access](/go/supabase-pipelines-new-destinations) to these destinations. +BigQuery, ClickHouse, DuckLake, and Snowflake are available in public alpha. See the [destination guides](/docs/guides/database/replication#supported-destinations) to get started. ## Setup Create a Postgres publication for the tables to replicate. In Database > Pipelines, add a Pipelines destination, configure its settings, and monitor the pipeline from the Dashboard. diff --git a/apps/www/lib/redirects.js b/apps/www/lib/redirects.js index 1281c61315f..a7460cba810 100644 --- a/apps/www/lib/redirects.js +++ b/apps/www/lib/redirects.js @@ -40,6 +40,16 @@ module.exports = [ source: '/features/supabase-etl', destination: '/features/supabase-pipelines', }, + { + permanent: true, + source: '/go/supabase-pipelines-new-destinations', + destination: '/docs/guides/database/replication#supported-destinations', + }, + { + permanent: true, + source: '/go/supabase-pipelines-new-destinations/thank-you', + destination: '/docs/guides/database/replication#supported-destinations', + }, { permanent: true, source: '/ui/docs/ai-editors-rules/prompts',