# Best Practices

Get the most out of your Facebook Ads data in Coupler.io by following these recommendations.

### Recommended setup and configuration

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Start with default metrics</strong></td><td>The default columns (Account name, Campaign name, Spend, Reach, Frequency, Impressions, Clicks, CPC, CPM, CTR) cover the most common reporting needs. Add more metrics only as needed.</td></tr><tr><td><strong>Use Reports and Insights for dashboards</strong></td><td>This is the most versatile report type. It gives you access to all performance metrics and breakdowns.</td></tr><tr><td><strong>Pick the right report type for the job</strong></td><td>Use "List of Campaigns" or "List of Ads" when you need structural data (statuses, budgets, objectives). Use "Reports and Insights" when you need performance numbers.</td></tr><tr><td><strong>Match your attribution settings</strong></td><td>Before running your first import, check what attribution window your team uses in Ads Manager and set the same in Coupler.io. This prevents data discrepancies from day one.</td></tr></tbody></table>

## Data refresh and scheduling tips

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Set your end date to yesterday</strong></td><td>Facebook's API often has incomplete data for today. Using yesterday as the end date ensures you always get complete numbers.</td></tr><tr><td><strong>Update date ranges on a schedule</strong></td><td>If you use fixed date ranges, remember to update them periodically so your report window stays current. Alternatively, use a short rolling window (e.g., the last 30 or 60 days) and rely on auto-refresh to keep data fresh.</td></tr><tr><td><strong>Schedule refreshes wisely</strong></td><td>If you have multiple data flows pulling from the same ad account, stagger their schedules by a few minutes to avoid hitting Facebook's API rate limits.</td></tr><tr><td><strong>Daily split for trend analysis</strong></td><td>Use "Split data by period: Daily" when you want to track trends over time. Use "Totals only" when you just need aggregate numbers for a fixed date range.</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>Limit breakdowns</strong></td><td>Each breakdown multiplies the number of rows in your report. Adding Age + Gender + Publisher platform to a large date range can result in thousands of rows. Only add breakdowns you actually need.</td></tr><tr><td><strong>Narrow your date range</strong></td><td>Pulling years of historical data in one go can be slow and may hit API limits. For initial backfills, consider pulling data in monthly chunks.</td></tr><tr><td><strong>Use filters to focus</strong></td><td>If you only need data from specific campaigns, use the Filters field (Graph API syntax) to limit what gets pulled. For example: <code>[{"field":"campaign.name","operator":"CONTAIN","value":"Brand"}]</code></td></tr><tr><td><strong>Choose fewer metrics first</strong></td><td>Start with core metrics and add others incrementally. Pulling every available metric at once increases processing time.</td></tr></tbody></table>

## Dashboard accuracy

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Handle Reach correctly</strong></td><td>Reach is a unique-users metric and cannot be summed. If you aggregate daily Reach rows in Looker Studio or Sheets, you'll double-count users. Display Reach per-row only (per day, per campaign), or use "Totals only" in Coupler.io for a single deduplicated value over a fixed date range.</td></tr><tr><td><strong>Recalculate ratio metrics in your dashboard</strong></td><td>Metrics like CTR, CPC, and CPM are ratios — summing them produces meaningless numbers. In Looker Studio, create calculated fields instead: CTR = Clicks / Impressions, CPC = Spend / Clicks, CPM = (Spend / Impressions) × 1,000. This gives you correct values at every aggregation level.</td></tr><tr><td><strong>Combine creatives with performance data</strong></td><td>The "List of Ads with Ad Creatives" entity gives you image URLs and ad text but no performance metrics. To build a creative performance report, create two sources — one Reports and Insights at the Ad level, one Ads with Ad Creatives — and use Coupler.io's data stitching (Join) to combine them on Ad Id.</td></tr></tbody></table>

## Common pitfalls to avoid

* **Don't mix attribution windows** — If your Coupler.io import uses a 7-day click window but you're comparing to Ads Manager with a 1-day click window, your numbers will never match. Always verify this first.
* **Don't combine incompatible breakdowns** — Some breakdown combinations are not supported by the Facebook API (e.g., demographic breakdowns with hourly breakdowns). These will cause import failures.
* **Don't ignore action breakdown inflation** — When you add action breakdowns, the sum of the parts can exceed the total. This is expected behavior from the Facebook API, not a bug.
* **Don't forget about account limits** — Facebook Ads is a [tenant-based source](https://docs.coupler.io/sources/category/ppc/facebook-ads/broken-reference) in Coupler.io. Each ad account you select counts toward your plan's account limit. Reuse credentials instead of adding duplicates.
