The challenge
Three systems, three versions of the truth.
Orders came in through the website and through sales reps working deals in HubSpot, but fulfilment lived in SyteLine. Getting an order from one to the other meant copying it by hand, and every manual step was a chance for a wrong address, a missed line item or a deal that never turned into an order.
Small data problems made it worse. Postal codes stored as numbers quietly dropped their leading zeros, international addresses didn’t fit US-shaped fields, and the automation platform the workflows ran on was being retired, so the whole setup needed a new home.
The approach
How I tackled it.
-
Map the data
Documented every object that moves between the three systems, which system owns each field, and what should happen when they disagree.
-
Build event-driven syncs
Webhooks and scheduled jobs push orders, contacts and deals between systems, with validation before anything is written and retries when an API is down.
-
Clean up and future-proof
Migrated bad data in bulk with Python and pandas, then moved the workflows to a platform with proper logs, event history and a dashboard.
What I built
An integration layer the team can actually see into.
- Order sync into the ERP Website and CRM orders create or update sales orders in SyteLine automatically, tested against a sandbox before anything touches production.
- CRM kept current Contacts, companies and deals in HubSpot stay matched to ERP customer records.
- Data that survives the trip Postal codes, international addresses and other edge cases are normalized so nothing gets mangled in transit.
- Logs and alerts Every run is logged, failures are visible on a dashboard, and the team knows when something needs attention.
The results
What changed.
Orders move from website or sales rep to fulfilment without being typed twice, and the team trusts that the CRM and the ERP are describing the same customer.
- 3 systems kept in sync ERP, CRM and online store share one picture of every order and customer.
- No double data entry Orders are created automatically instead of copied by hand, saving the team about 10 hours a week.
- One source of truth Clear ownership rules for every field, so conflicts resolve the same way every time.
Tech stack
- Infor SyteLine
- HubSpot
- WooCommerce
- Python
- pandas
- Webhooks
- Pipedream
- Windmill
