Customer and Item Sync's Revealed!

Customer and Item Sync's Revealed!

SuitePOS is a very high performing POS App (running natively on an Apple device) that is well suited for retail environments with large transaction volumes. One of the cornerstones of speed is the development of sophisticated caching mechanisms. This means the App, from a transactional perspective, is a. not dependent on the internet and b. performs fast.  

In addition, synchronization also allows retailers to control all terminal settings and in fact, the entire retail environment (customers and products) from one system of record versus having to replicate data across stores and/or terminals as is common with a lot of POS systems. This is a huge time saver for multi-location retailers.

When do syncs occur?

Synchronization takes place: 
  • During the Registration of the device (or on a new install of the App)
  • After each POS user login (optionally)
  • By a forced sync from the POS Settings record (optionally)
  • Manually using the SuitePOS Settings screen
  • After a "forced quit" of the App
  • At the very least, once a day (automatic)

NetSuite POS Settings (Associated with Syncs):

Salesforce POS Settings (Associated with Syncs)

SuitePOS Settings Screen

What are Sync's?

There are two types of synchronization. Full Sync, which brings in everything whether it has changed or not and Diff Sync, which brings in only those records that have changed since the last sync.
A Sync also invokes the following:
  • Any Re-Authorization of a payment gateway (eg. Stripe, Square)
  • Processing of transactions that have hit the Failed Queues
  • Checking of your SuitePOS Entitlements
Syncs do not sync transactional information. This is done in real-time (asynchronously) as the sales are processed.

How long do syncs take?

The platform Settings for the device are synchronized quickly. Customers are synchronized at about 1000 Customers every 10-20 seconds. Products are synchronized at about 1000 products every 30-60 seconds (or more) depending on how many item relationships (eg. quantity price breaks) there are. 

During a syncs a modal is displayed that indicates what is being synchronized and the progress. 
Note: These times can vary significantly depending on the total number of customers or products, the load of the platform (at the time of the sync) and whether your instance (of the platform) is running on a shared or dedicated server.

SuitePOS Sync Modal:

SuitePOS Sync Progress Modal

Syncs in NetSuite are controlled by whatever is defined in the Customer (and Item) Active Saved Search. These is set up during implementation. The retailer can modify these Saved Searches (criteria ONLY) to bring in as many (or as few) records as needed. 
NEVER, create an item filter that filters by Restrict to Location/Terminal. This is handled by the sync itself and will serve no purpose.

Error Handling

Platform associated sync errors can and do occur (albeit not very often). They can occur because of internet issues, platform issues or setup issues.  If errors happen they are reported on screen giving options to Retry or Skip the Sync. If the sync is skipped, the last known is used (unless it is the first sync (or a full sync)). This allows you to get up and running quickly should issues arise.

Skipping Full Syncs

On the SuitePOS Registration screen there is an option to Skip Full Sync. This is useful if the Registered User (or Password) has changed. Skipping the full sync will use all last known information and get you quickly up and running. 

SuitePOS - Skipping Full Syncs:

Optimizing Syncs

Syncs performance issues occur more on the NetSuite platform than on Salesforce. Syncs can be optimized in several ways: 
  • Reducing the number of customer records
    • Add criteria to the Active Customer Saved Search (NetSuite Only). eg. Customers you have sold to in the last year.
    • Activate On Demand Customer Search (NetSuite Only). This should only be used if you have high customer counts (100k or more) and use customer records heavily. 
  • Reduce the number of item (or product) records
    • Item counts should not exceed 100K (and anything over 50k may prove problematic ) including any Price Level or Quantity Price Break combos.  
    • Use the "Available for POS" flag to designate items that are relevant to SuitePOS.
    • Use Restrict by Location and Terminal on the Item/Product record. This is useful for customers that have thousands of items but sell different items in different stores; or operate stores within stores.
    • Reduce the number of Price Levels (if Quantity Pricing is enabled.)
    • Activate "Optimize Diff Syncs" (NetSuite Only). This should not be used unless you have external systems that are updating items records with fields that are not being used by SuitePOS. eg. Item Name, Price.  If you have custom Price Levels ,whereby the pricing calculations are manually entered or updated, then Optimize Diff Syncs will not work well for these Price Levels.
  • In the platform POS Settings by unchecking "Attempt Sync on Every Login"

On-Demand Customer or Item Syncs (NetSuite Only)

If sync performance becomes insufferable, then On-Demand Customers (or Items) should be considered. When enabled, a limited number of items are customers are stored locally and if either is required; then it is pulled in dynamically and stored locally. The trade off is the initial retrieval. 

Scheduling Customer Merges and Item/Product Updates

To avoid issues relating to referential integrity (customers or products that exist in SuitePOS but not in the platform) and/or long syncs, large scale customer merges/updates and massive item/product structural changes to be planned and scheduled (or avoided).

Once planned, you will need to either manually perform a full sync on each terminal or force a full sync the next time the terminal is synchronized on the platform POS Settings record. Be careful not to exceed your MAXIMUM Concurrent Requests.  Full syncs need to be PLANNED.