> 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/destinations/categories/dashboards/power_bi.md).

# Power BI

Send data from marketing, CRM, and analytics tools to Power BI without custom connectors using Coupler.io's integration URL.

Power BI is Microsoft's business intelligence platform for building interactive dashboards and reports. It connects to data from dozens of sources, but pulling from marketing, project management, or analytics tools often requires custom connectors or manual exports — that's where Coupler.io comes in.

With Coupler.io as the bridge, you can send data from any supported source directly into Power BI using a simple integration URL, no custom connector development needed.

## Why use Power BI as a Coupler.io destination?

* **Any source, one destination** — send data from Google Analytics, Facebook Ads, HubSpot, Airtable, ClickUp, and 60+ other sources into a single Power BI report
* **Automatic refresh** — schedule Coupler.io to run on a recurring basis, then schedule Power BI to refresh after each run, keeping dashboards current without manual work
* **No coding required** — the integration is URL-based; you paste one link into Power BI Desktop and your data appears
* **Pre-built templates** — Coupler.io offers Power BI Template Apps for popular use cases so you can start with a ready-made dashboard

## Prerequisites

* Power BI Desktop installed, or access to Power BI Online

## Quick start

{% hint style="success" %}
If you're starting from a template, use the [Power BI Template App setup guide](#power-bi-template-app-setup-guide) instead. The steps below cover manual data flow setup.
{% endhint %}

## How to connect

{% stepper %}
{% step %}
**Create a data flow and add your source.** In Coupler.io, create a new data flow and connect the source you want to pull data from — for example, Facebook Ads, GA4, or Airtable. Configure the entity and any filters or date ranges you need.
{% endstep %}

{% step %}
**Select Power BI as your destination.** In the Destination step of your data flow, choose **Power BI** from the list of available destinations.
{% endstep %}

{% step %}
**Copy your integration URL.** Coupler.io will generate a unique integration URL for this data flow. Copy it — you'll paste it into Power BI in the next step. The URL won't return data until you run the flow at least once, so come back to this after completing the remaining steps.
{% endstep %}

{% step %}
**Choose your write mode.**

* **Replace** — overwrites all data on each run. Best for dashboards where you always want the latest full dataset.
* **Append** — adds new rows below existing data on each run. Useful for building a historical log over time.
  {% endstep %}

{% step %}
**Save and run your data flow.** Click **Save & Run**. Wait for the run to complete successfully before moving to Power BI — the integration URL only becomes active after a successful run.
{% endstep %}

{% step %}
**Connect the URL in Power BI Desktop.** Open Power BI Desktop and go to **Get Data → Web**. Paste your Coupler.io integration URL and click **OK**.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
After building your report in Power BI Desktop, you can publish it to Power BI Online and configure a scheduled refresh there. Make sure your Power BI refresh time is set *after* your Coupler.io run is expected to finish — allow at least 10–30 minutes, depending on your source.
{% endhint %}

## Power BI Template App setup guide

{% stepper %}
{% step %}
Click "Connect your data" in Template App that you selected.
{% endstep %}

{% step %}
Sign In/ Sign Up to Coupler.io.
{% endstep %}

{% step %}
Connect your source accounts.
{% endstep %}

{% step %}
Navigate to DataSets step. Do not change anything - just review that your data is loaded.
{% endstep %}

{% step %}
Select Power BI destination
{% endstep %}

{% step %}
Press "Generate link" under Generate an Integration URL.
{% endstep %}

{% step %}
Copy integration URL
{% endstep %}

{% step %}
Insert copied URL in the Template and click "Next"
{% endstep %}
{% endstepper %}

## Supported features

| Feature              | Supported |
| -------------------- | --------- |
| Replace mode         | Yes       |
| Append mode          | Yes       |
| Automatic scheduling | Yes       |
| Type enforcement     | No        |
| Templates            | Yes       |

## Power BI common issues

### Connection issues

<details>

<summary>404 Not Found — "Web.Contents failed to get contents"</summary>

This is the most common issue when setting up Power BI for the first time. The integration URL only becomes active after your Coupler.io data flow has completed at least one successful run.

**Fix:**

1. Go back to your data flow in Coupler.io
2. Click **Run now** and wait for it to finish
3. Return to Power BI and try the URL again

{% hint style="danger" %}
Do not paste the integration URL into Power BI before running the data flow. The URL will return a 404 error until data has been exported at least once.
{% endhint %}

</details>

<details>

<summary>Integration URL is greyed out and cannot be copied</summary>

The **Generate link** button may appear greyed out if the data flow hasn't been run yet, or if a required field in the destination configuration is incomplete.

**Fix:** Make sure your data flow has been saved and run at least once successfully. If the button is still greyed out, check that all required destination fields are filled in before saving.

</details>

<details>

<summary>Integration URL stops working after a period of inactivity</summary>

If your data flow has not run in more than **60 days**, the integration URL will be deactivated automatically.

**Fix:** Run the data flow manually in Coupler.io to reactivate the URL. Then refresh your Power BI report to restore the connection.

{% hint style="warning" %}
Set up a recurring schedule in Coupler.io to prevent inactivity deactivation — even a low-frequency schedule (e.g., weekly) will keep the URL active.
{% endhint %}

</details>

### Data issues

<details>

<summary>New columns added to the source don't appear in Power BI after refresh</summary>

