> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markifact.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Report

> Fetch Microsoft Ads data based on specified metrics and dimensions

The **Get Report** node lets you fetch Microsoft Ads performance data across one or more accounts using specified metrics, dimensions, and filters. This is an **AI-powered node** that can understand natural language instructions.

***

## When to Use It

Use this node to:

* Generate automated performance reports and dashboards
* Track campaign metrics and KPIs over time
* Create data-driven insights for optimization decisions
* Export data for further analysis in external tools

***

## Inputs

| Field          | Type                 | Required | Description                                        |
| -------------- | -------------------- | -------- | -------------------------------------------------- |
| **Accounts**   | Dynamic multi-select | Yes      | Select one or more Microsoft Ads accounts to query |
| **Date Range** | Date range picker    | Yes      | Select date range for the report                   |
| **Metrics**    | Multi-select         | Yes      | Select metrics to include in the report            |
| **Dimensions** | Multi-select         | No       | Select dimensions to segment your data             |
| **Filters**    | Rule-based filters   | No       | Add filters to refine your data                    |
| **Order By**   | Sort configuration   | No       | Set the order of results                           |
| **Limit**      | Number               | No       | Maximum number of rows to return                   |
| **Options**    | Report options       | No       | Additional options for the report                  |

### Filters

Filters allow you to refine your data by applying conditions to specific dimensions or metrics. **Multiple filters use AND logic** - all conditions must be met for a row to be included in the results.

#### Available Filter Operators

| Operator               | Description                     | Example Use Case                              |
| ---------------------- | ------------------------------- | --------------------------------------------- |
| **EQUALS**             | Exact match                     | Campaign name equals "Holiday Campaign"       |
| **NOT\_EQUALS**        | Does not match exactly          | Campaign status not equals "Paused"           |
| **CONTAINS**           | Contains substring              | Campaign name contains "2024"                 |
| **NOT\_CONTAINS**      | Does not contain substring      | Campaign name doesn't contain "test"          |
| **IN\_LIST**           | Matches any value in list       | Campaign type in \["Search", "Shopping"]      |
| **NOT\_IN\_LIST**      | Doesn't match any value in list | Device not in \["Tablet"]                     |
| **REGEXP\_MATCH**      | Matches regular expression      | Campaign name matches ".*(holiday\|season).*" |
| **NOT\_REGEXP\_MATCH** | Doesn't match regex             | Campaign name doesn't match "test.\*"         |
| **GREATER\_THAN**      | Numeric greater than            | Impressions > 1000                            |
| **LESS\_THAN**         | Numeric less than               | Cost \< 500                                   |
| **IS\_NULL**           | Field has no value              | Conversion value is null                      |
| **IS\_NOT\_NULL**      | Field has a value               | Conversion value is not null                  |

#### Filter Examples

**Example 1: Active campaigns with decent performance**

```
- Impressions > 100 (GREATER_THAN)
- Campaign status = "Active" (EQUALS)
- Cost > 0 (GREATER_THAN)
```

**Example 2: Seasonal campaigns using regex (OR logic)**

```
- Campaign name matches ".*(holiday|season|winter).*" (REGEXP_MATCH)
```

**Example 3: Exclude test campaigns**

```
- Campaign name does not contain "test" (NOT_CONTAINS)
- Campaign name does not contain "demo" (NOT_CONTAINS)
```

#### OR Logic with Filters

Since multiple filters use AND logic, use these approaches for OR conditions:

1. **IN\_LIST operator**: `Campaign type IN ["Search", "Shopping", "Audience"]`
2. **REGEXP\_MATCH operator**: `Campaign name REGEXP_MATCH ".*(holiday|season|winter).*"`
3. **Run separate queries**: Create different workflows for different conditions

### Options Reference

These optional settings let you format the output from Microsoft Ads before passing it to other nodes.

| Option                          | Description                                                                         |
| ------------------------------- | ----------------------------------------------------------------------------------- |
| **Pretty Column Names**         | Converts column headers to Title Case (e.g. `campaignName` becomes `Campaign Name`) |
| **Add Percent Sign to Ratios**  | Appends `%` to ratio metrics like CTR or Engagement Rate                            |
| **Display Currency Symbol**     | Adds `$` or local currency symbol to monetary metrics                               |
| **Compact Numbers**             | Converts large numbers to short format (e.g. `10K` instead of `10,000`)             |
| **Pivot Dimensions as Columns** | Transforms dimension values into separate columns for easier comparison             |

***

## Output

The node returns a structured dataset with performance metrics and dimensions. The exact format depends on your configuration and the data returned from Microsoft Ads.

**Typical Output Structure:**

