[ THE CORE · SAGE 100 ↔ SHOPIFY ]

Sage 100 and Shopify, wired end to end

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 ]

The whole loop, not just the order feed

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.

INVENTORY

Quantities by warehouse

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

Prices that match the invoice

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

Tracking back to the buyer

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

Payout reconciliation

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

Items and content

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 ]

Not a mockup. The connector, running.

Recreated screens from a live Sage 100 ↔ Shopify installation, with identifying data replaced. This is what your team would look at.

One screen tells you the state of the sync

Queue depth, job health, and the last word from every import, errors included, shown plainly instead of buried in a log file.

ForgeSync AdminSAGE: LIVEDashboardQueueSync LogJobsBulk Actionsacme-fab.myshopify.com

QUEUE: NEW

0

view →

QUEUE: ERRORED

0

view →

QUEUE: SENT (LAST 24H)

7

view →

Job status

JOBLAST RUNRESULTRECORDSMESSAGE
customer_addresses4 hours ago2026-07-22 12:40:02success00 processed, 0 skipped, 0 pages, 1494ms
customer_tax_exemptions14 hours ago2026-07-22 02:10:02error0FAILED on page 1 after 0 records (ErpConnectionException: eLink timed out)
customers3 minutes ago2026-07-22 17:00:03success3232 processed, 0 skipped, 1 pages, 2181ms
ebay_inventory_push1 week ago2026-07-15 21:42:52dry_run0DRY RUN: would_push=452 unchanged=0 unmapped=5

It lives inside Shopify admin

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
WHENJOBACTIONRECORDSMESSAGE
15 seconds ago2026-07-22 17:05:01export_drainexport0no eligible queue rows
5 minutes ago2026-07-22 17:00:03customersimport3232 processed, 0 skipped, 1 pages, 2181ms
5 minutes ago2026-07-22 17:00:03item_warehousesimport4343 processed, 0 skipped, 1 pages, 2296ms
5 minutes ago2026-07-22 17:00:01push_inventorypush0pushed=0 skipped=0 errors=0 elapsed=134ms
10 minutes ago2026-07-22 16:55:00export_drainexport0no eligible queue rows
15 minutes ago2026-07-22 16:50:03item_warehousesimport4343 processed, 0 skipped, 1 pages, 2378ms

Every job on a schedule, with receipts

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.

ONTurn OFF
JOBLAST RUNRESULTRECORDSACTION
Import warehousesforgesync:import warehouses15 hours ago2026-07-22 02:00:02success0Run now
Import shipping methodsforgesync:import shipping_methods15 hours ago2026-07-22 02:05:02success0Run now
Import customersforgesync:import customers5 minutes ago2026-07-22 17:00:03success32Run now
Import item warehousesforgesync:import item_warehouses5 minutes ago2026-07-22 17:00:03success43Run now
Import invoicesforgesync:import invoices45 minutes ago2026-07-22 16:20:02success0Run now
Import sales ordersforgesync:import sales_orders40 minutes ago2026-07-22 16:25:02success8Run now
Push prices to Shopifyforgesync:push prices4 hours ago2026-07-22 12:30:01success0Run now

New Sage items stage themselves for the web

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.

ForgeSync AlertsAPP1:45 PM

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)
⚙️ ForgeSync staging

[ WHY US ]

We know where the bodies are buried

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:

  • FIELD LIMITS.A sales order comment over 30 characters doesn't get truncated. Sage rejects the entire order. Every field we write is clamped to what Sage will actually accept.
  • WAREHOUSE BLINDNESS.The stock web services layer serves the default warehouse only and silently ignores filters. Multi-warehouse truth takes deeper access, which is exactly what we build.
  • TAX RECALC.Sage recalculates tax at invoicing, not at order import. If the integration doesn't plan for that, your web totals and your invoices drift apart a penny at a time.
  • SILENT FAILURE.The worst integration bug is the one nobody notices for a month. Ours ship with watchdogs, reconciliation reports, and Slack alerts that say what broke in plain language, with routine noise kept out of the channel.

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 ]

The storefront machinery that ships with it

Guided selling

Product-finder wizards

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

Quick order pads

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

RFQ and quote requests

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 ]

Asked in every discovery call

+Do we need Shopify Plus?

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.

+Can it handle multiple warehouses?

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.

+What about our customer-specific pricing?

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.

+How disruptive is the cutover?

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.

+What happens when Sage rejects an order?

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.

Running Sage 100 and ready to sell like it's this decade?

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