Outrank AI

A sales rep sends a quote using the price in Salesforce. Finance rejects it because the ERP price changed yesterday. Meanwhile, customer service is checking a Shopify order that neither system shows correctly, and nobody can explain which record to trust.
ERP integration with Salesforce should resolve those disagreements, not automate them. The difficult part isn't getting an API call to succeed. It's deciding who controls each field, how failures get recovered, and who maintains those decisions when your business changes.
Table of Contents
What Your ERP and Salesforce Each Need to Own
The price mismatch starts before anyone chooses a connector. Sales treats a Salesforce price book as authoritative, finance maintains an ERP price list, and both teams assume the other system will catch up. Connecting them without resolving that conflict only moves the wrong price faster.
In 2024, 81% of IT leaders said data silos hinder digital-transformation efforts, according to Informatica's summary of Salesforce's Connectivity Benchmark Report, which identifies ERP and financial-system integration as cross-functional use cases. For a sales rep, the practical requirement is narrower: see reliable order status and credit limits without leaving Salesforce.
Assign authority before access
Start with an explicit division of responsibility:
Data | Proposed system of record | Other system's role |
|---|---|---|
Accounts, contacts, opportunities, cases | Salesforce | Read approved relationship information |
Sales orders and invoices | ERP | Submit order requests and display confirmed results |
Item masters and inventory levels | ERP | Read or display |
Price lists and customer credit terms | ERP | Display, without independent edits |
These are starting decisions, not universal rules. A Salesforce account might own relationship details while the ERP controls its billing identity. Document ownership at field level wherever responsibilities split.
For Shopify brands, include the storefront boundary in that exercise. An ERP and ecommerce integration plan should distinguish customer-entered information from approved financial records. If nobody internally can define those ERP rules, TekRecruiter's resource on ERP talent for growing companies is relevant to filling that operational skills gap.
Create a one-page ownership sheet with object, system of record, sync direction, business owner, and date last agreed. Sales operations should maintain CRM definitions after launch; finance and operations should maintain ERP definitions, with a named integration owner recording approved changes.
Choosing Between a Direct Connector and Middleware
A prebuilt connector trades flexibility for a quicker setup. Custom point-to-point code trades ongoing engineering work for control. An integration platform centralizes orchestration but introduces licensing and specialist skills. A hybrid architecture avoids unnecessary copies but makes some Salesforce screens dependent on ERP availability.
Confirm the ERP product, deployment model, version, and supported interfaces before shortlisting platforms. A connector that supports the ERP's name may still omit your custom order objects or require an interface your deployment doesn't expose.
Salesforce-ERP architecture options compared
Architecture | Best fit | Setup effort | Ongoing maintenance | Main risk |
|---|---|---|---|---|
Native or prebuilt connector | One ERP, a narrow set of standard objects | Low to medium | Medium, tied to vendor release cycles | Limited custom transform logic |
Custom point-to-point API | A few objects, one developer team | Medium | High, changes require coordination across both endpoints | Brittle as connected systems grow |
Integration platform, including iPaaS or MuleSoft | Several connected systems, shared transforms | High | Medium, platform licences and skills | Platform cost and vendor lock-in |
Hybrid, ERP-held data via on-demand lookup | Pricing, stock, or invoices that must stay authoritative in the ERP | Medium | Low to medium, fewer copies to reconcile | Slower screens when the ERP is under load |
Choose the simplest architecture your support team can operate. A standard customer-and-order flow may fit a connector well. Custom approval chains, regional routing, and shared transformations across Shopify, Salesforce, and the ERP make centralized orchestration more useful.
The strategic importance of that integration layer was evident when Salesforce announced its agreement to acquire MuleSoft on March 20, 2018, for approximately $6.5 billion in enterprise value. That history doesn't make MuleSoft the default choice for a smaller commerce stack.
Evaluate the boundary, not the label
Spell's explanation of Spell's direct connection to PaymentIQ is an adjacent payment-integration example to consider when evaluating direct connections. For Salesforce, ask the same operational questions: who translates errors, who retries requests, and who coordinates endpoint changes?
On our Acure project, technology partners included Shopify Plus, Yotpo for reviews, NetSuite for ERP integration, and Shopify Markets for international commerce. That isn't evidence of a Salesforce implementation; it illustrates why a Shopify integration with ERP must account for the surrounding application stack.
Decision rule: Count the systems and objects in scope, then reject any architecture that leaves competing authoritative records.
After go-live, assign connector upgrades to an application owner, custom code to a development team, and middleware operations to a platform owner. A hybrid approach also needs an ERP availability owner because sales users will depend on those live responses.
Mapping Objects and Choosing a Sync Pattern
Choose a stable external ID before mapping descriptive fields. The ERP customer number is a useful candidate once the customer exists there. Don't match on email alone: shared purchasing addresses, changed domains, and guest checkouts make email an unreliable business identity.
The workspace below illustrates the systems involved in that mapping exercise.