* **Data Rows**: Performance metrics and dimensions
* **Metadata**: Account information, date ranges, and query details
* **Summary Statistics**: Total records, data freshness, execution time

Can be passed to:

* AI nodes like **Analyze Data** or **Structured Output**
* Export nodes (e.g., Google Sheets)
* Email or Slides nodes

***

## Credit Cost

* **Cost per run**: 1 credit per account

***

## Example Setup

```plaintext theme={"dark"}
Scheduler (Daily 8 AM) →
Get Report →
AI Analysis →
Google Slides Report →
Slack Notification
```

**Configuration Example:**

* **Date Range**: Last 7 days
* **Metrics**: Impressions, Clicks, Cost, Conversions
* **Dimensions**: Campaign Name, Date
* **Filters**: Impressions > 0 (only active campaigns)
* **Limit**: 1000 rows

***

## FAQs

<Accordion title="What happens if I select multiple Microsoft Ads accounts?">
  The data will be **aggregated across all selected accounts** into a single dataset.\
  If you'd like to break it out by account, add the `account_name` or `account_id` dimension to segment results per account.
</Accordion>

<Accordion title="How do I combine filters with OR logic?">
  Multiple filters always use **AND logic** (all conditions must be true). For OR logic, use:

  **Option 1: IN\_LIST operator**

  ```
  Campaign type IN ["Search", "Shopping", "Audience"]
  ```

  **Option 2: REGEXP\_MATCH operator**

  ```
  Campaign name REGEXP_MATCH ".*(holiday|season|winter).*"
  ```

  **Option 3: Run separate workflows**
  Create different Get Report nodes for different conditions, then combine the data downstream.
</Accordion>

<Accordion title="What's the difference between CONTAINS and REGEXP_MATCH?">
  * **CONTAINS**: Simple substring search. `Campaign name CONTAINS "holiday"` finds any campaign with "holiday" anywhere in the name
  * **REGEXP\_MATCH**: Advanced pattern matching. `Campaign name REGEXP_MATCH "^holiday.*"` finds campaigns that START with "holiday"

  Use CONTAINS for simple text searches, REGEXP\_MATCH for complex patterns or OR conditions.
</Accordion>

<Accordion title="Why are my filters not working?">
  Common filter issues:

  * **Case sensitivity**: "Holiday" ≠ "holiday". Use CONTAINS or regex for flexible matching
  * **Data type mismatch**: Don't use text operators on numeric fields
  * **Field availability**: Not all dimensions/metrics support all filter operators
  * **Syntax errors**: Check regex patterns for proper escaping
</Accordion>

<Accordion title="Why am I missing conversions?">
  Conversion data might lag behind the UI due to the **conversion window**.\
  For example, with a 30-day window, conversions can change long after the click date.\
  Compare data only **after the window closes** to ensure accuracy.
</Accordion>

<Accordion title="Why is my data different from the Microsoft Ads UI?">
  Data discrepancies can occur due to:

  * **Reporting delays**: Microsoft Ads data can take up to 24-48 hours to finalize
  * **Attribution windows**: Different attribution models may show different results
  * **Time zones**: Ensure your date range matches the account's time zone
  * **Filters**: Check if you have different filters applied in the UI vs API
</Accordion>

<Accordion title="Why is my report returning no data?">
  Common causes of empty results:

  * **Date range**: The selected period may have no activity
  * **Filters**: Your filters may be too restrictive
  * **Account status**: Campaigns may be paused or inactive
  * **Metrics compatibility**: Some metric/dimension combinations aren't supported
  * **Permissions**: You may lack access to specific campaigns or account data
</Accordion>

<Accordion title="Why are some metrics showing as zero?">
  Zero values can indicate:

  * **No activity**: The campaigns genuinely had no performance for those metrics
  * **Conversion tracking**: Conversion metrics require proper tracking setup
  * **Dimension compatibility**: Some dimensions don't work with certain metrics
  * **Attribution**: Different attribution models may show different values
</Accordion>

<Accordion title="Why are certain campaign types missing data?">
  Microsoft Ads has restrictions with certain report types:

  * **Goals, Keyword and Product Dimension reports** don't support "Shopping", "Dynamic Search", or "Audience" campaign types
  * **Keyword reports** don't support ad groups of type "Dynamic"
  * **Performance Max campaign data** is only available via the Campaign report
  * **Paused campaigns** may not be visible if the report type is less than the "Campaign" level
</Accordion>

<Accordion title="Why are Goals only showing for conversion metrics?">
  Goals are only attributed to **conversion metrics** in Microsoft Ads, not to other fields like:

  * Spend
  * Clicks
  * Impressions

  This is how Microsoft Advertising's Goal reporting works by design.
</Accordion>
