Appnigma

Can You Integrate Custom Salesforce CRM With Development Services? (Yes — Here's Exactly How)

Salesforce CRM Integration

Mar 03, 2026

18 min read

Can You Integrate Custom Salesforce CRM With Development Services? (Yes — Here's Exactly How)

Quick Answer

Yes — and it is one of the highest-leverage things a growing business can do. Salesforce is architected specifically for integration. It exposes REST APIs, SOAP APIs, Platform Events, and Streaming APIs so external systems and custom development services can connect to it. Whether you want to integrate a custom-built web application, an ERP system, a billing platform, or a suite of marketing tools — all of it is possible. The question is not whether you can do it. It is which method you should use, and where most teams go wrong when they try.

I have been building on the Salesforce platform for over a decade. In that time, I have watched hundreds of teams attempt Salesforce integrations — some elegantly, most clumsily, a few catastrophically. The pattern is remarkably consistent: the technical part of connecting Salesforce to an external system is rarely the hard part. What kills integration projects is the lack of a clear architecture decision upfront, a misunderstanding of Salesforce's governor limits, and the temptation to take shortcuts that become permanent.

This guide is not a generic "Salesforce has APIs" post. I am going to tell you exactly what I have seen work, what I have seen fail, which integration method fits which situation, and the specific mistakes I would beg every team to avoid.

From the field — Sunny Chauhan, Appnigma

The single most common question I get from teams starting a Salesforce integration is: "Should we use MuleSoft?" My answer is always the same: not yet. MuleSoft is a powerful, expensive enterprise tool. If you have two or three integration points and a small engineering team, you will spend more time managing MuleSoft than writing actual integration logic. Start with direct REST API integration. Only graduate to middleware when you genuinely need it.

What Does "Integrating" Salesforce CRM With Development Services Actually Mean?

Before we talk about how, let's be precise about what we mean. "Integrating custom Salesforce CRM with development services" covers a wide spectrum of scenarios that require different approaches:

  • Connecting Salesforce to a custom-built external application — a web app, mobile app, or internal tool your team has built that needs to read or write Salesforce data

  • Integrating Salesforce with a third-party SaaS service — ERP, billing platform, marketing automation, analytics tool, support desk, and so on

  • Building custom Apex callouts from Salesforce to an external API — your Salesforce org initiates the call to an external service when an event happens inside Salesforce

  • Exposing Salesforce data to an external system via a custom REST API — the external system calls Salesforce to read or write records

  • Packaging an integration as a managed or unlocked package — so it can be deployed to multiple customer orgs cleanly and upgraded over time

The answer to "can you do it?" is yes to all of the above. Salesforce is one of the most integration-friendly enterprise platforms ever built. The architecture decision — how you do it — determines whether it stays maintainable at scale or collapses under its own weight eighteen months later.

The Four Integration Methods: Which One Fits Your Situation

Every Salesforce integration falls into one of four architectural patterns. I have used all of them. Here is an honest breakdown of when each makes sense.

Recommended for most teams

Direct REST API Integration

Your application or service communicates with Salesforce directly over HTTPS using Salesforce's REST API or a custom Apex REST service you expose. Authentication is handled via OAuth 2.0. Data moves as JSON. You write the integration logic yourself — either in your external app (calling Salesforce) or in Salesforce Apex (calling your external app).

Use when: You have one to four integration points, a capable engineering team, and full control over both systems. This approach gives you the most flexibility and the lowest overhead for straightforward integrations.

Watch out for: Salesforce's API governor limits. Every org has a daily API call limit. Heavy, poorly-optimised REST API integrations hit this ceiling faster than most teams expect.

Best for scaling

Middleware / iPaaS Integration

A middleware platform (MuleSoft, Dell Boomi, Workato, Zapier for lighter use cases) sits between Salesforce and your other systems. The middleware manages data transformation, routing, error handling, and retry logic centrally. Each system only talks to the middleware, not directly to each other.

Use when: You have five or more systems to integrate, complex data transformation requirements, or a team that cannot maintain custom integration code long-term. The centralised error handling and visual management tools justify the cost at this scale.

Watch out for: MuleSoft in particular is expensive and complex. Zapier is easy but not suitable for high-volume or sensitive data. Match the tool to your actual complexity — not to what a vendor demo makes look impressive.

Best for real-time events

Event-Driven Integration via Platform Events

Salesforce Platform Events let you publish events from within Salesforce when something happens — a new Opportunity reaches a certain stage, a Case is escalated, a contract is signed. External systems subscribe to these events and react in real time without polling the API. This is an event-driven, asynchronous pattern that decouples your systems cleanly.

Use when: You need real-time reactions to Salesforce record changes without building a complex polling mechanism. Also excellent for triggering downstream workflows — sending a signed contract to your billing system the moment it closes in Salesforce.

Watch out for: Event delivery is at-least-once, not exactly-once. Your receiving system must handle duplicate event delivery gracefully using idempotent design.

Use sparingly

Managed Package Integration Layer

You bundle your entire integration — Apex callout classes, custom objects for logging, Flows, permission sets, and Named Credentials — into a Salesforce managed package. This package is installed in customer orgs or multiple internal orgs and handles the integration natively, without any external middleware dependency.

Use when: You are building an integration that needs to be deployed to multiple Salesforce orgs — either multiple customer environments (ISV scenario) or multiple internal orgs. The managed package makes the integration portable, upgradeable, and versioned. This is what Appnigma was built to help teams do without requiring Apex expertise.

Watch out for: Managed package development has a higher initial setup cost. Not worth it for a single-org, one-time integration. Worth every hour of investment when you are deploying the same integration across ten, fifty, or a hundred orgs.

Hard-earned opinion — Sunny Chauhan

The "managed package as integration layer" pattern is the one I am most passionate about and most underused. I spent years watching ISV teams build the same integration by hand — copy-pasting Apex classes across orgs, manually updating Named Credentials per customer, handling governor limit exceptions differently in each installation. A managed package with the integration logic baked in solves all of that. One package. One upgrade path. Consistent behaviour across every org. It is a fundamentally better architecture for anyone operating at scale on Salesforce.

Salesforce's Integration APIs: Which One to Use When

Salesforce exposes multiple APIs, each suited to different integration scenarios. Choosing the right one matters — using Bulk API for real-time single-record updates, for example, is like using a freight train to deliver a letter.

[@portabletext/react] Unknown block type "table", specify a component for it in the `components.types` prop

On governor limits: Every Salesforce org has daily API call limits that vary by edition. Enterprise Edition orgs get 1,000 API calls per Salesforce license per day (minimum 1,000,000). If your integration is making individual REST API calls for every record in a large dataset, you will hit this limit. Bulk API was built specifically for this — it processes up to 100 million records per 24 hours in a single batch job. Design your integration with these limits in mind from day one, not after you hit them in production.

Why Managed Packages Are the Right Integration Layer for ISV Teams

If you are building an integration that will be deployed across multiple Salesforce orgs — whether for multiple customers or multiple internal environments — you need to package it. Full stop. The alternative is a maintenance nightmare that only gets worse over time.

Here is what a well-packaged Salesforce integration includes:

  • Named Credentials for storing external endpoint URLs and auth tokens — configured per org during installation, not hardcoded

  • Apex callout classes containing the integration logic — versioned, testable, deployable as a unit

  • Custom objects or platform events for logging integration activity and error states in Salesforce itself

  • Flows or Process Builder automations that trigger the integration at the right points in the business process

  • Permission sets that define which users have access to the integration features

  • Custom metadata types for integration configuration that admins can update without touching code

Bundle all of that into a managed package and you have an integration that installs in minutes, behaves consistently across every org, and can be upgraded when your external API changes — without requiring your team to manually update every deployment.

Why we built Appnigma — Sunny Chauhan

This exact problem — the complexity of building and maintaining managed package integrations at scale — is what we built Appnigma to solve. The Apex code, the Named Credentials setup, the permission set configuration, the metadata structure: all of it has a learning curve that takes months to navigate properly. We built a platform that handles the scaffolding so teams can focus on the integration logic itself. If you are in this situation, our guide on building Salesforce managed packages is the right place to start before writing a single line of code.

What Integration Looks Like in Practice: Three Real Scenarios

Abstract integration advice is easy to give and hard to act on. Here are three specific scenarios I have seen up close, with the actual architectural choices made and why.

Scenario 1: SaaS Company Connecting Salesforce to Their Product Usage Data

A B2B SaaS company I worked with wanted to surface product usage data from their data warehouse inside Salesforce, so customer success managers could see how actively a customer was using the product without leaving their CRM. The challenge: the usage data was in Snowflake, updated in near-real-time, and the team had no Apex expertise.

The solution: a REST API integration using a custom Apex class that made callouts to a lightweight Node.js middleware service, which queried Snowflake and returned structured JSON. The Apex class stored the results in a custom object in Salesforce, displayed via a Lightning Web Component on the Account page layout. Total build time: three weeks. Governor limits were handled by using Platform Cache to avoid redundant callouts for the same account within a session.

The key decision that made this work: treating the middleware as a thin translation layer, not a logic layer. Business rules stayed in Salesforce. The middleware only transformed data formats.

Scenario 2: Manufacturing Firm Syncing Orders Between ERP and Salesforce

A manufacturing firm was creating orders in Salesforce Sales Cloud but needed those orders reflected in real time in their SAP ERP system, which handled inventory and fulfilment. Two-way sync: Salesforce sends new orders to SAP, SAP sends order status updates back to Salesforce.

The solution: MuleSoft as the integration hub. Salesforce Platform Events fired when an Order record reached "Confirmed" status. MuleSoft subscribed to the event, transformed the Salesforce data model to SAP's IDoc format, and pushed to SAP. SAP sent status updates to a MuleSoft webhook, which MuleSoft then mapped back to Salesforce Order records via REST API. The bi-directional flow, with all the error handling and retry logic, was managed entirely in MuleSoft.

This is a textbook case for middleware. Two systems with completely different data models, two-way flow, and a company large enough to justify the MuleSoft licence cost. For a smaller team, this same integration could have been built with a custom Node.js service at a fraction of the cost — but it would have required ongoing engineering maintenance that this team's IT capacity could not sustain.

Scenario 3: ISV Building a Payment Gateway Integration for Multiple Customer Orgs

An ISV partner wanted to integrate Stripe payment processing directly into Salesforce so their customers' sales teams could process payments without leaving the CRM. The integration needed to work across thirty-plus customer Salesforce orgs with different configurations.

The solution: a managed package. The package contained a custom Payment__c object, an LWC payment form component surfaced on Opportunity records, an Apex callout class to the Stripe API, and Named Credentials for storing the Stripe API key per org. The ISV's customers installed the package, entered their Stripe API key into the Named Credential, and the integration was live. When Stripe changed their API version, the ISV released a package update — every customer received it through the standard managed package upgrade flow.

This is why managed packages exist for this exact use case. Thirty orgs, one codebase, one upgrade path, zero per-customer maintenance burden.

Six Integration Mistakes I See Teams Make Again and Again

Starting with point-to-point architecture and assuming it will scale

Three integrations looks manageable with direct connections. Eight integrations with direct connections is a spider web of fragile dependencies. Every change in one system ripples to every other system it touches directly. I have untangled these messes for clients; it is expensive and demoralising. Design for a hub architecture from the start, even if you only have two integrations today.

Ignoring governor limits until production fails

Salesforce's governor limits are not suggestions. Daily API call limits, callout timeouts, heap size limits, SOQL query limits — they all exist and they all bite you in production if you have not accounted for them in the design phase. Test with realistic data volumes in a full sandbox, not a developer org with fifty records. I have seen integrations that worked perfectly in UAT collapse on day one of production because the data volume was forty times the sandbox volume.

Not handling error states and retries

External APIs go down. Networks have timeouts. A Salesforce callout that assumes the external system will always respond successfully will silently lose data when it does not. Every integration needs: a retry mechanism for transient failures, a dead letter queue or error log for permanent failures, and a monitoring alert when the error rate spikes. Without these three things, you will not know your integration is broken until a customer calls to tell you their data is missing.

Building integrations directly in production

I understand the pressure to move fast. Building in production is still wrong. Salesforce integrations that touch production data and production API limits have a blast radius when they go wrong. Always build in a sandbox, test with production-like data volumes, and deploy with a change set or CI/CD pipeline. The sandbox licence cost is trivial compared to the cost of corrupted production data.


Duplicating master data across systems without a defined owner

If a customer's email address exists in both Salesforce and your external billing system, which one is correct when they differ? This question sounds philosophical until you are sending invoices to the wrong address and your support team is looking at different customer records than your billing team. Define your master data ownership rules before you write integration code. Salesforce owns what, the external system owns what, and what happens when there is a conflict.

Treating integration as a project, not a product

The integration you build today will need to change. Your external API will release a new version. Salesforce will deprecate an API. Your business process will evolve. Teams that treat integration as a one-time project with no ongoing ownership end up with broken integrations maintained by whoever is unlucky enough to be assigned the support ticket. Name an owner. Add it to your engineering roadmap. Treat it with the same lifecycle discipline as any other software product your team ships.

Integration Readiness Checklist Before You Write a Single Line

I use this mental checklist before I begin any Salesforce integration. If you cannot answer all of these questions, the time spent getting answers upfront will save multiples of that time in rework later.

Architecture decisions:

  • What is the data flow direction — Salesforce to external, external to Salesforce, or bidirectional?

  • Is this real-time, near-real-time, or batch? What latency is acceptable?

  • Point-to-point, middleware hub, or managed package pattern?

  • Will this integration need to be deployed to multiple orgs?

Data and ownership decisions:

  • Which system is the master of record for each data entity being synced?

  • What is the conflict resolution rule when both systems have different values?

  • How will duplicates be detected and prevented — what unique identifier links records across systems?

  • What data must never leave Salesforce (PII, compliance-sensitive fields)?

Technical and governance decisions:

  • Which Salesforce API type is appropriate for this data volume and latency requirement?

  • How will authentication credentials be stored and rotated?

  • What is the error handling and retry strategy?

  • What does success look like — what monitoring will confirm the integration is working?

  • Who owns this integration ongoing, and where does its code live?

Frequently Asked Questions

Can you integrate custom Salesforce CRM with development services?

Yes, absolutely. Salesforce exposes REST APIs, SOAP APIs, Platform Events, and Streaming APIs specifically so external systems and custom development services can connect to it. You can integrate Salesforce with ERP systems, billing platforms, marketing automation tools, custom-built web apps, mobile apps, data warehouses, and virtually any external service that supports standard API protocols. The right method depends on your data volume, real-time requirements, and whether you want to build the integration yourself or use a middleware platform.

What is the best way to integrate Salesforce CRM with custom development services?

For most Salesforce-native teams with one to four integration points, direct REST API integration using Apex callouts is the cleanest approach — low overhead, full control, no middleware licence cost. For five or more systems with complex data transformation requirements, a middleware platform like MuleSoft or Dell Boomi is worth the investment. For ISV teams deploying integrations across multiple customer orgs, a managed package containing the integration logic is the only scalable architecture.

What APIs does Salesforce provide for integration?

Salesforce provides: REST API (lightweight JSON, best for most modern integrations), SOAP API (XML, better for legacy enterprise systems), Bulk API 2.0 (designed for high-volume batch data operations), Streaming API and Platform Events (real-time event-driven integration), Connect REST API (Experience Cloud, Chatter, files), Apex REST/SOAP (custom business logic exposed as an API endpoint), and Tooling API (CI/CD and developer tooling). Most modern integrations use REST API for its simplicity and universal compatibility.

How do managed packages help with Salesforce CRM integration?

Managed packages let you package your entire integration layer — Apex callout classes, custom objects, Flows, Named Credentials, and permission sets — into a single deployable, upgradeable unit. This makes the integration portable across multiple Salesforce orgs, versioned so updates can be pushed cleanly, and consistent so every installation behaves identically. For ISV teams building integrations for multiple customer orgs, managed packages are the only scalable approach. Platforms like Appnigma generate these packages without requiring Apex expertise.

What is the difference between point-to-point and middleware integration in Salesforce?

Point-to-point integration connects each system directly to every other system. Fast to set up but becomes a maintenance nightmare beyond four or five connected systems. Middleware (MuleSoft, Dell Boomi, Workato) uses a central hub that manages all connections, handling data transformation, error handling, and retry logic centrally. Middleware is worth the investment once you cross three or four integration points — the maintenance overhead of unmanaged point-to-point connections quickly exceeds the cost.

What are the most common mistakes in Salesforce CRM integration?

The most common mistakes are: starting with point-to-point architecture that does not scale; ignoring Salesforce's API governor limits until they cause production failures; not building error handling and retry mechanisms; building directly in production instead of sandbox first; duplicating master data without defining which system owns it; and treating integration as a one-time project rather than an ongoing engineering concern that needs ownership.

How long does it take to integrate Salesforce CRM with development services?

A simple one-system integration using a pre-built connector can be live in hours. A custom REST API integration between Salesforce and an internal system typically takes one to three weeks including design, build, sandbox testing, and production deployment. A full enterprise multi-system integration across ERP, billing, support, and data warehouse — done properly with middleware — realistically takes three to six months. The biggest time sink is never the API work itself; it is agreeing on data model ownership, conflict resolution rules, and error-handling policies between teams.

Ready to transform your Salesforce experience?

Start exploring the Salesforce Exchange today and discover apps that can take your CRM efficiency to the next level.

decorative section tag

Blog and News

Our Recent Updates