
Sf Datacloud Connect
- 938 installs
- 423 repo stars
- Updated April 27, 2026
- jaganpro/sf-skills
sf-datacloud-connect is a Salesforce agent skill that provisions Heroku Postgres ingress connectors into Salesforce Data Cloud for developers who need secure database ingestion without custom ETL pipelines.
About
sf-datacloud-connect is part of the jaganpro sf-datacloud skill family contributed by Gnanasekaran Thoppae. It guides developers through creating a HerokuPostgres ingress connector in Salesforce Data Cloud using structured JSON configuration for connector type, label, credentials, and connection parameters. The method uses Ingress with UsernamePasswordAuthentication rather than hand-written ETL jobs. Engineers reach for this skill when a Heroku-hosted Postgres database must feed Data Cloud for unified profiles, analytics, or activation workflows. The skill fits Salesforce-centric teams wiring operational databases into Customer 360 without building bespoke sync scripts. Shared attribution and upstream mapping live in sibling sf-datacloud documentation, keeping connector setup consistent across the family.
- Generates complete Heroku Postgres ingress connector configuration using UsernamePasswordAuthentication
- Produces ready-to-use IngestApi connector definitions and schema templates
- Maps JDBC connection parameters, credentials, and object schemas automatically
- Part of the reusable sf-datacloud-* skill family for Salesforce Data Cloud pipelines
Sf Datacloud Connect by the numbers
- 938 all-time installs (skills.sh)
- +4 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #415 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/jaganpro/sf-skills --skill sf-datacloud-connectAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 938 |
|---|---|
| repo stars | ★ 423 |
| Security audit | 3 / 3 scanners passed |
| Last updated | April 27, 2026 |
| Repository | jaganpro/sf-skills ↗ |
How do you connect Heroku Postgres to Data Cloud?
Connect Heroku Postgres databases to Salesforce Data Cloud via secure ingress connectors without writing custom ETL code.
Who is it for?
Salesforce developers integrating Heroku Postgres databases into Data Cloud via ingress connectors instead of custom ETL.
Skip if: Teams syncing non-Postgres sources, batch-only flat-file loads, or pipelines that require custom transformation code outside Data Cloud connectors.
When should I use this skill?
The user needs to connect Heroku Postgres to Salesforce Data Cloud or configure a HerokuPostgres ingress connector.
What you get
Configured HerokuPostgres ingress connector JSON, credential mappings, and Data Cloud connection parameters.
- ingress connector configuration JSON
- credential parameter mappings
By the numbers
- Uses HerokuPostgres connector type with Ingress method
- Part of the sf-datacloud skill family with shared CREDITS.md and UPSTREAM.md
Files
sf-datacloud-connect: Data Cloud Connect Phase
Use this skill when the user needs source connection work: connector discovery, connection metadata, connection testing, source-object browsing, connector schema inspection, or connector-specific setup payloads for external sources.
When This Skill Owns the Task
Use sf-datacloud-connect when the work involves:
sf data360 connection *- connector catalog inspection
- connection creation, update, test, or delete
- browsing source objects, fields, databases, or schemas
- identifying connector types already in use
- preparing connector definitions for Snowflake, SharePoint Unstructured, or Ingestion API sources
Delegate elsewhere when the user is:
- creating data streams or DLOs → sf-datacloud-prepare
- creating DMOs, mappings, IR rulesets, or data graphs → sf-datacloud-harmonize
- writing Data Cloud SQL or search-index workflows → sf-datacloud-retrieve
---
Required Context to Gather First
Ask for or infer:
- target org alias
- connector type or source system
- whether the user wants inspection only or live mutation
- connection name or ID if one already exists
- whether credentials are already configured outside the CLI
- whether the user also expects stream creation right after connection setup
- whether the source is a database, an unstructured document source, or an Ingestion API feed
---
Core Operating Rules
- Verify the plugin runtime first; see ../sf-datacloud/references/plugin-setup.md.
- Run the shared readiness classifier before mutating connections:
node ~/.claude/skills/sf-datacloud/scripts/diagnose-org.mjs -o <org> --phase connect --json. - Prefer read-only discovery before connection creation.
- Suppress linked-plugin warning noise with
2>/dev/nullfor standard usage. - Remember that
connection listrequires--connector-type. - For
connection test, pass--connector-typewhen resolving a non-Salesforce connection by name. - Discover existing connector types from streams first when the org is unfamiliar.
- Use curated example payloads before inventing connector-specific credentials or parameters.
- For connector types outside the curated examples, inspect a known-good UI-created connection via REST before building JSON.
- Do not promise API-based stream creation for every connector type just because connection creation succeeds.
---
Recommended Workflow
1. Classify readiness for connect work
node ~/.claude/skills/sf-datacloud/scripts/diagnose-org.mjs -o <org> --phase connect --json2. Discover connector types
sf data360 connection connector-list -o <org> 2>/dev/null
sf data360 data-stream list -o <org> 2>/dev/null3. Inspect connections by type
sf data360 connection list -o <org> --connector-type SalesforceDotCom 2>/dev/null
sf data360 connection list -o <org> --connector-type REDSHIFT 2>/dev/null
sf data360 connection list -o <org> --connector-type SNOWFLAKE 2>/dev/null4. Inspect a specific connection or uploaded schema
sf data360 connection get -o <org> --name <connection> 2>/dev/null
sf data360 connection objects -o <org> --name <connection> 2>/dev/null
sf data360 connection fields -o <org> --name <connection> 2>/dev/null
sf data360 connection schema-get -o <org> --name <connection-id> 2>/dev/null5. Test or create only after discovery
sf data360 connection test -o <org> --name <connection> --connector-type <type> 2>/dev/null
sf data360 connection create -o <org> -f connection.json 2>/dev/null6. Start from curated example payloads for external connectors
Use the phase-owned examples before inventing a payload from scratch:
examples/connections/heroku-postgres.jsonexamples/connections/redshift.jsonexamples/connections/sharepoint-unstructured.jsonexamples/connections/snowflake-connection.jsonexamples/connections/ingest-api-connection.jsonexamples/connections/ingest-api-schema.json
Typical Ingestion API setup flow:
sf data360 connection create -o <org> -f examples/connections/ingest-api-connection.json 2>/dev/null
sf data360 connection schema-upsert -o <org> --name <connector-id> -f examples/connections/ingest-api-schema.json 2>/dev/null
sf data360 connection schema-get -o <org> --name <connector-id> 2>/dev/null7. Discover payload fields for unknown connector types
Create one in the UI, then inspect it directly:
sf api request rest "/services/data/v66.0/ssot/connections/<id>" -o <org>---
High-Signal Gotchas
connection listhas no true global "list all" mode; query by connector type.- The connector catalog name and connection connector type are not always the same label.
connection testmay need--connector-typefor name resolution when the source is not a default Salesforce connector.- An empty connection list usually means "enabled but not configured yet", not "feature disabled".
- Heroku Postgres, Redshift, Snowflake, SharePoint Unstructured, and Ingestion API all use different credential and parameter shapes; reuse the curated examples instead of guessing.
- SharePoint Unstructured uses
clientId,clientSecret, andtokenEndpointin thecredentialsarray and does not require aparametersarray. - Snowflake uses key-pair auth and can often be created through the API, but downstream stream creation can still remain UI-only.
- Ingestion API connector setup is incomplete until
connection schema-upserthas uploaded the object schema. - Some external connector credential setup still depends on UI-side configuration or external-system permissions.
---
Output Format
Connect task: <inspect / create / test / update>
Connector type: <SalesforceDotCom / REDSHIFT / SNOWFLAKE / SPUnstructuredDocument / IngestApi / ...>
Target org: <alias>
Commands: <key commands run>
Verification: <passed / partial / blocked>
Next step: <prepare phase or connector follow-up>---
References
- README.md
- examples/connections/heroku-postgres.json
- examples/connections/redshift.json
- examples/connections/sharepoint-unstructured.json
- examples/connections/snowflake-connection.json
- examples/connections/ingest-api-connection.json
- examples/connections/ingest-api-schema.json
- ../sf-datacloud/references/plugin-setup.md
- ../sf-datacloud/references/feature-readiness.md
- ../sf-datacloud/UPSTREAM.md
Credits & Acknowledgments
Primary contributor: Gnanasekaran Thoppae
This skill is part of the sf-datacloud-* family. Shared attribution, upstream source mapping, and maintenance notes live in:
- ../sf-datacloud/CREDITS.md
- ../sf-datacloud/UPSTREAM.md
{
"connectorType": "HerokuPostgres",
"label": "My Heroku DB",
"name": "My_Heroku_DB",
"method": "Ingress",
"credentials": [
{ "paramName": "credentialType", "value": "UsernamePasswordAuthentication" },
{ "paramName": "user", "value": "<HEROKU_DB_USER>" },
{ "paramName": "password", "value": "<HEROKU_DB_PASSWORD>" }
],
"parameters": [
{ "paramName": "jdbc_connection_url", "value": "<HOST>:<PORT>" },
{ "paramName": "DATABASE", "value": "<DATABASE_NAME>" }
]
}
{
"connectorType": "IngestApi",
"label": "<CONNECTOR_LABEL>",
"name": "<CONNECTOR_NAME>"
}
{
"schemas": [
{
"label": "<OBJECT_NAME>",
"name": "<OBJECT_NAME>",
"schemaType": "IngestApi",
"fields": [
{
"name": "Id",
"label": "Id",
"dataType": "Text"
},
{
"name": "Name",
"label": "Name",
"dataType": "Text"
},
{
"name": "Timestamp",
"label": "Timestamp",
"dataType": "DateTime"
},
{
"name": "Value",
"label": "Value",
"dataType": "Number"
}
]
}
]
}
{
"connectorType": "REDSHIFT",
"label": "My Redshift",
"name": "My_Redshift",
"method": "Ingress",
"credentials": [
{ "paramName": "authenticationOption", "value": "usernameAndPassword" },
{ "paramName": "username", "value": "<REDSHIFT_USER>" },
{ "paramName": "password", "value": "<REDSHIFT_PASSWORD>" }
],
"parameters": [
{ "paramName": "url", "value": "<HOST>:<PORT>" },
{ "paramName": "database", "value": "<DATABASE_NAME>" },
{ "paramName": "hasPrivateNetworkRoute", "value": "false" }
]
}
{
"connectorType": "SPUnstructuredDocument",
"label": "My SharePoint Docs",
"name": "My_SharePoint_Docs",
"method": "Ingress",
"credentials": [
{
"paramName": "clientId",
"value": "<AZURE_APP_CLIENT_ID>"
},
{
"paramName": "clientSecret",
"value": "<AZURE_APP_CLIENT_SECRET>"
},
{
"paramName": "tokenEndpoint",
"value": "https://login.microsoftonline.com/<AZURE_TENANT_ID>/oauth2/v2.0/token"
}
]
}
{
"connectorType": "SNOWFLAKE",
"label": "Snowflake Demo",
"name": "Snowflake_Demo",
"method": "Ingress",
"credentials": [
{
"paramName": "credentialType",
"value": "KeyPairAuthentication"
},
{
"paramName": "user",
"value": "<SNOWFLAKE_USERNAME>"
},
{
"paramName": "privateKey",
"value": "<YOUR_PRIVATE_KEY_WITHOUT_BEGIN_END_HEADERS>"
}
],
"parameters": [
{
"paramName": "accountUrl",
"value": "https://<ORG_ID>-<ACCOUNT_ID>.snowflakecomputing.com"
},
{
"paramName": "database",
"value": "<DATABASE_NAME>"
},
{
"paramName": "warehouse",
"value": "<WAREHOUSE_NAME>"
},
{
"paramName": "region",
"value": "<AWS_REGION>"
},
{
"paramName": "hasPrivateNetworkRoute",
"value": "false"
}
]
}
MIT License
Copyright (c) 2024-2025 Jag Valaiyapathy
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
sf-datacloud-connect
Connection and connector workflows for Salesforce Data Cloud.
Use this skill for
- listing available connector types
- inspecting configured connections
- testing a connection
- browsing source objects, databases, fields, and uploaded schemas
- preparing connector JSON for Snowflake, SharePoint Unstructured, and Ingestion API sources
- preparing for stream creation
Key reminders
connection listrequires--connector-typeconnection testmay need--connector-typefor non-Salesforce name resolution- use
connection schema-upsertafter creating an Ingestion API connector - start with inspection before mutation
- use
2>/dev/nullto suppress linked-plugin warning noise - some connector types can be created by API while downstream stream creation still requires UI flow
Example requests
"Show me which Data Cloud connections already exist in this org"
"Test my Snowflake Data Cloud connection"
"What source objects are available on this Salesforce connector?"
"Help me create an Ingestion API connector and upload its schema"
"Set up a SharePoint Unstructured connection for document ingestion"Common commands
sf data360 connection connector-list -o myorg 2>/dev/null
sf data360 connection list -o myorg --connector-type SalesforceDotCom 2>/dev/null
sf data360 connection get -o myorg --name SalesforceDotCom_Home 2>/dev/null
sf data360 connection test -o myorg --name Snowflake_Demo --connector-type SNOWFLAKE 2>/dev/null
sf data360 connection schema-get -o myorg --name <connector-id> 2>/dev/null
sf data360 connection create -o myorg -f examples/connections/heroku-postgres.json 2>/dev/null
sf data360 connection schema-upsert -o myorg --name <connector-id> -f examples/connections/ingest-api-schema.json 2>/dev/nullExample payloads
- examples/connections/heroku-postgres.json
- examples/connections/redshift.json
- examples/connections/sharepoint-unstructured.json
- examples/connections/snowflake-connection.json
- examples/connections/ingest-api-connection.json
- examples/connections/ingest-api-schema.json
References
- SKILL.md
- ../sf-datacloud/references/plugin-setup.md
- ../sf-datacloud/UPSTREAM.md
- CREDITS.md
License
MIT License - See LICENSE.
Related skills
How it compares
Choose sf-datacloud-connect for native ingress wiring; use sf-datacloud-prepare when pushing structured records through the Ingestion API.
FAQ
What database does sf-datacloud-connect support?
sf-datacloud-connect configures HerokuPostgres ingress connectors for Salesforce Data Cloud. Connection setup uses UsernamePasswordAuthentication with user, password, host, and related ingress parameters in JSON.
Does sf-datacloud-connect require custom ETL code?
sf-datacloud-connect uses Salesforce Data Cloud native ingress connectors so developers avoid writing custom ETL. The skill outputs structured connector configuration for Heroku Postgres ingestion.
Is Sf Datacloud Connect safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.