Sync status fields
Every synced Salesforce object carries the same four fields. Together they record its NetSuite pairing. They're ordinary fields, so you can report on them, filter on them, and trigger flows from them.
The field quartet
| Field | Holds |
|---|---|
NetSuiteRecordId__c | The NetSuite internal id of the record's twin. Blank means it hasn't synced yet. Every batch selector filters on that. |
NetSuiteSyncStatus__c | The last sync outcome. Completed means it succeeded. |
NetSuiteSyncMessage__c | Detail on a warning or a failure reason, when there's something to say. |
NetSuiteSyncTimestamp__c | When the last sync touched it. |
Objects that carry them
Account, BillingAccount, Contact, Product2, Contract, Order, OrderItem, BillingScheduleGroup, Invoice, InvoiceLine, CreditMemo, Payment, and Refund all carry the quartet. A few exceptions:
- LegalEntity carries only
NetSuiteRecordId__c, the NetSuite subsidiary id. Reference-data sync stamps it, and every booking reads it. - OrderItem gets only the record id from bookings. Line-level status would add noise without information. Order Line Sync writes nothing back to it.
- Billing schedules and periods carry no writeback fields. NetSuite matches them by external id instead.
Using them in reports and flows
- Unsynced-backlog report: find posted invoices where
NetSuiteRecordId__cis blank. That count should trend to zero minutes after each billing run. - Deep links: the id field is what "Open in NetSuite" links resolve through. A formula field can build the same URLs for list views.
- Flow triggers: a flow on
NetSuiteSyncStatus__cchanging toCompletedis a clean "after it landed" hook for downstream automation. - Re-point protection: matching runs on these ids plus external ids derived from Salesforce ids. Never hand-edit
NetSuiteRecordId__c. A wrong value heals itself on the next sync, but deep links will mislead you until then. - A warned booking still reads Completed here. An order booking's sync run can finish Completed with warnings when a line has no matching NetSuite item. That warning lives on the run row, not on the Order. The Order's own
NetSuiteSyncStatus__creads plainCompletedeither way, so a flow watching for that value fires the same for a warned booking as for a clean one. If your automation needs to tell them apart, gate on the run's status too, or checkNetSuiteSyncMessage__c.