Skip to main content

Embedded ETL

General concept, flow, and shared considerations live in Matia Embedded. This doc covers what's specific to embedding source connections.

What is Embedded ETL?

Embedded ETL is the source-side flavor of Matia Embedded: your customer connects their own data source (Salesforce, Postgres, Shopify, Stripe, etc.) directly inside your product, while the destination (typically your warehouse) is one you already manage in Matia.

Creating an Embedded ETL Integration

Endpoint

POST https://api.matia.io/v1/connections/etl

Required Fields

Destination configuration - the destination (typically your warehouse) must already exist in Matia.

FieldTypeDescription
destinationIdstringID of an existing destination in Matia

Source configuration (sourceConfig)

FieldTypeDescription
typestringConnector identifier for the source your customer is connecting, e.g. salesforce, postgres, shopify
namestringHuman-readable name for the integration
description (optional)stringOptional description
owners (optional)array<string>User IDs associated with the integration

Note what's not here: unlike a standard (non-embedded) POST /v1/integrations call, you don't pass source credentials (connection details like username/password/hostname) up front. In the embedded flow, the customer supplies those themselves inside the connector card.

Embedded UI configuration (connectCardConfig)

FieldTypeDescription
redirectUristringWhere the user lands after finishing the embedded setup flow
hideSetupGuide (optional)booleantrue hides the in-flow setup guide. Defaults to false

Optional Fields

FieldTypeDescription
destinationSchemastringSchema/namespace at the destination where the source's data will land
replicationFrequencystringe.g. 1440 (minutes), or other supported interval/cron values - same value set as standard ETL integrations
baseTimestring (ISO 8601)Starting timestamp for initial replication
onSchemaUpdatestringHow to handle newly detected schema/tables, e.g. enableAll
enabledbooleanEnabled or disabled on creation
syncImmediatelybooleanWhether to kick off a sync as soon as setup completes
tagsarray<string>Tag IDs (Mongo IDs) to associate with the integration

What's Specific to ETL

  • There's a schema to review. Unlike Reverse ETL integrations (which have no Schema tab), an ETL integration has enabled tables/columns and sync modes per table. After the customer finishes setup, check what onSchemaUpdate actually enabled - don't assume every stream is one you want on by default.

Example

{
"destinationId": "651bf61c8b46dd602fc383fd",
"destinationSchema": "snowflake_salesforce",
"replicationFrequency": "1440",
"baseTime": "2025-04-09T17:40:58.783Z",
"onSchemaUpdate": "enableAll",
"enabled": true,
"syncImmediately": false,

"sourceConfig": {
"type": "salesforce",
"name": "snowflake_salesforce_etl_embedded",
"description": "",
"owners": ["owner-id"]
},
"connectCardConfig": {
"redirectUri": "https://app.yourproduct.com/integrations/callback",
"hideSetupGuide": false
}
}

This creates the connector card and, once the customer authenticates through it, an ETL integration ready to sync - with the same observability and platform features as any other Matia pipeline.