Skip to content
Back to all work

Zoho Inventory Sync

Role
Built
Status
IN PROGRESS
Stack
Zoho Inventory API, MongoDB

The problem

How can internal dashboards get fresh inventory data from Zoho without pulling the full history every time and hitting API limits?

Inventory data lived only in Zoho, out of reach of internal dashboards, and Zoho’s standard plan allows 2,500 API calls a day.

The system

  • Incremental sync from Zoho Inventory to MongoDB with an independent checkpoint per resource, so one failure doesn't move another's sync point.
  • Recovery from failed runs and testing against API rate limits. Plus an inventory stock tab in the PMT.
  1. 01

    Zoho Inventory

  2. 02

    Modified-since detection

  3. 03

    Checkpoint per resource

  4. 04

    Rate-limit-aware fetch

  5. 05

    Failure recovery

  6. 06

    MongoDB, then the PMT stock tab

Engineering decisions

Incremental sync by modification date
Only records changed since the last run are pulled, which keeps API calls down.
A separate checkpoint for each resource
A failure in one resource can’t move another resource’s sync point, and a failed run picks up where it stopped.

Impact

A local copy of inventory data with fewer API calls.

Limitations

  • Paused while the source data in Zoho is cleaned up first; the sync continues after that.

AHA Smart Homes screens on this site are recreated with dummy data.

Want to talk through how I built this?

I'm happy to walk through the decisions, what failed and what I'd change.

Email me about this projectLinkedInRésumé

NextSupport Dashboard and Reports