> 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/marketing/adjust/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>Match dimensions to your reporting hierarchy</strong></td><td>Adjust supports full campaign hierarchy: network → campaign → adgroup → creative. Only go as deep as you actually use — adding creative-level dimensions to a high-level report inflates row counts without adding useful signal.</td></tr><tr><td><strong>Use additional metrics for custom events</strong></td><td>If you've set up app-specific events in Adjust (like "level_complete" or "subscription_start"), add them in the Additional metrics field. These won't appear in the standard metric picker but are fully supported by the API.</td></tr><tr><td><strong>Separate cohort and non-cohort reports</strong></td><td>Cohort metrics measure a user group's behavior over time from their install date, while standard metrics reflect activity in the report period. Mixing them in one report often produces confusing results — create separate data flows for each use case.</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>Account for attribution windows</strong></td><td>Adjust attribution windows can be up to 7 days (or longer for view-through). Data for recent dates may still be incomplete. Include a few days of overlap in your start date to catch late-attributed installs on subsequent refreshes.</td></tr><tr><td><strong>Append historical data, don't re-pull everything</strong></td><td>Once data older than your attribution window is settled, it won't change. Use Coupler.io's Append transformation to add new date ranges on top of existing data rather than re-exporting your full history each run.</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 dimension combinations for large date ranges</strong></td><td>Adding 4–5 dimensions to a 90-day report across many networks can generate thousands of rows and slow down the API response. For long-range historical pulls, use fewer dimensions or split into multiple data flows by time period.</td></tr><tr><td><strong>Use country_code instead of country for joins</strong></td><td>If you're joining Adjust data with other sources (like ad spend from Facebook or Google), use `country_code` rather than `country` as the join key — standardized ISO codes are far more reliable than country name strings across platforms.</td></tr></tbody></table>

## Common pitfalls

{% hint style="danger" %}
Don't mix `revenue` and `all_revenue` in the same analysis without understanding the difference. `revenue` covers IAP only; `all_revenue` adds ad revenue on top. Using both in a single report without labeling them clearly leads to double-counting errors in dashboards.
{% endhint %}

{% columns %}
{% column %}

#### Do

* Select only the dimensions relevant to your analysis
* Use `network_cost_diff` to monitor discrepancies between Adjust and network reporting
* Create separate data flows for campaign-level and creative-level reporting
* Use `country_code` as a join key when combining with other data sources
  {% endcolumn %}

{% column %}

#### Don't

* Mix cohort and non-cohort metrics in the same report
* Pull full historical data on every refresh — use Append for incremental updates
* Forget that `paid_installs` excludes organic — use `installs` if you need the full picture
* Run multiple large Adjust data flows simultaneously — you may hit rate limits
  {% 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/marketing/adjust/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.
