
We help maintain an integration that posts donations from Salesforce (NPSP) into a cloud ERP. A redelivery storm once doubled a batch of receipts in the general ledger while every dashboard stayed green. Seven lessons, each paid for in production. (Details anonymized; figures blurred.)
1. A successful write is not a correct write
Every API call succeeded — while the books inflated by a mid-six-figure sum. Every check asked "did the call fail?"; none asked "is the result right?" Reconcile amounts across systems, not just statuses.
2. At-least-once delivery + additive updates = a duplication engine
The event bus redelivers after a slow acknowledgement — that's the contract. The workflow updated existing receipts instead of duplicating — standard pattern. But the update appended lines instead of replacing them, so redelivered events doubled receipts in place. "Probe, then create-or-update" is only idempotent if the update is idempotent.
Tip
3. Write-back stamps are memory, not truth
A filled stamp doesn't prove the ERP receipt still exists; an empty one doesn't prove absence. A re-synced payout must come back with a brand-new record number — an old number means the run updated something that shouldn't exist. Stop. Only a cross-system check knows the truth.
4. The books changed, and no process looked at changes
Finance reviewed new records — reasonable, and completely blind to in-place damage that creates no new record and touches no dates. If an integration can update existing ledger records, something in your controls has to watch changes.
5. Dollars don't drive risk — concurrent volume does
The storm broke on several hundred batches in one afternoon; a later, larger-dollar wave ran perfectly clean. Same code. The difference was pacing. Know your load brackets before the backlog day.
6. Load-bearing knowledge must live in the artifact that drives the action
The deadline lived in habit. The delete-first rule lived in a chat ritual. The resync flag lived in a prose column only its author understood. All three failed exactly where they lived. Move deadlines into owned calendars, rules into checklists, guarantees into code.
7. Never assign a rule to someone who can't see the system it checks
Split safety rules by who can act: Salesforce-checkable rules to the Salesforce operator, ERP-checkable rules to finance. Most cross-system runbooks silently assume one person can see everything — and then a rule goes unchecked because its assignee literally can't log in to verify it.
Watch out
Green checkmarks measure whether machines completed their steps — not whether the books are right. The person who caught this did it with a spreadsheet. Build so she's backed up by code, not standing as the last line of defense.
Want the full story? Read the case study of the incident, or go deep with the architecture teardown in dgtl Perspectives.
Related tipReplace one manual handoff with a governed sync Related tipThe real cost of duct-taped MarTech (it isn't the software)Go deeper
Anatomy of a Salesforce–ERP sync
Event-driven triggers, an idempotency trap measured in dollars, two Salesforce gotchas that swallow errors — and the point-by-point rebuild that answered each failure.
Need help applying it? Revenue & Operations (MarketingOps + RevOps) →
More Bytes
Integration & RevOpsFormAssembly → Salesforce: the mapping mistake that silently drops leads
Your form submits, the connector says success, and the lead never lands. Here's the field-mapping trap that swallows records without an error.
Integration & RevOpsThe real cost of duct-taped MarTech (it isn't the software)
The line item is the subscriptions. The real cost is the senior people spending their week moving data by hand between tools that should talk.
Integration & RevOpsReplace one manual handoff with a governed sync
You don't fix a disconnected stack in one project. You fix it one handoff at a time — starting with the one your team does by hand every week.