> ## 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 Shopify store data including orders, customers, and inventory metrics

The **Get Report** node lets you fetch performance data from your connected Shopify store 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 sales and performance reports
* Track order metrics and customer behavior over time
* Create data-driven insights for business decisions
* Export data for further analysis in external tools
* Monitor inventory levels and product performance

***

## Setup Requirements

Before using this node, you need to connect your Shopify store to Markifact. Follow our step-by-step guide:

<Card title="Connect Your Shopify Store" icon="link" href="/nodes/shopify/shopify_connect">
  Complete setup guide for creating a private app and connecting to Markifact
</Card>

## Inputs

| Field          | Type               | Required | Description                             |
| -------------- | ------------------ | -------- | --------------------------------------- |
| **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                     | Product type equals "Electronics"           |
| **NOT\_EQUALS**        | Does not match exactly          | Order status not equals "cancelled"         |
| **CONTAINS**           | Contains substring              | Product title contains "iPhone"             |
| **NOT\_CONTAINS**      | Does not contain substring      | Product title doesn't contain "test"        |
| **IN\_LIST**           | Matches any value in list       | Order status in \["fulfilled", "paid"]      |
| **NOT\_IN\_LIST**      | Doesn't match any value in list | Payment status not in \["pending"]          |
| **REGEXP\_MATCH**      | Matches regular expression      | Product title matches ".*(phone\|tablet).*" |
| **NOT\_REGEXP\_MATCH** | Doesn't match regex             | Product title doesn't match "test.\*"       |
| **GREATER\_THAN**      | Numeric greater than            | Order value > 100                           |
| **LESS\_THAN**         | Numeric less than               | Quantity \< 10                              |
| **IS\_NULL**           | Field has no value              | Discount code is null                       |
| **IS\_NOT\_NULL**      | Field has a value               | Discount code is not null                   |

#### Filter Examples

**Example 1: High-value fulfilled orders**

```
- Order value > 50 (GREATER_THAN)
- Order status = "fulfilled" (EQUALS)
- Payment status = "paid" (EQUALS)
```

**Example 2: Electronics products using regex (OR logic)**

```
- Product type matches ".*(phone|tablet|laptop).*" (REGEXP_MATCH)
```

**Example 3: Exclude test orders**

```
- Customer email does not contain "test" (NOT_CONTAINS)
- Order total > 0 (GREATER_THAN)
```

#### OR Logic with Filters

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

1. **IN\_LIST operator**: `Order status IN ["fulfilled", "shipped", "delivered"]`
2. **REGEXP\_MATCH operator**: `Product type REGEXP_MATCH ".*(electronics|accessories|gadgets).*"`
3. **Run separate queries**: Create different workflows for different conditions

### Options Reference

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

| Option                          | Description                                                                     |
| ------------------------------- | ------------------------------------------------------------------------------- |
| **Pretty Column Names**         | Converts column headers to Title Case (e.g. `orderValue` becomes `Order Value`) |
| **Add Percent Sign to Ratios**  | Appends `%` to ratio metrics like Conversion 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 Shopify.

**Typical Output Structure:**

* **Data Rows**: Performance metrics and dimensions
* **Metadata**: Store 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 successful execution)

***

## Example Setup

```plaintext theme={"dark"}
Scheduler (Daily 9 AM) →
Shopify Get Report →
AI Analysis →
Google Slides Report →
Email Report
```

**Configuration Example:**

* **Date Range**: Last 30 days
* **Metrics**: Total Sales, Order Count, New Customers, Average Order Value
* **Dimensions**: Date, Product Type
* **Filters**: Order Status = "fulfilled"
* **Limit**: 1000 rows

***

## FAQs

<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**

  ```
  Order status IN ["fulfilled", "shipped", "delivered"]
  ```

  **Option 2: REGEXP\_MATCH operator**

  ```
  Product type REGEXP_MATCH ".*(electronics|accessories|gadgets).*"
  ```

  **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. `Product title CONTAINS "iPhone"` finds any product with "iPhone" anywhere in the title
  * **REGEXP\_MATCH**: Advanced pattern matching. `Product title REGEXP_MATCH "^iPhone.*"` finds products that START with "iPhone"

  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**: "Electronics" ≠ "electronics". Use CONTAINS or regex for flexible matching
  * **Data type mismatch**: Don't use text operators on numeric fields like order value
  * **Field availability**: Not all dimensions/metrics support all filter operators
  * **Syntax errors**: Check regex patterns for proper escaping
</Accordion>

<Accordion title="Why don't I see an Accounts field like other advertising platforms?">
  Shopify connections are **store-specific** - each connection represents one Shopify store. You don't need to select accounts because the node automatically uses your connected store's data.
</Accordion>

<Accordion title="How do I connect multiple Shopify stores?">
  Each Shopify store requires a separate connection in Markifact. You'll need to:

  * Use different Get Report nodes for each store's data
  * Create individual connections with each store's credentials
</Accordion>

<Accordion title="Why am I getting 'No data found' errors?">
  Common causes of empty results:

  * **Date range**: The selected period may have no orders or activity
  * **Filters**: Your filters may be too restrictive
  * **Store status**: Your store may be in development mode or have no sales
  * **Permissions**: Check that your access token has the required permissions
  * **Connection**: Verify your Shopify connection is still active
</Accordion>

<Accordion title="Why is my data different from Shopify admin?">
  Data discrepancies can occur due to:

  * **Order statuses**: Different filters applied (e.g., including/excluding refunds)
  * **Data freshness**: Reports may take time to sync
  * **Calculation methods**: Different aggregation methods between Shopify admin and API
</Accordion>

<Accordion title="My API token isn't working - what should I check?">
  If your API token fails:

  * **Token visibility**: API tokens are only shown once when created
  * **Permissions**: Ensure you selected the required scopes (`read_orders`, `read_all_orders`, `read_customers`, `read_inventory`)
  * **App status**: Verify your custom app is installed and active
  * **Token expiry**: Check if you need to regenerate the token
  * **Store ID**: Confirm you're using the correct store ID from your admin URL
</Accordion>

<Accordion title="How do I find my Shopify Store ID?">
  Your Store ID is in your Shopify admin URL:

  1. Log in to your Shopify admin dashboard
  2. Look at the URL in your browser
  3. Find the text after `/store/` in the URL
  4. Example: In `https://admin.shopify.com/store/my-store`, your Store ID is `my-store`
</Accordion>

<Accordion title="What should I do if my connection stops working?">
  If your Shopify connection fails:

  * Check if your custom app is still installed in Shopify
  * Verify the access token hasn't been revoked
  * Ensure your Shopify store is active and accessible
  * Try reconnecting with a new access token
  * Contact support if issues persist
</Accordion>
