> 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/ecommerce/square/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>Start with a focused date range</strong></td><td>Use the start date picker to limit your initial pull to the last 30–90 days. Square accounts with years of order history can be slow to load in full — start focused, then expand once your data flow is working correctly.</td></tr><tr><td><strong>Join Orders and Payments for revenue reconciliation</strong></td><td>Orders contain line item detail; Payments contain the actual transaction amounts and methods. Use the Join transformation on order_id to build a complete sales picture in one table rather than switching between two sheets.</td></tr><tr><td><strong>Use location_id as your primary grouping field</strong></td><td>Almost every Square entity includes location_id. Add it to your reports from day one so you can slice revenue, labor costs, and inventory by store without needing to restructure your data later.</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>Match refresh frequency to entity type</strong></td><td>Transactional entities like Orders, Payments, and Shifts change frequently — schedule these hourly or daily. Catalog entities like Items and Categories rarely change, so daily or weekly is plenty.</td></tr><tr><td><strong>Run labor and payroll data flows before pay periods close</strong></td><td>Shift and wage data is most useful when pulled before payroll is processed. Schedule Shifts and Team member wages data flows to run the day before your payroll cutoff.</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 separate data flows</strong></td><td>If you have years of order history, pulling Orders, Payments, and Refunds in a single flow can be slow. Put each entity in its own data flow with an appropriate start date to keep run times fast.</td></tr><tr><td><strong>Enable deleted objects only when you need them</strong></td><td>Enabling "Include deleted objects" increases the payload size for catalog entities. Only turn this on for historical audits — leave it off for standard reporting to keep your data clean and your runs faster.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
**Monetary values are in cents.** Every amount field in Square (total\_money, amount\_money, etc.) is returned in the smallest currency unit. Always divide by 100 to get dollar values in your reports — forgetting this will make your revenue figures look 100x larger than they are.
{% endhint %}

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

* Divide amount fields by 100 to convert cents to dollars
* Use a separate connection for each Square account if you run multiple businesses
* Join Shifts with Team member wages to calculate actual labor cost — don't rely on Shifts alone
* Verify your start date covers the period you need before running a large historical pull
  {% endcolumn %}

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

* Pull all entities in one data flow if your Square account has high transaction volume
* Assume the Order total equals the Payment amount — tips, partial payments, and split tenders can cause differences
* Use the Loyalties entity alone for customer analysis — join it with Customers to get identifiable profiles
* Leave "Include deleted objects" enabled by default if you only need active catalog data
  {% 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/ecommerce/square/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.