Map meaning as well as fields
Map Salesforce Account to ERP customer, Opportunity or Order to ERP sales order, Product2 to item master, and PricebookEntry to the applicable ERP price-list entry. An opportunity becoming closed-won shouldn't automatically mean the ERP can fulfill it. Define the approval, credit, and required-address conditions that make it an accepted order.
Specify currency precision, rounding method, order-date time zone, units of measure, and tax-code translation. A case of products isn't interchangeable with an individual item, and a local order date can change when converted across time zones.
F1Group's explanation of connecting business apps to share data provides useful context for cross-application workflows. Your mapping sheet must go further, recording null handling, defaults, validation, and rejected-value behavior for every mapped field.
Sync patterns by latency and use case
The delay categories below are design expectations, not performance guarantees.
Pattern | How it works | Typical delay | Good for | Recovery after failure |
|---|---|---|---|---|
Scheduled batch | Scheduled job sends changed records | Until the next completed run | Financial summaries, large product catalogues | Rerun the affected time window |
Event-driven | Change publishes an event or webhook | Near real time when queues are healthy | Order status, credit holds, case updates | Replay retained events |
On-demand lookup | Salesforce requests ERP data when needed | At request time | Inventory, invoices, live pricing | Retry the request without maintaining a replicated copy |
Use Salesforce's data integration decision guide to evaluate latency, volume, access, and recovery requirements. Keep authoritative calculations in the ERP and expose only the context sales and service need. For replicated personal or financial fields, define consent, retention, deletion propagation, access controls, and auditability.
This accompanying video offers another way to review the integration workflow.
Check your Salesforce API allocation and whether Bulk API suits catalogue loads before scheduling them. Reserve capacity for operational traffic rather than letting a product import consume the available budget.
After launch, the data steward maintains the field mapping sheet; the integration owner validates record counts and relevant totals after sync runs and investigates differences.
Setting Up Authentication and Access Safely
Treat the integration as its own identity, not an extension of an administrator's account. It should have enough access to perform the approved workflow and no more.
Configure the service identity
Create a dedicated Salesforce integration user. Name it for the connected system so administrators can identify its activity. A personal admin login couples production access to someone's employment, password changes, and interactive security settings.
Configure an approved OAuth application. Use the application registration supported by your Salesforce org, such as an External Client App or an existing Connected App. For a suitable server-to-server implementation, OAuth JWT bearer authentication avoids storing a user password, but the signing private key still needs protection.
Grant permissions from the mapping sheet. Use permission sets for required objects and field-level access, then check record-sharing requirements separately. Starting with broad administrator permissions hides missing access rules until someone tightens them during a critical run.
Apply network and session controls. Where supported, restrict access to trusted middleware egress locations and test token renewal during long jobs. Don't weaken session policies to keep a poorly designed batch alive.
Protect and rotate credentials. Store private keys and client secrets in a secrets manager, restrict retrieval, and record certificate expiry and rotation ownership. Test replacement credentials before revoking the working ones.
Enable appropriate audit tracking. Track sensitive changes where field types and platform capabilities support it, and retain integration logs without exposing confidential payloads. Credit-limit changes may warrant audit history; bank details shouldn't be copied into Salesforce merely because they're available.
Verify the restriction works
Apply equivalent controls to the ERP service account. If the integration only reads prices and creates approved order requests, it shouldn't also change price lists or post journals.
A successful request proves connectivity. A rejected unauthorized request proves part of your access design.
Using the integration identity, test permitted reads and writes through the actual API path, then attempt access outside the approved mapping. The security administrator owns permissions and credential rotation after launch, while the integration owner confirms that security changes don't interrupt business workflows.
How to Build, Test and Go Live
Build around acceptance criteria that finance, sales operations, and fulfillment can verify. A green middleware dashboard isn't enough if invoice totals disagree or cancelled orders reappear.
The implementation flow below summarizes the release stages; failure recovery needs its own explicit approval.

