> For the complete documentation index, see [llms.txt](https://docs.fact-finder.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fact-finder.com/docs/modules/customer-specific-info.md).

# Customer-Specific Info

## Overview

The **Customer-Specific Info module** (CSI) lets you display customer-specific prices and other values on a per-customer basis. This is mainly useful for B2B shops with a smaller set of high-value customers.

The Customer-Specific Info module lets you define field values for a specific purchaser ID. This is especially useful in B2B environments, where certain purchasers should see adjusted values, such as prices.

The **Customer-Specific Info** module, or CSI, lets you display customer-specific prices and other values. It is mainly designed for B2B use cases with a smaller customer base and high purchase volume.

Use CSI to define field values for a specific `purchaserId`. This is useful when certain customers should see adjusted values, such as custom prices.

## Location

You can find **Customer-Specific Info** in the left-hand menu under **More settings… → Customer-Specific Info** in the **Modules** category:

![](/files/ZiXdbZ5PRI4ywZxkyM7H)

## Configuring Customer-Specific Info

![](/files/awidTOy7ArSDNRbojYko)

You can enable or disable CSI for individual channels ![](/files/Ph63z0daepEWYQihI5Tp) or inherit the setting from a parent channel. You can also choose whether products without a price appear in search results ![](/files/Ehk1tMw4qBIWvCgJj7rh). Imports can run separately or be linked to the default product data import ![](/files/UipZ5ADW4CYdVObCmdDS).

Use these settings to control how CSI behaves in each channel:

* **Active** ![](/files/Ph63z0daepEWYQihI5Tp) — Enable or disable CSI for the current channel. Child channels can inherit this setting from their parent channel.
* **Show products without price** ![](/files/Ehk1tMw4qBIWvCgJj7rh) — Decide whether products without a price appear in search results.
* **Link import to the default database import** ![](/files/UipZ5ADW4CYdVObCmdDS) — Choose whether CSI imports run separately or together with the default database import.

### Run Customer-Specific Info import after scheduled product data imports ![](/files/UipZ5ADW4CYdVObCmdDS)

Select this checkbox to run a Customer-Specific Info import after the product data import in its update interval.

Enable this option to run a CSI import after a scheduled product data import.

Using ![](/files/2XF0kf1Bm7Z35I6UtFNL) you can define if each CSI import will also trigger a download of the CSI CSV file. It is also possible to only use Purchaser IDs for specific customers or items. In that case, you may set a default purchaser ID ![](/files/cVfuaDKK4FYgURysSN7J) that decides what price to use, should no bespoke ID be handed over in a search query. Import settings are identical to the product database import.

This setting works together with the following options:

* **Download the CSI CSV file** ![](/files/2XF0kf1Bm7Z35I6UtFNL) — Define whether each CSI import also downloads the CSI CSV file.
* **Default purchaser ID** ![](/files/cVfuaDKK4FYgURysSN7J) — Set a fallback purchaser ID when no specific ID is passed in a search query. This is useful when only specific customers or items use purchaser IDs.

Import settings match the product data import settings.

### Download the Customer-Specific Info file during scheduled imports ![](/files/2XF0kf1Bm7Z35I6UtFNL)

Select this checkbox to download the Customer-Specific Info import file when an import linked to the product data import starts. This setting has no effect unless `Perform Customer-Specific Info import when a product data import is triggered by an update interval` is enabled.

You can only activate the CSI module when a CSI import source has been defined for a corresponding ID field.

## The CSI export file

CSI expects its own export file in **.CSV** format. The file should contain one column with the product number and additional columns with mappings from `purchaserId` to the respective value.

To use `MasterId`s and `ProductId`s at the same time, you can either fill all corresponding columns in one row or use one row for the `MasterId` and non-variant fields and a following row for the product number and variant mappings. In the latter case, the columns for the other ID remain empty.

If you use `MasterId`s and `ProductIds` together, you can either fill all related columns in one row or split them across two rows. In the second case, use one row for the `MasterId` and non-variant fields, and another row for the product number and variant mappings. Leave the unused ID columns empty.

### Example File Formats

Header, where `price` is a variant field and `masterPrice` is a non-variant field:

```
masterId;productId;price;masterPrice
```

* All in one line:

```
1234;1234-56;1=9.99|2=9.73|4=9.55;1=4.99|5=7.99
```

* Separated values for MasterId and ProductId:

```
1234;;;1=4.99|5=7.99
;1234-56;1=9.99|2=9.73|4=9.55;
```

You can set the field separators in the CSI settings. The file must contain exactly one header line.

If there is no individual value for a given product or a specific `purchaserId`, simply omit the value. In that case, assign a default value to the corresponding field in the data import. Otherwise, the result may be an empty field. FactFinder does not report these discrepancies during import.

## Importing CSI data

CSI requires its own import, which can be performed only when a **Worldmatch database** already exists, meaning that a data import has been processed successfully. If the Worldmatch database is recreated by a data import, then a new CSI import is also required.

CSI requires its own import. You can only run it after a **Worldmatch database** already exists, which means a data import has completed successfully. If a data import recreates the Worldmatch database, a new CSI import is also required.

If the CSI module **is later deactivated**, you must run a new data import to remove the individualized values from the Worldmatch database. An import from the intermediate database is sufficient. CSI uses an intermediate database, just like the product data import, which may become persistent when using the database.

Products without a value in the `price` field are normally rejected during a data import. However, this field may be empty in the data export when it is marked as a customer-specific field. FactFinder does not check whether the price import adds a field value for every product and `purchaserId` combination. As a result, a product may not have a price for a particular customer if the database does not always fill this field. The CSI import can also run on a schedule, just like the product data import.

You can also attach the CSI import to scheduled product data imports. This prevents unnecessary cache clears and makes correct prices available as quickly as possible after the data import finishes, without requiring you to align schedules manually. To use this feature, activate the `importInProductUpdateInterval` setting. This starts a CSI import whenever a scheduled product data import completes successfully. If auto-import is enabled for the CSI channel when FactFinder starts, a CSI import runs after the successful data import.

CSI uses a separate import.

Before you start:

* Run a product data import first. CSI needs an existing **Worldmatch database**.
* Run a new CSI import whenever the Worldmatch database is recreated.
* Run a new product data import after disabling CSI. This removes customer-specific values from the Worldmatch database.

CSI uses an intermediate database, just like the product data import. When using Postgres, this database may remain persistent.

Customer-specific fields such as "`price`" may be empty in the CSI export. FactFinder does not verify that every product and "`purchaserId`" combination gets a value. If a value is missing and no default is set in the product data import, the product may have no price for that customer.

You can schedule CSI imports at regular intervals. You can also attach them to scheduled product data imports by enabling "`importInProductUpdateInterval`". This avoids unnecessary cache clears and updates customer-specific values immediately after a successful product import.

If auto-import is enabled for the CSI channel at startup, FactFinder runs a CSI import after a successful data import.

If you start a CSI import manually before the Worldmatch database exists, FactFinder starts a product data import first and then continues with the CSI import.

If a CSI import is started, and the Worldmatch database has not yet been created, a product data import will be triggered before the CSI import is performed.

### Other Imports

If an import for a module depends on another import that has not started yet, the required import is triggered automatically.

If a module depends on another import that has not run yet, FactFinder starts that import automatically.

If the import is to be performed for a module that is dependent on another import (and this import has not been started yet), then the other import will be triggered automatically.


---

# 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.fact-finder.com/docs/modules/customer-specific-info.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.
