Build a call of your own
Build a new call when you want to sync something no shipped call covers. Examples include a standalone custom object, or a Salesforce record that should become its own NetSuite transaction.
This page follows QuantumBit as it sends accepted Quotes to NetSuite as Estimates. The same steps work for an Opportunity as a Sales Order, or any other document with lines.
Check whether a shipped call already does it
If a shipped call already syncs your object, changing that call is simpler. Order and Product can be pointed at other NetSuite record types. See Book orders as Sales Orders.
The New call wizard warns you when you pick such an object. When that object can be re-pointed, a button such as Re-point Order Booking instead takes you to it. You can still build the new call. It then runs from a Flow, because the shipped sync card always runs the shipped call.
Get NetSuite ready
Every product on QuantumBit's quotes needs a NetSuite item. The call finds each line's item by the item's External ID. That External ID must be the product's 18-character Salesforce id.
- For products with no NetSuite item yet, run Product Sync. The items it creates carry the product's id.
- For items that already exist in NetSuite, set each item's External ID to its product's Salesforce id. A NetSuite CSV import that updates items can do this.
Matching items in step 7 of the Connection wizard isn't enough for these lines. The match saves the item's NetSuite id in Salesforce and leaves the item's External ID as it is. Product Sync doesn't change it either. A line whose item NetSuite can't find is dropped.
The account doesn't need to be in NetSuite yet. The run creates the customer if it has to. See A new customer is created for you.
Build the Quote to Estimate call
- Open Calls & Mappings and click + New call.
- In Call name, enter Quote to Estimate. The key preview below it reads
quote_to_estimate. - In Root Salesforce object, pick Quote. This is the record the call runs on.
- For the NetSuite target, pick Standard record, then Estimate under Transactions.
- Check the Entity field. It fills in with Account ID, the lookup that names the customer.
- Click Create. The wizard switches to the new call and opens Add object for the lines.
- Quote Line Item is already picked, with Quote as the parent. The wizard shows the lines will go on the Estimate. Name it Estimate Line and click Create.
If you close the line wizard, the Estimate object keeps an Add line object button until you add one. Without lines, every run fails in NetSuite.
Map the fields
- Click the Estimate object. Add rows such as Quote Number to
otherrefnum, Description tomemo, and Expiration Date toexpectedclosedate. - Click the Estimate Line object. Add Quantity to
quantity, Sales Price torate, and Line Description todescription. - Optional: set a Writeback field on each object to store the NetSuite id.
You don't map the customer or the item. They come from the Entity field and the Item field.
Publish it
Click Validate. It checks every row against the Estimate record in your NetSuite account. Then click Activate. The call is now at version 1, and the toolbar shows its call key.
Run the call
You can run it two ways.
- From the sync card. Add the NetSuite sync card to the Quote record page in App Builder. It finds the call by itself. Refresh the page once after you activate a new call.
- From a Flow. Use the Run NetSuite Call action with the call key and the Quote's record id. QuantumBit uses a record-triggered flow that runs when a Quote's status becomes Accepted.
Each run lands the Estimate and its lines, and shows on the Sync Runs tab. Running again updates the same Estimate. New quote lines are added, and nothing is duplicated.
Built a call on an object with a shipped sync, such as Order or Account? The shipped card runs the shipped call there. Use the Flow action, or set the card's Call Key property to your call's key in App Builder. Leave that property blank on every other page.
Name your call well
The call key is how a Flow finds your call, so it can't change once a Flow uses it. It's made from the call name: lowercase, with spaces and punctuation turned into underscores.
- Name the call for the Salesforce object and what it becomes, like Opportunity to Sales Order.
- You can't name a call after a shipped object, such as Order or Invoice.
- A second call with the same name gets a number on its key, such as
quote_to_estimate_2.
Delete a call you built
Pick the call and click Delete call…, then Yes, delete. The call, its objects and its rows are gone at once, and it can't be undone. Past runs stay in your sync history. Shipped calls can't be deleted.