ORDERS
Web order to sales order
Every paid order becomes a Sage sales order with the right customer, terms, tax handling, freight, and deposit. Guest checkouts resolve to real Sage customers instead of piling up as junk accounts.
[ THE CORE · SAGE 100 ↔ SHOPIFY ]
Sage 100 predates ecommerce by a decade, and it shows. We connect it to Shopify anyway: transparently, field by field, with every sync verified against what the systems really send each other. This is the core of every Keyway Systems engagement; channel modules and the retainer build on it.
[ WHAT SYNCS ]
ORDERS
Every paid order becomes a Sage sales order with the right customer, terms, tax handling, freight, and deposit. Guest checkouts resolve to real Sage customers instead of piling up as junk accounts.
INVENTORY
Available-to-sell from the warehouses you actually ship from, with rules for what happens at zero: hide, backorder, or take the order and say so honestly.
PRICING
List prices always. Sage's customer-specific cascade when you want the store to honor it. Either way, the web price and the invoice price agree, which is the entire point.
SHIPMENTS
Sage invoices and shipments flow back as Shopify fulfillments, so customers get tracking from the store they bought from instead of a mystery email.
PAYMENTS
Shopify payouts against Sage deposits through a clearing account your accountant will actually accept. Card fees, refunds, and partial captures accounted for, not averaged away.
CATALOG
New Sage items can draft themselves into the store; discontinued ones retire. The item master stays the source of truth without publishing its internal mess to customers.
[ IN OPERATION ]
Recreated screens from a live Sage 100 ↔ Shopify installation, with identifying data replaced. This is what your team would look at.
Queue depth, job health, and the last word from every import, errors included, shown plainly instead of buried in a log file.
QUEUE: NEW
0
view →
QUEUE: ERRORED
0
view →
QUEUE: SENT (LAST 24H)
7
view →
Job status
| JOB | LAST RUN | RESULT | RECORDS | MESSAGE |
|---|---|---|---|---|
| customer_addresses | 4 hours ago2026-07-22 12:40:02 | success | 0 | 0 processed, 0 skipped, 0 pages, 1494ms |
| customer_tax_exemptions | 14 hours ago2026-07-22 02:10:02 | error | 0 | FAILED on page 1 after 0 records (ErpConnectionException: eLink timed out) |
| customers | 3 minutes ago2026-07-22 17:00:03 | success | 32 | 32 processed, 0 skipped, 1 pages, 2181ms |
| ebay_inventory_push | 1 week ago2026-07-15 21:42:52 | dry_run | 0 | DRY RUN: would_push=452 unchanged=0 unmapped=5 |
ForgeSync is an embedded app. Your team works in the Shopify admin they already know; no second login, no second tool to learn.
Sales channels ›
🏪 Online Store
Apps ›
⚙ ForgeSync
Queue
↳ Sync Log
Jobs
Bulk Actions
⚙️ Settings
Sync Log
Job: All| WHEN | JOB | ACTION | RECORDS | MESSAGE |
|---|---|---|---|---|
| 15 seconds ago2026-07-22 17:05:01 | export_drain | export | 0 | no eligible queue rows |
| 5 minutes ago2026-07-22 17:00:03 | customers | import | 32 | 32 processed, 0 skipped, 1 pages, 2181ms |
| 5 minutes ago2026-07-22 17:00:03 | item_warehouses | import | 43 | 43 processed, 0 skipped, 1 pages, 2296ms |
| 5 minutes ago2026-07-22 17:00:01 | push_inventory | push | 0 | pushed=0 skipped=0 errors=0 elapsed=134ms |
| 10 minutes ago2026-07-22 16:55:00 | export_drain | export | 0 | no eligible queue rows |
| 15 minutes ago2026-07-22 16:50:03 | item_warehouses | import | 43 | 43 processed, 0 skipped, 1 pages, 2378ms |
Customers, items, invoices, sales orders, prices: each import runs on its own cadence, reports what it did, and can be run on demand. Shipment tracking pushes back to Shopify automatically, and Shopify emails the customer.
Automatic shipment fulfillment
When ON, shipped web orders push tracking to Shopify every 15 min → Shopify emails the customer.
| JOB | LAST RUN | RESULT | RECORDS | ACTION |
|---|---|---|---|---|
| Import warehousesforgesync:import warehouses | 15 hours ago2026-07-22 02:00:02 | success | 0 | Run now |
| Import shipping methodsforgesync:import shipping_methods | 15 hours ago2026-07-22 02:05:02 | success | 0 | Run now |
| Import customersforgesync:import customers | 5 minutes ago2026-07-22 17:00:03 | success | 32 | Run now |
| Import item warehousesforgesync:import item_warehouses | 5 minutes ago2026-07-22 17:00:03 | success | 43 | Run now |
| Import invoicesforgesync:import invoices | 45 minutes ago2026-07-22 16:20:02 | success | 0 | Run now |
| Import sales ordersforgesync:import sales_orders | 40 minutes ago2026-07-22 16:25:02 | success | 8 | Run now |
| Push prices to Shopifyforgesync:push prices | 4 hours ago2026-07-22 12:30:01 | success | 0 | Run now |
Add an item in Sage and it shows up as a Shopify draft, announced in Slack, waiting for images and copy. Nothing goes live without a human look.
New Sage items staged for the web
BRK26501-LED-15D: DRAFT stub created (needs review: images, copy, vendor)CFT118200: DRAFT stub created (needs review: images, copy, vendor)CFT118206: DRAFT stub created (needs review: images, copy, vendor)CFT118240: DRAFT stub created (needs review: images, copy, vendor)CFT129051: DRAFT stub created (needs review: images, copy, vendor)GSK-77H 45W: DRAFT stub created (needs review: images, copy, vendor)IDX-2210: DRAFT stub created (needs review: images, copy, vendor)RVT070113: DRAFT stub created (needs review: images, copy, vendor)RVT145209: DRAFT stub created (needs review: images, copy, vendor)RVT313340: DRAFT stub created (needs review: images, copy, vendor)[ WHY US ]
Sage 100 integration fails in the details, and the details are not in the brochure. A few we handle because we've met them in production:
Behind that sits a library of over two million captured ERP payloads we use to test integrations against reality instead of documentation.
[ AROUND THE CORE ]
Guided selling
Guided selectors that turn spec-sheet catalogs into a few plain questions. Fourteen shipped on a single storefront, embedded right on product pages.
B2B ordering
Paste part numbers and quantities, get a cart. Admin-seeded order lists let a rep hand a customer a ready-to-buy list instead of a PDF price sheet.
Quote flows
Hazmat, freight-only, and bulk items route to a quote request instead of a broken checkout, landing in the sales queue with everything needed to answer it.
Want the whole story with the numbers attached? Read thereplatform case study: 10,500+ SKUs, 52,000+ redirects, $45,000 a year of vendor cost removed.
[ QUESTIONS ]
No. We build against the APIs available on every Shopify plan, and since 2026 Shopify includes native B2B features on all plans. Where a plan lacks a feature (checkout customization on lower tiers, for example), we design around it honestly instead of pretending.
Availability can reflect all the warehouses you actually ship from today; this is one of the places off-the-shelf connectors quietly fail, because Sage 100's standard layer only exposes the default warehouse unless you go deeper, and we do. Mapping separate warehouses to separate Shopify locations is committed roadmap, stated plainly, and worth a conversation about your exact setup.
List and price-level pricing from Sage flows to the store automatically. The deeper customer-specific cascade (customer price records, quantity breaks, per-line rules) varies so much between Sage shops that we scope it per engagement: shown to logged-in accounts, deliberately left offline, or somewhere between. We help you pick a strategy on purpose instead of pretending one size fits.
The switch itself is a configuration flip with a tested rollback path. Before it, the new integration runs in parallel against live data while the old path keeps serving, so cutover day is a decision, not an event.
Sage 100 enforces field limits and rules that reject whole orders (a comment one character too long is enough). The integration surfaces every rejection with the exact reason, retries what is retryable, and alerts a human for the rest. Nothing disappears silently.
Bring your Sage version, your Shopify plan (or plans to get one), and the thing that hurts most. We'll tell you what's involved and what it costs to find out properly.
Book a discovery call