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.
- 01
Zoho Inventory
- 02
Modified-since detection
- 03
Checkpoint per resource
- 04
Rate-limit-aware fetch
- 05
Failure recovery
- 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.