Import guide

Import Cin7 Omni contacts, sales orders and products into monday.com

Cin7 Omni holds the part of a wholesale business monday.com does not: the customer list, the orders and what is in them, and the product catalogue behind both. Keeping a board in step with it by hand means exporting the same lists again every time a price or a stage changes.

Boardfeed reads one of those three collections on a schedule and writes it into a monday.com board, keyed on the Cin7 record id so a change updates the item instead of adding another. The credential is created by you, inside your own Cin7 account, and takes a minute: Settings → Integrations → API, where Cin7 gives you an API username and an API key to use together (help.omni.cin7.com, read 2026-09-19).

Last checked : the three collections the connector reads, the page of 100 and the 5,000-page stop it adds up to (500,000 records), the daily call cap, the Basic credential and the fields one row holds, read off the connector and the Cin7 pages it cites

Doing it by hand, every time

  1. Export contacts, orders or products from Cin7 as a CSV.
  2. Upload it to the board and map the columns again, every time.
  3. Work out which rows are new since the last export, or accept a second copy of everything.
  4. Repeat whenever someone asks why a stage on the board is a week old.

The scheduled route

  1. Create an API connection in Cin7: Settings → Integrations → API. Cin7 gives you an API username and an API key — both are needed, and Boardfeed sends them together as HTTP Basic authentication to api.cin7.com (api.cin7.com/api, read 2026-09-19). Treat the key like a password.
  2. Choose the collection: contacts, sales orders or products. One import reads one of them, so a board that wants orders and their customers is two imports.
  3. Map the fields to board columns and key the upsert on the Cin7 id, which is stable where a name or an e-mail address is not.
  4. Pick the schedule and read the value check before saving. A remote source is checked on the rows it previewed and on every row as the run writes it, and the screen says so rather than implying the whole collection was read.
  5. Every run pages through the collection 100 records at a time and stops when a page comes back short — Cin7 answers a list with no total and no cursor, so that is the signal the list has ended. Whatever the pages say, the walk stops at 5,000 pages rather than importing part of a longer collection — 500,000 records, at 100 a page.
  6. Cin7 also caps the API itself, and that cap is the one to plan around: 3 calls a second, 60 a minute and **5,000 calls a day** per account (api.cin7.com/api, read 2026-09-19). At 100 records a call, one day of calls is 500,000 records — the same number as the page stop above. So a first import of a collection larger than 500,000 records cannot be read in one run *or* in one day: split it with the REST API source and a `where` filter, and space the runs out rather than scheduling a second full read straight after the first.

Field mapping notes for Cin7

This is the part that decides whether an import works on the first try. Everything below is handled in the mapping step, before the first run.

  • One row is one record, and the fields are Cin7’s own: a contact carries id, createdDate, modifiedDate, firstName, lastName, company, email, phone and type; a sales order carries id, reference, createdDate, modifiedDate, stage, status, total, currencyCode, memberEmail and company; a product carries id, name, styleCode, status, createdDate and modifiedDate.
  • A sales order’s line items arrive as **how many lines the order has**, not as the lines themselves — one row stays one order. The lines are their own records in Cin7 if you need them: read them through the REST API source, or keep the count on the order and the detail in Cin7.
  • Anything else nested in a record — an address object, a list of options — arrives as JSON text, so a field this connector does not model loses its shape but never its data. Map those to a long-text column.
  • Money arrives exactly as Cin7 sends it, in the order’s own currency: total is a number and currencyCode names the currency beside it. There is no conversion and no minor-unit scaling in the mapping, so a multi-currency account should keep currencyCode on the board next to the amount.
  • Timestamps arrive as strings, in the form Cin7 writes them (createdDate, modifiedDate), and map to a date column as they come.

Cin7 import questions

Do I need a Cin7 app or an OAuth review for this?

No. The API connection is created by you inside your own Cin7 account (Settings → Integrations → API) and gives you a username and a key, which Boardfeed sends as HTTP Basic authentication. There is nothing to submit for approval, and no redirect URL to register.

Which Cin7 collections can Boardfeed import?

Contacts, sales orders and products. Each is a fixed choice rather than a list read from your account: one import reads one of the three, and a board that wants two is two imports. Branches and stock are not read today — a stock list with no natural key of its own is a different job, and it is not in this connector.

Does Boardfeed write anything back to Cin7?

No. The connector issues GET requests and nothing else: it reads a collection, page by page. Your API key is used for those reads only, and it is encrypted at rest (AES-256-GCM) and never written to a log or returned to the browser.

How much of a collection does one run import?

As much as one run reads: 100 records a page, stopping when a page comes back short, and at 5,000 pages rather than importing part of a longer collection — 500,000 records. Cin7’s own limit bites at the same number from the other side: 5,000 API calls a day is 500,000 records at 100 a call, so a collection larger than that is also more than a day of calls. The stop is not silent — the run ends as failed and its record says how many rows it had already written, and those rows stay on the board, so re-run it in update mode once the source is narrower. For anything larger, point the REST API source at Cin7 with a `where` filter of its own (for example a modified-date window) and the same credential, and run the slices on separate days.

Other sources