Prove the normal path and the broken path
Build in a sandbox. Implement external IDs, validation, and transformations from the approved mapping. Use masked or synthetic sensitive information and disable outbound actions that could notify real customers.
Load a representative test set for every object. Include duplicate names, missing tax codes, cancelled orders, partial shipments, refunds, and customers with different billing and shipping entities. Choose coverage by business condition, not just by record volume.
Repeat the identical sync. Confirm it creates no additional records or duplicate downstream effects. This tests idempotency for that scenario, but also test retries after partial completion and duplicate event delivery.
Break the connection deliberately. Interrupt ERP access during a batch and force a record-level rejection. Confirm the error queue preserves enough context for replay, valid independent records continue where safe, and failed dependencies don't create orphaned order lines.
A timeout deserves special attention. The ERP may have committed the order even though Salesforce never received confirmation. Before resending a create request, query by its stable transaction identifier.
Release a bounded slice
Reconcile business results. Compare order counts, invoice sums, and inventory quantities for matching scope and cutoff times. Separate legitimate timing differences from missing records, and compare monetary totals by currency rather than adding incompatible amounts.
Run a parallel validation period that covers your relevant business cycles. Reps can inspect ERP information in Salesforce while the existing transaction process remains authoritative. Prevent the parallel workflow from creating duplicate orders or customer communications.
Launch a limited object or region first. Set rollback triggers, preserve pre-change values where restoration is safe, and document how to pause processing. Turning off a sync doesn't undo an invoice, shipment, or financial posting already created in the ERP.
Athletic brand NOBULL partnered with us for Shopify Plus, NetSuite integration, and scale. That scope reinforces the need to validate commerce operations together rather than approve a connector in isolation.
Release gate: Don't approve production until someone other than the developer can recover a deliberately failed transaction using the runbook.
The sign-off checklist should cover sandbox mapping, representative test coverage, repeat-run behavior, failure recovery, reconciliation, parallel validation, and rollback. Record a named approver and approval date for each item.
After go-live, the release owner hands the runbook to the support owner, finance approves reconciliation rules, and sales operations owns user-facing acceptance. Keep the delivery team available until those owners can operate the workflow independently.
Owning Data After Launch and Next Steps
Reliability means maintaining trust over time, not celebrating a successful initial sync. An integration can keep returning successful responses while sending outdated definitions, omitting newly introduced fields, or processing transactions in the wrong business sequence.
Nuvolar's discussion of enterprise data consistency highlights the continuing importance of governance and ownership across connected systems. The practical response is to give someone authority to resolve discrepancies, not merely permission to view a dashboard.
Post-launch symptoms, causes and fixes
Symptom | Likely cause | Fix |
|---|---|---|
Duplicate customer records | No enforced external ID, matching on name or email | Enforce the ERP customer number as external ID and set a controlled merge rule |
Orders missing in Salesforce | Failed API call not retried | Replay the error queue for the affected time window after checking destination state |
Field values flip between systems | Both systems write the same field | Assign a system of record per field and make the other read-only |
Batch runs slow at month end | Batch volume exceeds the processing window | Split batches by region or date and filter unused fields |
Sync stops after a password change | Credentials or certificate expired | Replace password-based access where appropriate and alert before certificate expiry |
Use these symptoms to organize triage, rather than treating every discrepancy as a reason to rebuild the integration.

Make support an operating responsibility
Maintain a replayable error queue with transaction identifiers, failure reasons, attempt history, and a safe replay action. Separate temporary failures from business rejections: retrying a network interruption is sensible; repeatedly submitting an invalid tax code isn't.
Define service-level targets for acceptable sync delay and incident resolution by workflow. A credit hold requires different treatment from a historical invoice refresh. Alert on the oldest unprocessed transaction and reconciliation exceptions, not just whether a scheduled job started.
Integration owner: Monitors delivery, retries, queue age, and infrastructure failures.
Business data owner: Resolves ambiguous customer, product, and transaction definitions.
Finance owner: Approves payment, refund, invoice, and tax reconciliation.
Application owners: Review schema changes and coordinate deployment compatibility.
Schedule weekly reconciliation across orders, customers, inventory, payments, and refunds, with more frequent checks for time-sensitive workflows. Every exception needs a disposition: corrected, accepted as timing-related, or escalated with a named decision-maker.
Resolve commerce disputes in writing
Say a Shopify promotion discounts an order, Salesforce displays the customer's negotiated terms, and the ERP invoice shows a different amount. Customer service should gather the transaction references; finance should decide the approved financial treatment; the integration owner should determine whether mapping or sequencing caused the discrepancy.
Define equivalent escalation paths for cancellations, partial shipments, returns, and international tax handling. Require application and data-owner approval before a schema change reaches production, including evidence that existing messages and queued retries remain compatible.
We maintain structured data integrity, third-party integrations, script governance, and performance troubleshooting for client Shopify stores. When evaluating systems integration services, make those ongoing responsibilities explicit rather than assuming implementation support includes them indefinitely.
This week, confirm the architecture against the actual systems and objects, pilot an account or order workflow through permissions and reconciliation, and assign the error queue to a named operator. Before the next meeting, answer the question that will expose the most important unresolved decision: which system is the system of record for the object that caused the most disputes last quarter?
Our Build service includes Shopify development, migration, and integrations and ERP work, supported by ongoing technical governance. Visit Presidio to discuss your Shopify, Salesforce, and ERP boundaries, bringing your ownership sheet and a pilot workflow so we can scope the implementation and its post-launch responsibilities.









