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

# Product Filters

> Control which products reps see during quoting by matching user attributes or CRM fields against product fields.

Product Filters control which products a rep sees when they open the catalog during quoting. Instead of showing every active product to every user, filters narrow the catalog based on who the rep is and what they're assigned to.

A filter works by matching a **source field** (an attribute on the user or a field from your CRM) against a **product field**. If the values match, the product is visible to that user. If they don't match, the product is hidden.

For example, a filter might match the user's assigned **Region** against a product's **Region** custom field. A rep assigned to "North America" would only see products tagged with "North America" in the catalog.

***

## How filters work

Every filter has three parts:

1. **Source field** -- where the filtering value comes from (the user's profile or a CRM field)
2. **Product field** -- the field on the product that the source value is compared against
3. **Match logic** -- if the source value matches the product field value, the product is visible

When a rep opens the product catalog during quoting, Veles evaluates all active filters and only shows products that pass every filter. If a product doesn't have a value set for the target field, it's excluded by default (though you can change this behavior -- see [Advanced options](#advanced-options)).

***

## Source fields

The source field determines where the filtering value comes from. Veles supports two sources:

### User fields

These are attributes stored directly on the user's profile in Veles. You configure these when [adding users](/get-started/quickstart/adding-users).

| Field         | Type          | Description                                                         |
| ------------- | ------------- | ------------------------------------------------------------------- |
| **Email**     | Text          | The user's email address.                                           |
| **Job Title** | Text          | The user's job title.                                               |
| **Role**      | Single Select | The user's role: Admin, Member, or Viewer.                          |
| **Regions**   | Array         | The regions assigned to the user (e.g., North America, EMEA, APAC). |

User fields are the most common source for filters. A typical setup matches the user's **Regions** against a Region field on the product.

### CRM fields

If you've connected a CRM ([Salesforce](/get-started/integrations/salesforce) or [HubSpot](/get-started/integrations/hubspot)), you can also pull source values from CRM fields. This lets you build filters based on data that lives in your CRM rather than duplicating it in Veles.

For example, if your CRM tracks which vertical a rep covers (Healthcare, FinTech, Manufacturing), you can use that CRM field as the source for a product filter without re-entering the data on each user's Veles profile.

<Tip>
  CRM-sourced filters are especially useful for large teams where user attributes are already maintained in Salesforce or HubSpot. Instead of keeping two systems in sync, let the CRM be the source of truth and have Veles read from it at filter time.
</Tip>

***

## Creating a filter

1. Navigate to **Admin > Price Books > Filters**.
2. Click **+ Add Product Filter**.
3. **Name** the filter with something descriptive (e.g., "Region-based visibility" or "Vertical product matching").
4. **Select the source field.** Choose the **User** or **CRM** tab, then pick the field that provides the filtering value.
5. **Map it to a product field.** Select the corresponding field on the product that the source value should be compared against.
6. Set the **Status** to **Active**. Active filters are applied whenever users view products. Inactive filters are saved but don't affect visibility.
7. Click **Save Changes**.

***

## Advanced options

The filter builder includes two advanced settings for handling edge cases. These are optional but important for avoiding unexpected behavior in larger catalogs.

### Include products with blank values

**What it does:** When a product doesn't have the target field set at all, the filter would normally exclude it. Enabling this option lets those products pass through the filter instead.

**When to use it:** Turn this on when a blank value means "applies to everyone" rather than "not configured yet."

**Example:** You filter products by `region_ids`, but some products are global and don't have any regions assigned. Enabling this setting ensures those global products still appear for all users, while region-specific products are filtered normally.

### Default source value

**What it does:** When the source value is unavailable (e.g., a user has no region assigned), the filter is normally skipped entirely. Setting a default means the filter runs using this fallback value instead.

**When to use it:** Use this when skipping the filter for users with missing data would show too many (or too few) products. Leave it blank if skipping the filter is the right behavior for your team.

**Example:** You filter products by the user's **Region**, but new hires don't have a region assigned yet. Setting a default of `us-east` ensures they see US East products instead of seeing everything (unfiltered) or nothing.

***

## Common filter patterns

### Region-based visibility

The most common filter. Match the user's **Regions** field against a Region custom field on the product.

* **Source:** User > Regions
* **Product field:** Region
* **Result:** A rep assigned to EMEA only sees products tagged with EMEA. A rep assigned to both EMEA and APAC sees products tagged with either.
* **Tip:** Enable "Include products with blank values" so global products (no region set) appear for everyone.

### Segment-based visibility

Match the user's assigned segment against a Segment custom field on the product.

* **Source:** User > Segment (or a CRM field if segments are managed in your CRM)
* **Product field:** Segment
* **Result:** An Enterprise rep only sees Enterprise-tier products. An SMB rep only sees SMB-tier products.

### Vertical-based visibility

Use a CRM-sourced field to filter products by the rep's industry vertical.

* **Source:** CRM > Vertical (e.g., a custom field on the Salesforce User or HubSpot owner record)
* **Product field:** Vertical
* **Result:** A rep covering Healthcare only sees products relevant to Healthcare customers.

***

## How multiple filters interact

When multiple filters are active, they're evaluated together. A product must pass **all** active filters to be visible to a user.

For example, if you have both a Region filter and a Segment filter active:

* A product tagged with Region = "North America" and Segment = "Enterprise" is visible only to reps who are assigned to North America **and** Enterprise.
* A product tagged with Region = "North America" and no Segment is visible to North America reps only if "Include products with blank values" is enabled on the Segment filter.

<Warning>
  Be careful when stacking multiple filters. Each additional filter narrows visibility further. If reps report that products are missing from their catalog, check whether the combination of active filters is too restrictive.
</Warning>

***

## Managing filters

### Editing a filter

Navigate to **Admin > Price Books > Product Filters** and select the filter. Update the name, source field, product field, or advanced options, then click **Save Changes**.

### Deactivating a filter

Set the filter's Status to inactive. The filter configuration is preserved but no longer applied when users view products. This is useful for testing or temporarily broadening catalog visibility.

### Deleting a filter

Remove the filter entirely from **Admin > Price Books > Product Filters**. This immediately makes all products that were previously hidden by the filter visible to users who can now see them.

***

## What's next

<CardGroup cols={2}>
  <Card title="Product Custom Fields" icon="tag" href="/get-started/pricing-and-packaging/product">
    Define the product-side fields that filters match against.
  </Card>

  <Card title="Adding Users" icon="users" href="/get-started/quickstart/adding-users">
    Assign regions, segments, and other attributes that filters use as source values.
  </Card>

  <Card title="Connect your CRM" icon="plug" href="/get-started/quickstart/connect-your-crm">
    Pull CRM fields into Veles to use as filter sources.
  </Card>

  <Card title="Product Categories" icon="folder" href="/get-started/pricing-and-packaging/product-categories">
    Organize products into families for catalog navigation and rule logic.
  </Card>
</CardGroup>
