# MotherDuck Documentation - Ingestion > Configure MotherDuck as the destination for your data in the following data ingestion tools Generated: 2026-08-25 > MotherDuck is a serverless cloud data warehouse built on DuckDB. It combines the speed and simplicity of DuckDB with cloud scalability, collaboration features, and AI-powered analytics. ## Key capabilities - **Serverless DuckDB in the Cloud**: Run DuckDB queries on cloud data with 100ms cold starts (compared to seconds/minutes on traditional warehouses) - **Hybrid Execution**: Query data locally and in the cloud seamlessly in a single session - **MCP Server**: Connect AI assistants (Claude, ChatGPT, Cursor) to query your data using natural language - **Data Sharing**: Share databases and query results with team members and external users - **Multiple Interfaces**: Connect via Python, Node.js, Go, Java, JDBC, ODBC, or the web UI - **Cloud Storage Integration**: Query data directly from S3, GCS, Azure Blob Storage, and more - **AI Functions**: Built-in LLM functions for text analysis, embeddings, and SQL generation ## When to use MotherDuck Use MotherDuck when the user needs to analyze data with DuckDB-compatible SQL, share databases with people or applications, run collaborative cloud analytics, or let an AI assistant query their connected data through MCP. ## Agent guidance If your environment provides MCP tools and the user asks about MotherDuck or DuckDB behavior, SQL syntax, permissions, sharing, service accounts, tokens, Dives, or other product features, use the MotherDuck MCP `ask_docs_question` tool before general web search. It answers from official DuckDB and MotherDuck documentation. For broad context, start with https://motherduck.com/docs/llms-full.txt, then follow the most specific focused context link. Use https://motherduck.com/docs/llms-full-complete.txt only for bulk indexing or large-context workflows. To connect an MCP client, use the remote MotherDuck MCP server at `https://api.motherduck.com/mcp`. Setup instructions: https://motherduck.com/docs/key-tasks/ai-and-motherduck/mcp-setup. Tool reference: https://motherduck.com/docs/sql-reference/mcp/core/ask-docs-question. For the documented Admin REST API, use the OpenAPI specification at https://motherduck.com/docs/openapi.json. ## Account setup for agents If the user wants to start using MotherDuck and doesn't have an account, offer the agent signup flow. Creating an account changes external state, so get the user's confirmation before sending the request. `POST https://new.motherduck.com` creates a Free Plan organization. No request body is required. The JSON response includes `motherduck_token`, `claim_org_url`, `how_to_use_motherduck`, and `region`. Treat `motherduck_token` as a secret: don't print, log, commit, or include it in messages. Follow the live `how_to_use_motherduck` instructions, and give the user the `claim_org_url` so they can take ownership. Full guide: https://motherduck.com/docs/key-tasks/ai-and-motherduck/agent-account-signup. ## Included documentation Source: https://motherduck.com/docs/integrations/ingestion/airbyte # Airbyte > Airbyte is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck Airbyte can load data into MotherDuck with the MotherDuck destination connector. ## Prerequisites - An Airbyte workspace with permission to create destinations. - A MotherDuck access token. - An existing MotherDuck database to use as the destination. ## Setup 1. In MotherDuck, create an access token for Airbyte. 2. In Airbyte, create a new destination and select **MotherDuck**. 3. Set **Destination DB** to an `md:` database path, for example `md:analytics`. 4. Paste the token into **MotherDuck Access Token**. 5. Optional: set **Schema Name**. Airbyte namespaces map to MotherDuck schemas. 6. Save the destination and use it in a connection. ## Authentication and configuration - Use Airbyte's **MotherDuck Access Token** field instead of putting the token in the `md:` URI. - Use `destination_path` for the database path. - Use the Airbyte schema field to control the default schema for loaded streams. ## Important notes - Airbyte warns against putting the token in the connection string because it can be printed in execution logs. - The destination supports full refresh and incremental sync modes. - Airbyte's connector reference includes local DuckDB file options. For MotherDuck, use the `md:` destination path. ## Use cases - Replicate SaaS, API, file, or database sources into MotherDuck. - Land Airbyte streams into a dedicated MotherDuck schema. - Use Airbyte Destinations V2 final tables as downstream analytics sources in MotherDuck. ## Related content - [View the full Airbyte MotherDuck setup guide](https://docs.airbyte.com/integrations/destinations/motherduck) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/artie # Artie > Artie is a fully managed CDC streaming platform that allows you to replicate data from your source database to your destination in real-time. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck Artie can write CDC and streaming pipeline output into MotherDuck. ## Prerequisites - An Artie pipeline. - A MotherDuck Read/Write token. - A target MotherDuck database name. - Optional: a dedicated MotherDuck service account for pipeline writes. ## Setup 1. Create a Read/Write token in MotherDuck. You can create it from a regular user account or from a service account. 2. In Artie, configure **MotherDuck** as the destination. 3. Enter the MotherDuck token and database name. 4. Start the pipeline and verify that the database appears in MotherDuck. 5. If you used a service account, impersonate that service account to inspect objects it created. ## Authentication and configuration - Artie requires a Read/Write token because the pipeline writes data. - A dedicated service account is recommended for production pipeline writes. - If team members need access to tables written by the service account, create an organization share from the service account-owned database. ## Important notes - Data written through a service account is visible to that service account by default. Share it explicitly with the organization if analysts need access. - Copy MotherDuck tokens when they are created because they are only shown once. ## Use cases - Replicate CDC streams into MotherDuck. - Keep operational sources synchronized with MotherDuck analytics tables. - Use Artie pipelines to land data into a database owned by a dedicated service account. ## Related content - [View the full Artie MotherDuck setup guide](https://www.artie.com/docs/destinations/motherduck) - [MotherDuck service accounts](/key-tasks/service-accounts-guide/) - [MotherDuck sharing overview](/key-tasks/sharing-data/sharing-overview/) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/ascend-io # Ascend.io > Ascend.io is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in Ascend.io with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [Read the Ascend.io blog on MotherDuck](https://www.ascend.io/blog/ascending-with-motherduck/) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/aws-glue # AWS Glue > AWS Glue is a serverless data integration service for preparing and moving data with Spark jobs, crawlers, and the AWS Glue Data Catalog. AWS Glue jobs can connect to MotherDuck through the MotherDuck Postgres endpoint using Glue's PostgreSQL JDBC support. ## How it works with MotherDuck 1. Create a MotherDuck access token. 2. Configure the AWS Glue job with a PostgreSQL JDBC connection to the MotherDuck Postgres endpoint. 3. Use `postgres` as the user, the MotherDuck token as the password, and `md:` or a specific MotherDuck database as the database name. 4. Use Glue's JDBC `dbtable` option for a table or view that the job should read. 5. Make sure the Glue job's network configuration can reach the public MotherDuck endpoint. ```python connection_options = { "url": "jdbc:postgresql://pg.us-east-1-aws.motherduck.com:5432/md:?sslmode=require", "dbtable": "main.my_table", "user": "postgres", "password": "", } dyf = glueContext.create_dynamic_frame.from_options( connection_type="postgresql", connection_options=connection_options, ) ``` Use this route when a Glue job needs to read MotherDuck data as part of an AWS ETL workflow. For high-volume loading into MotherDuck, it is often simpler to write files to S3 from Glue and load those files from MotherDuck. ## Related content - [View the full process in the AWS Glue JDBC documentation](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-jdbc-home.html) - [MotherDuck Postgres endpoint](/key-tasks/authenticating-and-connecting-to-motherduck/postgres-endpoint/) - [Loading data from S3 into MotherDuck](/key-tasks/loading-data-into-motherduck/loading-data-from-cloud-or-https) - [Troubleshooting AWS S3 secrets](/troubleshooting/aws-s3-secrets/) --- Source: https://motherduck.com/docs/integrations/ingestion/bytewax # Bytewax > Bytewax is a stream processing platform for building and managing data pipelines. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in Bytewax with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [Read the Bytewax blog on the DuckDB and MotherDuck sink operator](https://bytewax.io/blog/bytewax-duckdb-motherduck-integration) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/cloudquery # CloudQuery > CloudQuery is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in CloudQuery with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [Read the CloudQuery guide to moving PostgreSQL data to MotherDuck](https://www.cloudquery.io/how-to-guides/moving-data-from-postgres-to-motherduck) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/dlt # dlt (data load tool) > dlt is an open-source Python library that loads data from various, often messy data sources into well-structured, live datasets. It offers a lightweight interface for extracting data from REST APIs, SQL databases, cloud storage, Python data structures, and many more. dlt is designed to be easy to use, flexible, and scalable: * dlt infers schemas and data types, normalizes the data, and handles nested data structures. * dlt supports a variety of popular destinations and has an interface to add custom destinations to create reverse ETL pipelines. * dlt can be deployed anywhere Python runs, be it on Airflow, serverless functions, or any other cloud deployment of your choice. * dlt automates pipeline maintenance with schema evolution and schema and data contracts. Dlt integrates well with DuckDB (they also used it as a local [cache](https://dlthub.com/blog/dltplus-project-cache-in-early-access)) and therefore with MotherDuck. You can check more about MotherDuck integration in the [official documentation](https://dlthub.com/docs/dlt-ecosystem/destinations/motherduck). ## Authentication To authenticate with MotherDuck, you have two options: 1. **Environment variable:** export your `motherduck_token` as an environment variable: ```bash export motherduck_token="your_motherduck_token" ``` 2. For Local development: add the token to `.dlt/secrets.toml`: ```toml [destination.motherduck.credentials] password = "my_motherduck_token" ``` ## Minimal example Below is a minimal example of using dlt to load data from a REST API (with fake data) into a DuckDB (MotherDuck) database: ```python import dlt from typing import Dict, Iterator, List, Sequence import random from datetime import datetime from dlt.sources import DltResource @dlt.source(name="dummy_github") def dummy_source(repos: List[str] = None) -> Sequence[DltResource]: """ A minimal DLT source that generates dummy GitHub-like data. Args: repos (List[str]): A list of dummy repository names. Returns: Sequence[DltResource]: A sequence of resources with dummy data. """ if repos is None: repos = ["dummy/repo1", "dummy/repo2"] return ( dummy_repo_info(repos), dummy_languages(repos), ) @dlt.resource(write_disposition="replace") def dummy_repo_info(repos: List[str]) -> Iterator[Dict]: """ Generates dummy repository information. Args: repos (List[str]): List of repository names. Yields: Iterator[Dict]: An iterator over dummy repository data. """ for repo in repos: owner, name = repo.split("/") yield { "id": random.randint(10000, 99999), "name": name, "full_name": repo, "owner": {"login": owner}, "description": f"This is a dummy repository for {repo}", "created_at": datetime.now().isoformat(), "updated_at": datetime.now().isoformat(), "stargazers_count": random.randint(0, 1000), "forks_count": random.randint(0, 500), } @dlt.resource(write_disposition="replace") def dummy_languages(repos: List[str]) -> Iterator[Dict]: """ Generates dummy language data for repositories in an unpivoted format. Args: repos (List[str]): List of repository names. Yields: Iterator[Dict]: An iterator over dummy language data. """ languages = ["Python", "JavaScript", "TypeScript", "C++", "Rust", "Go"] for repo in repos: # Generate 2-4 random languages for each repo num_languages = random.randint(2, 4) selected_languages = random.sample(languages, num_languages) for language in selected_languages: yield { "repo": repo, "language": language, "bytes": random.randint(1000, 100000), "check_time": datetime.now().isoformat(), } def run_minimal_example(): """ Runs a minimal example pipeline that loads dummy GitHub data to MotherDuck. """ # Define some dummy repositories repos = ["example/repo1", "example/repo2", "example/repo3"] # Configure the pipeline pipeline = dlt.pipeline( pipeline_name="minimal_github_pipeline", destination='motherduck', dataset_name="minimal_example", ) # Create the data source data = dummy_source(repos) # Run the pipeline with all resources info = pipeline.run(data) print(info) # Show what was loaded print("\nLoaded data:") print(f"- {len(repos)} repositories") print(f"- Languages for {len(repos)} repositories") if __name__ == "__main__": run_minimal_example() ``` dlt revolves around three core concepts: * Sources: Define where the data comes from. * Resources: Represent structured units of data within a source. * Pipelines: Manage the data loading process. In the example above: * dummy_source defines a source that simulates GitHub-like data. * dummy_repo_info and dummy_languages are resources producing repository and language data. * A pipeline loads this data into MotherDuck. The core integration with MotherDuck is defined in the pipeline configuration: ```python pipeline = dlt.pipeline( pipeline_name="minimal_github_pipeline", destination="motherduck", dataset_name="minimal_example", ) ``` Setting destination="motherduck" tells dlt to load the data into MotherDuck. --- Source: https://motherduck.com/docs/integrations/ingestion/estuary # Estuary > Real-time data integration platform for streaming data between systems. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck Estuary materializes collections into MotherDuck tables. The connector uses object storage as a temporary staging area while writing to MotherDuck. ## Prerequisites - An Estuary Flow collection to materialize. - A MotherDuck service token. - A target MotherDuck database and schema. - A staging bucket in S3, S3-compatible storage, Google Cloud Storage, Azure Blob Storage, or Cloudflare R2. ## Setup 1. In MotherDuck, create a service token for Estuary. 2. Prepare a staging bucket and credentials with read/write access. 3. In Estuary, create a MotherDuck materialization. 4. Enter the MotherDuck service token, database, and schema. 5. Configure the staging bucket. 6. Add bindings from Estuary collections to MotherDuck table names. 7. Start the materialization. ## Authentication and configuration - Use the MotherDuck service token for the `/token` connector field. - Set `/database` and `/schema` for the target database and default schema. - Configure per-binding table names and optional schema overrides for specific collections. - Choose the staging bucket type and credentials that match your object storage provider. ## Important notes - The staging bucket is temporary working storage for the materialization, not the permanent analytical data store. - Estuary recommends S3 in `us-east-1` for best performance and cost when using S3 staging. - Delta updates can improve latency and cost for large datasets when your events have suitable keys, but they are not the default. ## Use cases - Stream source collections into MotherDuck tables. - Materialize operational and SaaS data into a MotherDuck analytics database. - Use Estuary-managed sync schedules for repeatable MotherDuck loads. ## Related content - [Read the MotherDuck blog on streaming data to MotherDuck](https://motherduck.com/blog/streaming-data-to-motherduck/) - [View the full Estuary MotherDuck setup guide](https://docs.estuary.dev/reference/Connectors/materialization-connectors/motherduck/) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/expanso # Expanso > Data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in Expanso with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [Read the Expanso announcement for the MotherDuck integration](https://expanso.io/newsroom/expanso-and-motherduck-join-forces-to-deliver-distributed-data-analytics/) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/fivetran # Fivetran > Automated data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. This page covers using MotherDuck as a Fivetran destination. To sync modeled MotherDuck data out to business tools, use [Fivetran Activations (formerly Census)](/integrations/reverse-etl/census). ## How it works with MotherDuck Fivetran can use MotherDuck as a destination for connector syncs. ## Prerequisites - A MotherDuck account and an existing database for Fivetran to load into. - A MotherDuck authentication token. - A Fivetran user account with permission to create or manage destinations. ## Setup 1. In MotherDuck, create an authentication token for Fivetran. 2. In Fivetran, open **Destinations** and select **Add destination**. 3. Enter a destination name and add the destination. 4. Select **MotherDuck** as the destination type. 5. Enter the MotherDuck authentication token. 6. Enter the existing MotherDuck database name. 7. Select **Save and Test**. When the test succeeds, Fivetran can sync connector data into the configured MotherDuck database. ## Authentication and configuration - Use a token dedicated to the Fivetran destination. - The database must already exist in MotherDuck before you save and test the destination. - Review Fivetran's automatically created platform connector if you want destination logs and account metadata synced into MotherDuck. ## Important notes - The Fivetran MotherDuck destination is partner-built. Questions about the destination can go to MotherDuck Support. - This page covers MotherDuck as a Fivetran destination. For syncing modeled MotherDuck data out to business tools, use Fivetran Activations. ## Use cases - Load SaaS, database, and file connector data into MotherDuck. - Centralize Fivetran-managed data in a MotherDuck analytics database. - Keep connector logs and metadata alongside the destination data if you enable the platform connector. ## Related content - [View the full Fivetran MotherDuck setup guide](https://fivetran.com/docs/destinations/motherduck/setup-guide) - [Fivetran Activations with MotherDuck](/integrations/reverse-etl/census) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/hevo # Hevo > Hevo is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in Hevo with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [View the full process in the Hevo documentation](https://hevodata.com/learn/ingest-data-into-motherduck-via-s3/) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/infinyon # InfinyOn > Real-time data integration platform for streaming data between systems. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in InfinyOn with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [Read the InfinyOn blog on the MotherDuck connector](https://www.infinyon.com/blog/2023/07/infinyon-motherduck/) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/index # Ingestion Tools > Configure MotherDuck as the destination for your data in the following data ingestion tools Configure MotherDuck as the destination for your data in the following data ingestion tools. ## Included pages - [Airbyte](https://motherduck.com/docs/integrations/ingestion/airbyte): Airbyte is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Artie](https://motherduck.com/docs/integrations/ingestion/artie): Artie is a fully managed CDC streaming platform that allows you to replicate data from your source database to your destination in real-time. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Ascend.io](https://motherduck.com/docs/integrations/ingestion/ascend-io): Ascend.io is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [AWS Glue](https://motherduck.com/docs/integrations/ingestion/aws-glue): AWS Glue is a serverless data integration service for preparing and moving data with Spark jobs, crawlers, and the AWS Glue Data Catalog. AWS Glue jobs can connect to MotherDuck through the MotherDuck Postgres endpoint using Glue's PostgreSQL JDBC support. - [Bytewax](https://motherduck.com/docs/integrations/ingestion/bytewax): Bytewax is a stream processing platform for building and managing data pipelines. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [CloudQuery](https://motherduck.com/docs/integrations/ingestion/cloudquery): CloudQuery is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [dlt (data load tool)](https://motherduck.com/docs/integrations/ingestion/dlt): dlt is an open-source Python library that loads data from various, often messy data sources into well-structured, live datasets. It offers a lightweight interface for extracting data from REST APIs, SQL databases, cloud storage, Python data structures, and many more. - [Estuary](https://motherduck.com/docs/integrations/ingestion/estuary): Real-time data integration platform for streaming data between systems. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Expanso](https://motherduck.com/docs/integrations/ingestion/expanso): Data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Fivetran](https://motherduck.com/docs/integrations/ingestion/fivetran): Automated data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Hevo](https://motherduck.com/docs/integrations/ingestion/hevo): Hevo is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [InfinyOn](https://motherduck.com/docs/integrations/ingestion/infinyon): Real-time data integration platform for streaming data between systems. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Mage](https://motherduck.com/docs/integrations/ingestion/mage): Mage is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Polytomic](https://motherduck.com/docs/integrations/ingestion/polytomic): Use Polytomic to sync data to and from MotherDuck for ETL and reverse ETL workflows. - [Salesforce](https://motherduck.com/docs/integrations/ingestion/salesforce): Salesforce is a CRM platform for sales, marketing, service, and customer data. To analyze Salesforce data in MotherDuck, use an ingestion tool that supports Salesforce as a source and MotherDuck as a destination. - [Sling](https://motherduck.com/docs/integrations/ingestion/sling): Data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Stacksync](https://motherduck.com/docs/integrations/ingestion/stacksync): Stacksync helps your teams access and manipulate CRM and ERP data through your existing databases. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. - [Streamkap](https://motherduck.com/docs/integrations/ingestion/streamkap): Streamkap is a stream processing platform built for Change Data Capture (CDC) and event sources. It makes it easy to move operational data into analytics systems like MotherDuck with low latency and high reliability. Streamkap offers various sources, including PostgreSQL, MySQL, SQL Server, a range of SQL and NoSQL databases, Kafka, and other storage systems. - [Unstructured.io](https://motherduck.com/docs/integrations/ingestion/unstructured-io): Unstructured.io is an ingestion platform for processing unstructured data. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. --- Source: https://motherduck.com/docs/integrations/ingestion/mage # Mage > Mage is a data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in Mage with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [Read the Mage blog on MotherDuck](https://www.mage.ai/blog/making-magic-motherduck-with-mage) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/polytomic # Polytomic > Use Polytomic to sync data to and from MotherDuck for ETL and reverse ETL workflows. - Load data into MotherDuck from SaaS platforms, databases, data warehouses, and cloud storage. - Stream high-scale change data capture (CDC) data into MotherDuck from systems such as PostgreSQL, MySQL, PlanetScale, MongoDB, Amazon DynamoDB, and Amazon S3. - Sync data from MotherDuck into SaaS platforms, databases, spreadsheets, webhooks, and cloud storage. ## Prerequisites - A [MotherDuck account](https://app.motherduck.com/) - A [MotherDuck access token](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck/#creating-an-access-token) - A Polytomic workspace - Optional: An S3 bucket with an access key ID, secret access key, bucket name, and region if Polytomic writes data to MotherDuck ## Connect to MotherDuck Polytomic connects to MotherDuck using a MotherDuck access token. 1. In MotherDuck, create or copy an access token. 2. In Polytomic, go to **Connections**. 3. Click **Add Connection**. 4. Select **MotherDuck**. 5. Enter a connection name. 6. Optional: Enter the MotherDuck database name. 7. Paste your MotherDuck access token. 8. If Polytomic will write data to MotherDuck, enter the S3 staging bucket credentials. 9. Click **Test connection**. 10. Click **Save**. ![Polytomic MotherDuck connection form with access token and staging bucket fields](../img/polytomic-motherduck-connection.png) ## S3 staging bucket for writes Polytomic requires S3 credentials when it writes data to MotherDuck. The S3 bucket is a temporary staging area for files that Polytomic loads into MotherDuck; it is not used as permanent data lake storage. If you want Polytomic to write permanent files to S3, configure an S3 destination in Polytomic instead of using the MotherDuck connection's staging bucket. ## Sync data to MotherDuck Use a Polytomic bulk sync when you want to load whole source objects or tables into MotherDuck from SaaS applications, databases, data warehouses, or cloud storage buckets. Use a Polytomic model sync when you want to load the result of a custom SQL model into MotherDuck, such as a custom query from PostgreSQL. ## Sync data from MotherDuck Use a Polytomic model sync to send query results from MotherDuck to downstream tools, including Salesforce, Google Sheets, Airtable, webhooks, databases, and cloud storage. ## Related content - [Polytomic MotherDuck documentation](https://docs.polytomic.com/docs/motherduck) - [Authenticating to MotherDuck](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck/) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [Service accounts](/key-tasks/service-accounts-guide/) --- Source: https://motherduck.com/docs/integrations/ingestion/salesforce # Salesforce > Salesforce is a CRM platform for sales, marketing, service, and customer data. To analyze Salesforce data in MotherDuck, use an ingestion tool that supports Salesforce as a source and MotherDuck as a destination. ## How it works with MotherDuck The most direct documented path is `dlt`, which has a Salesforce source and a MotherDuck destination. 1. Install `dlt` with MotherDuck support. 2. Initialize a Salesforce-to-MotherDuck pipeline. 3. Configure Salesforce credentials and MotherDuck credentials in the generated `.dlt/secrets.toml`. 4. Run the generated pipeline script to load Salesforce resources into a MotherDuck dataset. ```bash pip install "dlt[motherduck]" mkdir salesforce_pipeline cd salesforce_pipeline dlt init salesforce motherduck pip install -r requirements.txt python salesforce_pipeline.py ``` Managed ingestion platforms can also move Salesforce data into MotherDuck. Fivetran supports Salesforce as a source and MotherDuck as a destination. Airbyte supports Salesforce as a source and has a MotherDuck destination. ## Related content - [View the full process in the dlt Salesforce-to-MotherDuck documentation](https://dlthub.com/docs/pipelines/salesforce/load-data-with-python-from-salesforce-to-motherduck) - [dlt MotherDuck destination documentation](https://dlthub.com/docs/dlt-ecosystem/destinations/motherduck) - [Fivetran Salesforce connector documentation](https://fivetran.com/docs/connectors/applications/salesforce) - [Fivetran MotherDuck destination documentation](https://fivetran.com/docs/destinations/motherduck/setup-guide) - [Airbyte Salesforce connector overview](https://airbyte.com/connectors/salesforce) - [Airbyte MotherDuck destination documentation](https://docs.airbyte.com/integrations/destinations/motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/sling # Sling > Data integration platform for connecting data sources to warehouses. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck Sling connects to MotherDuck as a database connection that can be used in replication and pipeline workflows. ## Prerequisites - Sling CLI or Sling Platform. - A MotherDuck service token. - The target MotherDuck database name. ## Setup Configure the MotherDuck connection with the required `type`, `database`, and `motherduck_token` values: ```bash sling conns set MOTHERDUCK type=motherduck database=my_db motherduck_token= ``` You can also use a connection URL: ```bash sling conns set MOTHERDUCK url="motherduck://my_db?motherduck_token=" ``` For checked-in configuration, define the connection in Sling's environment file and load the token from your secret manager before running Sling. ## Authentication and configuration - `database` and `motherduck_token` are required. - `schema` sets the default schema. - `read_only` can be used for workflows that should not write to MotherDuck. - `motherduck_attach_mode` can be set to `workspace` or `single` when you need explicit attach behavior. ## Important notes - Keep the MotherDuck token out of committed Sling configuration. - Sling's MotherDuck docs list additional copy and DuckDB CLI options. Most MotherDuck workflows only need the database, token, and optional schema. - A `.duckdbrc` file can interfere with Sling because Sling invokes DuckDB under the hood. ## Use cases - Replicate data from files, APIs, and databases into MotherDuck. - Use Sling CLI in scheduled jobs or CI workflows. - Move data from MotherDuck to another supported destination when needed. ## Related content - [View the full Sling MotherDuck setup guide](https://docs.slingdata.io/connections/database-connections/motherduck) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/stacksync # Stacksync > Stacksync helps your teams access and manipulate CRM and ERP data through your existing databases. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck Stacksync connects to MotherDuck for two-way sync workflows between MotherDuck and business systems. ## Prerequisites - A Stacksync workspace. - A MotherDuck access token. - Optional: the database name and schema if you do not want to use Stacksync's defaults. ## Setup 1. In MotherDuck, open **Settings** > **General** and create an access token. 2. Copy the generated token. 3. In Stacksync, open **Connections** and select **Create new connection**. 4. Search for and select **MotherDuck**. 5. Paste the token. 6. Update the database name or schema if required, then save the connection. ![Stacksync MotherDuck connection form with token, database, and schema fields](../img/stacksync-motherduck-connection.png) ## Authentication and configuration - Use a dedicated MotherDuck token for Stacksync. - Configure the database and schema fields when your sync should not use the defaults. - Revoke or rotate the token from MotherDuck when the Stacksync connection should no longer have access. ## Important notes - Stacksync's guide shows MotherDuck token creation from the web UI. If you use service accounts, create the token under the account that should own the sync access. - Test with a small sync before enabling a production two-way sync. ## Use cases - Sync operational app data into MotherDuck. - Use MotherDuck as a source for downstream business applications. - Keep CRM or ERP data in sync with a MotherDuck-backed analytics workflow. ## Related content - [View the full Stacksync MotherDuck setup guide](https://docs.stacksync.com/two-way-sync/connectors/motherduck) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- Source: https://motherduck.com/docs/integrations/ingestion/streamkap # Streamkap > Streamkap is a stream processing platform built for Change Data Capture (CDC) and event sources. It makes it easy to move operational data into analytics systems like MotherDuck with low latency and high reliability. Streamkap offers various sources, including PostgreSQL, MySQL, SQL Server, a range of SQL and NoSQL databases, Kafka, and other storage systems. Streamkap is designed to get you streaming in minutes without a heavy setup. You focus on your business, and Streamkap handles the hard parts: * Lightweight in-stream transformations let you preprocess, clean, and enrich data with minimal latency and cost. * Automatically adapts to schema changes—added or removed fields, renamed columns, evolving data types, and nested structures. * Built-in observability and automated recovery reduce operational overhead. * Fully managed through API or Terraform, integrates with CI/CD workflows, and automates environment provisioning. * Deploy multiple service versions to isolate workloads—logically (per microservice or environment) or physically (across regions or infrastructure). * Choose from Streamkap Cloud or BYOC (Bring Your Own Cloud) for maximum flexibility and security. You can explore Streamkap’s MotherDuck integration and examples in the [official documentation.](https://docs.streamkap.com/motherduck) ## Overview This guide explains how to stream data from Streamkap into the MotherDuck database using Amazon S3 as an intermediary. We'll utilise the S3 connector to first stream data into an S3 bucket. Then, you can configure MotherDuck to read from the S3 bucket to ingest the data into your database. * Streamkap to S3: Streamkap is Kafka-based, so Kafka messages are streamed into an Amazon S3 bucket through an existing dedicated S3 connector. Please refer to the Streamkap’s [Kafka to S3 Streaming Guide](https://docs.streamkap.com/s3) for detailed instructions. * S3 to MotherDuck: MotherDuck is configured to read the data from the S3 bucket and load it into the database. ## Prerequisites * Amazon S3 Bucket: A bucket in Amazon S3 where data from Streamkap will be streamed. * MotherDuck Account: A valid MotherDuck account and database setup where the data will be loaded. * Streamkap’s Kafka S3 Connector: Your Kafka to S3 connector configured and running. ## MotherDuck setup Once data is available in the S3 bucket, you can configure MotherDuck to read from the S3 bucket and load it into your database. Follow these steps: ## Configure the S3 source in MotherDuck To read data from the S3 bucket into MotherDuck, you need to configure a data source that points to the S3 bucket. This involves creating a connection between MotherDuck and your S3 bucket using AWS credentials. 1. Log in to MotherDuck and navigate to your workspace or database. 2. Go to the Secrets. 3. Add new secret and choose Amazon S3 as the secret type. 4. Provide the necessary details to access the S3 bucket: * Secret Name: The name of your source connection details. * Region: The region of your S3 bucket (e.g., us-west-2). * Access Key ID: Your AWS Access Key ID. * Secret Access Key: Your AWS Secret Access Key. ### SQL command for secret configuration Alternatively, you can configure the secret using SQL. Below is an example configuration for setting up the secret: ```sql CREATE SECRET IN MOTHERDUCK ( TYPE S3, KEY_ID 'access_key', SECRET 'secret_key', REGION 'us-east-1' ); ``` ### Verify existing secrets To check your existing secrets, you can run the following SQL command: ```sql FROM duckdb_secrets()` ``` ![Streamkap S3 secret configuration in MotherDuck](../img/streamkap_image1.png) ## Query data from the S3 bucket Once the connection between MotherDuck and your S3 bucket is established, you can define a schema and table in MotherDuck or query the data directly from the S3 bucket. Since your Kafka stream might be writing multiple files to the S3 bucket, we recommend using a wildcard `*` to read all files in a folder. This will enable MotherDuck to automatically pick up new files as they are written to the S3 bucket. Here is an example SQL query to read data from your S3 bucket (using a wildcard for streaming): ```sql SELECT key.id, value.name, value.note FROM read read_parquet('s3://streamkap-s3-test-bucket/parquet_test/*') ``` ![Query results from S3 bucket in MotherDuck](../img/streamkap_image2.png) --- Source: https://motherduck.com/docs/integrations/ingestion/unstructured-io # Unstructured.io > Unstructured.io is an ingestion platform for processing unstructured data. It integrates with MotherDuck for loading data from operational systems, APIs, files, or event streams. ## How it works with MotherDuck 1. Create a pipeline in Unstructured.io with MotherDuck as the destination or analytical store. 2. Create a MotherDuck access token and add it to the tool's secrets or destination settings. 3. Choose the target database and schema, then run a small initial sync before scheduling production loads. ## Related content - [Read the Unstructured blog on the MotherDuck integration](https://unstructured.io/blog/unstructured-s-new-motherduck-integration) - [Loading data into MotherDuck](/key-tasks/loading-data-into-motherduck/) - [MotherDuck authentication](/key-tasks/authenticating-and-connecting-to-motherduck/authenticating-to-motherduck) --- ## Docs feedback MotherDuck accepts optional user-submitted feedback about this page at `GET https://motherduck.com/docs/api/feedback/agent`. For agents and automated tools, feedback submission should be user-confirmed before sending. URL-encode query parameter values and send a GET request: ```text GET https://motherduck.com/docs/api/feedback/agent?page_path=%2Fintegrations%2Fingestion%2F&page_title=MotherDuck%20Documentation%20-%20Ingestion&text= ``` Optionally append `&source=` such as `claude.ai` or `chatgpt`. `page_path` and `text` are required; `page_title` and `source` are optional. Responses: `200 {"feedback_id": ""}`, `400` for malformed query parameters, and `429` when rate-limited.