# Best Practices

## Recommended setup

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Set a meaningful start date</strong></td><td>Use the date picker to set a start date that matches your reporting needs. For a 90-day rolling report, set the start date 90 days back. Pulling all-time data on the first run can be slow and may hit rate limits.</td></tr><tr><td><strong>Add multiple entities to one data flow</strong></td><td>Use a single data flow with Appointments, Clients, and Appointment types as separate sources. Then use a Join transformation to link them — for example, joining Appointments with Appointment types on the type name to enrich booking records with pricing and duration.</td></tr><tr><td><strong>Use Append for multi-account reporting</strong></td><td>If you manage more than one Acuity account, create a source for each account and use the Append transformation to combine them into a single dataset for unified reporting.</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 your booking volume</strong></td><td>High-volume businesses with dozens of daily appointments benefit from hourly or every-few-hours refreshes. Lower-volume operations can use daily syncs without missing anything meaningful.</td></tr><tr><td><strong>Run a successful manual sync first</strong></td><td>Before setting a schedule, complete a manual run and verify the data looks correct in your destination. Check that appointment statuses, dates, and client fields are populated as expected.</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>Filter by status in your destination</strong></td><td>Acuity returns all appointment statuses including canceled and no-shows. Filter these out in Google Sheets, BigQuery, or Looker Studio rather than at the source level so you keep the full history available for churn or cancellation analysis.</td></tr><tr><td><strong>Use Aggregate for summary dashboards</strong></td><td>If you're building a Looker Studio or Google Sheets dashboard, apply the Aggregate transformation in Coupler.io to pre-summarize bookings by week, calendar, or appointment type. This keeps your destination lean and dashboards fast.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Don't use a staff member's API credentials — only the main account owner has full access to all entities including all calendars and client records.
{% endhint %}

{% columns %}
{% column %}

#### Do

* Use the main account owner's User ID and API key
* Set a start date to limit initial data volume
* Join Appointments with Clients or Appointment types for richer analysis
* Keep canceled appointments in your dataset for cancellation rate reporting
  {% endcolumn %}

{% column %}

#### Don't

* Leave the start date unset and pull unlimited history on the first run
* Assume Forms data is embedded in Appointments — it's a separate entity
* Store your API key in a shared spreadsheet alongside the exported data
* Use the same data flow for multiple Acuity accounts — create separate sources instead
  {% endcolumn %}
  {% endcolumns %}
