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

# Attribution setup

> Configure your BigQuery paths table, column mapping, attribution models, spend data, and scheduling for multi-touch attribution.

Attribution settings are split across three pages, all under **Insights → Settings → Attribution**:

| Page                | What it covers                                                                                  |
| ------------------- | ----------------------------------------------------------------------------------------------- |
| **Core settings**   | Paths table, column mapping, model selection, label splits, scheduling                          |
| **Optional tables** | Spend data (for ROAS/CPA), performance data (for revenue coverage), and the credit output table |
| **Run history**     | Log of all past runs with status, duration, and trigger type                                    |

***

## Core settings

### Paths table

This is the BigQuery table that contains the customer journey touchpoints. Each row should represent a single marketing touchpoint within a journey.

| Field                 | Description                                                                                              |
| --------------------- | -------------------------------------------------------------------------------------------------------- |
| **Dataset**           | BigQuery dataset containing the paths table                                                              |
| **Table**             | Table name                                                                                               |
| **Channel column**    | Column that identifies the marketing channel (e.g. `channel`, `source_group`)                            |
| **Journey ID column** | Column uniquely identifying each customer journey (default: `journey_id`)                                |
| **Converted column**  | Boolean or 0/1 column indicating whether the journey converted (default: `converted`)                    |
| **Revenue column**    | Revenue value per journey (default: `revenue`)                                                           |
| **Date column**       | Column used as the time window filter — typically the journey start date (default: `journey_start_date`) |

After saving, Interact validates all column names against your BigQuery table schema and highlights any that cannot be found.

### Path processing

| Setting                     | Description                                                                                                                                              |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Junk channels**           | Comma-separated channel values to exclude before processing (e.g. `Direct, Other, (none)`). These are removed from journey paths before the model runs.  |
| **Passthrough channels**    | Channels that don't interrupt the journey logic (e.g. brand search that always appears). Kept in the path but treated differently in Markov transitions. |
| **Deduplicate consecutive** | Remove back-to-back touches from the same channel within a journey. Recommended for most setups.                                                         |
| **Max journey length**      | Maximum number of touchpoints per journey. Longer journeys are truncated. Default: 15.                                                                   |
| **Min journey length**      | Minimum number of touchpoints required. Shorter journeys are excluded. Default: 1.                                                                       |

### Attribution models

Enable one or both models:

| Model                    | When to use                                                                                                           |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| **Markov** (recommended) | Fast, reliable, good for operational use. Always enable this.                                                         |
| **Shapley**              | More thorough game-theory approach. Enable when you need to compare or validate Markov results. Adds processing time. |

### Label splits

Label splits allow you to run attribution separately for each value of a segmentation dimension — for example, running separate models for `NL` and `DE` rather than blending all markets together.

Enable **Label splits** and define one or more split columns. Each split column maps to:

* A column in the **paths table** (required)
* Optionally, a corresponding column in the **spend table** for filtering spend data per segment

When label splits are enabled, the dashboard shows a multi-select filter so you can view results by specific segment combinations.

<Tip>
  Use label splits for any dimension where channels differ meaningfully across segments — market, brand, or product line are common examples.
</Tip>

### Scheduling

Automatically run attribution on a schedule so results are always fresh.

| Setting               | Description                                     |
| --------------------- | ----------------------------------------------- |
| **Enable scheduling** | Toggle automatic runs on or off                 |
| **Frequency**         | Daily or weekly                                 |
| **Weekday**           | For weekly runs, which day to run               |
| **Time**              | Run time in HH:MM (server time)                 |
| **Advanced (cron)**   | Custom cron expression for fine-grained control |

When scheduling is enabled, Interact queues runs for the standard preset windows (90d, 180d, 365d) at the scheduled time.

***

## Optional tables

### Spend data

Connect a BigQuery table containing channel spend by date to unlock **ROAS** and **CPA** metrics in the attribution dashboard.

| Field               | Description                                                                       |
| ------------------- | --------------------------------------------------------------------------------- |
| **Dataset / Table** | Location of the spend table                                                       |
| **Channel column**  | Column identifying the marketing channel — should match values in the paths table |
| **Spend column**    | Column containing the spend amount (default: `spend`)                             |
| **Date column**     | Column with the spend date (default: `date`)                                      |
| **Label column**    | (Optional) Column for label-based filtering when label splits are enabled         |

### Performance data

Connect a business-system revenue table (e.g. from your e-commerce platform or CRM) to display **coverage** — what percentage of actual revenue is captured in your attribution paths.

| Field               | Description                                         |
| ------------------- | --------------------------------------------------- |
| **Dataset / Table** | Location of the performance/revenue table           |
| **Revenue column**  | Column with the revenue figure (default: `revenue`) |
| **Date column**     | Date column for filtering to the selected window    |

### Credit output table

If your pipeline pre-computes per-touchpoint attribution credit and writes it to BigQuery, configure this table to power the **Journey Attribution** page.

| Field              | Description                                                                          |
| ------------------ | ------------------------------------------------------------------------------------ |
| **Dataset**        | Dataset containing the credit table (default: `src_attribution_models`)              |
| **Table**          | Credit table name (default: `fact_attribution_credit__user_id`)                      |
| **Channel column** | Channel column in the credit table (e.g. `channel`, `source_group`, `channel_group`) |

<Note>
  The credit table is written by a separate pipeline process and is not produced by the interactive attribution runs. It enables the per-journey detail view but is not required for the main channel attribution dashboard.
</Note>

***

## Run history

The **Runs** page shows all past attribution runs with:

* **Status** — Success, Failed, or Queued
* **Window** — Date range that was processed
* **Label** — Segment label (if label splits are used)
* **Duration** — How long the run took
* **Trigger** — Manual, Scheduled, or Preview
* **Error** — Failure message when status is Failed

Use **Run all presets** to queue fresh runs for the standard 90d, 180d, and 365d windows. This is useful after changing the paths table or model settings.

***

## BigQuery permissions

The service account used by your BigQuery connector needs the following permissions:

| Permission                                              | Why                                              |
| ------------------------------------------------------- | ------------------------------------------------ |
| `bigquery.tables.getData`                               | Reading the paths, spend, and performance tables |
| `bigquery.jobs.create`                                  | Running queries to build transition matrices     |
| `bigquery.tables.create` + `bigquery.tables.updateData` | Writing channel weights output (when enabled)    |

The standard `roles/bigquery.dataEditor` + `roles/bigquery.jobUser` roles cover all of these.
