How MYOB Contact Sync Down Works
Source: myob_controller.rb
- The MYOB accounts list filters out header accounts at two levels: the API query excludes them, and the code double-checks to remove any that slip through
- Each sync run has a hard maximum of 600 records — if more than 600 contacts have changed, the remainder are silently left for the next sync
- Only records updated more than 15 minutes ago are included in the sync, to avoid pulling contacts that are still being edited in MYOB
- There is a 30-minute cooldown between sync runs unless the "sync_without_limits" flag is set (used by support for troubleshooting)
- Individual customers and vendors can be flagged to skip sync, preventing them from being overwritten by MYOB data
- First sync downloads all contacts; subsequent syncs use the LastModified filter to pull only changes
- Individual-type contacts (people) are marked type "I"; company-type contacts are marked type "C"
- Phone numbers have the country code prefix stripped during import
- Vendors without a CompanyName are stored using "FirstName LastName" as the company name
- sync_other_contacts mode only creates NEW contact records — it never updates existing records, even if the MYOB data has changed
Support scenarios
- "Not all my MYOB contacts came through in the sync" → The sync has a 600-record cap per run. If more than 600 contacts changed, subsequent runs will pick up the rest. Also check the 30-minute cooldown — rapid re-syncs may be blocked.
- "A contact I just updated in MYOB isn't showing the changes" → Only records updated more than 15 minutes ago are synced, to avoid pulling mid-edit data. Wait 15 minutes and sync again.
- "Some contacts keep getting overwritten when I change them in Workshop" → Check if the contact is flagged to skip sync. If not, MYOB data will overwrite Workshop data on each sync. Flag the contact to prevent this.
- "Vendor name is showing as a person's name instead of business name" → If the vendor has no CompanyName in MYOB, Workshop uses "FirstName LastName" as the name. Update the CompanyName field in MYOB and re-sync.