Push transactional data from PostgreSQL to Salesforce on a schedule. Visual ETL, AI field mapping, Insert/Update/Upsert modes, and zero cloud orchestration cost.
Many product teams run on PostgreSQL — user accounts, transactional records, billing data, event logs. Sales and customer success teams live in Salesforce. Connecting the two has traditionally required either expensive reverse ETL platforms (Hightouch, Census at $500-$5,000/month) or custom Python scripts running on cloud infrastructure that breaks at 3 AM.
QueryFlow runs the Postgres-to-Salesforce sync locally on your Mac. Connect Postgres with the standard host/port/database/credentials. Connect Salesforce via OAuth. Write a SQL query against Postgres that produces the data you want in Salesforce. Drag both onto the Visual ETL canvas. Map fields with AI Map. Schedule. Done.
QueryFlow uses libpq-compatible authentication. Add a connection with your Postgres host (localhost, RDS endpoint, or any reachable address), port (5432 by default), database name, username, and password. SSL mode is configurable — require for production servers, disable for local development. Credentials are stored in the macOS Keychain. The schema explorer loads instantly, showing every table, column, and type.
Create a Connected App in your Salesforce org (one-time, 15-minute setup, walkthrough in our Knowledge Hub). Copy the Consumer Key and Consumer Secret. In QueryFlow, add a Salesforce connection with those values plus your Instance URL. Click Sign in with Salesforce. Your browser opens, you authorize the app, and the refresh token lands in QueryFlow's Keychain. Done.
Open the Pipelines panel and create a new pipeline. Drag a Source card and pick your Postgres connection. Drag a Destination card and pick your Salesforce connection plus the target object (Account, Contact, Lead, Opportunity, or any custom object). Click the Source card to write your SQL query. Click the line between Source and Destination to open the Field Mapper. Hit AI Map to auto-match columns based on name similarity and synonym groups.
Click Schedule on the pipeline. Pick a trigger — Daily at 6 AM is a common choice for overnight syncs. Pick the load mode — Upsert with an external ID field is standard for ongoing syncs because it creates new records and updates existing ones in a single pass. Save. The pipeline now runs every morning, automatically, on your Mac. Failed runs surface in the Observatory dashboard with full error context.
Several patterns recur across customers using this workflow: syncing customer health scores computed from Postgres usage data into Salesforce Accounts; pushing new product signups from Postgres into Salesforce as Leads; updating Salesforce Opportunities with revenue data from Postgres transaction tables; backfilling Contact records with email engagement data from a Postgres analytics database. All of these are 30-minute setups in QueryFlow with no engineering required beyond the SQL query.
QueryFlow runs scheduled batch syncs, not streaming real-time replication. The shortest interval is every minute, but typical setups run every 15 minutes, hourly, or daily. For most operational CRM use cases this is sufficient. For sub-second replication SLAs, you would need a streaming CDC tool like Fivetran or Striim.
Yes. The Field Mapper handles name differences (email vs Email), type differences (Postgres TEXT to Salesforce Email field, Postgres INTEGER to Salesforce Number), and transformations through Python cells if needed. For complex transformations, use a Flow Book to run the Postgres query, transform the DataFrame with pandas, then write the result to Salesforce.
QueryFlow uses Salesforce's Bulk API v2 for inserts and updates over a threshold, which has higher rate limits than the REST API. For very large syncs, you can also configure batch size in the pipeline settings. The Observatory dashboard shows API call counts so you can monitor consumption.
Yes. QueryFlow connects to any Postgres instance reachable from your Mac, including read replicas, standbys, and managed services like RDS, Aurora, Neon, Supabase, and Heroku Postgres. Read-only connections work fine — QueryFlow only reads from Postgres in this workflow, all writes go to Salesforce.
Failed jobs surface in the Observatory dashboard with full Salesforce error responses (row-level errors when available). The job is not retried automatically by default, but you can configure retry policies per pipeline. For Salesforce-side errors (validation rules, required fields, lookup misses), the failed rows are logged so you can correct the source data and re-run.
14-day free trial. Connect Postgres and Salesforce, build your first sync, schedule it — all within an hour.