ml-connector
Sage 50Marketo

Sage 50 and Marketo integration

Sage 50 is your source of truth for customer and vendor relationships in accounting. Marketo runs your B2B marketing and lead management. Connecting them keeps your sales and marketing teams working with current customer data without manual re-entry. New customers added to Sage 50 appear in Marketo as leads or companies, and account updates flow automatically so campaigns target the right organizations and contacts.

How Sage 50 works

Sage 50 exists only as a desktop application installed on Windows with direct access to local company data files. It exposes customers, vendors, contacts, employees, purchase orders, sales orders, invoices, and GL accounts through a local .NET SDK (US edition) or COM/ActiveX Sage Data Objects (UK edition). There is no cloud REST API or remote integration surface. Integration requires a Windows process with exclusive access to Sage 50 (no concurrent user login) and must poll by querying modified records via LastModifiedDate or TransactionDate, with a recommended minimum poll interval of 5 to 15 minutes for near-real-time sync.

How Marketo works

Marketo is a cloud-hosted B2B marketing automation platform accessed over HTTPS at a unique subdomain (munchkin-id).mktorest.com. It authenticates via OAuth2 Client Credentials, exchanging a Client ID and Client Secret for a Bearer token with 3600-second expiry. Marketo exposes leads, companies, opportunities, sales persons, named accounts, custom objects, and activities through REST JSON API, with a 300-record batch limit per request. Marketo does not push inbound events, so integrations must poll using the Leads API with filterType=updatedAt or the Bulk Activity Extract API.

What moves between them

Customer and vendor records flow from Sage 50 into Marketo as leads and companies on a polling schedule. Lead attributes include contact name, email, phone, and address from Sage 50 customers or vendors; company attributes map to Sage 50 account hierarchies and credit limits. Opportunities can be manually created in Marketo and linked to Sage 50 customers if needed, but Sage 50 has no opportunity concept so the flow is primarily one-way. ml-connector can also back-sync enriched lead scores or custom fields from Marketo to Sage 50 user-defined fields if the SDK supports write access, though this is optional and depends on your Sage 50 edition.

How ml-connector handles it

ml-connector runs as a Windows service or scheduled task with exclusive access to the local Sage 50 installation. It authenticates to Sage 50 using Windows credentials, ApplicationID, and the company data path, then queries the SDK for customers and vendors modified since the last sync. Each Sage 50 customer maps to a Marketo lead and company record; contacts are extracted from the vendor/customer objects and added as Marketo lead email and phone fields. ml-connector caches the Marketo Bearer token and refreshes it when approaching expiry. Before each sync, it validates that Sage 50 is not locked by an interactive user session, waits if necessary, then proceeds. Marketo batch upserts are submitted in chunks of 300 records to respect API limits. All records carry timestamps and sync state so failed upserts can be retried without data loss.

A real-world example

A mid-market B2B software reseller runs Sage 50 on Windows to manage customer contracts, renewals, and billing. The marketing team uses Marketo to nurture leads and run customer webinars. Before the sync, sales would export a customer list from Sage 50 and manually upload it to Marketo, losing track of which leads matched which invoiced customers. With Sage 50 and Marketo connected, each customer added to Sage 50 immediately appears in Marketo as a lead and company, with company size and location already populated. Marketing can now segment campaigns by customer status (active vs at-risk) and link webinar attendance to actual contract renewal opportunities.

What you can do

  • Sync Sage 50 customers and vendors into Marketo as leads and companies on a polling schedule.
  • Map Sage 50 customer contact names, emails, phone numbers, and addresses to Marketo lead fields.
  • Create or update Marketo company records from Sage 50 customer hierarchies and credit-limit data.
  • Authenticate to the local Sage 50 SDK with Windows credentials and exclusive-access locking to avoid conflicts.
  • Handle Marketo OAuth2 token refresh and batch-load leads in 300-record chunks to respect API rate limits.

Questions

How does ml-connector access Sage 50 if there is no cloud API?
ml-connector runs on a Windows machine where Sage 50 is installed, accessing the local SDK directly using Windows credentials and the company data path. It handles the exclusive-access constraint by checking if a user is logged in interactively and waiting or deferring the sync if needed. This is why the integration requires a dedicated Windows process rather than a cloud-based connector.
What records move between Sage 50 and Marketo?
Customer and vendor records flow from Sage 50 to Marketo as leads and companies. Contacts, names, email, phone, and address data populate Marketo lead fields. Company records capture Sage 50 customer hierarchies and credit limits. Opportunities and activities stay in Marketo; Sage 50 has no sales pipeline concept, so the flow is primarily one-way, though enriched Marketo lead scores can optionally flow back to Sage 50 user-defined fields.
How often does the sync run and what happens if Sage 50 is busy?
ml-connector polls on a schedule you set, typically every 5 to 15 minutes for near-real-time sync or hourly for lighter load. If Sage 50 is locked by an interactive user session, ml-connector defers the sync and retries at the next scheduled interval. This avoids conflicts and ensures data integrity on the Windows machine.

Related integrations

Connect Sage 50 and Marketo

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started