> For the complete documentation index, see [llms.txt](https://docs.coupler.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.coupler.io/sources/category/finance-and-accounting/cin7/best-practices.md).

# Best Practices

## Recommended setup

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Separate Sales from Sale lists</strong></td><td>Use Sales for revenue and margin reporting, and Sale lists for product-level order analysis. Mixing them up leads to double-counting or mismatched totals.</td></tr><tr><td><strong>Join entities on shared IDs</strong></td><td>Most Cin7 entities share common identifiers (product ID, customer ID, supplier ID). Use Coupler.io's Join transformation to combine Sales + Products or Customers + Sale lists instead of exporting everything separately and stitching it in a spreadsheet.</td></tr><tr><td><strong>Use Append for multi-account setups</strong></td><td>If your business runs multiple Cin7 accounts (e.g., by region or brand), add each as a separate source block and use the Append transformation to consolidate all records into one destination.</td></tr><tr><td><strong>Start with a focused entity set</strong></td><td>Don't pull all 20 entities on day one. Start with the 3-4 most business-critical ones (typically Sales, Products, Product availabilities, and Customers), validate the data, then expand.</td></tr></tbody></table>

## Data refresh and scheduling

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Sync Product availabilities frequently</strong></td><td>Stock levels change throughout the day. If you rely on availability data for decisions, schedule this entity to refresh every hour or every few hours rather than once daily.</td></tr><tr><td><strong>Store historical snapshots for inventory</strong></td><td>The Cin7 API returns current stock levels, not historical ones. If you need trend data, configure Coupler.io to append new runs rather than overwrite, so each sync adds a dated row to your history.</td></tr><tr><td><strong>Sync CRM entities less often</strong></td><td>Leads, Deals, and Opportunities change slowly. A daily or twice-daily refresh is usually enough and keeps you well within Cin7's API rate limits.</td></tr></tbody></table>

## Performance optimization

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Split high-volume entities into their own data flows</strong></td><td>Sales and Purchase transaction tables can get large. Running them as standalone data flows prevents timeouts and makes it easier to debug issues independently of your other entities.</td></tr><tr><td><strong>Send large datasets to BigQuery, not Sheets</strong></td><td>If you're pulling years of sales or purchase history, Google Sheets will hit row limits quickly. Route high-volume Cin7 entities to BigQuery or another warehouse destination instead.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Don't use Purchase lists and Purchases interchangeably. Purchase lists are line-item records; Purchases are transaction summaries. Aggregating the wrong one will give you inflated or incomplete cost figures.
{% endhint %}

{% columns %}
{% column %}
**Do**

* Validate totals against Cin7's own reports after the first run
* Use the Join transformation to enrich Sales data with product and customer details
* Check that your API user role has access to every module you're syncing
* Store dated inventory snapshots using append mode
  {% endcolumn %}

{% column %}
**Don't**

* Pull all entities at once without checking which ones your Cin7 plan supports
* Rely on a single daily sync for inventory data if stock accuracy is critical
* Overwrite historical sales data — use append mode to preserve transaction history
* Assume CRM entities will have data if you haven't enabled Cin7's CRM module
  {% endcolumn %}
  {% endcolumns %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.coupler.io/sources/category/finance-and-accounting/cin7/best-practices.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
