You sync it at the object level with Celigo. The approved quote creates the sales order in NetSuite, mapped once, with an error queue that has an owner. No rekeying, no finance spreadsheet, one set of numbers for bookings and revenue.
What was broken
Sales closed in Salesforce. Finance billed in NetSuite. In between sat a person with a spreadsheet.
A rep won the deal, sent the approved quote to finance, and finance retyped it as a sales order. Every retype was a chance for the term, the currency, the billing schedule, or the discount to come out different on the finance side. So bookings said one number and revenue said another, and every forecast meeting opened with an argument about which system was lying.
The worst part was not the typing. It was that nobody owned the gap. When a deal did not show up in billing, it got found by a customer asking why the invoice was wrong.
What I built
At Intertrust I owned the quote-to-cash path end to end: Salesforce CPQ into NetSuite through Celigo.
What actually made it hold:
- One product and price master. CPQ could only quote items NetSuite could invoice. Fix this first or every mapping downstream is guesswork.
- The approved quote is the trigger, not the closed opportunity. Stage is a sales behavior. Approval is a commitment, and it carries the signed terms.
- Explicit field mapping, written down before anything got built: customer, terms, currency, start date, billing schedule, discount, tax treatment. If a field had no home on the other side, we decided that on purpose instead of discovering it in production.
- An error queue with a human name on it. Failed syncs went to a person with a due date, not into a log.
- Idempotent keys, so a retry never created a second sales order. Duplicate bookings are worse than no bookings.
That is the whole trick. The integration is the easy half. The agreement about what a booking is, and who fixes it when it breaks, is the half that makes the numbers match.
The number
+180% GTM data accuracy, and one source of truth for bookings and revenue.
What to do Monday
- Pull last month's closed-won deals and match them line by line against invoices. Count the mismatches. That count is your business case.
- Ask who retypes a quote into the billing system today, and how long it takes them per deal. Multiply by deal volume.
- Pick your trigger and write it down: approved quote, not closed stage.
- Write the field mapping doc before you open Celigo. One page, one row per field, a decision on every field with no counterpart.
- Put a name and a response time on the error queue. An integration without an owner is just a faster way to be wrong.
If you cannot finish step one because the two systems do not share a key, that is the actual project. Do that first.
Michael Thomas Zajac, Hermosa Beach. 20 years carrying quota and building the systems underneath it.