How Immersa Built a Scalable Data Sync Engine Across Every Major CRM

How Pragma Apps architected and delivered a pluggable connector platform — syncing millions of customer records across Salesforce, Intercom, HubSpot, LeadSquared, and more — to power Immersa’s revenue intelligence product.

Client

Immersa

Domain

SaaS Revenue Intelligence &
Data Automation

Engagement

Ongoing Development

Products

Connector Architecture · ETL/Reverse ETL · CRM Integrations · Admin Dashboard

4+

CRM connectors built & production-ready

Millions

Records synced reliably across CRM platforms

2-Way

ETL & Reverse ETL support across connectors

Plug-in

Architecture enabling any new CRM in days, not months

Fragmented Customer Data Was Blocking Immersa's Core Revenue Intelligence Promise

Immersa’s platform finds revenue signals in product and customer data — but only if that data can actually be accessed, reliably synced, and continuously updated from wherever clients store it. With enterprise customers operating across wildly different CRM stacks, Immersa needed a connector infrastructure that was both robust enough to handle millions of records and flexible enough to support any CRM without rebuilding from scratch each time.

No Scalable Way to Sync at Volume

Clients stored years of customer history across Salesforce, Intercom, HubSpot, and other CRMs. There was no existing mechanism to reliably pull millions of records — including historical data — without missing records, hitting rate limits, or crashing under load.

Every New CRM Meant Starting Over

Without a shared connector framework, integrating each new CRM was a bespoke engineering effort. This made expanding Immersa's supported data sources expensive, slow, and architecturally inconsistent.

Incremental Sync Was Unreliable

Beyond one-time historical imports, Immersa needed continuous incremental sync — keeping customer data fresh in near real-time. Without a queue-backed system, failed jobs had no retry mechanism and sync gaps went undetected.

No Visibility Into Sync Operations

Immersa had no operational dashboard to see which clients were syncing, which connectors were active, or which jobs had failed — making it impossible to proactively manage data health at scale.

What We Actually Built for Immersa

We didn’t just write integrations — we designed an architecture that lets Immersa expand to any CRM without rebuilding the engine. Each component was purpose-built to handle real enterprise data volumes, not demo datasets.

Eliminated One-Off Integration Work

Pluggable Connector Architecture — Add Any CRM Without Rebuilding the Core

We designed the entire connector infrastructure around a pluggable pattern: a central connector service defines a core plugin interface, and each CRM is implemented as a standalone native plugin that installs into that service. Adding Salesforce, Intercom, HubSpot, or LeadSquared required implementing the same abstract interface — not rewriting orchestration, queue management, or data-loading logic each time. This means Immersa's engineering team can onboard a new CRM connector in days rather than weeks, and every connector benefits from shared improvements to the core service without any per-connector changes.

Reliable Sync at Enterprise Scale

Queue-Backed ETL Engine — Millions of Records Synced Without Data Loss

Pulling millions of records from enterprise CRMs in series is practically impossible — rate limits, API timeouts, and response pagination all conspire against reliability. We solved this with a BullMQ-powered queue system built on Redis that processes sync jobs asynchronously, retries failures automatically, and allows parallel processing of date-range-partitioned jobs. For Salesforce, this meant integrating bulk API job flows — posting a query, polling for completion, then paginating the result set through the queue — so that even billion-record orgs complete full historical syncs reliably. The same queue architecture handles Intercom's stateless API, where thousands of parallel calls are required to retrieve conversation detail records that cannot be batched.

Two-Way Data Flow Across CRMs

ETL and Reverse ETL — Move Data In Both Directions, Not Just Into Snowflake

Most data pipelines move data in one direction. We built Immersa's connectors to support both. ETL (Extract, Transform, Load) pulls customer data from CRMs and lands it in Snowflake for analysis — in either full historical or incremental mode. Reverse ETL pushes enriched data from Snowflake back into CRMs like HubSpot, handling bulk record creation, updates to existing records, and deletions — all within CRM API constraints. This means Immersa can not only analyse customer behaviour in Snowflake but also push the resulting revenue signals back to the CRM where sales reps and customer success agents actually work, closing the loop between intelligence and action.

Scheduled, Monitored, and Orchestrated

Prefect-Based Orchestration — Sync Flows That Run Themselves

We integrated Prefect v2 as the orchestration layer — giving Immersa scheduled, configurable, and fully monitored sync flows without building a scheduler from scratch. Each flow represents a complete sync pipeline: it calls the connector service APIs to register jobs, monitors queue progress, and loads completed CSV files from S3 into Snowflake. Prefect's UI gives Immersa full visibility into which flows ran, which failed, and what their status is — turning previously opaque background jobs into a manageable operational surface. Scheduling ensures incremental syncs run continuously without manual triggers, keeping Snowflake current at all times.

Operational Intelligence for Immersa's Team

Connector Admin Dashboard — Real-Time Visibility Across Every Client Sync

Beyond the backend infrastructure, we built a React-based admin interface that gives Immersa's team actionable operational visibility: which clients are syncing, which connectors are in use, how many records have been processed, and whether any jobs have encountered errors. The dashboard consumes the same REST APIs exposed by the connector service, presenting graphical summaries that previously required direct database queries to produce. This gives Immersa's team a single pane of glass over their entire data pipeline estate — making it possible to manage data health proactively rather than reactively.

Immersa’s value to their customers depends entirely on data being complete, fresh, and trustworthy. We built the connector architecture so that syncing millions of records isn’t a heroic engineering feat — it’s a routine operation that just works.

What Immersa Got

A summary of the concrete capabilities delivered across the full connector platform.

Pluggable connector framework — a single architecture where any new CRM can be onboarded by implementing a shared interface, not rebuilding the pipeline.

Incremental & real-time sync — continuous scheduled syncing from a configurable point-in-time, keeping Snowflake current without full re-imports.

Queue-backed reliability — BullMQ on Redis ensures every sync job retries on failure, respects API rate limits, and handles parallel pagination at scale.

Four production connectors — Salesforce (Bulk API), Intercom, HubSpot, and LeadSquared all in production, each handling millions of records per client.

Full historical sync — complete multi-year record sets pulled from enterprise CRMs to Snowflake without data loss, including custom objects and compound fields.

Reverse ETL to HubSpot — enriched data from Snowflake pushed back into CRMs in bulk, with proper handling of creates, updates, and deletes.

Prefect orchestration — scheduled, observable flow runs with UI monitoring, replacing manual triggers with fully automated pipeline management.

Connector admin dashboard — React-based operational UI giving Immersa's team real-time visibility into sync status, connector usage, and job health across all clients.

Technologies & Tools

NestJS Python / Prefect v2 ReactJS BullMQ / Redis MongoDB Snowflake AWS S3 AWS EKS / Kubernetes DuploCloud Salesforce Bulk API Intercom API HubSpot API LeadSquared API ETL & Reverse ETL Pluggable Architecture Queue-Backed Job Processing REST API Design Workflow Orchestration

Building something that needs to work at the pace of science?

Tell us about your product. We’ll tell you how we can help you ship it.

Scroll to Top