01The claim"Salesforce and Shopify are the same kind of thing, just connect the storefronts."
The realityTwo different "Salesforce" products get conflated. Salesforce CRM (Sales / Service Cloud + B2B Commerce on Core) is the customer, account and contract system you integrate with Shopify. Salesforce Commerce Cloud (SFCC / Demandware) is a rival storefront, not a CRM. A buyer searching "Salesforce Shopify integration" almost always means CRM behind the storefront. Almost no competitor says so.
02The claim"Install the connector and you're integrated, it just syncs."
The realityPoint connectors (eShopSync, Sync Made Easy, CRM Perks) sync a fixed set of entities on a fixed mapping, often Contact-first not Account-first, with a fixed conflict policy and no model of the B2B contract layer. eShopSync's own docs note variant-to-product conversion "cannot be reversed without deleting all products," and multi-currency plus Salesforce to Shopify export are paid upgrades. In a three-system topology they become one more writer fighting for ownership of the same records.
03The claim"Just push Shopify customers into Salesforce."
The realityPushed naively this produces an explosion of duplicate contacts. Shopify treats a customer as transactional, with anonymous guest checkouts and one person under multiple emails. Salesforce organizes the same human as an Account / Contact / Lead. Safe sync requires external-ID upsert plus DuplicateRule and matching rules and a canonical-ID map, designed up front, not last-writer-wins.
04The claim"Authenticate it with a Salesforce username and password."
The realityThe OAuth username-password flow is deprecated and an External Client App excludes it outright. As of Spring '26, new Connected Apps can no longer be created: you build the integration as an External Client App, which is closed by default. Build on JWT Bearer (certificate-signed, no stored password) or Client Credentials (key, secret and a Run-As user), and design to Salesforce's May 2026 OAuth security controls (PKCE, refresh-token rotation, idle timeout, IP allowlist) from day one.
05The claim"Salesforce has a simple requests-per-minute rate limit."
The realitySalesforce governs by a daily API request allocation (Enterprise about 100,000 plus 1,000 per Salesforce license; Unlimited and Performance plus 5,000) and a 25 concurrent long-running request cap in production. The ceiling scales with licenses, not order volume, so a busy storefront exhausts it through chatty per-record calls. Over-limit returns 403 REQUEST_LIMIT_EXCEEDED, a backpressure signal, not an error to retry blindly.
06The claim"Poll Salesforce on a schedule to catch changes."
The realityPolling burns the daily call budget. The modern path is Change Data Capture over the Pub/Sub API (gRPC, HTTP-2, Apache Avro). Events are retained only 72 hours, each carries a Replay ID, and a subscriber that does not persist its replay position silently loses changes during a long outage and permanently loses anything older than 72 hours. Durable replay checkpointing is a hard requirement.
07The claim"The connector dedupes orders, so you'll never get duplicates."
The realityIdempotency must be engineered, not assumed. Shopify webhooks can be re-delivered or arrive out of order. The only safe sink is external-ID upsert: stamp the stable Shopify id into a custom External ID field and PATCH /sobjects/{Object}/{extIdField}/{value}. Salesforce creates if absent and updates if present, so a duplicate delivery is a no-op. A connector that does INSERT on every webhook duplicates records.
08The claim"Map a Shopify customer straight to a Salesforce Contact."
The realityTwo object-model traps break a first-cut sync. Person Accounts collapse Account and Contact into one row: standard fields surface as Person*, custom ones as __pc, and Name is read-only (write FirstName / LastName or hit a DML exception). Orders enforce a Draft to Activated lifecycle where every OrderItem must resolve to a PricebookEntry in the right Pricebook2 first. Both require branching the mapping.
09The claim"The connector handles B2B contract pricing out of the box."
The realitySalesforce resolves a buyer's price by blending multiple buyer-group price books with a configurable "lowest price" or "highest-priority book" strategy. Shopify B2B assigns a Company Location to exactly one catalog and does not blend N books at runtime. The middleware must pre-resolve the effective price (read it via Connect REST GET /commerce/webstores/{id}/pricing/products) and write a single value per company. Standard connectors often skip this entirely.
10The claim"Negotiated and contract prices will just flow to the storefront."
The realityThere are three different contract-pricing engines: native B2B Commerce price books, CPQ ContractedPrice (account-scoped, snapshot-at-quote, parent to child), and RLM ContractItemPrice. None of them automatically flow to the storefront, and which one the client runs dictates the entire build. CPQ takes a price snapshot at quote time, so later changes do not reach an existing quote line. Find out which engine is in play before quoting.
11The claim"Per-account catalogs scale however you like."
The realityB2B Commerce entitlement has hard ceilings: 200 buyer groups per entitlement policy, 2,000 buyer groups per product per store, and search indexing includes only the first 2,000 buyer groups for a product. A naive "one buyer group per account" design hits these walls fast at enterprise scale. Salesforce's own docs warn that extending the 200 ceiling "can lead to data scaling issues." Account-to-buyer-group batching is a design decision.
12The claim"A custom field in Salesforce means another fragile, hand-coded endpoint."
The realityThe opposite, if built right. Custom objects and fields are first-class in the REST and Bulk surface, keyed by an API name with a structural suffix (__c data, __r traversal, __e event, __x external, __mdt metadata). A robust middleware discovers the model at runtime via describeGlobal and sObjectDescribe (gating on createable, updateable and FLS) and re-reads the Avro schema on CDC schema-ID change. Bind to API names, never labels.
13The claim"Two systems, two object models, last write wins."
The realityShopify and Salesforce can hold conflicting truth simultaneously: "fulfilled" in Shopify against "in progress" or "partially paid" in Salesforce, which yields duplicate records, data drift, and conflicting updates that compromise reporting. A reliable layer encodes a field-level system-of-record matrix (contract and price are Salesforce, fulfillment and capture are Shopify and the ERP) rather than last-writer-wins. No fixed connector exposes that logic.
14The claim"One generic iPaaS recipe is all you need."
The realityGeneric iPaaS (Celigo, Workato, MuleSoft, Boomi) can wire the two together at the API level and even give dashboards and retries, but it lacks "logic for what that data means in a B2B context." Account-specific catalogs, negotiated pricing, approval workflows, the canonical-ID strategy across three systems, and the field-level ownership matrix still have to be designed and built. MuleSoft is cited at $5,000 to $15,000 a month with 2 to 3× TCO once implementation is counted. The connector is the commodity; the reliability logic on top is the product.