diff --git a/src/destinations/bigquery.mdx b/src/destinations/bigquery.mdx
new file mode 100644
index 00000000..198312e2
--- /dev/null
+++ b/src/destinations/bigquery.mdx
@@ -0,0 +1,61 @@
+---
+title: BigQuery destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand inserts the payload as rows into your Google BigQuery table.
+
+## Prerequisites
+
+Before setting up a BigQuery destination, ensure that you have:
+- A Google Cloud project with BigQuery enabled
+- A dataset and table to insert into (see [Data format and table setup](#data-format-and-table-setup))
+- A service account with the `BigQuery Data Editor` role (or `bigquery.tables.updateData` permission) on that dataset, and a JSON key for it
+
+## Data format and table setup
+
+Ampersand delivers each read or subscribe message as a JSON object. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+The BigQuery destination writes each message into two columns: `id` (a generated identifier) and `payload` (the full message JSON, written as a string). Create the table with exactly these columns:
+
+```sql
+CREATE TABLE `my-project.my_dataset.my_table` (
+ id STRING,
+ payload STRING
+);
+```
+
+## Create a BigQuery destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new BigQuery destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandBigQuery` | Alias to reference in your `amp.yaml` file |
+| **Project ID** | string | Yes | `my-gcp-project` | Google Cloud project ID |
+| **Dataset ID** | string | Yes | `analytics` | BigQuery dataset ID |
+| **Table ID** | string | Yes | `ampersand_events` | BigQuery table ID |
+| **Service account credentials** | string | Yes | | Service account key JSON with write access to the table |
+| **Batch size** | integer | No | `1000` | Rows to buffer before flushing a batch (defaults to 1000) |
+| **Max wait (seconds)** | integer | No | `30` | Max seconds to wait before flushing a batch (defaults to 30) |
+
+## Refer to the destination in your integration
+
+After creating your BigQuery destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToBigQuery
+ displayName: Salesforce to BigQuery
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandBigQuery
+ - objectName: contact
+ destination: ampersandBigQuery
+```
diff --git a/src/destinations/clickhouse.mdx b/src/destinations/clickhouse.mdx
new file mode 100644
index 00000000..954b3bca
--- /dev/null
+++ b/src/destinations/clickhouse.mdx
@@ -0,0 +1,69 @@
+---
+title: ClickHouse destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand inserts the payload as rows into your ClickHouse table.
+
+## Prerequisites
+
+Before setting up a ClickHouse destination, ensure that you have:
+- A ClickHouse instance reachable over HTTPS (ClickHouse Cloud or self-hosted)
+- A table to insert into (see [Data format and table setup](#data-format-and-table-setup))
+- A username and password with `INSERT` privileges on that table
+
+## Data format and table setup
+
+Ampersand delivers each read or subscribe message as a JSON object. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+ClickHouse matches the payload's top-level keys to your table's columns by name. Create a column for each top-level key you want to store. Keys with no matching column are ignored. `result` is the array of synced records; store it as a JSON string.
+
+```sql
+CREATE TABLE ampersand_events (
+ action String,
+ objectName String,
+ operationId String,
+ installationId String,
+ operationTime String,
+ result String,
+ ...
+)
+ENGINE = MergeTree()
+ORDER BY tuple();
+```
+
+## Create a ClickHouse destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new ClickHouse destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandClickHouse` | Alias to reference in your `amp.yaml` file |
+| **URL** | string | Yes | `https://abc.clickhouse.cloud:8443` | HTTPS URL of your ClickHouse instance |
+| **Username** | string | Yes | `default` | ClickHouse username |
+| **Password** | string | Yes | | ClickHouse password |
+| **Table name** | string | Yes | `ampersand_events` | Table to insert rows into |
+| **Database** | string | No | `default` | Database containing the table |
+| **Batch size** | integer | No | `1000` | Rows to buffer before flushing a batch (defaults to 1000) |
+| **Max wait (seconds)** | integer | No | `30` | Max seconds to wait before flushing a batch (defaults to 30) |
+
+## Refer to the destination in your integration
+
+After creating your ClickHouse destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToClickHouse
+ displayName: Salesforce to ClickHouse
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandClickHouse
+ - objectName: contact
+ destination: ampersandClickHouse
+```
diff --git a/src/destinations/eventbridge.mdx b/src/destinations/eventbridge.mdx
new file mode 100644
index 00000000..29212d2f
--- /dev/null
+++ b/src/destinations/eventbridge.mdx
@@ -0,0 +1,50 @@
+---
+title: Amazon EventBridge destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand publishes the payload as events to your Amazon EventBridge event bus.
+
+## Prerequisites
+
+Before setting up an EventBridge destination, ensure that you have:
+- An AWS account with an EventBridge event bus
+- AWS credentials with `events:PutEvents` permission on that event bus
+
+## Data format
+
+Ampersand publishes each read or subscribe message to your event bus. The message payload is carried in the event's `detail` field, and its schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+## Create an EventBridge destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new EventBridge destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandEventBridge` | Alias to reference in your `amp.yaml` file |
+| **Event bus name** | string | Yes | `default` | Name of your EventBridge event bus |
+| **Region** | string | Yes | `us-west-2` | AWS region where your event bus is located |
+| **AWS Access Key ID** | string | Yes | `AKIAIOSFODNN7EXAMPLE` | AWS access key with `events:PutEvents` permission |
+| **AWS Secret Access Key** | string | Yes | | AWS secret access key |
+| **Detail type** | string | No | `ampersand.record` | Value to set as the EventBridge `detail-type` on published events |
+
+## Refer to the destination in your integration
+
+After creating your EventBridge destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToEventBridge
+ displayName: Salesforce to EventBridge
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandEventBridge
+ - objectName: contact
+ destination: ampersandEventBridge
+```
diff --git a/src/destinations/kinesis.mdx b/src/destinations/kinesis.mdx
index 8cbcd64d..09280a74 100644
--- a/src/destinations/kinesis.mdx
+++ b/src/destinations/kinesis.mdx
@@ -83,10 +83,6 @@ You'll need to provide:
| **Partition key template** | string | No | [JMESPath](https://jmespath.org) template for partition key |
| **Endpoint URL** | string | No | Custom Kinesis endpoint if applicable (e.g. when using [LocalStack](https://www.localstack.cloud)) |
-
-Ampersand encrypts and stores your AWS credentials securely.
-
-
## Refer to the destination in your integration
After creating your Kinesis destination, reference it in your `amp.yaml` file:
diff --git a/src/destinations/overview.mdx b/src/destinations/overview.mdx
index 7fa3179f..208f472d 100644
--- a/src/destinations/overview.mdx
+++ b/src/destinations/overview.mdx
@@ -2,7 +2,7 @@
title: Overview
---
-Ampersand currently supports webhook, Slack, Kinesis, and S3 destinations. Destinations allow you to route data synced from SaaS instances via [Read Actions](/read-actions) or [Subscribe Actions](/subscribe-actions), and to receive real-time [Notifications](/notifications) about important lifecycle events in your projects.
+Ampersand supports webhook, Slack, Kinesis, and S3 destinations, along with a range of data warehouse and message queue destinations (ClickHouse, Snowflake, BigQuery, Redshift, Amazon SQS, Amazon SNS, Amazon EventBridge, Google Cloud Pub/Sub, and RabbitMQ). Destinations allow you to route data synced from SaaS instances via [Read Actions](/read-actions) or [Subscribe Actions](/subscribe-actions), and to receive real-time [Notifications](/notifications) about important lifecycle events in your projects.
## Add a destination to the Ampersand Dashboard
@@ -36,17 +36,31 @@ Destinations can also be used to receive [notifications](/notifications) about i
* [Webhook destinations](/destinations/webhooks)
* [Slack destinations](/destinations/slack)
-* [Amazon Kinesis destinations](/destinations/kinesis)
+
+### Blob storage
+
* [Amazon S3 destinations](/destinations/s3)
+### Databases and warehouses
+
+* [ClickHouse destinations](/destinations/clickhouse)
+* [Snowflake destinations](/destinations/snowflake)
+* [BigQuery destinations](/destinations/bigquery)
+* [Amazon Redshift destinations](/destinations/redshift)
+
+### Message queues and event buses
+
+* [Amazon Kinesis destinations](/destinations/kinesis)
+* [Amazon SQS destinations](/destinations/sqs)
+* [Amazon SNS destinations](/destinations/sns)
+* [Amazon EventBridge destinations](/destinations/eventbridge)
+* [Google Cloud Pub/Sub destinations](/destinations/pubsub)
+* [RabbitMQ destinations](/destinations/rabbitmq)
+
## Other Destinations
-We have many other destination types on the roadmap, including:
+We have more destination types on the roadmap, including:
* Postgres
* Ampersand-hosted Postgres
-* Amazon SQS
-* Google Cloud Storage
-* Google PubSub
-* RabbitMQ
* Azure Service Bus
diff --git a/src/destinations/pubsub.mdx b/src/destinations/pubsub.mdx
new file mode 100644
index 00000000..b79003dc
--- /dev/null
+++ b/src/destinations/pubsub.mdx
@@ -0,0 +1,48 @@
+---
+title: Google Cloud Pub/Sub destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand publishes the payload as messages to your Google Cloud Pub/Sub topic.
+
+## Prerequisites
+
+Before setting up a Pub/Sub destination, ensure that you have:
+- A Google Cloud project with a Pub/Sub topic
+- A service account with the `Pub/Sub Publisher` role (or `pubsub.topics.publish` permission) on that topic, and a JSON key for it
+
+## Data format
+
+Ampersand publishes each read or subscribe message to your topic as JSON. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+## Create a Pub/Sub destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new Pub/Sub destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandPubSub` | Alias to reference in your `amp.yaml` file |
+| **Project ID** | string | Yes | `my-gcp-project` | Google Cloud project ID |
+| **Topic ID** | string | Yes | `ampersand-events` | Pub/Sub topic ID |
+| **Service account credentials** | string | Yes | | Service account key JSON with publish access to the topic |
+
+## Refer to the destination in your integration
+
+After creating your Pub/Sub destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToPubSub
+ displayName: Salesforce to Pub/Sub
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandPubSub
+ - objectName: contact
+ destination: ampersandPubSub
+```
diff --git a/src/destinations/rabbitmq.mdx b/src/destinations/rabbitmq.mdx
new file mode 100644
index 00000000..9c873bb4
--- /dev/null
+++ b/src/destinations/rabbitmq.mdx
@@ -0,0 +1,48 @@
+---
+title: RabbitMQ destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand publishes the payload as messages to your RabbitMQ instance.
+
+## Prerequisites
+
+Before setting up a RabbitMQ destination, ensure that you have:
+- A RabbitMQ instance reachable from the internet
+- A connection URI with permission to publish
+- A routing key that reaches a queue you can consume from
+
+## Data format
+
+Ampersand publishes each read or subscribe message to your RabbitMQ instance as JSON, using the routing key you configure. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+## Create a RabbitMQ destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new RabbitMQ destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandRabbitMQ` | Alias to reference in your `amp.yaml` file |
+| **Connection URI** | string | Yes | `amqp://user:pass@host:5672` | AMQP connection URI (it embeds your credentials) |
+| **Routing key** | string | Yes | `ampersand-events` | Routing key to publish messages with |
+
+## Refer to the destination in your integration
+
+After creating your RabbitMQ destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToRabbitMQ
+ displayName: Salesforce to RabbitMQ
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandRabbitMQ
+ - objectName: contact
+ destination: ampersandRabbitMQ
+```
diff --git a/src/destinations/redshift.mdx b/src/destinations/redshift.mdx
new file mode 100644
index 00000000..095a1e02
--- /dev/null
+++ b/src/destinations/redshift.mdx
@@ -0,0 +1,70 @@
+---
+title: Amazon Redshift destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand inserts the payload as rows into your Amazon Redshift table. Both Redshift Serverless (via a workgroup) and provisioned clusters (via a cluster identifier) are supported.
+
+## Prerequisites
+
+Before setting up a Redshift destination, ensure that you have:
+- An Amazon Redshift Serverless workgroup or a provisioned cluster
+- A target database, and a table to insert into (see [Data format and table setup](#data-format-and-table-setup))
+- AWS credentials with permission to run the Redshift Data API and insert into the target table
+
+## Data format and table setup
+
+Ampersand delivers each read or subscribe message as a JSON object. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+The Redshift destination writes each message into two columns: `created_at` (the insert time) and `payload` (the full message JSON). The payload is written as a string, so `payload` must be a character column large enough to hold it. Create the table like this:
+
+```sql
+CREATE TABLE events (
+ created_at TIMESTAMP,
+ payload VARCHAR(65535)
+);
+```
+
+## Create a Redshift destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new Redshift destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandRedshift` | Alias to reference in your `amp.yaml` file |
+| **Region** | string | Yes | `us-west-2` | AWS region where your Redshift resource lives |
+| **AWS Access Key ID** | string | Yes | `AKIAIOSFODNN7EXAMPLE` | AWS access key with Redshift Data API permissions |
+| **AWS Secret Access Key** | string | Yes | | AWS secret access key |
+| **Database** | string | No | `dev` | Target database name |
+| **Schema** | string | No | `public` | Target schema |
+| **Table name** | string | No | `events` | Target table |
+| **Workgroup name** | string | No* | `my-workgroup` | Redshift Serverless workgroup name |
+| **Cluster identifier** | string | No* | `my-cluster` | Provisioned cluster identifier |
+| **DB user** | string | No | `ampersand` | Database user (for provisioned clusters) |
+| **Batch size** | integer | No | `1000` | Rows to buffer before flushing a batch (defaults to 1000) |
+| **Max wait (seconds)** | integer | No | `30` | Max seconds to wait before flushing a batch (defaults to 30) |
+
+
+*Either **Workgroup name** or **Cluster identifier** is required. Provide a **workgroup name** for Redshift Serverless, or a **cluster identifier** (and **DB user**) for a provisioned cluster.
+
+
+## Refer to the destination in your integration
+
+After creating your Redshift destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToRedshift
+ displayName: Salesforce to Redshift
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandRedshift
+ - objectName: contact
+ destination: ampersandRedshift
+```
diff --git a/src/destinations/s3.mdx b/src/destinations/s3.mdx
index 41a9288c..c1d8f40c 100644
--- a/src/destinations/s3.mdx
+++ b/src/destinations/s3.mdx
@@ -67,10 +67,6 @@ You'll need to provide:
| **Object key template** | string | No | [JMESPath](https://jmespath.org) template for object key naming |
| **Storage class** | string | No | S3 storage class for written objects (defaults to `STANDARD`) |
-
-Ampersand encrypts and stores your AWS credentials securely.
-
-
## Refer to the destination in your integration
After creating your S3 destination, reference it in your `amp.yaml` file:
diff --git a/src/destinations/snowflake.mdx b/src/destinations/snowflake.mdx
new file mode 100644
index 00000000..9f62aef7
--- /dev/null
+++ b/src/destinations/snowflake.mdx
@@ -0,0 +1,64 @@
+---
+title: Snowflake destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand inserts the payload as rows into your Snowflake table.
+
+## Prerequisites
+
+Before setting up a Snowflake destination, ensure that you have:
+- A Snowflake account
+- A user configured for [key-pair authentication](https://docs.snowflake.com/en/user-guide/key-pair-auth) (Ampersand authenticates with an RSA private key, not a password)
+- A target database, schema, and table (see [Data format and table setup](#data-format-and-table-setup)), with `INSERT` privileges granted to that user
+
+## Data format and table setup
+
+Ampersand delivers each read or subscribe message as a JSON object. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+The Snowflake destination writes each message into three columns: `id` (a generated identifier), `created_at` (the insert time), and `payload` (the full message JSON, written as text). Create the table with exactly these columns:
+
+```sql
+CREATE TABLE my_db.my_schema.my_table (
+ id TEXT,
+ created_at TIMESTAMP,
+ payload TEXT
+);
+```
+
+## Create a Snowflake destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new Snowflake destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandSnowflake` | Alias to reference in your `amp.yaml` file |
+| **Account identifier** | string | Yes | `myorg-myaccount` | Your Snowflake account identifier |
+| **User ID** | string | Yes | `SVC_AMPERSAND` | Snowflake user configured for key-pair auth |
+| **Private key** | string | Yes | | PEM-encoded RSA private key for that user |
+| **Database** | string | No | `ANALYTICS` | Target database |
+| **Schema** | string | No | `PUBLIC` | Target schema |
+| **Table name** | string | No | `ampersand_events` | Target table |
+| **Batch size** | integer | No | `1000` | Rows to buffer before flushing a batch (defaults to 1000) |
+| **Max wait (seconds)** | integer | No | `30` | Max seconds to wait before flushing a batch (defaults to 30) |
+
+## Refer to the destination in your integration
+
+After creating your Snowflake destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToSnowflake
+ displayName: Salesforce to Snowflake
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandSnowflake
+ - objectName: contact
+ destination: ampersandSnowflake
+```
diff --git a/src/destinations/sns.mdx b/src/destinations/sns.mdx
new file mode 100644
index 00000000..e1f19851
--- /dev/null
+++ b/src/destinations/sns.mdx
@@ -0,0 +1,50 @@
+---
+title: Amazon SNS destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand publishes the payload as messages to your Amazon SNS topic.
+
+## Prerequisites
+
+Before setting up an SNS destination, ensure that you have:
+- An AWS account with an SNS topic
+- AWS credentials with `sns:Publish` permission on that topic
+
+## Data format
+
+Ampersand publishes each read or subscribe message to your topic as JSON. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+## Create an SNS destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new SNS destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandSNS` | Alias to reference in your `amp.yaml` file |
+| **Topic ARN** | string | Yes | `arn:aws:sns:us-east-1:123456789012:my-topic` | ARN of your SNS topic |
+| **Region** | string | Yes | `us-west-2` | AWS region where your topic is located |
+| **AWS Access Key ID** | string | Yes | `AKIAIOSFODNN7EXAMPLE` | AWS access key with `sns:Publish` permission |
+| **AWS Secret Access Key** | string | Yes | | AWS secret access key |
+| **Endpoint URL** | string | No | `https://sns.us-east-1.amazonaws.com` | Custom SNS endpoint if applicable |
+
+## Refer to the destination in your integration
+
+After creating your SNS destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToSNS
+ displayName: Salesforce to SNS
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandSNS
+ - objectName: contact
+ destination: ampersandSNS
+```
diff --git a/src/destinations/sqs.mdx b/src/destinations/sqs.mdx
new file mode 100644
index 00000000..bf7598d0
--- /dev/null
+++ b/src/destinations/sqs.mdx
@@ -0,0 +1,50 @@
+---
+title: Amazon SQS destinations
+---
+
+For more information on destinations, see the [Destinations](/destinations) page.
+
+When new data is read from a SaaS instance via a [Read Action](/read-actions) or [Subscribe Action](/subscribe-actions), Ampersand publishes the payload as messages to your Amazon SQS queue.
+
+## Prerequisites
+
+Before setting up an SQS destination, ensure that you have:
+- An AWS account with an SQS queue
+- AWS credentials with `sqs:SendMessage` permission on that queue
+
+## Data format
+
+Ampersand publishes each read or subscribe message to your queue as JSON. The full payload schema is defined in [webhook.yaml](https://github.com/amp-labs/openapi/blob/main/webhook/webhook.yaml).
+
+## Create an SQS destination
+
+Go to the [Destinations page](https://dashboard.withampersand.com/projects/_/destinations) in the Ampersand Dashboard and create a new SQS destination.
+
+You'll need to provide:
+
+| Field | Type | Required | Example | Description |
+|-------|------|----------|---------|-------------|
+| **Destination name** | string | Yes | `ampersandSQS` | Alias to reference in your `amp.yaml` file |
+| **Queue URL** | string | Yes | `https://sqs.us-east-1.amazonaws.com/123456789012/my-queue` | URL of your SQS queue |
+| **Region** | string | Yes | `us-west-2` | AWS region where your queue is located |
+| **AWS Access Key ID** | string | Yes | `AKIAIOSFODNN7EXAMPLE` | AWS access key with `sqs:SendMessage` permission |
+| **AWS Secret Access Key** | string | Yes | | AWS secret access key |
+| **Endpoint URL** | string | No | `https://sqs.us-east-1.amazonaws.com` | Custom SQS endpoint if applicable |
+
+## Refer to the destination in your integration
+
+After creating your SQS destination, reference it in your `amp.yaml` file:
+
+```yaml
+specVersion: 1.0.0
+integrations:
+ - name: salesforceToSQS
+ displayName: Salesforce to SQS
+ provider: salesforce
+ read:
+ objects:
+ - objectName: account
+ destination: ampersandSQS
+ - objectName: contact
+ destination: ampersandSQS
+```
diff --git a/src/docs.json b/src/docs.json
index 63f11974..6e5af677 100644
--- a/src/docs.json
+++ b/src/docs.json
@@ -59,8 +59,32 @@
"destinations/overview",
"destinations/webhooks",
"destinations/slack",
- "destinations/kinesis",
- "destinations/s3"
+ {
+ "group": "Blob storage",
+ "pages": [
+ "destinations/s3"
+ ]
+ },
+ {
+ "group": "Databases and warehouses",
+ "pages": [
+ "destinations/bigquery",
+ "destinations/clickhouse",
+ "destinations/redshift",
+ "destinations/snowflake"
+ ]
+ },
+ {
+ "group": "Queues",
+ "pages": [
+ "destinations/eventbridge",
+ "destinations/kinesis",
+ "destinations/pubsub",
+ "destinations/rabbitmq",
+ "destinations/sns",
+ "destinations/sqs"
+ ]
+ }
]
},
{
diff --git a/src/generate-docs.ts b/src/generate-docs.ts
index cba35cb7..40a53080 100644
--- a/src/generate-docs.ts
+++ b/src/generate-docs.ts
@@ -290,8 +290,32 @@ const baseConfig = {
"destinations/overview",
"destinations/webhooks",
"destinations/slack",
- "destinations/kinesis",
- "destinations/s3",
+ {
+ group: "Blob storage",
+ pages: [
+ "destinations/s3",
+ ]
+ },
+ {
+ group: "Databases and warehouses",
+ pages: [
+ "destinations/bigquery",
+ "destinations/clickhouse",
+ "destinations/redshift",
+ "destinations/snowflake",
+ ]
+ },
+ {
+ group: "Queues",
+ pages: [
+ "destinations/eventbridge",
+ "destinations/kinesis",
+ "destinations/pubsub",
+ "destinations/rabbitmq",
+ "destinations/sns",
+ "destinations/sqs",
+ ]
+ }
]
},
{