Power BI caches the column schema from the first import. If you add new metrics or dimensions in Coupler.io after the initial setup, those columns won't automatically appear in your report.

**Fix:**

1. In Power BI Desktop, open the **Query Editor**
2. Find and click the gear icon next to the **Expanded Column1** step (or similarly named expansion step)
3. Check the list for your missing columns and select them — avoid using the search box as it can deselect other fields
4. Click **OK**, then go to **File → Close & Apply**

</details>

<details>

<summary>Data in Power BI doesn't match what I see in the source</summary>

Discrepancies between your source (e.g., GA4, Airtable) and what appears in Power BI can happen for a few reasons:

* **Sampling** — some APIs (like GA4) return sampled data for large date ranges
* **Date range mismatch** — the data flow may be pulling a different date range than you're comparing against
* **Blank fields** — some source fields are only populated for certain record types and will appear empty for others

**Fix:** Check your data flow's date range settings and compare the preview data in Coupler.io against the source directly. If the Coupler.io preview matches the source, the issue is likely in the Power BI refresh or schema configuration.

</details>

<details>

<summary>Power BI dashboard doesn't update even though Coupler.io ran successfully</summary>

Coupler.io and Power BI refresh schedules are independent. Coupler.io updates the data at the URL; Power BI must separately be told to refresh from that URL.

**Fix:** After each Coupler.io run, manually refresh in Power BI (Desktop: click **Refresh**; Online: go to the semantic model and select **Refresh now**). For automatic updates, schedule a Power BI refresh *after* your Coupler.io run is expected to complete — add at least 10–30 minutes buffer depending on your source volume.

</details>

### Permission errors

<details>

<summary>Cannot connect Power BI destination from the Destinations section</summary>

{% hint style="warning" %}
Power BI must be configured **inside a data flow**, not from the standalone Destinations section in Coupler.io. The integration URL is flow-specific and is only generated during data flow setup.
{% endhint %}

Go to your data flow, navigate to the Destination step, and select Power BI there to generate your integration URL.

</details>

## Power BI FAQ

<details>

<summary>What is the integration URL and why does Coupler.io use it for Power BI?</summary>

Unlike spreadsheet destinations where Coupler.io writes directly to a file, Power BI pulls data from an external URL. Coupler.io generates a unique, secure JSON endpoint (the integration URL) for each data flow. Power BI connects to that URL via its **Get Data → Web** connector and reads the latest exported data. This means Coupler.io acts as the data layer between your source and Power BI.

</details>

<details>

<summary>What's the best write mode for Power BI dashboards?</summary>

* **Replace** is the right choice for most dashboards — it ensures Power BI always has a clean, current dataset without duplicates. Use this when your data flow pulls a full dataset each run (e.g., last 30 days of ad performance).
* **Append** is better if you want to accumulate historical records over time — for example, logging daily snapshots. Keep in mind that rows are never deleted in Append mode, so your dataset will grow with each run.

</details>

<details>

<summary>Can I combine data from multiple sources into one Power BI report?</summary>

Yes. You can add multiple sources to a single Coupler.io data flow and use **Join**, **Append**, or **Aggregate** transformations to combine them before sending to Power BI. Alternatively, you can create separate data flows for each source and combine the datasets inside Power BI using its own data modeling tools.

</details>

<details>

<summary>How do I keep my Power BI dashboard up to date automatically?</summary>

You need to set up refresh schedules in two places:

1. **Coupler.io** — schedule your data flow to run at your desired frequency (hourly, daily, weekly, etc.)
2. **Power BI Online** — after publishing your report, go to the semantic model, select **Schedule refresh**, and set a time that is *after* your Coupler.io run is expected to finish

Allow at least 10 minutes buffer for most sources, or 30+ minutes for high-volume sources like HubSpot or Pipedrive.

</details>

<details>

<summary>Can I use Coupler.io Power BI templates instead of building from scratch?</summary>

Yes — Coupler.io offers Power BI Template Apps for popular use cases (e.g., Facebook Ads, GA4). These give you a pre-built dashboard connected to your data. To use one, start from the template, connect your source accounts, run the data flow, and paste the generated integration URL into the Template App interface.

{% hint style="info" %}
See the [Power BI Template App setup guide](#power-bi-faq) for step-by-step instructions specific to templates.
{% endhint %}

</details>

<details>

<summary>Why does my integration URL show a 404 error in Power BI?</summary>

The integration URL is only active after your data flow has completed at least one successful run. If you paste the URL into Power BI before running the flow, Power BI will return a 404 error because there's no data at that endpoint yet. Run the data flow in Coupler.io first, then connect in Power BI.

{% hint style="info" %}
See the [Troubleshooting: Power BI destination](#power-bi-faq) article for a full list of connection errors and fixes.
{% endhint %}

</details>

<details>

<summary>Is there a row limit for data sent to Power BI?</summary>

Coupler.io's row limits depend on your plan, not the Power BI destination itself. If you're pulling large datasets (e.g., more than 100K rows from GA4), you may need a Business+ plan. Power BI Desktop and Power BI Pro have their own dataset size limits — check Microsoft's documentation for the most current limits on your Power BI plan.

</details>

<details>

<summary>I added a column in Coupler.io — do I need to regenerate the link?</summary>

No, there is no need to regenerate the link. You can refresh the schema or enable auto-detect schema in Power BI in order for your column(s) to appear.

</details>


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.coupler.io/destinations/categories/dashboards/power_bi.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
