This endpoint lets you add items to an existing shipping method so that shoppers can see the options.
# Delete items from shipping method
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-method-items/delete-items-from-shipping-method
shipping-methods.openapi post /shipping-methods/{shippingMethodId}/actions/delete-items
Certain items may need to be removed from a shipping method when they're discontinued, new shipping restrictions are imposed on hazardous items, or when they're not eligible for current promotions. Using this endpoint, you can delete one or more items from the given shipping method.
# Get item IDs for given shipping method
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-method-items/get-item-ids-for-given-shipping-method
shipping-methods.openapi get /shipping-methods/{shippingMethodId}/items
You may want to determine what items are in a specific shipping method, to calculate shipping costs, verify the eligibility of items for specific shipping methods, or display the list of items to shoppers during the checkout process.This endpoint is used to get item IDs for a given shipping method.
# Get shipping methods
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-method-items/get-shipping-methods
shipping-methods.openapi post /shipping-methods/actions/filter-by-item-id
You may need to periodically review shipping methods associated with an item, either to answer related queries or to verify they're up to date. This endpoint gets shipping methods for the given item ID.
# Create shipping method
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-methods/create-shipping-method
shipping-methods.openapi post /shipping-methods
On your storefront, shipping methods determine how products are delivered to your customers. Some of the common shipping methods are domestic, international, free shipping, and express delivery. This endpoint is used to create a new shipping method. In the response, you will also get a shipping method ID, which will be required for subsequent calls to get, update, and delete this shipping method.
# Delete shipping method
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-methods/delete-shipping-method
shipping-methods.openapi delete /shipping-methods/{shippingMethodId}
When a particular shipping service is discontinued or certain shipping methods have become redundant or non-compliant with existing regulations, you may want to remove them so they're not shown to shoppers. This endpoint deletes a shipping method by ID.
# Find shipping methods
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-methods/find-shipping-methods
shipping-methods.openapi post /shipping-methods/search
At checkout, customers choose their preferred shipping method based on delivery timelines and costs. Moreover, it may be necessary for you to review available shipping methods to ensure they're current and accurate. To support these scenarios, you must get the latest shipping methods. This endpoint gets shipping methods based on given filter conditions.
# Get shipping method
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-methods/get-shipping-method
shipping-methods.openapi get /shipping-methods/{shippingMethodId}
When an order is placed, the selected shipping method is stored as part of order details. You may need to review them for order related queries. This endpoint gets details of a single shipping method by ID.
# Update shipping method
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipping-methods/update-shipping-method
shipping-methods.openapi put /shipping-methods/{shippingMethodId}
To comply with legal regulations and for other purposes, it may be necessary to update shipping rates or delivery timelines. With this endpoint, you can update shipping details by ID. This completely replaced existing information.
# Add or update items in a shopping list
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-list-items/add-or-update-items-in-a-shopping-list
lists.openapi post /lists/{listId}/actions/add-or-update-list-items
Once a shopping list is created, shoppers can add new item to it or update existing ones. This endpoint is used to add and update items in a list. - If the specified `sku` is not in the list, a new item is added to the list with the given `quantity`.
- If the specified `sku` is already in the list, its current quantity is updated based on the given `incQuantity`.
**Note**: At least one item must be in the request body.
# Delete items from shopping list
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-list-items/delete-items-from-shopping-list
lists.openapi post /lists/{listId}/actions/delete-list-items
Over time, shoppers' preferences may change, or they might have added an item to their shopping list by mistake. This endpoint lets your shopper remove one or more products from the specified shopping list.
# Get shopping list and its items
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-list-items/get-shopping-list-and-its-items
lists.openapi get /lists/{listId}/actions/get-list-details
By specifying list ID, you can get shopping list details along with its items.
# Get shopping list items by list ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-list-items/get-shopping-list-items-by-list-id
lists.openapi get /lists/{listId}/list-items
Shoppers may periodically review their shopping list to check for discounts or when they are ready to make a purchase. This endpoint gets a paginated list of items by list ID. You can refine the results by specifying `offset` and `limit`. When they are not specified, you will get up to 10 records.
# Get shopping lists of a user along with associated items
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-list-items/get-shopping-lists-of-a-user-along-with-associated-items
lists.openapi get /lists/users/{userId}/actions/get-list-details-with-items
Shoppers may periodically review their shopping lists and their associated items. This endpoint gets shopping lists and associated items. For each list, you can view list ID, list name, user ID, list type, notes, custom attributes, items count, times of list creation and list update, as well as item details.
# Create shopping list
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-lists/create-shopping-list
lists.openapi post /lists
Shoppers often choose to save their desired products in shopping lists to purchase later when they are ready or to take advantage of discounts when they are available. This endpoint creates a new shopping list. The response includes a list ID, which is required for subsequent calls to get, update, or delete this shopping list.
**Note**: Items can't be added when the shopping list is initially created. To add items, use the *Add items to list* endpoint - `POST /lists/{listId}/actions/add-or-update-list-items`.
# Delete a shopping list by ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-lists/delete-a-shopping-list-by-id
lists.openapi delete /lists/{listId}
Shoppers need to remove unwanted or irrelevant shopping lists. With this endpoint, they can delete a list by list ID.
# Get a shopping list by ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-lists/get-a-shopping-list-by-id
lists.openapi get /lists/{listId}
Get details of a shopping list by ID, along with the number of items in it.
# Get shopping lists of a user
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shopping-lists/get-shopping-lists-of-a-user
lists.openapi get /lists/users/{userId}
Shoppers may want to periodically review their shopping lists and ensure they are up to date. This endpoint gets a paginated response of shopping lists by user ID. For each list, you can view user ID, list ID, list name, type, notes, custom attributes (if any), as well as time of list creation and update.
By specifying list ID, this endpoint lets your shoppers update their shopping list details such as list name, list type, notes, and custom attributes.
# Create a Network
Source: https://developer.fabric.inc/v3/orders-and-inventory/user-guides/inventory/create-a-network
This topic covers the process for creating a new network used to fulfill orders and sort inventory.
## Prerequisites
* Ensure that you have the **Orders & Inventory Editor** or **Administrator** privileges to fabric Orders. For more information, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-orders-roles) section.
## Creating a Network
1. In the left menu, click **Inventory** > **Networks**.
The **Manage Networks** page is displayed.
2. Click **Create Network**.
The **Create Network** page is displayed.
### Adding basic information
1. In the **Network Name** field, enter a name.
fabric suggests that you provide a descriptive and unique name for each network. For example, *NA Fulfillment STH Network*.
2. (Optional) In the **Description** field, provide a description.
3. In the **Select type of Network** field, select one of the following:
* [Single Network](#creating-a-single-network): To create conditional rules, products, and locations for an individual network.
* [Multiple Networks](#creating-a-new-multi-network): To group existing networks together to form a new network.
### Creating a single network
In the **Setup your Rules** section, you must create rules. These rules are used to match items and locations to a network.
1. In the **Attribute type** field, select one of the following:
* **Product**: Applies rules that search for product attributes in your product catalog and adds matching products to your network.
* **Location**: Applies rules that search for locations based on the defined location attributes and adds matching locations to your network.
2. In the **Attribute name** field, select an attribute name.
3. In the **Contains** field, select a condition.
4. In the **Add Value** field, enter an attribute value.
To add values, type the value and press enter. Multiple values are supported.
For example, if you want to add only *North America* locations to a network, you can select the **Attribute type** `Location` to add locations to your network. To filter what locations are going to be added, select an **Attribute name** such as `channelId` with the operator `Contains`, and the value `NA`. This adds any locations with a `channelId` containing `NA` to the network.
1. (Optional) You can add an additional rule condition by clicking **Add condition**. This condition is an **AND** condition. To add an **OR** condition, click **Add Rule**.
2. In the **Add Inventory Availability** section, use the **Safety Stock Quantity** field to enter the number of units you want to reserve.
Safety stock is a quantity of inventory kept on hand to protect against uncertainties in demand or supply. The actual safety stock for a network is the sum of the network-level safety stock plus the aggregated safety stock for every location in the network.
The low stock level field is used to trigger alerts or actions when inventory for a product or in a location falls below the specified threshold. This prevent stockouts and helps maintain optimal inventory levels.
1. In the **Define low stock level** section, enter the number of units to trigger a low stock alert.
### Creating a new multi network
The **Multiple Networks** option allows you to add multiple **Single Networks** together to form a new network. For example, if you recently expanded to ship international, you can differentiate North America, Asia, Europe and other continents by combining them into a new network. This network can then be referenced during inventory and order fulfillment instead of needing to individually list each single network.
1. In the **Single Network** field, select a network.
2. Click **Add**.
The network is added to the table. Continue to add networks as needed.
`
Whenever data is requested, fabric will generate a S3 presigned URL to ensure secure access.
#### What's the primary use case for fabric’s Inventory module?
The primary use case for fabric Inventory is to prevent *overselling* during transactions by providing real-time inventory data via REST API and event-driven integrations, for the storefront and other downstream applications to accurately display available products for sale.
#### What's the primary interface for user operations?
fabric Copilot is the Graphical User Interface where users may log in to manage their data via interactive web pages. Copilot provides an easy way for users to manage recurring operational workflows such as updating data where the solution architecture requires manual intervention. Copilot is also an easy way for implementation specialists to manage test data creation, updates, and configurations.
#### What's the primary interface for setting up integrations with Storefront and other applications?
fabric’s Inventory service provides over 30 OpenAPI 3.0 compliant REST API endpoints, documented under the API Reference at [https://developer.fabric.inc/v3/reference/about-inventory](/v3/orders-and-inventory/api-reference/inventory/inventory/overview), for users to manage data. These APIs are the same ones used in Copilot and can be integrated into the retailer's enterprise systems such as the storefront, inventory management systems, search, marketing platforms, and more. Not all APIs are available in Copilot, and some are required to use fabric Inventory for getting inventory in real-time from the storefront for use cases such as Ship-to-home, Omnichannel, and 'Buy Online Pickup In-Store' order placement.
#### How can I begin using fabric's Inventory module?
fabric’s Inventory module is typically packaged with fabric Orders (also called OMS). It provides enterprise-level inventory visibility with network aggregation and enables updating of order fulfillment logic without coding.
To get started using fabric’s Inventory module, follow these steps:
1. Sign up or log in to your fabric account.
2. Get an access token from fabric Copilot or using the [fetch access token](/v3/getting-started/authentication-v3/authentication-endpoints/fetch-access-token) endpoint.
3. Familiarize yourself with the core concepts such as [Location](/v3/orders-and-inventory/api-reference/inventory/locations/overview), [Inventory](/v3/orders-and-inventory/api-reference/inventory/inventory/overview), [Network](/v3/orders-and-inventory/user-guides/inventory/networks), Counter, Virtual Counter, and other available features and options as described in the guide.
4. [Import](/v3/orders-and-inventory/api-reference/inventory/inventory/overview#importing-inventory) or add your initial inventory data.
5. Set up any additional configurations or preferences specific to your needs.
#### What are the differences between counters and virtual counters in fabric?
**Counters**, also called base counters, refer to inventory positions such as `onHand`, `Allocated`, `Shipped`, and any other counters that are configured using the counter endpoint. These values can be updated through the **Inventory detail** page in fabric Copilot or using the adjustment endpoint- POST/v3/inventories/actions/find-and-adjust-inventory-counters. This lets you increase or decrease the counter quantity, but it doesn't allow you to change other inventory details. Alternatively, you can use the update inventory endpoint- POST/v3/inventories/action/find-and-update, which allows you to update both the counter quantity and other inventory details.
**Virtual counters** refer to the aggregation of real-time inventory availability. The inventory virtual counters are viewable on the inventory landing page in fabric Copilot. Their calculation from counters is configured in the virtual counter calculation. Basically, these are computed from counters at runtime. For example, `availableToPurchase = onHand - allocated - shipped`.
#### What's the significance of inventory-imports in fabric’s Inventory module?
For most retailers with a warehouse, point of sale, or other inventory source of truth system, the first step to begin using fabric Inventory (after generating your access token) is importing your inventory. As a user of fabric Inventory, you should integrate your one or many inventory systems of record, such as WMS, ERP, or POS, with fabric Inventory. This allows fabric Inventory to manage a SSOT ('Single Source of Truth') for reference of inventory in your commerce applications including storefronts, search functionalities, and other areas within your ecommerce solution architecture.
#### How can retailers integrate existing inventory systems with fabric Inventory?
**Single Inventory Management System**
If retailers have a single system of record for inventory, the inventory-import process doesn't require any configuration for multiple file groups. If retailers don't have a need to manage inventory aggregation, order fulfillment, or location data in fabric OMS (also called Orders), they can start importing inventory against the default location using the Import API. To import your inventory data to fabric, you must upload a CSV file with all inventory details. You can download sample CSVs from Copilot within the inventory import modal, for your reference.
**Multiple Inventory Management Systems**
If retailers have multiple systems of record for inventory, they can use the "file groups" feature to configure their inventory feeds in fabric. This feature ensures that inventory updates are limited to the specific group of locations corresponding to the inventory system performing the upload
**Inventory updates in real-time with event-driven data streaming**
If retailers want a more real time approach than relying solely on CSV-driven bulk imports, we recommend to directly update inventory levels on a single-inventory basis using the update [inventory API](/v3/orders-and-inventory/api-reference/inventory/inventory/adjust-inventory-counters). To create or update inventory, you must provide the necessary fields including SKU, item ID, location, channel ID, and counters. If you are exclusively using the fabric Inventory module without the fabric Orders (OMS) module, you must manually update the reserved, allocated, and shipped counter quantities as orders are fulfilled.
#### Why should I use fabric Inventory as a Single Source of Truth for my Inventory?
For retailers with distributed inventory, fabric Inventory is an optimal solution for effectively managing the aggregation of real-time inventory into a Single Source of Truth (SSOT). For each location you want to manage inventory for, a location with a unique location number must exist. In addition, you can configure networks of locations sharing inventory using Network APIs.
For testing purposes, fabric Inventory is pre-configured with a default location where all inventory is initially assigned. To manage inventory for each specific location, it's necessary to have a unique location number to every SKU during bulk upload. You can configure networks of locations that share inventory, by using the Networks interface.
#### How do I manage Inventory aggregation in fabric?
Inventory aggregation rules can vary from simple to very complex. This is possible through the Network service of fabric’s Inventory module, which facilitates a real-time inventory aggregation functionality.
**Simple Aggregation**
If you manage inventory aggregation in an external system and don't plan to manage it within fabric, or if you don't have complex distributed fulfillment and inventory requirements, then the Simple Aggregation approach within fabric Inventory's Network feature may be suitable for your usage.
Your default network configuration is simple and requires no additional configuration to automatically aggregate all inventory in your “Sandbox” environment instance of fabric. This is possible because the rules in your default “starter” Network contains a rule for your default Location which dictates that, as long as the location `isActive` flag is set to “TRUE,” all inventory uploaded for your default location will be included in the aggregated inventory availability.
**Complex Aggregation**
Your network configuration can also be very complex. fabric’s Inventory Networks support the ability to create groups of inventory by defining “Inventory Networks” with inclusion and exclusion rules for inventory aggregation. Inventory Networks can aggregate inventory across groups of fulfillment centers for different selling requirements such as channels, brands, or fulfillment method eligibility. For example, you may want to create “Network C,” for domestic selling which includes all stores and warehouses, and “Warehouse Network,” for International selling which only includes warehouses. This can be achieved with the following two steps:
* First, create the rules ([https://developer.fabric.inc/v3/reference/createnetwork](/v3/orders-and-inventory/api-reference/inventory/networks/create-inventory-network))for how inventory is aggregated in stores and warehouses. You may want to set up a rule set for “Network A” called “Store Network” and another rule set for “Network B” called “Warehouse Network,” each of which can have different inclusion and exclusion parameters based on the attributes of your location and product data.
* In the second step, you may want to set up “Network C,” naming it “Domestic Selling,” and making it a “Multiple Network” type which is created by selecting the store inventory and warehouse inventory through the Multiple Network setup process. Now, you have a way to combine inventory pools for Domestic, while simply relying on the “Warehouse Network” for International selling. For both networks, you can call the Inventory API to look up inventory in real-time on the storefront, such as the Product Display Page (PDP) and other use cases, by passing the network code in the request object.
Before utilizing Complex Aggregation to use product data in fabric’s Network rule-setting interface, you must decide whether to use fabric's Product Catalog or a third-party product information management system. If you are using a third-party system, you must provide product details to fabric’s Catalog Connector.
To use product data in the Network rule-setting interface, decide whether you are using fabric’s Product Catalog or a third-party product information management system. If using a third-party system, you need to provide product details to the Catalog Connector.
Also, define your location details using the Locations service through either [Copilot](/v3/orders-and-inventory/api-reference/orders/backorders-preorders/overview) or the [APIs](/v3/orders-and-inventory/api-reference/inventory/locations/overview). You may also configure custom attributes on the location model if you want to extend the JSON data model to support more fields.
**Note:** Custom attributes only support key-value data in a single “attributes” object of the service collection response format. Once a custom attribute is configured, it will apply for all data in the service collection.
#### What are the advanced configurations and features of fabric’s Inventory service?
**1. Backorder and Preorder**
Managing backorder and preorder inventory follows the same workflows as regular inventory, allowing seamless management through both [Copilot](/docs/orders-pre-order-and-backorder) and [API interfaces](/v3/orders-and-inventory/api-reference/orders/backorders-preorders/overview). In the fabric Inventory module, the primary feature of Backorder and Preorder is the ability to reduce the available quantity of backorder or preorder products so that the inventory remains balanced even when orders are placed, and the inventory is marked as `OnHand` for availability.
**2. Safety Stock and Low Stock Setting**
In addition to the import-inventory and network features, you may configure values for `safetyStock` and `lowStock` fields while creating or updating either networks or inventory.
**3. Infinite Inventory Flag**
If you want to represent an inventory in unlimited quantities, you may set `infiniteInventory` to 'true' and reference that attribute on the storefront and other downstream systems consuming inventory from fabric.
#### Can I use fabric Inventory without using the fabric Orders module. If so, how?
Yes, fabric provides the flexibility of using only Inventory service independently without implementing the whole of fabric’s order management system into your business.
If you're not using the fabric Orders module, you must manually update the 'allocated' and 'shipped' counters using the [adjust inventory endpoint](/v3/orders-and-inventory/api-reference/inventory/inventory/adjust-inventory-counters) every time an order is created, allocated, and shipped. Similarly, you will have to update inventory records using the [update inventory endpoint](/v3/orders-and-inventory/api-reference/inventory/inventory/update-inventory-by-adding-new-property). When updating the `onHand` counter, remember that the 'availableToPurchase' quantity is calculated based on the default formula `onHand - allocated - shipped - safetyStock`. Note that the `availableToPurchase` quantity can be customized based on requirement. Contact fabric Support to customize `availableToPurchase`.
#### How can I upload inventory data from multiple sources?
To upload inventory data from multiple sources, you must create an upload URL by using the bulk operation endpoint. Prepare a .csv file with all the inventory details from your POS, WMS, or other sources, then upload this file to the URL you have created.
# Getting Started with Inventory
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/inventory/overview
Inventory Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Inventory** API lets organizations use *Inventory* as a standalone service, which functions as the repository of product availability for order fulfillment. Typically, Storefront Websites use the Inventory service to retrieve data, while Warehouse Management Systems (WMS) use it to create and update inventory details. fabric's Inventory API includes high-performance endpoints built on highly scalable architecture, and includes a configurable data model to orchestrate the inventory lifecycle events.
# Update inventory by adding new property
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/inventory/update-inventory-by-adding-new-property
inventory.openapi post /inventories/actions/find-and-update
Add a new property to existing inventory. **Note:** This endpoint does not override all the existing properties; rather it updates inventory by adding new properties or by updating the existing inventory properties that are specified in the request body. Inventory is identified based on the combination of location number, channel ID, and item ID or SKU.
# Get allocation by ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/allocations/get-allocation-by-id
allocations.openapi get /allocations/{allocationId}
Get allocation details by allocation ID. The allocation ID can be obtained using the `/allocations/search` endpoint or stored externally, for example, in the WMS order database.
# Getting Started with Allocations
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/allocations/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Allocations** API lets retailers manage allocation for existing orders. Allocations serve as records of the locations from which an order is fulfilled. The user of the Allocation service is a Warehouse Management Service (WMS) or Point of Sale Service (POS).
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/ordersAllocations.json)
# Search for allocations by query
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/allocations/search-for-allocations-by-query
allocations.openapi post /allocations/search
Search for inventory allocations based on the matching filter criteria.
# Update allocation or initiate reallocation
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/allocations/update-allocation-or-initiate-reallocation
allocations.openapi put /allocations/allocation-request-id/{allocationRequestId}
Update allocation or initiate reallocation of the order by `allocationRequestId`.
# Update allocation attributes
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/allocations/update-attributes
allocations.openapi post /allocations/{allocationId}/actions/update-attributes
Update allocation attributes by `allocationId`.
# Create appeasement by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/appeasements/create-appeasement-by-order-id
orders.openapi post /orders/{orderId}/actions/create-appeasement
When customer is dissatisfied with their shopping experience, you may want to offer an appeasements amount such as partial refund to keep them happy. This endpoint is used to create appeasement request by order ID
. **Note**: If you do not have an order ID, but have an order number, use the order number-based endpoint - `POST /orders/order-number/{orderNumber}/actions/create-appeasement`.
# Create appeasement by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/appeasements/create-appeasement-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/create-appeasement
When customer is dissatisfied with their shopping experience, you may want to offer an appeasement amount to keep them happy. This endpoint is used to create appeasement request by order number.
**Note**: If you don't have order number, use the corresponding order ID-based endpoint - `POST /orders/{orderId}/actions/create-appeasement`
# Getting Started with Appeasements
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/appeasements/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Appeasements** API endpoints help create appeasements.
# Get backorder or preorder details by ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/backorders-preorders/get-backorder-or-preorder-details-by-id
backorders-preorders.openapi get /backorders-preorders/{id}
Get backorder or preorder reservation details by ID.
# Getting Started with Backorders & Preorders
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/backorders-preorders/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Backorders and Preorders** API refer to orders placed for products not currently available for shipment or sale. Backorders are orders for out-of-stock products that will be shipped to customers as soon as they're available for shipment. Preorders are orders for products that aren't yet available in the market, but will be launched for sale. Customers can preorder products, and the products will be shipped when they're available for sale. fabric's Backorders & Preorders API supports multi-tenant service.
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/ordersBackorders.json)
# Record customer agreement to delay shipment
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/backorders-preorders/record-customer-agreement-to-delay-shipment
backorders-preorders.openapi post /backorders-preorders/{id}/actions/save-delay-consent
Record customer's agreement to delay the shipment.
# Search for backorders or preorders by query
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/backorders-preorders/search-for-backorders-or-preorders-by-query
backorders-preorders.openapi post /backorders-preorders/search
Search for the backorder or preorder reservations based on filter criteria.
# Cancel order by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/cancellations/cancel-order-by-order-id
orders.openapi post /orders/{orderId}/actions/cancel
When customer's order cancellation request is determined to be eligible, this endpoint processes the cancellation by order ID. **Note**: If you do not have the order number, use the corresponding order number-based endpoint - `POST /orders/order-number/{orderNumber}/actions/cancel`.
# Cancel order by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/cancellations/cancel-order-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/cancel
When customer's order cancellation request is determined to be eligible, this endpoint processes the cancellation by order number. **Note**: If you do not have order number, use the corresponding order ID-based endpoint - `POST /orders/{orderId}/actions/cancel`.
# Get order cancellation eligibility by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/cancellations/get-order-cancellation-eligibility-by-order-id
orders.openapi post /orders/{orderId}/actions/check-cancel-eligibility
Either customer may initiate cancellation due to an incorrect order placement or as a merchant, you may initiate cancellation due to product unavailability, pricing errors, payment failure, or shipping restrictions. Before processing cancellation, it's crucial to determine the eligibility of the cancellation request. This endpoint gets the eligibility of order cancellation by order ID. You can additionally specify `lineItemIds` to get the eligibility of specific line items.
**Note**: If you do not have order ID, use the corresponding order number-based endpoint -`POST /orders/order-number/{orderNumber}/actions/check-exchange-eligibility`.
# Get order cancellation eligibility by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/cancellations/get-order-cancellation-eligibility-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/check-cancel-eligibility
Either customer may initiate cancellation due to an incorrect order placement or as a merchant, you may initiate cancellation due to product unavailability, pricing errors, payment failure, or shipping restrictions. Before processing cancellation, it's crucial to determine the eligibility of the cancellation request. This endpoint gets the eligibility of the cancellation request by order number. You can additionally specify `lineItemIds` to get the eligibility of specific line items.
**Note**: If you do not have order number, use the corresponding order ID-based endpoint - `/orders/{orderId}/actions/check-cancel-eligibility`.
# Getting Started with Cancellations
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/cancellations/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Cancellations** API endpoints check eligibility of order cancellation requests and if eligible, processes order cancellation.
# Check credits eligibility by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/credits/check-credits-eligibility-by-order-id
orders.openapi post /orders/{orderId}/actions/check-credits-eligibility
In case of refund scenarios, credits such as gift card may be offered to customers for various reasons such as damaged products, later deliveries, or other qualifying factors as per your policy. This endpoint checks the credits eligibility by order ID, allowing businesses to manage credits effectively and provide appropriate compensation to eligible customers.
# Create credits by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/credits/create-credits-by-order-id
orders.openapi post /orders/{orderId}/actions/create-credits
Use this endpoint to create credits by order ID.
# Create credits by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/credits/create-credits-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/create-credits
The following endpoint is used to create credits using an order number.
# Update credit status by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/credits/update-credit-status-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/update-credit-status
The update credit status endpoint is used to update the credits status, notes, and additional credit attributes.
# Update credits by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/credits/update-credits-by-order-id
orders.openapi post /orders/{orderId}/actions/update-credit-status
Use this endpoint to update the credit status, as well as to add any associated notes and additional attributes.
# Export data by query
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/exports/export-data-by-query
exports.openapi post /oms-exports
Initiate data export by the given filter criteria.
# Get export job by exportId
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/exports/get-export-job-by-exportid
exports.openapi get /oms-exports/{exportId}
Get details of a specific export job by specified `exportId`.
# Get export jobs by query
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/exports/get-export-jobs-by-query
exports.openapi post /oms-exports/search
Get a paginated list of all the export jobs based on the filter criteria specified in the request body.
# Get file headers by module
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/exports/get-file-headers-by-module
exports.openapi get /oms-exports/module-headers/{module}
Get the list of file headers for a given module.**Note:** File headers are basically the column headers or titles of the exported document.
# Cancel fraud order by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/frauds/cancel-fraud-order-by-order-id
orders.openapi post /orders/{orderId}/actions/fraud-cancel
If an order is suspected to be fraudulent, it is immediately placed on hold for verification. After verification, if it is confirmed as fraudulent, this endpoint is used to cancel the order. **Note**: If you do not have order ID, use the corresponding order number-based endpoint - `POST - /orders/order-number/{orderNumber}/actions/fraud-cancel`
# Cancel fraud order by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/frauds/cancel-fraud-order-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/fraud-cancel
If an order is suspected to be fraudulent, it is immediately placed on hold for verification. After verification, if it's confirmed as fraudulent, this endpoint is used to cancel the order by order number. **Note**: If you don't have order number, use the corresponding order ID-based endpoint - `POST /orders/{orderId}/actions/fraud-cancel`.
# Getting Started with Frauds
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/frauds/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Frauds** API endpoints deal with potential fraud orders.
# Release fraud order
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/frauds/release-fraud-order
orders.openapi post /orders/order-number/{orderNumber}/actions/fraud-release
If an order is suspected to be fraudulent, it is immediately placed on hold for verification. After verification, if it is confirmed as non-fraudulent, this endpoint is used to release the order from hold, by order number so that it can be processed. **Note**: When you don't have order number, use the corresponding order ID-based endpoint - `POST /orders/{orderId}/actions/fraud-release`.
# Release fraud order by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/frauds/release-fraud-order-by-order-id
orders.openapi post /orders/{orderId}/actions/fraud-release
If an order is suspected to be fraudulent, it is immediately placed on hold for verification. After verification, if it is confirmed as non-fraudulent, this endpoint is used to release the order from hold, by order ID, so that it can be processed. **Note**: When you don't have order ID, use the corresponding order number-based endpoint - `POST /orders/order-number/{orderNumber}/actions/fraud-release`.
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/cancel-inventory-transfer
shipments.openapi post /shipments/inventory-transfer/{transferShipmentId}/action/cancel
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/create-inventory-transfer
shipments.openapi post /shipments/inventory-transfer
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/get-inventory-transfer-by-transfershipmentid
shipments.openapi get /shipments/inventory-transfer/{transferShipmentId}
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/inventory-transfer-query
shipments.openapi post /shipments/inventory-transfer/query
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/inventory-transfer-search
shipments.openapi post /shipments/inventory-transfer/search
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/package-tracking-acknowledge
shipments.openapi post /shipments/inventory-transfer/{transferShipmentId}/actions/package-tracking-acknowledge
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/packing-and-unpacking
shipments.openapi post /shipments/inventory-transfer/pack-unpack
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/receive-inventory-tracking
shipments.openapi post /shipments/inventory-transfer/{transferShipmentId}/action/receiving
# null
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/inventory-transfer/update-tracking-for-an-inventory-transfer
shipments.openapi post /shipments/inventory-transfer/actions/update-tracking
# Acknowledge financial transaction
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/invoices/acknowledge-financial-transaction
invoices.openapi post /invoices/{invoiceId}/acknowledge
When an order is created or processed, fabric generates invoice and sends it to merchants or third-party systems for further financial processing of the order. This endpoint lets merchants acknowledge that they have received the invoice with payment information.
# Get invoice by ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/invoices/get-invoice-by-id
invoices.openapi get /invoices/{invoiceId}
Get details of an invoice by invoice ID.
# Getting Started with Invoices
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/invoices/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Invoices** API helps in generating invoices that can be used by any third party system for order fulfillment operation.
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/ordersInvoices.json)
# Search for invoices
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/invoices/search-for-invoices
invoices.openapi post /invoices/search
Search for invoices by matching filter criteria.
# Get acknowledgment receipt for notification
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/notifications/get-acknowledgment-receipt-for-notification
notifications.openapi post /oms-notifications/acknowledge
This endpoint gets notification acknowledgment from external service.
# Getting Started with Notifications
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/notifications/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Notifications** API enables you (Storefronts) to resend notifications to customers for specific order-related events, such as confirmation, status updates, cancellations, and more. it's also used to get notification acknowledgements from external services.
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/ordersNotifications.json)
# Resend notifications
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/notifications/resend-notifications
notifications.openapi post /oms-notifications/actions/resend
When an order is placed, the first notification is automatically sent to shopper. If the first notification isn't delivered for reasons such as incorrect email or server issues, this endpoint resends notification for specific events.
# Check appeasement eligibility by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/check-appeasement-eligibility
orders.openapi post /orders/order-number/{orderNumber}/actions/check-appeasement-eligibility
This endpoint checks for the appeasement eligibility of an order by order number.
# Check appeasement eligibility by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/check-appeasement-eligibility-by-id
orders.openapi post /orders/{orderId}/actions/check-appeasement-eligibility
This endpoint checks for the appeasement eligibility of an order by orderId.
# Check credits eligibility by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/check-credit-eligibility
orders.openapi post /orders/order-number/{orderNumber}/actions/check-credits-eligibility
When processing refunds, credits such as a gift card may be offered to customers for various reasons such as damaged products, later deliveries, or other qualifying factors as per your policy. This endpoint checks the credits eligibility by order number, allowing you to manage credits effectively and provide appropriate compensation to eligible customers.
# Get order exchange eligibility by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/check-exchange-eligibility
orders.openapi post /orders/order-number/{orderNumber}/actions/check-exchange-eligibility
Customers may want exchange an item because of size, fit, color, or style preferences. Before processing exchange, it's crucial to verify whether the item is eligible for exchange as per your policy. This endpoint gets the exchange eligibility by order number. You can additionally specify `lineItemId` to get eligibility for a specific item.
**Note**: If you do not have the order number, but have the order ID, use the order ID-based endpoint - `POST /orders/{orderId}/actions/check-exchange-eligibility`.
# Create new order
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/create-new-order
orders.openapi post /orders
This endpoint creates a new order in the fabric Orders (OMS) system, regardless of whether it originates from fabric CnC service or an external system. The response includes an order ID, which is required for subsequent calls such as updating pickup information, getting order details, verifying eligibility for order cancellations, returns, exchanges, as well as creating appeasements, and processing order returns, cancellations, and exchanges.
# Find orders
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/find-orders
orders.openapi post /orders/search
Customers may want to review their past orders or, as merchants, you may have to answer queries related to past orders, and analyze sales. To support the previously mentioned use cases, this endpoint searches for orders based on filter conditions specified in the request body. By using `offset` and `limit` you can refine the search results. When they are not specified, you will get up to 10 results.
# Get order by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/get-order-by-order-id
orders.openapi get /orders/{orderId}
As a merchant, you may need to review or monitor an order to answer customer inquiries, resolve a complaint, or for analytics and reporting. With this endpoint, you can get order details by order ID. **Note**: If you do not have the order ID, use the corresponding order number-based endpoint - `GET /orders/order-number/{orderNumber}`.
# Get order by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/get-order-by-order-number
orders.openapi get /orders/order-number/{orderNumber}
As a merchant, you may need to review or monitor an order to answer customer inquiries, resolve a complaint or for analytics and reporting. With this endpoint, you can get order details by order number. **Note**: If you do not have the order number, use the corresponding order ID-based endpoint - `GET /orders/{orderId}`.
# Getting Started with Orders
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Orders** API is a scalable multi-tenant service designed to streamline your order management process. Orders API is a REST and JSON driven interface enabling retailers to create orders directly from online Storefronts and Point-of-Sale systems, and serve as records of purchase transactions to permit retailers to operate against a standard schema with varied purchase channels.
fabric Orders API creates orders real time in the orders database, unifying the order data for users to streamline order lifecycle orchestration and customer service operations. It offers a range of features including the ability to create orders, get orders, update pickup details, and track orders, as well as search for existing orders. Also, the Orders API makes it easy to check eligibility of return, cancel, and exchange requests as well process them, if eligible. In addition, you can flag fraudulent orders based on due diligence, and either release them from hold or cancel them altogether. The appeasement feature helps you resolve any issues that may arise with an order and keep your customers happy.
# Update Shipping information for an existing order by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/update-attributes
orders.openapi post /orders/order-number/{orderNumber}/actions/update-attributes
The following endpoint is used to update attributes by order number.
# Update Order Attributes
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/update-attributes-by-id
orders.openapi post /orders/{orderId}/actions/update-attributes
The update attributes endpoint is used to update order attributes using the order ID. Attributes can be updated in the integration layer to modify external system related information.
# Update customer details for given order IDs
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/update-customer-details-for-given-order-ids
orders.openapi post /orders/actions/update-customer
In many scenarios, customer details may change over time. For example, a customer might change their email, phone, or company affiliation. By providing the order IDs and the updated customer details, this endpoint facilitates updating customer info for the given order IDs. This ensures order-related communication reaches the customer and they get timely customer service.
# Updates order pick-up details
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/orders/updates-order-pick-up-details
orders.openapi put /orders/{orderId}/ship-info/{shipToId}/pickup
Customers can choose to either have their order delivered to them or opt to pick up from a store or warehouse. In a Buy Online Pickup in Store (BOPIS) scenario, there may be situations when the primary pickup person has changed. This endpoint allows for the updating pickup person details in BOPIS, ensuring that the most up-to-date information is available.
# Authorize order payments
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/payments/authorize-payments
orders.openapi post /orders/actions/authorize-payments
This endpoint is used synchronously or asynchronously for authorizing order payments pending for authorization.
# Getting Started with Order Payments
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/payments/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Order Payments** API endpoints update payment status.
# Update order payment status by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/payments/update-order-payment-status-by-order-id
orders.openapi post /orders/{orderId}/actions/update-payment-status
This endpoint is used sync order payments when transactions happen externally. Additionally, used for updating order payment status and the amount, whether it is captured, refunded or void amount. If you don't have order ID, use the corresponding order number-based endpoint - POST /orders/order-number/{orderNumber}/actions/update-payment-status.
# Update status of order payment by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/payments/update-status-of-order-payment-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/update-payment-status
This endpoint is used sync order payments when transactions happen externally. Additionally, used for updating order payment status and the amount, whether it is captured, refunded or void amount. If you don't have order number, use the corresponding order ID-based endpoint - POST /orders/{orderId}/actions/update-payment-status.
# Get eligibility of returns for items in an order by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/returns/get-eligibility-of-returns-for-items-in-an-order-by-order-id
orders.openapi post /orders/{orderId}/actions/check-return-eligibility
Customers may want to return one or more items because they do not meet the expectations or customer has changed their mind. Before processing return, it's crucial to verify whether the items are eligible for return as per your policy This endpoint gets the eligibility of your return by order number. You can additionally specify `lineItemId` to get the eligibility of a single line item.
**Note**: If you do not have the order ID, use the corresponding order number-based endpoint - `POST /orders/order-number/{orderNumber}/actions/check-return-eligibility`.
# Get order exchange eligibility by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/returns/get-order-exchange-eligibility-by-order-id
orders.openapi post /orders/{orderId}/actions/check-exchange-eligibility
Customers may want exchange an item because of size, color, or style preferences. Before processing exchange, it's crucial to verify whether the item is eligible for exchange as per your policy. This endpoint gets the eligibility of exchange request by order number. You can additionally specify `lineItemId` to get eligibility of a specific item.
**Note**: If you do not have the order ID, but have the order number, use the order number-based endpoint - `POST /orders/order-number/{orderNumber}/actions/check-exchange-eligibility`.
# Get order exchange eligibility by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/returns/get-order-exchange-eligibility-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/check-exchange-eligibility
Customers may want exchange an item because of size, fit, color, or style preferences. Before processing exchange, it's crucial to verify whether the item is eligible for exchange as per your policy. This endpoint gets the exchange eligibility by order number. You can additionally specify `lineItemId` to get eligibility for a specific item.
**Note**: If you do not have the order number, but have the order ID, use the order ID-based endpoint - `POST /orders/{orderId}/actions/check-exchange-eligibility`.
# Get return eligibility by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/returns/get-return-eligibility-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/check-return-eligibility
Customers may want to return one or more items because they do not meet the expectations or customer has changed their mind. Before processing return, it's crucial to verify whether the items are eligible for return as per your policy This endpoint gets the eligibility of return by order number. You can additionally specify `lineItemId` to get the eligibility of a single line item.
**Note**: If you do not have the order number, use the corresponding order ID-based endpoint - `POST /orders/{orderId}/actions/check-return-eligibility`.
# Order return by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/returns/order-return-by-order-id
orders.openapi post /orders/{orderId}/actions/submit-return-request
When customer's return request is found to be eligible, this endpoint submits the return request by order ID. **Note**: If you do not have order ID, use the corresponding order number-based endpoint- `POST /orders/order-number/{orderNumber}/actions/submit-return-request`.
# Order return by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/returns/order-return-by-order-number
orders.openapi post /orders/order-number/{orderNumber}/actions/submit-return-request
When the customer's return request is determined to be eligible, this endpoint is used to process the return request. **Note**: If you do not have the order number, but have order ID, use Return order by order ID endpoint - `POST /orders/{orderId}/actions/submit-return-request`.
# Getting Started with Returns
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/returns/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Returns** API endpoints check eligibility of order return or exchanges requests and, if eligible, processes order return or exchanges.
# Acknowledge shipment
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/acknowledge-shipment
shipments.openapi post /shipments/{shipmentId}/acknowledge
For users of fabric Webhook Service, Shipment related events can trigger HTTP callbacks to notify web clients through a merchant-defined URL/URI, typically an API Gateway for a middleware. While the response to fabric Webhook service HTTP call-back may occur, a secondary call-back can use this Acknowledge Shipment endpoint to indicate that a secondary external system has acknowledged this shipment event. Middleware receives the event, transforms it in a suitable format, and sends a success response back to fabric, confirming it received the event. It also sends the transformed event to an external merchant system (typically in XML or JSON).With this endpoint, middleware immediately sends an asynchronous acknowledgement to fabric, based on shipping ID, to indicate whether the call was successful. This acknowledgement is used for learning, auditing, and taking any necessary action.
# Create new shipment
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/create-new-shipment
shipments.openapi post /shipments
To use this endpoint an “allocation” must exist for the order that's being shipped. When an order is placed, fabric sends allocation details to external merchant system to create order fulfillment requirement details in an external system. With reference to the allocation that's being shipped, users of this POST API can create shipment details for allocations. **Note**: Shipment ID generated as part of the response is required for subsequent calls such as Acknowledge shipment (`POST /shipments/{shipmentId}/acknowledge`) and Get shipment (`GET /shipments/{shipmentId}`).
# Create re-shipment
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/create-re-shipment
shipments.openapi post /shipments/actions/re-ship
Orders may go missing before they're delivered to customers for reasons such as incorrect address, theft, labelling issues, or other reasons. This endpoint triggers reshipment in such cases for the existing location. **Note**: Shipment ID generated as part of the response is required for subsequent calls such as Acknowledge shipment (POST /shipments/{shipmentId}/acknowledge) and Get shipment (GET /shipments/{shipmentId}).
# Find shipments
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/find-shipments
shipments.openapi post /shipments/search
As merchants, you may want to view shipments of specific statuses, monitor progress of deliveries, and proactively manage situations to ensure timely deliveries. This endpoint enables you to easily search for shipments based on the specified criteria in the request body. You can refine your search by specifying `limit` and `offset`. When they're not specified, by default you will get up to 10 records. In addition, you can `sort` results.
# Get shipment by ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/get-shipment-by-id
shipments.openapi get /shipments/{shipmentId}
As merchants, you may want to resolve customer queries related to shipment or track a specific shipment to manage customer expectations with timely communication. This endpoint gets details of a single shipment by ID. You will get `shipmentId` by using the search endpoint, or by referencing a `shipmentId` on a file such as the Invoice.
# Getting Started with Shipments
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Shipments** API is a multi-tenant service that enables you to manage shipments for existing 'Allocations.' Shipments serve as records of the locations from which an order was fulfilled. Typical user of fabric Shipment service is a Warehouse management service or Point of Sale service.
**Note**: Shipment API relies on the Allocation service to send allocation details to external merchant systems after an order is placed. Allocation is the prerequisite for using Shipment API.
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/ordersShipments.json)
# Update gift card activation status
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/update-gift-card-activation-status
shipments.openapi post /shipments/{shipmentId}/actions/update-gift-cards-status
This endpoint is used to activate gift cards before they're delivered to the customer. Typically used by “adapters” or external web services integrated with gift card applications, so that gift cards can be activated as part of the fabric fulfillment workflow.
# Update shipment tracking
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/shipments/update-shipment-tracking
shipments.openapi post /shipments/actions/update-tracking
The update tracking endpoint creates a new tracking log that can be used to update the order status. The most common application of this endpoint is to connect to external web services or 'adapters' that have been integrated with carrier tracking applications. With this endpoint, fabric Shipment service gets information from carrier tracking applications, and in turn, updates customers about their shipment status.
# Get acknowledgement for package tracking by order number
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/tracking/get-acknowledgement-for-package-tracking-by-order-number
orders.openapi put /orders/order-number/{orderNumber}/actions/package-tracking-acknowledge
This endpoint gets acknowledgement of package tracking by order number. **Note**: If you do not have order number, use the corresponding order ID-based endpoint - `PUT /orders/{orderId}/actions/package-tracking-acknowledge`.
# Get package tracking acknowledgement by order ID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/tracking/get-package-tracking-acknowledgement-by-order-id
orders.openapi put /orders/{orderId}/actions/package-tracking-acknowledge
This endpoint gets acknowledgement of package tracking by order ID. **Note**: If you do not have order ID, use the corresponding order number-based endpoint - `PUT /orders/order-number/{orderNumber}/actions/package-tracking-acknowledge`.
# Getting Started with Tracking
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/orders/tracking/overview
Orders Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Tracking** API endpoints track orders.
# Adjust inventory counters
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/inventory/adjust-inventory-counters
inventory.openapi post /inventories/actions/find-and-adjust-inventory-counters
With this endpoint, you can modify inventory counters (also known as inventory positions) to maintain accurate inventory records. These counters are adjusted when new inventory is received or when an item is shipped. If the inventory does not exist, an error message will be displayed. An inventory can have multiple counters, and all counters will be updated when this endpoint is used.
# Create inventory
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/inventory/create-inventory
inventory.openapi post /inventories
Create inventory based on the combination of location number, channel ID, and item ID or SKU.
# Find inventories of specific items
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/inventory/find-inventories-of-specific-items
inventory.openapi post /inventories/actions/find
Search for inventories of specific items by SKUs, itemIds, location numbers, and other parameters as specified in the request body. This endpoint retrieves the exact available quantity of the searched inventory.
# Find inventory of specific items in a specific region
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/inventory/find-inventory-of-specific-items-in-a-specific-region
inventory.openapi post /inventories/actions/find-by-geography
Search for list of inventories of specific items in a specific region based on SKUs, postal code, latitude, longitude, and other details of the location as specified in the request body.
# Search for inventories
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/inventory/search-for-inventories
inventory.openapi post /inventories/search
Search for inventories based on filter criteria.
# Cancel an outage using outageNumber
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/cancel-outage-by-outage-number
locations.openapi post /location-outages/outage-number/{outageNumber}/actions/cancel
Using the location outages cancel endpoint you can cancel a location outage by providing the `outageNumber`.
# Cancel an outage using outageID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/cancel-outage-by-outageid
locations.openapi post /location-outages/{outageId}/actions/cancel
The location outages cancel endpoint is used to cancel an outage by providing the `outageId`.
# Create a location
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/create-a-location
locations.openapi post /locations
Create a location to use for managing inventory and orders.
# Create Outage
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/create-location-outage
locations.openapi post /location-outages
The location outages endpoint is used to create a location outage.
# Delete a location
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/delete-a-location
locations.openapi delete /locations/{locationNumber}
Delete a location by location number.
# Get LocationOutages by query
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/find-location-outage
locations.openapi post /location-outages/search
Get a filtered list of LocationOutages.
# Get a specific location
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/get-a-specific-location
locations.openapi get /locations/{locationNumber}
Get a specific location by location number.
# Get locations by query
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/get-locations-by-query
locations.openapi post /locations/search
Get a list of locations by specified filter criteria.
# Getting Started with Locations
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/overview
Inventory Support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | URL: [https://www.fabric.inc](https://www.fabric.inc) | License: [fabric API License](https://fabric.inc/api-license)
fabric **Locations** API provides location endpoints that support multi-tenant services. This location data is used for both inventory management and order management. When an order is created, it's allocated to the nearest location according to the Order Fulfillment Logic.
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/inventoryLocations.json)
# Search for nearby locations
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/search-for-nearby-locations
locations.openapi post /locations/geography-search
Search for nearby locations based on city name, state, postal code, and other geographical details as mentioned in the request body.
# Update a specific location
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/update-a-specific-location
locations.openapi put /locations/{locationNumber}
Update details of a specific location by location number.
# Update an outage by outageNumber
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/update-outage-by-outage-number
locations.openapi put /location-outages/outage-number/{outageNumber}
You can use the location outages outage number endpoint to update the details of a specific location outage by providing its outageNumber.
# Update an outage using outageID
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/locations/update-outage-by-outageid
locations.openapi put /location-outages/{outageId}
Update the details of a specified location outage by providing the `outageId`.
# Create inventory network
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/create-inventory-network
inventory.openapi post /inventory-networks
Create a network using conditional rules to add locations and SKU to the network.
# Delete network by code
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/delete-network-by-code
inventory.openapi delete /inventory-networks/{networkCode}
Delete a specific network, with all its details, by specified network code. Once deleted, it can't be undone.
# Get all networks
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/get-all-networks
inventory.openapi get /inventory-networks
Get a paginated list of all the created networks.
# Get network by code
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/get-network-by-code
inventory.openapi get /inventory-networks/{networkCode}
Get details of a specific network by code.
# Search for inventory hard reservations
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/search-hard-reserve
inventory.openapi post /inventories/actions/hard-reserve-search
Search for hard reservations based on filter criteria.
# Release soft reservation
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/soft-release
inventory.openapi post /inventory-networks/actions/soft-release
Release soft reservation.
# Soft reservation
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/soft-reserve
inventory.openapi post /inventory-networks/actions/soft-reserve
Soft reserve quantity.
# Update network by code
Source: https://developer.fabric.inc/v3/orders-and-inventory/api-reference/inventory/networks/update-network-by-code
inventory.openapi put /inventory-networks/{networkCode}
Update details of a specific inventory network by specified network code.
# Attributes Mapping
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes-mapping/overview
fabric has a predefined set of mandatory attributes for `Items` and `Categories`. However, as merchants, you may have your own naming conventions for these attributes. For instance, a mandatory attribute 'unique item identifier' may be referred to as `SKU` by fabric and as `productId` by merchant. To address this inconsistency, merchant-defined attributes are mapped to fabric attributes as productId -> fabric SKU. These endpoints are used to get and update mapping of attributes.
# Create attribute
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes/create-attribute
attribute.openapi post /product-attributes
In fabric **Product Catalog**, both products (Items, Variants, and Bundles) and categories have attributes. For products, they may be technical specifications like size, weight, etc., design specifications like color, material, etc. For Categories, they may be basic specifications such as name, description, ID, etc. This endpoint creates attributes that can be assigned to a `target` - Product or Category.
# Delete single attribute
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes/delete-single-attribute
attribute.openapi delete /product-attributes/{id}
Over time, fabric **Product Catalog** may accumulate attributes that are no longer relevant or were created with incorrect or incomplete information. This can cause downstream issues. This endpoint provides the flexibility to delete an attribute by its ID, without impacting other attributes **Note**: An attribute can't be deleted if it's already assigned to `Item` or `Category`.
# Find attributes
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes/find-attributes
attribute.openapi post /product-attributes/search
With this endpoint, you can search for attributes based on criteria such as name, creation or modification date, attribute type, and other factors.
# Get attributes
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes/get-attributes
attribute.openapi get /product-attributes
Once attributes are created, this endpoint gets all the available attributes that can be assigned to the requested `target` - `item` or `category`. You can refine search results by specifying `offset` and `limit`. When they're not specified, by default, you'll get up to 10 attributes.
# Get single attribute
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes/get-single-attribute
attribute.openapi get /product-attributes/{id}
E-commerce platforms (web or app) show product details based on attributes such as name, size, color, and other specifications. This endpoint gets the details of a particular attribute by its ID, which is used to display on the e-commerce platform.
# Attributes
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes/overview
Supports CRUD operations for managing attributes. These endpoints generally require an attribute `target` to be specified to ensure appropriate separation and assignment of attributes to the correct target - `Item` or `Category`.
# Update single attribute
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes/update-single-attribute
attribute.openapi put /product-attributes/{id}
This endpoint updates attribute details such as name, description, validation criteria, and more, for the specified ID. The target and type fields cannot be updated via this endpoint.
# Data Ingestion Best Practices
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/data-ingestion-best-practices
## Overview
Optimized data management is at the core of every successful e-commerce operation. For fabric users managing extensive product catalogs, finely tuned data ingestion is paramount.
Adhering to fabric’s best practices will ensure the fastest processing speed, optimum resource management, and enhanced accuracy when importing your data.
This topic covers subjects such as file size restrictions, types of import actions, reconciling errors, and most importantly, the best method of data ingestion: **delta updates**.
## File Size and Upload Guidelines
Before you upload your first file, it's important to understand file size restrictions and how fabric handles files that exceed those restrictions.
* **No files larger than 300MB**
Limit the size of your uploads to 300MB.
* **Split files larger than 300MB into smaller ones**
Splitting large files into smaller ones before uploading them is the quickest way to import large amounts of data. For fastest processing, the ideal file size is between 80-100MB.
* **Parallel processing**
fabric can process multiple files in parallel. The number of parallel files depends on your package. When the limit has been reached, subsequent files will be in a “scheduled” status until moved into the queue. Reach out to your account representative to learn more.
* **Automatic file chunking is available**
fabric can automatically chunk files larger than 300MB into smaller files to improve performance. This feature is only available in select packages. Reach out to your account representative to learn more.
## Delta Updates
A delta update involves transmitting only the changed data fields when making an update. This is in contrast to the more traditional “full feed” updates that send the entire dataset. By sending only the changed data fields, fabric can process updates without reprocessing unchanged data.
**Delta updates are the preferred method for all uploads.**
### Delta updates vs. full feed updates
| | Full Feed Data Updates | Delta Data Updates |
| -------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------- |
| **Resource Usage** | Requires more resources | Requires fewer resources |
| **Processing Time** | Longer processing time | Shorter processing time |
| **Data Transmission** | Transmits entire dataset | Transmits only modified data fields |
| **Network Bandwidth** | Consumes more network bandwidth | Requires less network bandwidth |
| **Storage** | Requires more storage space | Requires less storage space |
| **Error Handling** | Prone to errors during full data transmission | Less prone to errors due to focused updates |
| **Scalability** | Less scalable for large datasets | More scalable, especially for large datasets |
| **Data Accuracy** | Potential for data redundancy and inconsistency | Enhances data accuracy by focusing on changes |
| **Operational Efficiency** | Lower operational efficiency due to higher resource consumption | Higher operational efficiency due to optimized resource usage |
| **Incremental Updates** | Updates entire dataset each time | Updates only modified data fields incrementally |
## Ways to Import Data
You can import data into fabric using the following methods:
* CSV import using API
* Import using RESTful APIs
* CSV import using the Copilot interface
The import method you choose is up to you, but in each case, uploading smaller files and using the delta update method will result in quicker processing, better resource management, and a higher degree of accuracy.
## Data Formatting
It's crucial to make sure your dataset is accurate and compatible with fabric’s formatting before initiating the upload process. Validate your data to avoid errors by reviewing the file to identify any changes since the last upload and confirm that the data structure and format are correct. See the following pages for formatting guidelines:
* [Importing Items](/v3/product-catalog/user-guides/product-catalog/list/items/importing-items#csv-file-guidelines)
* [Importing Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles#csv-file-guidelines)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes#attribute-data-formatting)
* [Importing Categories](/v3/product-catalog/user-guides/product-catalog/categories/importing-categories#csv-file-guidelines)
## Import Actions
The actions you use when importing items, bundles, categories, and collections tell fabric how you are modifying your data. The following actions are available:
* **UPSERT:** Creates a new product if the product doesn't exist, or it updates an existing product.
* **CREATE:** Creates a new product.
* **UPDATE:** Updates existing product.
* **PUBLISH:** Publishes an existing product that was in draft state. The product is published to the storefront.
* **UNPUBLISH\_KEEP\_DRAFT:** Unpublishes an existing product. If the product already has a draft version, the live version is unpublished and discarded. If product doesn't already have a draft version, the live version is unpublished and saved as a draft.
* **UNPUBLISH\_KEEP\_LIVE:** Unpublishes an existing product. If the product already has a draft version, the draft version is discarded.
* **DELETE:** Deletes the existing product.
* **ATTACH\_VARIANT:** Adds variants to an existing parent product. The variant column holds the variant to be attached to the SKU.
* **DETACH\_VARIANT:** Detaches existing variants. The variant column holds the variant to be detached from the SKU.
* **CHANGE\_CATEGORY:** Updates the category of existing product.
* **ATTACH\_CHANNELS:** Appends listed channels to the product, allowing it to be available across various sales channels. You can specify the channels to be attached in the Channels column. After attaching channels, users should verify the attachment post-action to confirm the successful addition of channels to the product.
* **DETACH\_CHANNELS:** Removes listed channels from a product. Users specify the channels to be detached in the Channels column. This action is useful when a product needs to be removed from specific sales channels while remaining available on others. Users should verify the detachment of channels post-action to ensure the desired channels are removed from the product.
## Reconciling Errors
If there are errors during processing, download the error file and review each error to identify the problem. Correct the errors by updating the CSV file with the necessary changes and validate the corrected CSV file before re-importing.
* [Troubleshooting Item Imports](/v3/product-catalog/user-guides/product-catalog/list/items/importing-items#troubleshooting)
* [Troubleshooting Bundle Imports](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles#troubleshooting)
# Configuring Product Catalog
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/developer-guide/configuring-product-catalog
The following workflow diagram illustrates the step-by-step interaction process with the Product Catalog API:

The following steps outline the process:
1. Create attributes that can be assigned to categories and associated products.
2. Map fabric-mandatory attributes with merchant-defined attributes.
3. Create categories as the primary organizational structure.
4. Assign attributes to categories.
5. Create collections to display products on storefronts and support storefront-specific use cases, including promotions.
6. Add products, such as individual items, variants, and bundles of items and variants.
## Prerequisites
You must have the following:
* **Access and Permissions Setup**
* Ensure that you have Admin or Editor role to set up Product Catalog. For more information about the roles and permissions offered through fabric **Identity** service, see the [Role-based Access Control (RBAC)](/v3/platform/settings/rbac/role-based-access-control-products-roles) section.
* Use the V3 version of the [Product Catalog API](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsAPI.json).
* **Authentication and Security Protocols**
* Ensure that you have a valid [Authorization Token](/v3/getting-started/authentication-v3/authentication-endpoints/fetch-access-token) to provide in the header.
## Procedure
Use this procedure to configure Product Catalog. The API collections for the endpoints are:
* Postman collection for [attributes](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsAttributes.json).
* Postman collection for [categories](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsCategories.json).
* Postman collection for [products](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsAPI.json).
1. Create attributes using one of the following methods:
* **Individually**: Create a new attribute using the [Create attribute](/v3/product-catalog/api-reference/product-catalog/attributes/create-attribute) endpoint. By specifying the `target` in the request body as a `product` or `category`, you can assign the attribute to a product or a category, respectively.
* **Bulk Import**: Import multiple attributes through bulk import APIs. For more information, see the [bulk import guide](#import-products-data-through-bulk-import).
* (Optional) Create attribute groups using the [Create attribute groups](/v3/product-catalog/api-reference/product-catalog/attribute-groups/create-product-attribute-group) endpoint and group relevant attributes. The attribute groups can then be assigned to products.
2. Map the mandatory fabric attributes, such as `sku`, `title`, `image`, and `active` status, to the corresponding attribute names provided by the merchant. To create new mapping or update an existing mapping, use the [Update attribute](/v3/product-catalog/api-reference/product-catalog/attributes-mapping/update-attributes-mapping) endpoint.
3. Create categories using one of the following methods:
* **Individually**: Create a new category using the [Create category](/v3/product-catalog/api-reference/product-catalog/categories/create-category) endpoint. A root category is created by default and can't be modified.
* **Import Multiple Categories**: Add multiple new categories using the [Create multiple categories](/v3/product-catalog/api-reference/product-catalog/bulk-action-for-categories-and-collections/create-multiple-categories) endpoint. You can add up to 25 categories.
* **Bulk Import**: Add multiple categories (more than 25) through bulk import APIs. For additional information, refer to the [bulk import guide](#import-products-data-through-bulk-import). You can add other category IDs to `categoryIdsIncluded` which automatically includes a categories catalog of items. Similarly, you can exclude categories using `categoryIdsExcluded`.
4. Assign attributes to categories using the [Create category](/v3/product-catalog/api-reference/product-catalog/categories/create-category) and [Partially update category](/v3/product-catalog/api-reference/product-catalog/categories/partially-update-category) endpoint. The attributes of a category automatically cascade to all products associated with that category.
5. (Optional) Create collections to display products on storefront using the [Create collections](/v3/product-catalog/api-reference/product-catalog/collections/create-collection) endpoint.
6. Add products, which may be items, variants, and bundles, using one of the following methods:
* **Add Item**: Add items using the following methods:
* **Individually**: Add a single item using the [Add product](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product) endpoint and specify the `type` as item.
* **Add Multiple items**: Add multiple items using the [Add products](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product) endpoint and specify the `type` as item. You can add up to 25 items in a single request.
* **Bulk Import**: Import multiple products through bulk import APIs. For additional information, refer to [bulk import guide](#import-products-data-through-bulk-import).
* **Add Variants**: For creating variants for a product, you must set the product's `status` flag to `LIVE`. If a product status is `DRAFT`, variants are treated as separate products. Add variants using the following methods:
* **Individually**: Add a single variant using the [Add product](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product) endpoint and specify the `type` as variant.
* **Add Multiple Variants**: Add multiple variants using the [Add Products](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product) endpoint and specify the `type` as variant. You can add up to 25 variants.
* **Bulk Import**: Import variants using the bulk import APIs. For additional information, refer to the [bulk import guide](#import-products-data-through-bulk-import).\
**Note**: To add a variant, its `parentProduct` must be in published or draft status. Initially, the `type` remains as `item` until the parent is published. Once the parent is published, the `type` is updated to `variant`. Additionally, both the parent and its children should belong to the same category and channel.
* **Add Bundles**: Add bundles using the following methods:
* **Individually**: Add a single bundle using the [Add Product](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product) endpoint and specify the `type` as bundle.
* **Add Multiple Products**: Add multiple bundles using the [Add Products](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product) endpoint and specify the type as bundle. You can add up to 25 bundles.
* **Bulk Import**: Import bundles using the [bulk import guide](#import-products-data-through-bulk-import) API. When bulk importing attributes, specify their corresponding type and subtype in the template. The following list shows the Attribute types and their corresponding Attribute sub types:
* **Serial:** None
* **Date-Time:** None
* **Boolean:** None
* **Number:** None
* **Text:** Small text
* **Text:** Text area
* **Text:** HTML
* **Options:** Single
* **Options:** Multiple
**Note**: When creating a bundle, make sure to specify the `bundleProducts`. Ensure the individual items or their variants, which you intend to include in the bundle, already exist in the system.
### Import Product Data Through Bulk Import
The following diagram illustrates the step-by-step process to bulk import attributes, categories, collections, items, variants, and bundles:

Take the following steps to bulk import:
1. Download the [template](/v3/product-catalog/api-reference/product-catalog/files/generate-the-import-template) based on the `type`, which could be items, variants, bundles, attributes, categories, or collections. A CSV template with header columns is returned in the response. You can add required data in the template and save the file in your local system.\
The following code sample provides an example for the template:
Bash
```
curl --request POST \
--url https://api.fabric.inc/v3/product-templates/actions/generate \
--header 'accept: text/csv' \
--header 'content-type: application/json' \
--data '
{
"type": "ITEM",
"categoryId": "648014741adc8a9de14e1a68",
"locale": "en-US"
}
'
```
The following code sample provides an example to bulk import attributes:
Bash
```
curl --request POST \
--url https://api.fabric.inc/v3/product-templates/actions/generate \
--header 'accept: text/csv' \
--header 'content-type: application/json' \
--data '{"type":"ATTRIBUTE"}'
```
1. Retrieve the AWS S3 bucket URL used to upload the import file by using the [Create file object and get upload location](/v3/product-catalog/api-reference/product-catalog/files/create-file-object-and-get-file-upload-location) endpoint.\
The following code sample provides an example to retrieve the upload URL to import a file:
Bash
```
curl --request POST \
--url https://api.fabric.inc/v3/product-files \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '
{
"type": "ITEM_VARIANT_EXPORT",
"name": "bulk_import_123345677788999.csv",
"locale": "en-US"
}
'
```
1. Make a PUT request with the upload URL, returned in the response of the step 2, to upload the updated CSV file from your local system.
2. Download one or more previously imported or exported files, including error files, use the [Get files available for a merchant](/v3/product-catalog/api-reference/product-catalog/files/get-files-available-for-a-merchant) endpoint.\
The following code sample provides an example:
Bash
```
curl --request GET \
--url 'https://api.fabric.inc/v3/product-files?offset=0&limit=10' \
--header 'accept: application/json'
```
1. To view the status of previously imported or exported files, use the [Get jobs](/v3/product-catalog/api-reference/product-catalog/jobs/get-jobs-related-to-products) endpoint.\
The following code sample provides an example to retrieve the import history:
Bash
```
curl --request GET \
--url 'https://api.fabric.inc/v3/product-jobs?offset=0&limit=10' \
--header 'accept: application/json'
```
# Examples
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/developer-guide/examples
The following examples provide step-by-step instructions to create a category and its structure with attributes, collections, and products. This example uses a furniture store selling lamps.
Use the following table to reference the category, subcategories, and products that will be created.
| Category | Sub-Categories | Products |
| -------- | -------------- | --------------------------- |
| Lamps | | |
| | Ceiling Lamps | |
| | | Atlas Pendant Ceiling Lamp |
| | | Apollo Pendant Ceiling Lamp |
| | Table Lamps | |
| | | Hudson Table Lamp |
| | | Luminary Table Lamp |
in Product Catalog, both products and categories have attributes. Each product can have multiple attributes associated with it. Because you need to add attributes to both categories and products, the first step in building the lamps category is to create the attributes needed to fulfill our objective. In this example, lamps need to have a `Style` attribute for all the products.
## 1. Create the `Style` Attribute with the Values `Modern`, `Traditional`, and `Rustic`
The `product-attributes` endpoint is used to create different product and category attributes. In this example, the `Style` attribute is created for products. This attribute differentiates lamps based on design aesthetics, such as modern or rustic. In this example the `type` is set to `OPTIONS` since multiple accepted values are added.
Note that if you set `isMandatory` to `true` in the request, anything with the `Style` attribute requires a value. This means if a product inherits or has the `Style` attribute, it must have one of the `acceptedValues` outlined in the request below.
Bash
```
curl --location 'https://api.fabric.inc/v3/product-attributes' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-fabric-tenant-id: ' \
--header 'Authorization;' \
--data '
{
"name": "Style",
"type": "OPTIONS",
"target": "PRODUCT",
"isLocalizable":false,
"localizedProperties":{},
"validation": {
"isMandatory": false,
"acceptedValues": ["Modern", "Traditional", "Rustic"],
"subType": "SINGLE",
"isManualOverwrite": false,
"isDecimal": false,
"formula": ""
}
}
'
```
The response includes a product attribute ID for `Style`. This ID is required in subsequent API requests for mapping.
## 2. Create a new `Lamps` Category
Use the `categories` endpoint to create a new category with the name `Lamps`.
Bash
```curl --location 'https://api.fabric.inc/v3/categories' \
--header 'x-fabric-tenant-id: ' \
--header 'Authorization: ' \
--header 'Content-Type: application/json' \
--data '{
"name":"Lamps"
}
'
```
After creating a category successfully, a response with the ID for the new category is returned. Use this ID to set up sub-categories.
## 3. Create the `Ceiling Lamps` and `Table Lamps` sub-categories
Use the bulk insert API for categories when you need to create more than one subcategory at a time. You must provide the `parentCategoryId` that you previously received in step 2 when making the parent category `Lamps`.
Optionally, you can also set `isLocalizable` to `true` and provide localized names.
Bash
```
curl --location 'https://api.fabric.inc/v3/categories/batch' \
--header 'x-fabric-tenant-id: ' \
--header 'Authorization: ' \
--header 'Content-Type: application/json' \
--data '{
"categories": [
{
"parentCategoryId": "65a503418b49c6d313211159",
"name": "Ceiling Lamps",
"isLocalizable": true,
"localizedProperties": {
"en-US": {
"name": "Ceiling Lamps"
},
"es-US": {
"name": "Lámparas de techo"
}
},
},
{
"parentCategoryId": "65a503418b49c6d313211159",
"name": "Table Lamps",
"isLocalizable": true,
"localizedProperties": {
"en-US": {
"name": "Table Lamps"
},
"es-US": {
"name": "Lámparas de mesa"
}
},
}
}
],
}'
```
## 4. Map the `Style` attribute
With attribute mapping, you can update existing attributes and add new attributes to a category or product.
In this example, the product attribute ID corresponding to the `Style` attribute is added to the `Lamps` category, and the `isMandatory` flag set to `true`. With this setting, all products within the `Lamps` category must have a value corresponding to the `Style` attribute.
When you add an attribute to a parent category, such as `Lamps`, it automatically applies to all its sub-categories. In this example, `Ceiling Lamps` and `Table Lamps` are children of the `Lamps` category, so they inherit the mandatory `Style` attribute.
For mapping, use the `categories` endpoint and provide the ID corresponding to the `Style` attribute that's returned in the response from the `product-attribute` endpoint.
Bash
```shell
curl --location --request PUT 'https://api.fabric.inc/v3/categories/557f1f77bcf86cd799439015' \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--header 'x-fabric-tenant-id: ' \
--header 'Authorization: ' \
--data '
{ "name": "Lamps",
"productAttributes": [
{
"isMandatory": true,
"id": "557f1f77bcf86cd799439015"
}
]
}
'
```
## 5. Create products and variants with attributes
This example requires four products with variants, so the products `status` is set to `LIVE` to create variants and the `parentProduct` field is included in the request body. The following code example shows adding the products using the bulk insert API for `products`, which includes the mandatory attributes values:
Bash
```shell
curl --location 'https://api.fabric.inc/v3/product-catalog/batch' \
--header 'x-fabric-tenant-id: ' \
--header 'Authorization: ' \
--header 'Content-Type: application/json' \
--data '{
"products": [
{
"sku": "AGLAMPTL12",
"status":"LIVE",
"categoryId": "65a505cf8b49c6d313211187",
"isActive": true,
"type": "ITEM",
"attributes": [
{
"id": "65a503bfd97969bcbb224415",
"value": ["modern"]
},
{
"id": "6464ecfc4529ad33084c4adb",
"value": "Hudson Table Lamp"
},
{
"id" : "6464ecfc4529ad33084c4ad7",
"value": "AGLAMPTL12"
},
{
"id": "6464ecfc4529ad33084c4acb",
"value" : "https://exampleimagelink.me/assets/images/exampleimagelink.png"
},
{
"id": "6464ecfd4529ad33084c4adf",
"value" : "FALSE"
}
]
},
{
"sku": "AGLAMPTL9",
"status":"LIVE",
"categoryId": "65a505cf8b49c6d313211187",
"isActive": true,
"type": "ITEM",
"attributes": [
{
"id": "65a503bfd97969bcbb224415",
"value": ["rustic"]
},
{
"id": "6464ecfc4529ad33084c4adb",
"value": "Luminary Table Lamp"
},
{
"id" : "6464ecfc4529ad33084c4ad7",
"value": "AGLAMPTL9"
},
{
"id": "6464ecfc4529ad33084c4acb",
"value" : "https://exampleimagelink.me/assets/images/exampleimagelink.png"
},
{
"id": "6464ecfd4529ad33084c4adf",
"value" : "FALSE"
}
]
},
{
"sku": "AGLAMPCL2",
"status":"LIVE",
"categoryId": "65a505cf8b49c6d313211187",
"isActive": true,
"type": "ITEM",
"attributes": [
{
"id": "65a503bfd97969bcbb224415",
"value": ["rustic"]
},
{
"id": "6464ecfc4529ad33084c4adb",
"value": "Apollo Pendant Ceiling Lamp"
},
{
"id" : "6464ecfc4529ad33084c4ad7",
"value": "AGLAMPCL2"
},
{
"id": "6464ecfc4529ad33084c4acb",
"value" : "https://exampleimagelink.me/assets/images/exampleimagelink.png"
},
{
"id": "6464ecfd4529ad33084c4adf",
"value" : "FALSE"
}
]
},
{
"sku": "AGLAMPCL5",
"status":"Live",
"categoryId": "65a505cf8b49c6d313211187",
"isActive": true,
"type": "ITEM",
"attributes": [
{
"id": "65a503bfd97969bcbb224415",
"value": ["modern"]
},
{
"id": "6464ecfc4529ad33084c4adb",
"value": "Atlas Pendant Ceiling Lamp"
},
{
"id" : "6464ecfc4529ad33084c4ad7",
"value": "AGLAMPCL5"
},
{
"id": "6464ecfc4529ad33084c4acb",
"value" : "https://exampleimagelink.me/assets/images/exampleimagelink.png"
},
{
"id": "6464ecfd4529ad33084c4adf",
"value" : "FALSE"
}
]
},
{
"parentProduct": {
"sku": "AGLAMPCL5"
},
"sku": "GLAMPCL5",
"status": "LIVE",
"categoryId": "65a505cf8b49c6d313211187",
"isActive": false,
"type": "VARIANT",
"attributes": [
{
"id": "65a503bfd97969bcbb224415",
"value": ["modern"]
},
{
"id": "6464ecfc4529ad33084c4adb",
"value": "Green"
},
{
"id" : "6464ecfc4529ad33084c4ad7",
"value": "GLAMPCL5"
},
{
"id": "6464ecfc4529ad33084c4acb",
"value" : "https://exampleimagelink.me/assets/images/exampleimagelink.png"
},
{
"id": "6464ecfd4529ad33084c4adf",
"value" : "FALSE"
}
]
},
{
"parentProduct": {
"sku": "AGLAMPCL5"
},
"sku": "AGLAMPCL1",
"status": "LIVE",
"categoryId": "65a505cf8b49c6d313211187",
"isActive": false,
"type": "VARIANT",
"attributes": [
{
"id": "65a503bfd97969bcbb224415",
"value": ["modern"]
},
{
"id": "6464ecfc4529ad33084c4adb",
"value": "Gold"
},
{
"id" : "6464ecfc4529ad33084c4ad7",
"value": "AGLAMPCL1"
},
{
"id": "6464ecfc4529ad33084c4acb",
"value" : "https://exampleimagelink.me/assets/images/exampleimagelink.png"
},
{
"id": "6464ecfd4529ad33084c4adf",
"value" : "FALSE"
}
]
}
]
}'
```
## Create a `Sale` category for `Modern Style Furniture` and `Cyber Monday`
1. Create the parent collection, `Sale`.
Bash
```
curl --location 'https://api.fabric.inc/v3/collections' \
--header 'x-fabric-tenant-id: ' \
--header 'Authorization: ' \
--header 'Content-Type: application/json' \
--data '{
"isRoot": true,
"isLocalizable": false,
"name": "Sale",
}'
```
1. Create the sub category `Current Sales`. The `parentCollectionID` is returned from the previous response when creating the parent collection `Sale`.
Bash
```
curl --location 'https://api.fabric.inc/v3/collections/batch' \
--header 'Authorization: ' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: ' \
--data '{
"collections": [
{
"parentCollectionId": "65a5847b8b49c6d313211476",
"name": "Current Sales",
"isLocalizable": false,
"isRoot": false,
"isLeaf": false
}
]
}'
```
1. Create the `Modern Style Furniture` and `Cyber Monday` categories.
Bash
```
curl --location 'https://api.fabric.inc/v3/collections/batch' \
--header 'Authorization: ' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: ' \
--data '{
"collections": [
{
"parentCollectionId": "65a58a5b8b49c6d313211486",
"name": "Modern Style Furniture",
"isLocalizable": false,
"isRoot": false,
"isLeaf": false,
"categoryIdsIncluded": [
"65a503418b49c6d313211159"
]
},
{
"parentCollectionId": "65a58a5b8b49c6d313211486",
"name": "Cyber Monday",
"isLocalizable": false,
"isRoot": false,
"isLeaf": false,
"categoryIdsIncluded": [
"65a503418b49c6d313211159"
]
}
]
}'
```
Optionally, you can include products in a sale tab by filtering for specific attributes using `productAttributeFilters`.
```
"productAttributeFilters": [
{
"attributeId": "78184766610c0e32a86d8757",
"condition": "EQUALS",
"value": 2
}
]
```
## Error Handling
For effective error handling, refer to the API documentation which outlines standard HTTP error codes, such as 400 (Bad Request), 404 (Not Found), and 500 (Internal Server Error).
## Next Steps
Once the above steps are completed, you are all set with the basic setup. You may proceed to fully utilize all features and capabilities available to you. Refer to the [Related Resources](/v3/product-catalog/api-reference/product-catalog/developer-guide/introduction) for additional information.
# Introduction
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/developer-guide/introduction
fabric **Product Catalog** API supports CRUD operations related to Product Catalog. This service is designed to provide low latency reads and search functionalities for the storefront. It supports event-driven updates to ensure the data is always up-to-date without manual intervention, efficient cache management for faster data retrieval, and scalability to handle high volumes of traffic.
This guide provides step-by-step instructions to help you get started with fabric Product Catalog API, from initial setup to basic usage.
## Target Audience
* Solution Integration (SI) partners responsible for configuring the Product Catalog for e-commerce.
* Third-party developers who set up Product Catalog on behalf of merchants.
* The fabric developers who work with Product Catalog.
## Knowledge and Skill Requirements
The target audience should:
* Understand [REST APIs](https://fabric.inc/blog/developer/api-endpoint), in the context of e-commerce.
* Get familiar with [fabric APIs](/v3/getting-started/api-guides/getting-started-with-fabric-apis).
* Know the [concepts related to Product Catalog](/v3/product-catalog/api-reference/product-catalog/products-api---overview.mdx).
* Understand caching strategies and technologies.
* Have access to development tools capable of interacting with HTTP-based APIs, such as Postman or cURL for testing.
We also recommend you to:
* Maintain a list of attributes that need to be assigned to products and categories.
* Identify the mandatory and optional attributes.
* Develop a strategy for organizing products within a hierarchical tree structure of categories and collections.
* Create a product list consisting of individual items, variants, and bundles of items and variants.
## Related Resources
For additional information, refer to the following:
* Product Catalog [FAQs](/v3/product-catalog/api-reference/product-catalog/products-faqs).
* [Sample store](https://sales-demo-uat.vercel.app) to view the given product organization.
* [User guide](/v3/product-catalog/user-guides/product-catalog/overview) for Product Catalog in Copilot.
* API reference for all operations related to [attributes](/v3/product-catalog/api-reference/product-catalog/attributes/overview)
* API reference for all operations related to [categories](/v3/product-catalog/api-reference/product-catalog/categories/overview).
* API reference for all operations related to [collections](/v3/product-catalog/api-reference/product-catalog/collections/overview).
* API reference for all operations related to products based on [SKU](/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/overview) or [product ID](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/overview).
# Postman Collections
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/developer-guide/postman-collections
The Product Catalog Postman collections make it easy to explore, test, and integrate with the Product Catalog API.
They include pre-built requests for common API operations, allowing you to understand how different endpoints work and test them with real data. With these collections, you can:
* Test API requests directly within Postman without writing code.
* View example payloads and expected responses for each endpoint.
* Modify requests with your own data to fit your unique use cases.
* Speed up API integration.
* Improve troubleshooting.
The following Postman collections are available:
* [Attributes](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsAttributes.json): Create, update, retrieve, and delete product attributes.
* [Categories](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsCategories.json): Create new categories, update existing ones, and retrieve category hierarchies.
* [Products](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsAPI.json): Create new products, update existing product details, retrieve product information, and manage product lifecycle events.
* [Published Products](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsPublishedProducts.json): Retrieve and manage published versions of your products.
* [Files and Jobs](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsFileAndJobs.json): Upload product data files, monitor the progress of file imports, and manage various background jobs.
# Product Catalog - Attributes API
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/products---attributes-api
Product team: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | License: [fabric API License](https://fabric.inc/api-license)
**Product Catalog** supports two types of attributes: Item Attributes and Category Attributes. Within fabric, a product could be an item, variant, or bundle. Product attributes are factual and objective descriptions that shoppers see when browsing through an e-commerce platform (website or mobile app). These attributes may include technical specifications such as size and weight, design specifications such as color and material, as well as basic details like name, description, and ID. Similarly, Category attributes define the characteristics of parent and children categories. They're essential for organizing products in logical groups, making it easier for shoppers to browse and find products on your platform with minimal cognitive load.
[Find out more about Product Catalog](/v3/product-catalog/user-guides/product-catalog/overview)
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsAttributes.json)
# Product Catalog API - Overview
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/products-api---overview
## Product Catalog Overview
Product Catalog is a data organization tool that enables merchants to build a centralized source of product information. This information can include technical specifications such as size and weight, design specifications such as color and material, and generic details such as name, description, and ID.
Product categories allow merchants to organize items into logical parent-child groups to make finding products on the storefront easier for the shoppers. While configuring products, merchants can use validations to ensure data consistency and quality for each item and category.
Product Catalog has out-of-the-box integrations with fabric services such as Orders and Offers that enable merchants to add base prices and promotions to any products available in Product Catalog, including categories and collections.
Key Product Catalog capabilities include:
* **Catalog Management**: Create and manage products and services such as items, variants, and bundles. For example, an item could be a coffee table in oak. A variant could be that same coffee table, but in pine. A bundle could be the coffee table sold together with two matching end tables.
* **Taxonomy Management**: Define categories of products to create a structured hierarchy.
* **Distribution management**: Control product data availability for multiple channels and locales and use collections to curate subsets of products for sales and marketing goals, such as holiday sales or seasonal discounts.
* **Bulk Management**: Import product, category, and collection information in a CSV file and export catalog data into a CSV file.
* **Variant management**: Create and manage an unlimited number of variants to indicate that a product is available in different options, such as colors or sizes.
### Use Case
As an example, consider a furniture distributor with an extensive catalog that includes living, dining, and bedroom pieces who wants to display their products for sale on their storefront.
The merchant can upload each item they sell, either individually or in bulk with a CSV file. Attributes of each piece, ranging from physical characteristics such as dimensions and weight to construction characteristics such as materials and finishes can all be included. Variants of items are also supported, so that a coffee table available in mahogany, oak, and pine can all be considered different versions of the same item. In addition, items frequently sold together can be grouped into bundles so that the coffee table can be sold along with a pair of matching end tables.
The merchant can then create a hierarchy of relationships among the items in the catalog that make the most sense to their business. That means the coffee table could be in a category with all living room furniture, or a category of all tables, or both.
Merchants can group items from different categories into themed collections to boost the sales or marketing campaigns. For example, for a Black Friday promotion, merchant can assemble a living room set collection that includes a coffee table, end tables, sofa, loveseat, and lamps.
# Bundles Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/bundles-overview
Bundles are combinations of two or more products sold exclusively together or individually, depending on the configuration. Pure bundles consist of items exclusively sold together, and individual items can't be purchased separately. Shoppers have the flexibility to buy items in mixed bundles together or separately.
For example, in a living room furniture set consisting of a coffee table and an end table, shoppers can choose to purchase each table individually or buy both tables together as part of the living room set bundle.
You can create bundles by importing them using a CSV or JSON file.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Importing Bundles](/v3/product-catalog/user-guides/catalog-connector/importing-bundles)
* [Viewing Bundle Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-attributes-variants-channels)
* [Searching and Filtering Bundles](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-bundles)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-import-history)
# Importing Bundles
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/importing-bundles
## Overview
Bundles are two or more items sold together. Creating a bundle allows you to group items that are exclusively sold together or group items that can be purchased together and separately.
This document covers the process of importing bundles, which is done using a CSV or JSON file.
## File Guidelines
You can import products using a CSV or JSON file only; no other data or file formats are supported.
* SKU is a required field to create or update a bundle.
* When adding a SKU to a bundle, enter the quantity to add in the same cell as the SKU itself. For example, if a bundle requires two of item 12345, enter *2, 12345* in the SKU cell.
* When updating or upserting bundles, entering *null* in a spreadsheet cell will override existing values with blank values.
Although not required, we recommend that you download the template file to use as a guide when creating your own file for import to minimize errors during the import process.
### Attribute Data Format
When preparing your file for import, ensure that the attribute data format aligns with following attribute type requirements:
* String: Ensure the data is in text string format. If a string attribute contains multiple values, the values need to be sent as a stringified array, for example: `["a","b"]`.
* Number: Numerical data only.
* Boolean: Use *true* or *false* only; other values will be ignored.
## Procedure
1. In the left menu, click **Catalog Connector > List > Bundles**.\
The **Bundles** page is displayed.
2. Click **Import bundles**.\
The **Import CSV file** window is displayed. This window provides a link to download example templates for JSON and CSV files.
3. To import a file, do one of the following options:
* Drag and drop the file into the window.
* Click **Select a File** from your computer.
4. Click **Import file**.
The file is imported and the bundles are added to your product list.
fabric stores the files that you upload to your account. You can view the status of the import operation and re-download the original files by visiting the **Import History** page.
## Troubleshooting
For a list of common errors when importing and how to correct them, refer to the following table:
| **Error Message** | **Description** | **Impact** | **Solution** | **Comment** |
| --------------------- | --------------- | ------------------------------------ | ------------ | ------------------------------ |
| Internal Server Error | Server issues | The bundle isn't created or updated. | Try again | This is an intermittent issue. |
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Bundles Overview](/v3/product-catalog/user-guides/catalog-connector/bundles-overview)
* [Viewing Bundle Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-attributes-variants-channels)
* [Searching and Filtering Bundles](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-bundles)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-import-history)
# Importing Items
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/importing-items
Items, which are also referred to as products, are services or stand-alone objects sold individually. This document covers the process of importing items, which is done using a CSV or JSON file.
## File Guidelines
You can import products using a .csv or .json file only. No other data or file formats are supported.
* SKU is a required field to create or update an item.
* You can detach child or variant items from the parent item when importing by entering detach in the Parent SKU field. When the parent/child relationship is removed, the child or variant item becomes a standalone SKU.
* When updating or upserting items, entering null in a spreadsheet cell will override existing values with blank values.
Although not required, fabric recommends that you download the template file to use as a guide when creating your own file for import to minimize errors during the import process.
### Attribute data format
When preparing your file for import, ensure that the attribute data format aligns with following attribute type requirements:
* String: Ensure the data is in text string format. If a string attribute contains multiple values, the values need to be sent as a stringified array, for example: `"a", "b"`.
* Number: Numerical data only.
* Boolean: Use true or false only; other values will be ignored.
## Procedure
1. In the left menu, click **Catalog Connector > List > Items**.
The **Items** page is displayed.
2. Click **Import items**.
The **Import CSV file** window is displayed. This window provides a link to download example templates for .csv and .json files.
3. To import a file, do one of the following options:
* Drag the file into the window.
* Click **Select a File** from your computer.
4. Click **Import file**.
The file is imported and the items are added to your product list.
fabric stores the files that you upload to your account. You can view the status of the import operation and re-download the original files by visiting the **Import History** page.
## Troubleshooting
For a list of common errors when importing and how to correct them, refer to the following table:
| **Error Message** | **Description** | **Impact** | **Comment** | **Comment** |
| --------------------- | --------------- | ---------------------------------- | ----------- | ------------------------------ |
| Internal Server Error | Server issues | The item isn't created or updated. | Try again | This is an intermittent issue. |
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Items Overview](/v3/product-catalog/user-guides/catalog-connector/items-overview)
* [Viewing Item Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-item-attributes-variants-channels)
* [Searching, Filtering, and Sorting Items](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-items)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-item-import-history)
# Items Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/items-overview
An item is a standalone service or product sold individually. You can create items by importing them using a .csv or .json file. Each item can have different variations, known as variants, distinguished by specific differences from the standard version. fabric Catalog Connector doesn't validate or display the relationship between a parent and its variants. It simply stores each product as a distinct item.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Importing Items](/v3/product-catalog/user-guides/catalog-connector/importing-items)
* [Viewing Item Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-item-attributes-variants-channels)
* [Searching, Filtering, and Sorting Items](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-items)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-item-import-history)
# Catalog Connector Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/overview
Catalog Connector is a denormalized data organization tool that enables merchants to link information from their third-party product information management system to their fabric account, making it accessible across fabric modules such as Offers, Orders, and Inventory.
This data can include technical specifications, such as size and weight, design attributes, such as color and material, and generic product details such as name, description, and ID.
Catalog Connector provides out-of-the-box integrations with fabric services, such as Orders and Offers, that enable merchants to apply base prices and promotions to any products available within the Catalog Connector.
Key Catalog Connector capabilities include:
* **Bulk Management:** Import product information in a CSV or JSONL file.
* **Catalog Management:** Manage product create, update, and delete actions, including parent, variant, and bundle products.
Catalog Connector is only available to fabric users who haven't purchased fabric’s proprietary product information manager, Product Catalog.
Catalog Connector setup involves importing products and bundles and their properties in a CSV or JSONL file.
## Related Topics
### Items
* [Items Overview](/v3/product-catalog/user-guides/catalog-connector/items-overview)
* [Importing Items](/v3/product-catalog/user-guides/catalog-connector/importing-items)
* [Viewing Item Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-item-attributes-variants-channels)
* [Searching, Filtering, and Sorting Items](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-items)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-item-import-history)
### Bundles
* [Bundles Overview](/v3/product-catalog/user-guides/catalog-connector/bundles-overview)
* [Importing Bundles](/v3/product-catalog/user-guides/catalog-connector/importing-bundles)
* [Viewing Bundle Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-attributes-variants-channels)
* [Searching and Filtering Bundles](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-bundles)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-import-history)
# Searching, Filtering, and Sorting Bundles
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-bundles
## Overview
The search and filter options on the **Bundles** page allow you to refine the list of bundles or find a specific bundle.
### To search for a specific bundle, do the following:
1. In the left menu, click **Catalog Connector > List > Bundles**.\
The **Bundles** page is displayed.
2. To search for a bundle, in the search bar, type a search term and press **Enter**.
The results are displayed.
### To filter the list of bundles, do the following:
1. In the left menu, click **Catalog Connector > List > Bundles**.\
The **Bundles** page is displayed.
2. Choose at least one of the following filters:
* Click the **Date** dropdown and select a date range for the date the bundles were created or the date the bundles were modified.
* Click the **Attributes & Values** dropdown, and do the following:
* Enter an attribute name in the **Attribute** field.
* Select a validation option.
* Enter a value in the **Value** field.
* To add more conditions, click **Add new condition** and enter the required values.
Bundles that match the filters you chose are displayed.
You can remove all filters by clicking **Reset all**.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Bundles Overview](/v3/product-catalog/user-guides/catalog-connector/bundles-overview)
* [Importing Bundles](/v3/product-catalog/user-guides/catalog-connector/importing-bundles)
* [Viewing Bundle Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-attributes-variants-channels)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-import-history)
# Searching, Filtering, and Sorting Items
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-items
## Overview
The search, filter, and sort options on the **Items** page allow you to refine the list of items or find a specific item.
You can use the filter option only if you have multiple items in your list.
### To search for a specific item, do the following:
1. In the left menu, click **Catalog Connector > List > Items**.\
The **Items** page is displayed.
2. To search for an item, in the search bar, type a search term and press **Enter**.
The results are displayed.
### To filter the list of items, do the following:
1. In the left menu, click **Catalog Connector > List > Items**.\
The **Items** page is displayed.
2. Choose at least one of the following filters:
* Click the **Date** dropdown and select a date range for the date the items were created or the date the items were modified.
* Click the **Attributes & Values** dropdown, and do the following:
* Enter a search term in the **Attribute** field.
* Select a validation option.
* Enter a value in the **Value** field.
* To add more conditions, click Add new condition and enter the required values
* Click the **Type** dropdown and select Item or Variant
Items that match the filters you chose are displayed.
You can remove all filters by clicking **Reset all**.
### To sort the list of items, do the following:
1. In the left menu, click **Catalog Connector > List > Items**.\
The **Items** page is displayed.
2. Click one of the column headers to sort the list of items.\
Sortable headers are **SKU**, **Item ID**, **Product name**, **Channels**, **Category**, and **Created**.
The items are sorted.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Items Overview](/v3/product-catalog/user-guides/catalog-connector/items-overview)
* [Importing Items](/v3/product-catalog/user-guides/catalog-connector/importing-items)
* [Viewing Item Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-item-attributes-variants-channels)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-item-import-history)
# Viewing Bundle Details
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-attributes-variants-channels
## Overview
After you have uploaded a CSV or JSON file of your items, you can view the bundle details on the **Bundles** page.
## Prerequisites
Ensure that you have imported at least one CSV or JSON file of your bundles.
### To view bundle attributes, do the following:
1. In the left menu, click **Catalog Connector > List > Bundles**.\
The **Bundles** page is displayed.
2. In the **SKU** column, click the SKU of the bundle.\
The bundle details page with attributes, variants, and channels is displayed. You can click the corresponding tab to view the details.
Bundle attribute information is displayed.
### To view bundle items, do the following:
1. In the left menu, click **Catalog Connector > List > Bundles**.\
The **Bundles** page is displayed.
2. Click a **SKU**.\
The SKU details page is displayed on the **Bundle information** tab.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Bundles Overview](/v3/product-catalog/user-guides/catalog-connector/bundles-overview)
* [Importing Bundles](/v3/product-catalog/user-guides/catalog-connector/importing-bundles)
* [Searching and Filtering Bundles](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-bundles)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-import-history)
# Viewing Bundle Import History
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-import-history
## Overview
You can check the status of bundle import operations on the **Import History** page. Successful imports are marked as **Completed**. Imports that failed are marked with **Failed**.
## Procedure
1. In the left menu, click **Catalog Connector > List > Bundles**.\
The **Bundles** page is displayed.
2. Click **Import History**.\
The **Import History** page is displayed.
3. Click the name of an import.\
The **Import Summary** page with the details of the import is displayed.
4. (Optional) To download the import details file, click **Download original file**.\
The original CSV or JSON import file is downloaded.
* (Optional) To see the details of an import that had errors, click Export errored bundles. The report is downloaded.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Bundles Overview](/v3/product-catalog/user-guides/catalog-connector/bundles-overview)
* [Importing Bundles](/v3/product-catalog/user-guides/catalog-connector/importing-bundles)
* [Viewing Bundle Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-bundle-attributes-variants-channels)
* [Searching and Filtering Bundles](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-bundles)
# Viewing Item Details
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/viewing-item-attributes-variants-channels
## Overview
After you have uploaded a CSV or JSON file of your items, you can view the item details on the **Items** page.
## Prerequisites
Ensure that you have imported at least one CSV or JSON file with the details of the items.
## Procedures
### To view item attributes, do the following:
1. In the left menu, click **Catalog Connector > List > Items**.\
The **Items** page is displayed.
2. In the **SKU** column, click the SKU of the item.\
The items details page is displayed.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Items Overview](/v3/product-catalog/user-guides/catalog-connector/items-overview)
* [Importing Items](/v3/product-catalog/user-guides/catalog-connector/importing-items)
* [Searching, Filtering, and Sorting Items](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-items)
* [Viewing Import History](/v3/product-catalog/user-guides/catalog-connector/viewing-item-import-history)
# Viewing Item Import History
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/catalog-connector/viewing-item-import-history
## Overview
You can check the status of item import operations on the **Import History** page. Successful imports are marked as **Completed**. Imports that failed are marked with **Failed**.
## Procedure
1. In the left menu, click **Catalog Connector > List > Items**.\
The **Items** page is displayed.
2. Click **Import History**.\
The **Import History** page is displayed.
3. Click the name of an import.\
The **Import Summary** page with the details of the import is displayed.
4. (Optional) Click **Download original file**.\
The original CSV or JSON import file is downloaded.
* (Optional) To download the import details file, click **Download original file**.
## Related Topics
* [Catalog Connector Overview](/v3/product-catalog/user-guides/catalog-connector/overview)
* [Items Overview](/v3/product-catalog/user-guides/catalog-connector/items-overview)
* [Importing Items](/v3/product-catalog/user-guides/catalog-connector/importing-items)
* [Viewing Item Attributes, Variants, and Channels](/v3/product-catalog/user-guides/catalog-connector/viewing-item-attributes-variants-channels)
* [Searching, Filtering, and Sorting Items](/v3/product-catalog/user-guides/catalog-connector/searching-filtering-sorting-items)
# Adding a Boolean Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute
### Overview
Boolean attributes allow you to add yes or no, or true or false information to an item.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Product**.
The **Product Attributes** page is displayed.
2. Click **New Attribute**.
The **Create product attribute** page is displayed.
3. Select **Boolean**.
4. In the **Attribute title** filed, enter a name for the attribute.
5. (Optional) In the **Description** field, enter a description for the attribute.
6. In the **Is this attribute mandatory?** field, select one of the following:
* **Yes**: Specifies that the attribute is mandatory when creating an item.
* **No**: Specifies that the attribute isn't mandatory when creating an item. This is the default selection.
7. Click **Save**.
The boolean attribute with the specified settings is created.
### Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Adding a Boolean Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute2
### Overview
Boolean attributes allow you to add yes or no, or true or false information to a category.
### Prerequisites
Ensure you have administrator privileges to fabric Product Catalog. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Category**.\
The **Category Attributes** page is displayed.
2. Click **New Attribute**.\
The **Create category attribute** page is displayed.
3. Select **Boolean**.
4. In the Attribute title field, enter a name for the attribute.
5. Click **Save**.
The boolean attribute is created.
### Related Topics
* [Category Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute2)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute2)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute2)
* [Managing Category Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/managing-category-attributes)
# Adding a Date Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute
### Overview
Date attributes allow you to add date-related information about an item.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product > Attributes > Product**.
The **Product Attributes** page is displayed.
2. Click **New Attribute**.
The **Create product attribute** page is displayed. The **Text** attribute type is selected by default.
3. Select **Date**.
4. In the **Attribute title** filed, enter a name for the attribute.
5. In the **Select date format** field, select a date format.
Note that bulk import of the date attribute type uses the date format you select here. The selected date format can't be changed. If the format needs to be changed, you must delete the attribute and create it again using the required format.
6. (Optional) In the **Description** field, enter a description for the attribute.
7. In the **Use JavaScript formula to calculate value** field, select one of the following:
* **Yes**: Specifies that the value for the attribute is calculated using the JavaScript formula that you provide in the **Calculation formula** field. An example of a JavaScript formula is `(async () => await attribute('id') *10)()`. When you select **Yes**, the **Calculation formula** and **Allow manual overwrite** fields are displayed. Do the following to complete the settings:
1. In the **Calculation formula** field, enter a JavaScript formula.
2. In the **Allow manual overwrite** field, choose one of the following:
* **Yes**: Specifies that you can manually overwrite the attribute value. When the **Use JavaScript formula to calculate value** setting is enabled, the system determines the value based on your provided formula. However, if you enable the manual overwrite option, you can replace the system-calculated value with a custom value during product attribute setup. For more information, see the [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item) section.
* **No**: Specifies that you can't manually overwrite the attribute value. This is the default setting.
* **No**: Specifies that the attribute value isn't calculated using a JavaScript formula.
8. In the **Validations** field, select one of the following:
* **None**: Specifies that no custom validation is required for the attribute. This is the default setting.
* **Custom JavaScript**: Specifies that the JavaScript you enter in the **Validation formula** field is used to validate the attribute.
The **Validation formula** field is displayed.
* In the **Validation formula** field, enter a JavaScript validation formula.
9. In the **Is this attribute mandatory?** field, select one of the following:
* **Yes**: Specifies that the attribute is mandatory when creating an item.
* **No**: Specifies that the attribute isn't mandatory when creating an item. This is the default selection.
10. Click **Save**.
The date attribute with the specified settings is created.
### Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Adding a Date Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute2
### Overview
Date attributes allow you to add date-related information about a category.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product > Attributes > Category**.
The **Category Attributes** page is displayed.
2. Click **New Attribute**.
The **Create category attribute** page is displayed. The **Text** attribute type is selected by default.
3. Select **Date**.
4. In the **Attribute title** field, enter a name for the attribute.
5. In the **Select date format** field, select a date format.
Note that bulk import of the date attribute type uses the date format selected here. The selected date format can't be changed. If the format needs to be changed, you must delete the attribute and create it again using the required format.
6. Click **Save**.
The date attribute with the specified settings is created.
### Related Topics
* [Category Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute2)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute2)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute2)
* [Managing Category Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/managing-category-attributes)
# Adding a List of Values Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute
### Overview
List of values attributes allow you to create dropdown menus with defined values across the product list. There are two types of list of values attributes:
* **Single select**: Specifies that the end user can select one option in the list of values.
* **Multiple select**: Specifies that the end user can make multiple selections from the list of values.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Product**.
The Product Attributes page is displayed.
2. Click **New Attribute**.
The Create product attribute page is displayed.
3. Select **List of values**.
4. (Optional) To enable localization for the attribute, set the **Localize this attribute** toggle to one of the following:
* **On**: The attribute title is localized. The **Title and description** and **Business validations** sections display additional fields corresponding to the languages depending on the internationalization settings.
* **Off**: The attribute title isn't localized.
5. In the **Attribute title (primary)** field, enter a name for the attribute.
If localization is enabled in step 4, enter the localized attribute titles in the Attribute title field for each corresponding internationalization setting.
6. (Optional) In the **Description** field, enter a description for the attribute.
7. In the **Type of list** field, select one of the following:
* **Single select**: Specifies that the end user can select one option in the list of values.
* **Multiple select**: Specifies that the end user can make multiple selections from the list of values.
8. In the **Enter values** field, enter each value in the list, separated by a comma.
If localization is enabled in step 4, enter the localized values for each corresponding internationalization setting.
9. In the **Use JavaScript formula to calculate value** field, select one of the following:
* **Yes**: Specifies that the value for the attribute is calculated using the JavaScript formula that you provide in the **Calculation formula** field. An example of a JavaScript formula is (async () => await attribute('id') \* 10)(). When you select **Yes**, the **Calculation formula** and **Allow manual overwrite fields** are displayed. Do the following to complete the settings:
* In the **Calculation formula** field, enter a JavaScript formula.
* In the **Allow manual overwrite** field, choose one of the following:
* **Yes**: Specifies that you can manually overwrite the attribute value. When the **Use JavaScript formula to calculate value** setting is enabled, the system determines the value based on your provided formula. However, if you enable the manual overwrite option, you can replace the system-calculated value with a custom value during product attribute setup. For more information, see the [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item) section.
* **No**: Specifies that you can't manually overwrite the attribute value. This is the default setting.
* **No**: Specifies that the attribute value isn't calculated using a JavaScript formula.
10. In the Validations field, select one of the following:
* **None**: Specifies that no custom validation is required for the attribute. This is the default setting.
* **Custom JavaScript**: Specifies that the JavaScript you enter in the **Validation formula** field is used to validate the attribute. The **Validation formula** field is displayed.
* In the **Validation formula** field, enter a JavaScript validation formula.
11. In the **Is this attribute mandatory?** field, select one of the following:
* **Yes**: Specifies that the attribute is mandatory when creating an item.
* **No**: Specifies that the attribute isn't mandatory when creating an item. This is the default selection.
12. Click **Save**.
The list of values attribute with the specified settings is created.
### Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Adding a Number Only Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute
### Overview
Number attributes allow you to add number-based information about an item. Use this attribute type when the value is always a number.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Product**.\
The **Product Attributes** page is displayed.
2. Click **New Attribute**.\
The **Create product attribute** page is displayed.
3. Select **Number**.
4. In the **Attribute title** field, enter a name for the attribute.
5. (Optional) In the **Description** field, enter a description for the attribute.
6. In the **Use JavaScript formula to calculate value** field, select one of the following:
* **Yes**: Specifies that the value for the attribute is calculated using the JavaScript formula that you provide in the **Calculation formula** field. An example of a JavaScript formula is `(async () => await attribute('id') *10)()`. When you select **Yes**, the **Calculation formula** and **Allow manual overwrite** fields are displayed. Do the following to complete the settings:
1. In the **Calculation formula** field, enter a JavaScript formula.
2. In the **Allow manual overwrite** field, choose one of the following:
* **Yes**: Specifies that you can manually overwrite the attribute value. When the **Use JavaScript formula to calculate value** setting is enabled, the system determines the value based on your provided formula. However, if you enable the manual overwrite option, you can replace the system-calculated value with a custom value during product attribute setup. For more information, see the [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item) section.
* **No**: Specifies that you can't manually overwrite the attribute value. This is the default setting.
* **No**: Specifies that the attribute value isn't calculated using a JavaScript formula.
7. In the **Do you want this attribute to accept decimal values?** field, select one of the following:
* **Yes**: Specifies that the field does accept decimal values.
* **No**: Specifies that the field doesn't accept decimal values.
8. In the **Is this attribute mandatory?** field, select one of the following:
* **Yes**: Specifies that the attribute is mandatory when creating an item.
* **No**: Specifies that the attribute isn't mandatory when creating an item. This is the default selection.
9. Click **Save**.
The number only attribute with the specified settings is created.
### Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Adding a Number Only Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute2
### Overview
Number attributes allow you to add number-based information about a category. Use this attribute type when the value is always a number.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product > Attributes > Category**.\
The **Category Attributes** page is displayed.
2. Click **New Attribute**.\
The **Create category attribute** page is displayed.
3. Select **Number Only**.
4. In the **Attribute title** field, enter a name for the attribute.
5. Click **Save**.
The number-only attribute is created.
### Related Topics
* [Category Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute2)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute2)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute2)
* [Managing Category Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/managing-category-attributes)
# Adding a Serial Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute
### Overview
Serial attributes allow you to create an auto increment number-type attribute. You can specify the starting number and the increment interval.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Product**.\
The **Product Attributes** page is displayed.
2. Click **New Attribute**.\
The **Create product attribute** page is displayed.
3. Select **Serial**.
4. In the **Attribute title** filed, enter a name for the attribute.
5. (Optional) In the **Description** field, enter a description for the attribute.
6. In the **Start serial with** field, enter the beginning serial number.
7. In the **Increment serial number by** field, enter the interval by which each subsequent number increases.
8. In the **Is this attribute mandatory?** field, select one of the following:
* **Yes**: Specifies that the attribute is mandatory when creating an item.
* **No**: Specifies that the attribute isn't mandatory when creating an item. This is the default selection.
9. Click **Save**.
The serial attribute with the specified settings is created.
### Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Adding a Text Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute
### Overview
Text attributes allow you to add text-based information about an item, such as a description or a code snippet. You can use any combination of text, numbers, or special characters for this attribute type.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product > Attributes > Product**.\
The **Product Attributes** page is displayed.
2. Click **New Attribute**.\
The **Create product attribute** page is displayed. The **Text** attribute type is selected by default.
3. In the **Attribute title (primary)** field, enter a name for the attribute.\
If localization is enabled in step 3, enter the localized attribute titles in the **Attribute title** field for each corresponding internationalization setting.
4. (Optional) In the **Description** field, enter a description for the attribute.
5. In the **Type of text** field, select one of the following:
* Small text: For single-line text attributes.
* Text Area: For multi-line text attributes.
* HTML: For text area attributes that support HTML.
6. In the **Use JavaScript formula to calculate value** field, select one of the following:
* **Yes**: Specifies that the value for the attribute is calculated using the JavaScript formula that you provide in the **Calculation formula** field. An example of a JavaScript formula is `(async () => await attribute('id') *10)()`. When you select **Yes**, the **Calculation formula** and **Allow manual overwrite** fields are displayed. Do the following to complete the settings:
1. In the **Calculation formula** field, enter a JavaScript formula.
2. In the **Allow manual overwrite** field, choose one of the following:
* **Yes**: Specifies that you can manually overwrite the attribute value. When the **Use JavaScript formula to calculate value** setting is enabled, the system determines the value based on your provided formula. However, if you enable the manual overwrite option, you can replace the system-calculated value with a custom value during product attribute setup. For more information, see the [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item) section.
* **No**: Specifies that you can't manually overwrite the attribute value. This is the default setting.
* **No**: Specifies that the attribute value isn't calculated using a JavaScript formula.
7. In the **Is this attribute mandatory?** field, select one of the following:
* **Yes**: Specifies that the attribute is mandatory when creating an item.
* **No**: Specifies that the attribute isn't mandatory when creating an item. This is the default selection.
8. Click **Save**.
The text attribute with the specified settings is created.
### Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Adding a Text Attribute
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute2
### Overview
Text attributes allow you to add text-based information about a category, such as a description or a code snippet. You can use any combination of text, numbers, or special characters for this attribute type.
### Prerequisites
Ensure you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Category**.
The **Category Attributes** page is displayed.
2. Click **New Attribute**.
The **Create category attribute page** is displayed. The **Text** attribute type is selected by default.
3. In the **Attribute title** field, enter a name for the attribute.
4. In the **Type of text** field, select one of the following:
* **Small text**: For single-line text attributes.
* **Text Area**: For multi-line text attributes.
* **HTML**: For text area attributes that support HTML.
5. Click **Save**.
The text attribute with the specified settings is created.
### Related Topics
* [Category Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute2)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute2)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute2)
* [Managing Category Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/managing-category-attributes)
# Category Attributes Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview
## Overview
Category attributes define specific characteristics of a category or collection, such as images and SEO tags. Category attributes added to higher-level categories are inherited by subcategories. Category attributes are inherited by default, meaning sub-collection nodes automatically adopt attribute values from their parent categories. However, users can override these values as needed, allowing for customization at different hierarchy levels.
## Attribute Types
fabric supports the following attribute types for storing category information:
* **Text:** A sequence of characters. You may store any combination of text, numbers, or special characters. Text attribute has three subtypes:
* Small text: For single-line text attributes.
* Text Area: For multi-line text attributes.
* HTML: For text area attributes that support HTML.
* **Number Only:** An attribute type for values that are always a number.
* **Date:** All date-related formats. Bulk import of the date attribute uses the date format selected when the attribute was created. Once selected, the date format can't be changed. If the format needs to be changed, you must delete the attribute and create it again using the required format.
* **Boolean:** A Boolean value (true/false) for a category attribute. While importing attributes from an external system, make sure the true or false values are specified for all Boolean attribute types.
For each attribute type, certain fields are optional, while others are required. Failure to provide required fields will result in an "Unable to create attribute" error message.
The following table shows the attribute types and their properties. This will help you determine the mandatory and optional properties of an attribute type. To ensure data quality, set up one or more validations based on the selected attribute type.
| Attribute Type | Localize this attribute | Attribute title | Description | Use JavaScript to calculate value | Validations | Is this attribute mandatory? | Type of text | Date Format | Decimal |
| -------------- | ----------------------- | --------------- | ----------- | --------------------------------- | ----------- | ---------------------------- | ------------ | ----------- | -------- |
| Text | Optional | Required | Optional | Optional | Optional | Required | Required | N/A | N/A |
| Number Only | Optional | Required | Optional | Optional | Optional | Required | N/A | N/A | Optional |
| Date | Optional | Required | Optional | Optional | Optional | Required | N/A | Required | N/A |
| Boolean | Optional | Required | Optional | Optional | Optional | Required | N/A | N/A | N/A |
After creating a category attribute, you cannot modify its attribute type. If you want to use a different attribute type, you must create a new category attribute with the required type.
## Related Topics
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute2)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute2)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute2)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute2)
* [Managing Category Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/managing-category-attributes)
# Importing Product Attributes
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes
## Overview
Product attributes are specific product descriptors that define characteristics such as size, color, or material. This document covers the process of importing multiple product attributes using a CSV file. You also have the option to add product attributes manually.
## CSV File Guidelines
Product attributes can be imported using CSV files exclusively, as fabric doesn't support other data or file formats. Here are some essential points to keep in mind:
* The headers in the first row of the CSV file should match the attribute titles.
* While attribute titles aren't case-sensitive, maintaining case consistency with the original attribute titles is recommended.
* Empty rows and columns are ignored.
* fabric recommends downloading the template file to serve as a guide when creating your own CSV file for import, minimizing errors during the process.
### Attribute data formatting
When preparing your CSV file for import, ensure that the product attribute data format aligns with the column requirements. Different columns have specific data input requirements:
| **Attribute** | **Description** |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Attribute Title** | The name of the attribute. |
| **Type of Attribute** | Specifies the attribute type, such as text, number, date, boolean, serial, or list of values, which is also known as *list of options*. |
| **Description** *(Optional)* | Provides additional details about the attribute. |
| **Decimal** | Indicates if the attribute allows decimal values. Valid values are **true** if decimals are allowed or **false** if only whole numbers are allowed. Applicable only to number-type attributes. The default value is **true**, and you must ensure that the number is in decimals. |
| **Min** *(Optional)* | Defines the minimum value for validation. Applicable only to number-type attributes. |
| **Max** *(Optional)* | Defines the maximum value for validation. Applicable only to number-type attributes. |
| **Date Format** | Specifies the required date format, such as MM/DD/YYYY, MM-DD-YYYY, DD/MM/YYYY, DD-MM-YYYY, YYYY/MM/DD, or YYYY-MM-DD. This is mandatory for date-type attributes; otherwise, the attribute can't be imported. |
| **Calculation Formula** *(Optional)* | JavaScript formula used to calculate the attribute value. |
| **Validations Formula** *(Optional)* | JavaScript formula used to define business validation rules for the attribute. |
| **Mandatory** | Specifies whether the attribute is required. Valid values are **true** if the attribute is mandatory or **false** if it's optional. |
| **Start With** | Defines the starting value for a serial-type attribute. Applicable only to serial-type attributes. |
| **Increment by** | Specifies the increment value for a serial-type attribute. |
| **Options Select Type (List of Value)** | Determines if the attribute is a list of values. Valid values are **true** if the attribute is a list of values or **false** if it's not. To specify options, use additional columns, such as **Value 1**, **Value 2**, **Value 3**, etc. |
The following table provides an example for a product attribute import CSV file:
| **Attribute Title** | **Type of Attribute** | **Sub Type** | **Description** | **Decimal** | **Min** | **Max** | **Date Format** | **Calculation Formula** | **Validation Formula** | **Mandatory** | **Start With** | **Increment by** | **Options Select Type** | **Value 1** | **Value 2** | **Value 3** | **Value 4** |
| ------------------- | --------------------- | ------------ | --------------- | ----------- | ------- | ------- | --------------- | ----------------------- | ---------------------- | ------------- | -------------- | ---------------- | ----------------------- | ----------- | ----------- | ----------- | ----------- |
| On Sale | `BOOLEAN` | | | | | | | | | `TRUE` | | | | | | | |
| Description 1 | `TEXT` | `SMALL_TEXT` | | | | | | | | `FALSE` | | | | | | | |
| Description 2 | `TEXT` | `TEXT_AREA` | | | | | | | | `TRUE` | | | | | | | |
| Description 3 | `TEXT` | `HTML` | | | | | | | | `FALSE` | | | | | | | |
| Color | `OPTIONS` | | | | | | | | | | | | | | | | |
## Prerequisites
Ensure that you have access to fabric **Product Catalog** in Copilot.
### Procedure
You can't import CSV files with duplicate names. Ensure that every file you import has a unique filename.
1. In the left menu, click **Product Catalog** > **Attributes** > **Product**.
The Product Attributes page is displayed.
2. Click **Import**.
The Import CSV file window is displayed, providing a link to download an example template for the CSV file.
3. To import a CSV file, choose one of the following options:
* Drag and drop the CSV file into the window.
* Click **Select a File** from your computer.
4. Click **Import file**.
The CSV file is imported, and the product attributes are added.
### Error messages
| **Error Message** | **Description** |
| --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| File header not present | A column header in the CSV file is incorrect. |
| INVALID\_ATTRIBUTE\_TYPE | An invalid attribute type was provided during import. Supported types are: - `TEXT`
- `BOOLEAN`
- `OPTIONS`
- `SERIAL`
- `DATETIME`
- `NUMBER`
|
| ATTRIBUTE\_TYPE\_NOT\_FOUND | An the attribute type wasn't mentioned in the CSV file during import. |
| Duplicate headers found \["Sub Type"] | Duplicate columns are present in the CSV file. |
| Attribute not found in formula definition. | An invalid attribute was provided for a custom formula during import. |
| At least one of the properties in startWith or increment are missing. | A startWith or increment value was missing for a serial type attribute during import. |
| `acceptedValues` must be unique and can't be empty | Duplicate or empty values were present for a list of values attribute during import. |
## Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Managing Category Attributes
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/managing-category-attributes
### Overview
This document covers the process of editing and deleting category attributes.
## Editing Product Attributes
### Prerequisites
* Ensure that you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-products-role).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Category**.\
The **Category Attributes** page is displayed.
2. Click the category attribute that you want to edit.\
The edit attribute type page is displayed.
3. Edit the attributes as required.
4. Click **Save**.
The category attribute is saved.
## Deleting a Category Attribute
### Prerequisites
Ensure that:
* You have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-products-role).
* The category attribute is removed from all category nodes. For more information, see the [removing a category attribute](/v3/product-catalog/user-guides/product-catalog/categories/managing-categories#removing-a-category-attribute) section.
* The category attribute is unassigned for all attribute groups. For more information, see the [update attribute group](/v3/product-catalog/api-reference/product-catalog/attribute-groups/update-attribute-group) page.
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Category**.\
The **Category Attributes** page is displayed.
2. Click a Category attribute that you want to delete.\
The edit attribute type page is displayed.
3. Click **Delete**.\
The **Delete attribute** popup is displayed.
4. Click **Yes, Delete**.
The category attribute is deleted.
### Related Topics
* [Category Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute2)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute2)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute2)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute2)
# Managing Product Attributes
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes
## Overview
This document covers the process of editing and deleting product attributes.
## Editing Product Attributes
### Prerequisites
* Ensure that you have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-products-role).
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Product**.
The **Product Attributes** page is displayed.
2. Click the product attribute that you want to edit.
The edit attribute type page is displayed.
3. Edit the attributes as required.
4. Click **Save**.
The product attribute is saved.
## Deleting a Product Attribute
### Prerequisites
Ensure that:
* You have administrator privileges to fabric **Product Catalog**. For more information, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-products-role).
* The product attribute is removed from all category nodes. For more information, see the [removing a product attribute](/v3/product-catalog/user-guides/product-catalog/categories/managing-categories#removing-a-product-attribute) section.
* The product attribute is unassigned for all attribute groups. For more information, see the [update attribute group](/v3/product-catalog/api-reference/product-catalog/attribute-groups/update-attribute-group) page.
### Procedure
1. In the left menu, click **Product Catalog > Attributes > Product**.
The Product Attributes page is displayed.
2. Click a product attribute that you want to delete.
The edit attribute type page is displayed.
3. Click **Delete**.
The **Delete attribute** popup is displayed.
4. Click **Yes, Delete**.
The product attribute is deleted.
### Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
# Product Attributes Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview
## Overview
Item attributes are used to define product characteristics. For example, a product name, an identity number, and a product description are all common attributes of a product.
Attributes are key-value pairs, such as *Color: red*, that hold information for each property of the product.
## Attribute Types
fabric supports the following types of attributes for storing product information:
* **Text:** A sequence of characters. You may store any combination of text, numbers, or special characters. Text attribute has three subtypes:
* Small text: For single-line text attributes.
* Text Area: For multi-line text attributes.
* HTML: For text area attributes that support HTML.
* **Number Only:** An attribute type for values that are always a number.
* **Date:** All date-related formats. Bulk import of the date attribute uses the date format selected when the attribute was created. Once selected, the date format can't be changed. If the format needs to be changed, you must delete the attribute and create it again using the required format.
* **Boolean:** A Boolean value (true/false) for a product attribute. While importing attributes from an external system, make sure the true or false values are specified for all Boolean attribute types.
* **List of Values:** A dropdown menu for product attributes that have defined values across the product list. Supports single selection or multiple selection from the dropdown.
* **Serial:** An auto increment number-type attribute. You can specify the starting number and what the increment is.
The following table shows the attribute types and their properties. This will help you determine the mandatory and optional properties of an attribute type. To ensure data quality, set up one or more validations based on the selected attribute type.
| **Attributes** | **Text** | **Number Only** | **Date** | **Boolean** | **List of Values** | **Serial** |
| --------------------------------- | -------- | --------------- | -------- | ----------- | ------------------ | ---------- |
| Localize this attribute | Optional | Optional | Optional | Optional | Optional | Optional |
| Attribute title | Required | Required | Required | Required | Required | Required |
| Description | Optional | Optional | Optional | Optional | Optional | Optional |
| Use JavaScript to calculate value | Optional | Optional | Optional | Optional | Optional | N/A |
| Validations | Optional | Optional | Optional | Optional | Optional | N/A |
| Is this attribute mandatory? | Required | Required | Required | Required | Required | Required |
| Type of text | Required | N/A | N/A | N/A | N/A | N/A |
| Date Format | N/A | N/A | Required | N/A | N/A | N/A |
| Decimal | N/A | Optional | N/A | N/A | N/A | N/A |
| Type of list | N/A | N/A | N/A | N/A | Required | N/A |
After creating a category attribute, you cannot modify its attribute type. If you want to use a different attribute type, you must create a new product attribute with the required type.
## Calculation Formulas
Businesses often require dynamically calculated attributes based on existing values. For example:
1. You can configure a product's display name to be *Product Name* + *by* + *Brand Name*, Instead of naming each product or variant individually. This formula automatically creates names for the products.
2. The area of a rug can be calculated by multiplying width with length and the price per square foot can be calculated by dividing the price attribute value by the area attribute value.
3. You can calculate weight per count by dividing the weight of the product by the total count of items inside the box.
With low-code JavaScript formulas, these attribute values can be calculated automatically. Here are some frequently used formulas:
| Operation | Calculation Formula |
| ----------- | -------------------------------------------------------------------------------------------------------- |
| Divide | `(async ()=> await attribute('attribute 1 ID') / await attribute('volume'))() ` |
| Multiply | `(async ()=> await attribute('attribute ID') \* 10)()` |
| Sum | `(async ()=> await attribute('attribute 1 ID') + await attribute('attribute 2 ID'))() ` |
| Subtract | `(async ()=> await attribute('attribute 1 ID') - await attribute('attribute 2 ID'))()` |
| Concatenate | `(async ()=> await attribute('attribute 1 ID') + " followed by " + await attribute('attribute 2 ID'))()` |
Note that the values in double quotes (`" "`) represent the title of the reference attribute and refer to the absolute value of the attribute being used for calculation.
## Validation Formulas
you can specify business validations on attributes using a low-code JavaScript formula and ensure data integrity and quality. This operation doesn't manipulate data, only validates fields for the attributes.
| Validation Type | Validation Formula |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Number Validation | `(async ()=> await attribute() >=0 && await attribute()<=20 && await attribute()%0.25 === 0)()` |
| String Validation | `(async ()=> (await attribute()).length < 200)()` |
| Date (Greater than Equal to current Date) | `(async ()=> await attribute() >= new Date())()` |
| Date (Greater than Equal to particular Date) | `(async ()=> await attribute() >= new Date('02/14/2021'))()` |
Formulas are based on JavaScript syntax, so you can use all inbuilt JavaScript functions.
For example, values given as a string can be stored as integers by using formulas such as `(async () => parseFloat(await attribute('Height (in)')) - parseFloat(await attribute('Weight (in)')) )()`.
## Related Topics
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Searching and Sorting Category Attributes
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/searching-and-sorting-category-attributes
### Overview
The search, filter, and sort options on the **Category Attributes** page allow you to refine the list of category attributes or find a specific category attribute.
You can use the filter option only if you have multiple category attributes.
#### To search for a specific category attribute, do the following:
1. In the left menu, click **Product Catalog > Attribute > Category**.
The **Category Attributes** page is displayed.
2. In the search field, enter a search term and press **Enter**.
The results are displayed.
#### To sort the list of category attributes, do the following:
1. In the left menu, click **Product Catalog > Attributes > Category**.
The Category Attributes page is displayed.
2. Click one of the column headers to sort the list of category attributes.
Sortable headers are **Attribute Title**, **Attribute Type**, **Last Modified**, and **Mandatory/Optional**.
The category attributes list is sorted by the selected header.
### Related Topics
* [Category Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute2)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute2)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute2)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute2)
* [Managing Category Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/managing-category-attributes)
# Searching and Sorting Product Attributes
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/attributes/searching-and-sorting-product-attributes
The search, filter, and sort options on the **Product Attributes** page allow you to refine the list of product attributes or find a specific product attribute.
You can use the filter option only if you have multiple product attributes.
## Prerequisites
Ensure you have created or imported multiple product attribute.
### To search for a specific product attribute, do the following:
1. In the left menu, click **Product Catalog > Attribute > Product**.
The **Product Attributes** page is displayed.
2. In the search field, enter the attribute title and press **Enter**.
The results are displayed.
### To sort the list of product attributes, do the following:
1. In the left menu, click **Product Catalog > Attributes > Product**.
The Product Attributes page is displayed.
2. Click one of the column headers to sort the list of product attributes.
Sortable headers are **Attribute Title**, **Attribute Type**, **Last Modified**, and **Mandatory/Optional**.
The product attributes list is sorted by the selected header.
For finding an attribute ID, sort the product attributes list and use the find command by pressing Control + F on Windows or Command + F on Mac. There is no other direct method to find an attribute ID.
## Related Topics
* [Product Attributes Overview](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview)
* [Adding a Text Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-text-attribute)
* [Adding a Number Only Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-number-only-attribute)
* [Adding a Date Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute)
* [Adding a Boolean Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-boolean-attribute)
* [Adding a List of Values Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute)
* [Adding a Serial Attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-serial-attribute)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes)
* [Managing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/managing-product-attributes)
# Background Jobs
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/background-jobs/background-jobs
With **Background Jobs**, you can view the history of all the files you have imported and exported in **Product Catalog**, as well as see real-time progress updates for these jobs.
The summary of the job includes its status, type, and the date it was started and completed. The overview page also includes a link to download the original file.
This feature enhances operational efficiency for users, such as Merchandising Managers and SI Developers, who manage product information.
All import jobs are kept on file in your account for access later. The details of export jobs are only held for seven days.
### Related Topics
* [Managing Background Jobs](/v3/product-catalog/user-guides/product-catalog/background-jobs/managing-background-jobs)
* [Viewing Background Jobs History](/v3/product-catalog/user-guides/product-catalog/background-jobs/viewing-background-jobs-history)
# Managing Background Jobs
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/background-jobs/managing-background-jobs
The search, filter, and sort options on the **Background Jobs** page allow you to refine the list of items, find a specific job, or cancel a job.
The **Background Jobs** page displays the following information:
| Column Header | Description |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Job ID** | The unique identifier of the job. |
| **File name** | The name of the file that was imported. This column is only available on the **Import** tab. |
| **Import type** | The **Import type** column is only available on the **Import** tab. It displays the type of information that was exported, whether item, bundle, item variant, attribute, category, or collection. |
| **Export type** | The **Export type** column is only available on the **Export** tab. It displays the type of information that was exported, whether item, bundle, item variant, attribute, category, or collection. |
| **Job type** | The Job type column is only available on the **Other** tab. It displays the following information:
- **Product Update**: Collection Evaluation: When a product is updated, all collections are evaluated to identify which collection the product will be a part of.
- **Category Update**: Product Attribute: A job that's triggered every 20 minutes (unless the account is configured for a different time period) when product attributes assigned to a category are assigned or removed.
- **Collection Update**: Product Evaluation: When a collection is updated or created, this job evaluates all the rules against products and indexes all the products.
- **Product Update**: Category Assignment: Users can assign products to a different category in bulk. This job tracks those bulk category reassignments on products.
- **Product Denormalization**: fabric’s downstream domains, such as Orders, Offers, and Cart and Checkout, use denormalized data.
This job handles all the Product Catalog events and identifies a list of products that are updated due to these events and writes the denormalized data to OpenSearch for use downstream. |
| **Message** | The system-generated message that gives one of the following outcomes of the background job:
- **Completed successfully**: The job is complete with no errors.
- **Partially completed with errors**: The job is partially complete and contains errors.
- **File contains errors**: The job is complete and contains errors.
- **Failed with Errors**: The job couldn't be completed because of major errors.
This message can only appear for jobs on the Other tab. |
| **Status** | The status of the job. Statuses are color-coded and defined as follows:
- **Scheduled (grey)**: Job is scheduled to begin.
- **In progress (green)**: Job is currently running.
- **Completed (green)**: Job is complete with no errors.
- **Completed (orange)**: Job is complete but some errors were identified.
- **Failed (red)**: Job couldn't be completed and no rows were processed due to major errors. |
| **Time started** | The date and time the job began. |
| **Time completed** | The date and time the job completed. |
### Searching Jobs
1. In the left menu, click **Product Catalog > Background Jobs**.
The **Import** tab on the **Background Jobs** page is displayed.
2. Select the type of jobs to search by doing one of the following:
* To search imports, stay on the **Imports** tab.
* To search exports, click the **Exports** tab.
* The **Exports** tab is displayed.
* To search other jobs, click the **Other** tab.
* The **Other** tab is displayed.
3. Type a search term into the search bar and press **Enter**.
The search field accepts the following queries:
* Imports: Partial file name, full file name, or full job ID.
* Exports: Partial file name, full file name, or full job ID.
* Other jobs: Full job ID.
The results are displayed.
### Filtering Jobs
1. In the left menu, click **Product Catalog > Background Jobs**.\
The **Import** tab on the **Background Jobs** page is displayed.
2. Select the type of jobs to filter by doing one of the following:
* To filter imports, stay on the **Imports** tab.
* To filter exports, click the **Exports** tab.
* The **Exports** tab is displayed.
* To filter other jobs, click the **Other** tab.
* The **Other** tab is displayed.
3. Choose at least one of the following filters:
* Click the **Date** field and select a range for the date the jobs were started or completed.
* Click the **Status** field and select a status.
* Depending on the type of jobs to filter that you selected in step 2, click the **Import type**, **Export type**, or **Job type** field and select a job type.
Jobs that match the filters you chose are displayed.
Click **Reset filters** to remove all filters.
### Sorting Jobs
1. In the left menu, click **Product Catalog > Background Jobs**.\
The **Import** tab on the **Jobs** page is displayed.
2. Select the type of jobs to sort by doing one of the following:
* To sort imports, stay on the **Imports** tab.
* To sort exports, click the **Exports** tab.
* The **Exports** tab is displayed.
* To sort other jobs, click the **Other** tab.
* The **Other** tab is displayed.
3. Click one of the column headers to sort the list of jobs.\
All jobs can be sorted by **Job ID**, **Status**, **Time started**, and **Time completed**. In addition, import jobs can be sorted by **Import type**, export jobs can be sorted by **Export type**, and other jobs can be sorted by **Job type**.
The jobs are sorted.
### Canceling Jobs
The only type of background job that can be canceled is an item or item variant import. When a job is canceled, it stops processing after completing the row in progress.
1. In the left menu, click **Product Catalog > Background Jobs**.
The **Import** tab on the **Background Jobs** page is displayed.
2. Mouse over the job you want to cancel and click the **X** icon.
Note: The job must have a status of **In Progress** or **Scheduled** to be canceled.
3. The **Are you sure you want to cancel?** window is displayed.
4. Click **Yes, Cancel**.
The job is canceled.
## Related Topics
* [Background Jobs Overview](/v3/product-catalog/user-guides/product-catalog/background-jobs/background-jobs)
* [Viewing Background Jobs History](/v3/product-catalog/user-guides/product-catalog/background-jobs/viewing-background-jobs-history)
# Viewing Background Jobs History
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/background-jobs/viewing-background-jobs-history
In Copilot, you can view the import history, export history, and real-time progress updates for **Product Catalog**.
All import jobs are kept on file in your account for access later. The details of export jobs are only held for seven days.
You can view job histories only if you have performed at least one import or export operation.
## Viewing Import History
1. In the left menu, click **Product Catalog > Background Jobs**.\
The **Import** tab on the **Background Jobs** page is displayed.
2. Click a **Job ID**.\
The summary page with the following details is displayed:
* **Job type**: For import history details, this is always **import**. Also includes information on the type of import, whether item, bundle, item variant, attribute, category, or collection.
* **Time started**: The date and time the import began.
* **Time completed**: The date and time the import completed.
* Three fields with dynamic names depending on the type of import. Items is used in the following example, but depending on the type of import, the fields could be labelled item, bundle, item variant, attribute, category, or collection.
* **Item created**: The number of items created as a result of the import.
* **Item updated**: The number of items updated as a result of the import.
* **Items upsert with error**: The number of items upserted with errors as a result of the import.
3. (Optional) To download a copy of the original file, click **Download Original File**.\
A CSV file containing the import details is downloaded.
4. (Optional) If the import job had errors, to view the error report, click **Download Error Report**.\
A zip file is downloaded containing the original file that was uploaded as well as a the error report in CSV format.
## Viewing Export History
1. In the left menu, click **Product Catalog > Background Jobs**.\
The **Background Jobs** page is displayed.
2. Click **Export history**.\
The **Export history** tab is displayed.
3. Click a **Job ID**.\
The summary page with the following details is displayed:
* **Job type**: For export history details, this is always **export**. Also includes information on the type of export, whether item, bundle, item variant, attribute, category, or collection.
* **Time started**: The date and time the export began.
* **Time completed**: The date and time the export completed.
4. (Optional) To download a copy of the original file, click **Download Original File**.\
A CSV file containing the export details is downloaded.
5. (Optional) If the export job had errors, to view the error report, click **Download Error Report**.\
A zip file is downloaded containing the original file that was uploaded as well as a the error report in CSV format.
## Viewing Other Jobs History
1. In the left menu, click **Product Catalog > Background Jobs**.\
The **Background Jobs** page is displayed.
2. Click **Other**.\
The **Other** tab is displayed.
3. Click a **Job ID**.\
The summary page with the following details is displayed:
* **Product Update: Collection Evaluation:** When a product is updated, all collections are evaluated to identify which collection the product will be a part of.
* **Category Update: Product Attribute:** A job that's triggered every 20 minutes (unless the account is configured for a different time period) when product attributes assigned to a category are assigned or removed.
* **Collection Update: Product Evaluation:** When a collection is updated or created, this job evaluates all the rules against products and indexes all the products.
* **Product Update: Category Assignment:** Users can assign products to a different category in bulk. This job tracks those bulk category reassignments on products.
* **Product Denormalization:** fabric's downstream domains, such as Orders, Offers, and Cart and Checkout, use denormalized data. This job handles all the Product Catalog events and identifies a list of products that are updated due to these events and writes the denormalized data to OpenSearch for use downstream.
* **Product Update: Publish:** This job runs when you publish one or more items or bundles using the bulk publish feature. After all necessary updates are processed, the products become available across domains.
* **Product Update: Unpublish:** This job runs when you unpublish one or more items or bundles using the bulk unpublish feature. It removes the products from active availability across domains.
## Related Topics
* [Background Jobs Overview](/v3/product-catalog/user-guides/product-catalog/background-jobs/background-jobs)
* [Managing Background Jobs](/v3/product-catalog/user-guides/product-catalog/background-jobs/managing-background-jobs)
# Adding a Category
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category
### Overview
Categories are hierarchical tree structures that allow you to organize items, variants, and bundles into groups based on similar attributes. This document covers how to create a single category using the Copilot interface. You can also add multiple categories at the same time by [importing them](/v3/guides/product-catalog/categories/importing-categories) using a CSV file.
### Prerequisites
Ensure that you have access to the **Product Catalog** in Copilot. For more information, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Categories**.\
The Categories page is displayed.
2. Click the **+** icon.
3. Enter a title for the new category and press **Enter** or click the **?** icon.\
The new category is created.
4. (Optional) Click the new category name, and then click the **+** icon on the right to create a new subcategory.\
The new subcategory is created.
When you click a root category, all subcategories within the root category are displayed at the right. A **leaf** label is used to indicate any category or subcategory that doesn't contain a subcategory.
### Related Topics
* [Categories Overview](/v3/product-catalog/user-guides/product-catalog/categories/overview)
* [Importing Categories](/v3/product-catalog/user-guides/product-catalog/categories/importing-categories)
* [Managing Categories](/v3/product-catalog/user-guides/product-catalog/categories/managing-categories)
# Importing Categories
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/categories/importing-categories
Categories are hierarchical tree structures that allow you to organize items, variants, and bundles into groups based on similar attributes. This document covers the process of importing multiple categories using a CSV file. You can also [add categories individually](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category).
## CSV File Guidelines
You can import categories using CSV files only, fabric doesn't support any other data or file formats. Here are the key points to consider:
* The headers, represented in the first row of the CSV file, should match the attributes of the category.
* While category titles aren't case-sensitive, maintaining case consistency with the original category titles is recommended.
* Empty rows and columns are ignored.
* fabric recommends that you download the template file to use as a guide when creating your own CSV file for import to minimize errors during the import process.
## Category Data Formatting
When preparing your CSV file for import, ensure that the category data format aligns with the column requirements. Different columns have specific data input requirements:
| **Header** | **Description** |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Action** | Accepts one of the following commands: - **Create**: Adds a new category.
- **Update**: Replaces the details of an existing category.
- **Upsert**: Creates a new category or replaces the details of an existing category. If no action is specified for a row, upsert is the default action.
- **Delete**: Removes an existing category.
If the field is blank, the default value is Create. |
| **Node ID** | Represents the Category ID.- When creating a category, this field must be left blank; otherwise, an error will occur.
- When updating, upserting, or deleting a category, enter the **Node ID** or **Node Name**.
|
| **Parent Category** | Specifies the parent category for the new category you want to create or update unless you are creating a primary or root category. |
| **Node Name** | Specifies the name of the root, branch, or leaf categories being created or updated. |
| **Order** | Specifies the order in which a category should appear among sibling categories. If multiple categories share the same order, the newly added ones appear in alphabetical order. |
| **Product Attributes** | Specifies the attributes of products associated with a category. You must assign relevant product attributes to categories. For more information on assigning product attributes in Copilot, see the [Adding Product Attributes](/v3/product-catalog/user-guides/product-catalog/categories/managing-categories#adding-product-attributes) section. |
| **Category Attributes** | Specifies the attributes of a category. You must assign relevant category attributes to categories. For more information on assigning category attributes in Copilot, see the [Adding Category Attributes](/v3/product-catalog/user-guides/product-catalog/categories/managing-categories#adding-category-attributes) section. |
### Example
Category import supports up to two category levels. For example, if you have the category **Dog > Food > Wet Food**, the third level, **Wet Food**, won't be imported. You must manually add categories through Copilot starting from the third level. For more information on adding categories using Copilot, see the [Adding a Category](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category) page.
| **Action** | **Node ID** | **Parent Category** | **Node Name** | **Order** | **Product Attributes** | **Category Attributes** |
| ---------- | ----------- | ------------------- | ------------- | --------- | ---------------------- | ----------------------- |
| Create | | | Dog | 1 | salmon; beef; chicken | wet food |
| Create | | Dog | Food | 1 | salmon; beef; chicken | wet food |
| Create | | | Cat | 1 | salmon; beef; chicken | wet food |
| Create | | Cat | Food | 1 | salmon; beef; chicken | wet food |
## Prerequisites
Ensure that you have access to **Product Catalog** in Copilot. For more information, see the Product Catalog [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-products-roles) page.
## Procedure
Importing a CSV file will overwrite existing data. To preserve your data, use your previously imported CSV file, add the new categories to it, and rename the file. For more information on downloading the import file, see the [Viewing Import History](/v3/product-catalog/user-guides/product-catalog/background-jobs/viewing-background-jobs-history) section.
1. In the left menu, click **Product Catalog > Categories**.\
The **Categories** page is displayed.
2. Click **Import**.\
The **Import CSV file** window is displayed. This window provides a link to download an example template for the CSV file.
3. Download the sample template by clicking **template here**.
4. To import a CSV file, do one of the following:
* Drag and drop the CSV file into the window.
* Click **Select a File from your computer**.
5. Click **Import file**.
The CSV file is imported and the changes you indicated to your categories are made.
## Related Topics
* [Categories Overview](/v3/product-catalog/user-guides/product-catalog/categories/overview)
* [Adding a Category](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category)
* [Managing Categories](/v3/product-catalog/user-guides/product-catalog/categories/managing-categories)
# Managing Categories
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/categories/managing-categories
## Overview
Categories are hierarchical tree structures that allow you to organize items, variants, and bundles into groups based on similar attributes. This document covers the process of adding attributes to categories, renaming categories, and deleting categories.
## Adding Product Attributes
### Overview
Item attributes are the attributes that an item, also called a product, must have configured in order to be added to a category.
Individual item attributes are set up in the Attributes section. Those product attributes can then be added to a category using the procedure below.
As an example, a home décor company might have a category for rugs and want to require any items added to that category to have length and width information. The attributes for dimensions would be set up in **Product Catalog > Attributes > Product** and then added to a category in **Product Catalog > Categories**.
It's required to set up a category’s product attributes prior to adding any items to it. If a category is missing item attributes, no item can be created for that category.
### Procedure
1. In the left menu, click **Product Catalog > Categories**.\
The **Categories** page is displayed.
2. Mouse over the desired category and click the vertical ellipses (**⋮**) at the right.
3. Click **Product attributes**.\
The **Product attributes** menu is displayed.
4. Click the **Add Product Attributes** dropdown.\
The dropdown displays a list of category attributes as created in **Product Catalog > Attributes > Product**.
5. To add an attribute, click its corresponding checkbox.
Note that system-mandatory attributes are separated for easier management. These attributes are shown by default, but need to be saved so that you can add to the category.
You can add as many attributes as needed up to a maximum of 60 attributes per each session. If you want to add more attributes, you must click **Save** and repeat this step.
6\. (Optional) To the right of a product attribute, click the vertical ellipses (**⋮**) and do the following:
* To make the attribute mandatory, click **Make attribute mandatory**.
* To remove the attribute, click **Remove attribute**.
7. Click **Save**.
The category attributes you selected are applied to the category and all its subcategories.
## Adding Category Attributes
### Overview
Category attributes allow you to apply a group of attributes to your category hierarchy. These attribute groups are set up in **Product Catalog > Attributes > Category**.
You can apply category attributes at the root level of your category hierarchy or at the subcategory level.
Subcategories inherit the category attributes applied to the parent category unless you select a different group of category attributes at the subcategory level.
### Procedure
1. In the left menu, click **Product Catalog > Categories**.\
The Categories page is displayed.
2. On the desired category click the vertical ellipses (**⋮**) at the right.
To apply category attributes to the entire category hierarchy, click the vertical ellipses to the right of the Root menu.
3. Click **Category attributes**.\
The **Category Attributes** menu is displayed.
4. Click the **Add Category Attributes** dropdown.
The dropdown menu displays a list of category attributes that are created in the **Product Catalog > Attributes > Category** page.
5. To add an attribute, click its corresponding checkbox.
You can add up to 60 attributes per session. To add more attributes, you must click **Save** and repeat this step.
6. Click **Save**.
The category attributes that you selected are applied to the category and its subcategories.
## Removing Attributes from Category
You can remove category attributes at the root level of your category hierarchy or at the subcategory level.
With the following procedure, you can remove one attribute at a time. To update or remove multiple attributes at once, [import an attributes CSV](/v3/product-catalog/user-guides/product-catalog/categories/importing-categories) file for categories. The import process overwrites existing data, so any attributes not included in the file will be removed.
### Removing a category attribute
1. In the left menu, click **Product Catalog > Categories**.\
The **Categories** page is displayed.
2. Click the vertical ellipsis (**⋮**) on the right of the category that you want to modify.
To remove category attributes from the entire category hierarchy, click the vertical ellipsis (**⋮**) next to the **Root** menu.
3. Click **Category attributes**.\
The **Category attributes** window is displayed.
4. In the **Category Attributes** section, click the vertical ellipsis (**⋮**) next to the attribute you want to remove.
5. Click **Remove attribute**.
6. Click **Save**.
The category attribute is removed from the category.
## Removing a product attribute
Product attributes inherited from a parent category can't be removed at the subcategory level. To remove them, you must remove them from the parent category.
1. In the left menu, click **Product Catalog > Categories**.\
The **Categories** page is displayed.
2. Find the category you want to modify and click the vertical ellipsis (**⋮**) on the right.\
To remove product attributes from the entire category hierarchy, click the vertical ellipsis (**⋮**) next to the **Root** menu.
3. Click **Product attributes**.\
The **Product attributes** window is displayed.
4. In the **Product Attributes** section, click the vertical ellipsis (**⋮**) next to the attribute you want to remove.
5. (Optional) If the product attribute is mandatory, click **Make attribute non mandatory**.
6. Click **Remove attribute**.\
If you can't click **Remove attribute**, ensure that the product attribute isn't inherited or mandatory.
7. Click **Save**.
The product attribute is removed from the category.
## Viewing Items in a Category
1. In the left menu, click **Product Catalog > Categories**.\
The **Categories** page is displayed.
2. Click the vertical ellipses (**⋮**) at the right of the desired category.
3. Click **View Items**.
The list of all items belonging to the selected category and its subcategories is displayed.
## Renaming a Category
1. In the left menu, click **Product Catalog > Categories**.\
The **Categories** page is displayed.
2. Click the vertical ellipses (**⋮**) at the right of the desired category.
3. Click **Rename**.
4. Enter a new name.
5. Press **Enter**.
The category name is updated.
## Deleting a Category
1. In the left menu, click **Product Catalog > Categories**.\
The **Categories** page is displayed.
2. Click the vertical ellipses (**⋮**) at the right of the desired category.
3. Click **Delete**.
4. Click **Yes, Delete**.
The category is deleted.
## Related Topics
* [Categories Overview](/v3/product-catalog/user-guides/product-catalog/categories/overview)
* [Adding a Category](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category)
* [Importing Categories](/v3/product-catalog/user-guides/product-catalog/categories/importing-categories)
# Categories
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/categories/overview
Categories define the structure of product organization within **Product Catalog**, allowing merchants to group products logically based on shared attributes. Using a hierarchical tree structure, categories help create navigable and scalable product groupings.
Each product in Product Catalog, whether an item, a variant, or a bundle, must be assigned to a category or subcategory when it's created. A product can only be assigned to one category or subcategory at a time.
There is no limit to the number of categories or subcategories you can create.
## Tree Analogy
Categories and subcategories can be best explained with the tree analogy. For instance, consider *furniture* as the main category or root, the branches are subcategories such as *tables* and *chairs*, and the leaves represent individual products. In this example, a leaf could be an oak dining table that seats four. Visually, it looks like this:
> * Root: Furniture
> * Branch: Tables
> * Leaf: Dining Tables
> * Product: Oak dining table seating 4
> * Product: Oak dining table seating 6
> * Leaf: Coffee Tables
> * Product: Oak coffee table
> * Product: Oak coffee table, glass top
> * Branch: Chairs
> * Leaf: Dining Chairs
> * Product: Oak dining chair
> * Product: Oak dining chair, with arms
> * Leaf: Office Chairs
> * Product: Computer chair
> * Product: Computer chair, reclining
Any attribute applied to a category is inherited by its subcategories, known as attribute inheritance. However, inherited attributes can be overwritten by assigning the attribute to the subcategory itself. For example, the broad *office chairs* category could have a *material* attribute set to *leather*, but a specific subcategory could be set to *nylon*.
## Related Topics
* [Adding a Category](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category)
* [Importing Categories](/v3/product-catalog/user-guides/product-catalog/categories/importing-categories)
* [Managing Categories](/v3/product-catalog/user-guides/product-catalog/categories/managing-categories)
# Adding Category Attributes to a Collection
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/collections/adding-category-attributes
Category attributes define specific characteristics of a category, describing items within it. Using categories, you can organize products into a tree structure of subcategories, with each item belonging to a category or subcategory.
## Procedure
1. In the left menu, click **Product Catalog > Collections**.\
The **Collections** page is displayed.
2. Click a collection.\
The **Collection Preview** page is displayed.
3. Mouse over the collection and click the pencil icon.
The **Manage** menu is displayed.
4. Click the **Add category attribute** field and select a category attribute.
5. Enter a corresponding value for the category attribute.
6. Click **Save**.
The category attributes are added to the collection.
## Related Topics
* [Collections Overview](/v3/product-catalog/user-guides/product-catalog/collections/collections)
* [Creating a Collection](/v3/product-catalog/user-guides/product-catalog/collections/creating-a-collection)
* [Importing Collections](/v3/product-catalog/user-guides/product-catalog/collections/importing-collections)
* [Managing Collections](/v3/product-catalog/user-guides/product-catalog/collections/managing-collections)
# Collections
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/collections/collections
Collections in Product Catalog are a flexible tool to group products to meet dynamic merchandising purposes on a storefront. Unlike categories, which provide a fixed, hierarchical structure, collections reflect flexible grouping of products for display on a storefront based on specific themes, promotions, or attributes.
Collections enable you to aggregate products from multiple categories. You can further refine the curated list based on attributes.
## Key Features of Collections
* **Dynamic Grouping**: After the rules for a collection are defined, you don't need to refresh or re-run the collection to have an accurate list of products when the catalog is refreshed. When new products are added to the catalog or existing products are updated to match collection rules, they will appear in the collection automatically.
* **Attribute-based Rules**: You can set up collections by defining rules based on product attributes , for example price range, brand, or availability. This allows for precise targeting and segmentation, helping you create custom displays that align with merchandising strategies.
## Collections vs Categories
While both collections and categories help organize products, they serve different purposes:
* [Categories](/v3/guides/product-catalog/categories/categories_overview) provide a foundational, static structure for products, making it easier for users to navigate a catalog in a structured, hierarchical way. For example, *Furniture > Living Room > Sofas*.
* Collections offer flexibility, allowing you to aggregate products from multiple categories into a single, curated list, perfect for promotional or thematic displays on a storefront. For example, a page on the storefront could showcase items from all categories made by a specific manufacturer, or a sale on sectional sofas.
## Rules and Conditions
Collections are set up by selecting the categories that contain the products that you want to include in the collection. You can further refine the products from those categories based on their attributes using customizable rules and conditions.
Conditions consist of a product attribute, a validation option, and a value. For example, if you want to create a collection of only red items, you must set the condition for the product attribute to *color*, the validation option to *is exact match*, and the value to *red*.
The [product attribute](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview) and value in conditions are user-specified. The following table lists the fabric-generated validation options:
| **Validation Option** | **Description** |
| ----------------------- | -------------------------------------------------------------------------- |
| **Is equal to** | The product attribute must match the specified value exactly. |
| **Is greater than** | The product attribute must be greater than the specified value. |
| **Is less than** | The product attribute must be less than the specified value. |
| **Includes** | The product attribute must include the specified value. |
| **Excludes** | The product attribute must exclude the specified value. |
| **Contains** | The product attribute must contain a partial match to the specified value. |
| **Contains exact word** | The product attribute must contain the exact word specified. |
| **Does not contain** | The product attribute must not include the specified value. |
| **Is exact match** | The product attribute must match the specified value exactly. |
| **Yes** | The product attribute must be marked as *true*. |
| **No** | The product attribute must be marked as *false*. |
The relationships between conditions within a rule are governed by *AND* and *OR* operators so that you can create precise inclusion or exclusion rules.
For example, a rule with conditions based on *AND* logic might require that a product be large and green and made in the USA. A rule with conditions that include *OR* logic might require that a product be large and green or blue.
A collection can contain up to five rules, with each rule containing up to five conditions. Rules can only be joined together with an *AND* operator.
## Use Cases
A furniture store with a diverse range of products needs to drive sales by promoting specific types of sofas from its extensive Product Catalog. While the store’s catalog is organized by broad categories, such as *Sofas*, these general categories don’t effectively highlight certain products for promotional events. The store wants to feature only a select type of sofa within its broad Sofas category to align with current market trends and customer interests.
The following use cases demonstrate two scenarios: one in which conditions are joined with the *AND* operator, and another in which conditions are joined with the *OR* operator.
### Scenario 1: Creating a targeted sofa collection with AND operators
In this scenario, the store wants to create a collection of sofas that meet all specified conditions, narrowing down the selection to a precise product type for a focused promotion. The goal is to quickly create a collection of sofas that are:
* *Sectional* in style
* *Not powered*
* Not made of *leather*
* Manufactured by *Top Brand*
* Belonging to the *Windham* product line
Using a collection, the store can set up this sale within the *Sofas* category by applying a single rule with multiple conditions that precisely define the products to be included. Here’s how each condition helps narrow down the products in the category to create a tailored collection:
* Condition 1
* Product Attribute: *Style*
* Validation Option: *Is exact match*
* Value: *Sectional*
* Condition 2
* Product Attribute: *Powered*
* Validation Option: *Is equal to*
* Value: *False*
* Condition 3
* Product Attribute: *Material*
* Validation Option: *Does not contain*
* Value: *Leather*
* Condition 4
* Product Attribute: *Brand*
* Validation Option: *Includes*
* Value: *Top Brand*
* Condition 5
* Product Attribute: *Line*
* Validation Option: *Includes*
* Value: *Windham*
In this collection, *AND* logic is used across all conditions, ensuring that the included products are sectional sofas that are non-powered, non-leather, and exclusively from the Windham line by Top Brand.
### Scenario 2: Expanding a sofa collection with OR operators
In this scenario, the store wants to broaden the selection for a promotion by including sofas that meet at least one of several material options, allowing for greater flexibility. The goal is to create a collection of sofas that are:
* *Sectional* in style
* Made of *leather*
* Made of *microfiber*
Here’s how each condition would be structured to create this broader collection:
* Condition 1
* Product Attribute: *Style*
* Validation Option: *Is exact match*
* Value: *Sectional*
* Condition 2
* Product Attribute: *Material*
* Validation Option: *Is equal to*
* Value: *Leather*
* Condition 3
* Product Attribute: *Material*
* Validation Option: *Is equal to*
* Value: *Microfiber*
In this collection, *AND* logic is used between Conditions 1 and 2, with *OR* logic joining Conditions 2 and 3, ensuring that the included products are sectional sofas that are either leather or microfiber.
## Related Topics
* [Creating a Collection](/v3/product-catalog/user-guides/product-catalog/collections/creating-a-collection)
* [Importing Collections](/v3/product-catalog/user-guides/product-catalog/collections/importing-collections)
* [Managing Collections](/v3/product-catalog/user-guides/product-catalog/collections/managing-collections)
* [Adding Category Attributes to a Collection](/v3/product-catalog/user-guides/product-catalog/collections/adding-category-attributes)
# Creating a Collection
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/collections/creating-a-collection
This topic covers the process of creating a collection.
Collections are most effective when you’ve fully configured your Product Catalog elements. Before creating a collection, it’s helpful to have the following in place:
* [Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview): Setting up product attributes enables you to refine collections based on these specific product characteristics, such as style, material, or brand.
* [Products](/v3/product-catalog/user-guides/product-catalog/list/items/items): Adding products and [assigning product attributes to them](/v3/guides/product-catalog/list/items/adding-an-item) ensures that collections capture the right products.
* [Categories](/v3/product-catalog/user-guides/product-catalog/categories/overview): Organizing your products into categories provides a foundation for building collections and makes it easier to select relevant products.
With these elements set up, you’ll be able to define collection rules and conditions more precisely, making it easier to organize products according to specific criteria.
## Prerequisites
* Ensure that you have **Admin** or **Editor** privileges for Product Catalog. For more detailed information on these settings, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-products-roles).
## Procedure
1. In the left menu, click **Product Catalog > Collections**.
* The **Collections** page is displayed.
2. Click **Create Collection**.
* The **Basic details** section on the **Create Collection** page is displayed.
3. In the **Collection name** field, enter a name.
4. To add one or more categories, in the **Your Catalog categories** section:
* Select categories in the pre-populated list.
* Search for the name of the category and selecting one or more of the matching categories in the results.
5. Click **Next**.
* The **Choose products for your collection** section is displayed with a list of products in the categories you selected.
You can select categories you want to add or remove by using the **Category** filter.
1. To define the rules and conditions that determine which products are included in the collection, select **Attributes & Values**.
2. To set up the first rule, in the **Attributes & Values** > **Rule 1**, and do the following:
1. In the **If attribute** field, select an attribute.
2. In the **Validation** field, select a validation option.
3. In the **Value** field, enter a value.
4. If you want to join this rule with a condition, click **Add Condition** and click **AND** or **OR**.
You can include up to five conditions within a single rule. Repeat these steps as needed to create up to five rules per collection.
You can't have an empty rule. If a rule is empty, the **Apply** button is disabled.
5. (Optional) To create a new rule, click **Add Rule** and fill out the condition fields as required.
6. Click **Apply**.
3. Click **Next**.
* The **Review and add products to your collection** section is displayed.
4. Click **Save**.
* The **Automatically create sub-collections?** window is displayed. Do one of the following:
* To enable automatic organization of your collection into sub-collections based on the categories it contains, click **Yes, Create**.
* To organize your collection into sub-collections manually, click **No, Create My Own**.
The Collection Preview page is displayed. If you want to make changes to the sub-collections, follow the steps to [create a Sub-Collection](/v3/product-catalog/user-guides/product-catalog/collections/managing-collections#creating-a-sub-collection).
5. To activate click the **Inactive** button.
The collection is activated.
6. Click **Run Collection**.
The collection is created.
If you are adding category attributes to the collection, see [Adding Category Attributes to a Collection](/v3/product-catalog/user-guides/product-catalog/collections/adding-category-attributes).
## Related Topics
* [Collections Overview](/v3/product-catalog/user-guides/product-catalog/collections/collections)
* [Importing Collections](/v3/product-catalog/user-guides/product-catalog/collections/importing-collections)
* [Managing Collections](/v3/product-catalog/user-guides/product-catalog/collections/managing-collections)
* [Adding Category Attributes to a Collection](/v3/product-catalog/user-guides/product-catalog/collections/adding-category-attributes)
# Importing Collections
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/collections/importing-collections
Collections serve as an alternative to categories for organizing products, especially useful for short-term merchandising campaigns. This topic covers the process of importing multiple collections with a CSV file. You can also add collections individually.
We highly recommend that you download the template file to use as a guide when creating your CSV file for import to minimize errors during the import process.
### CSV File Guidelines
You can import collections using CSV files only; Product Catalog doesn't support any other data or file formats. Here are the key points to consider:
* The headers, represented in the first row of the CSV file, should match the attributes of the collection.
* While collection titles aren't case-sensitive, maintaining case consistency with the original collection titles is recommended.
* Empty rows and columns are ignored.
### Collection Data Formatting
When preparing your CSV file for import, ensure that the collection data format aligns with the column requirements. Different columns have specific data input requirements:
* **Action:** Accepts one of the following commands:
* Create adds a new collection.
* Update replaces the details of an existing collection.
* Upsert creates a new collection or replaces the details of an existing collection. Note that if no action is specified for a row, upsert is considered the default.
* **Node ID:** Represents the Collection ID.
* **Parent Collection:** Unless you are creating a primary or root collection, specify the parent category for the new collection you want to create or update.
* **Node Name:** Name of the root, branch, or leaf collection that you are creating or updating.
* **Order:** The order in which a given collection must appear among sibling collections. If multiple collections are assigned the same order, the newly added collections appear in alphabetical order.
* **Category Attributes:** Attributes that are assigned to the Collection.
* **Categories Included:** Categories to include when creating the collection.
* **Categories Excluded:** Categories to exclude when creating the collection.
* **Product Attribute Filters:** Attribute conditions that filter the eligible products for the Collection node. Filter operations are dependent on the attribute type.
| Attribute Type | Available Operations |
| -------------- | ------------------------------------------ |
| Text | Contains, Doesn't contain, Is exact match |
| Number | Is equal to, Is less than, Is greater than |
| List of Value | Includes, Excludes |
| Boolean | Yes, No |
| Date | Is equal to, Is less than, Is greater than |
| Serial | Is equal to, Is less than, Is greater than |
### Example file
| Action | Node Id | Parent Category | Node Name | Order | Category Attributes | Categories Included | Categories Excluded | Product Attribute Filters | | |
| ------ | -------------- | --------------------------- | ----------------- | ----- | ------------------------ | ------------------------------------ | ------------------- | ---------------------------------------------- | - | - |
| Create | 12345645648689 | | Import-collection | 1 | Collection SEO=SEO Value | category date YYYY-MM-DD=2024-03-22; | | | | |
| | | Import-collection | Parent-1 | 1 | Furniture,Accessories | | | | | |
| | | Import-collection->Parent-1 | Child 1 | 1 | | Furniture>Desks | | name=Description; op=CONTAINS; value=furniture | | |
| | | Import-collection->Parent-1 | Child 2 | 2 | | Furniture>Chairs | | name=Color; op=ISEXACTMATCH; value=Brown | | |
## Prerequisites
Before initiating the item import, ensure that:
* You have created at least one category with items and attributes assigned to it. For more information about creating categories, see the Categories section.
* The CSV file adheres to the guidelines.
## Procedure
1. In the left menu, click **Product Catalog > Collections**.
The **Collections** page is displayed.
2. Click **Import Collection**.
The **Import CSV file** window is displayed.
3. (Optional) To download the template, click **template here**.
The template is downloaded.
4. To import a CSV file, do one of the following:
* Drag and drop the file into the window.
* Click **Select a File** from your computer.
5. Click **Import file**.
The CSV file is imported and the collection is created.
To track the import status, go to **Product Catalog > Background Jobs > Imports** page.
## Related Topics
* [Collections Overview](/v3/product-catalog/user-guides/product-catalog/collections/collections)
* [Creating a Collection](/v3/product-catalog/user-guides/product-catalog/collections/creating-a-collection)
* [Managing Collections](/v3/product-catalog/user-guides/product-catalog/collections/managing-collections)
* [Adding Category Attributes to a Collection](/v3/product-catalog/user-guides/product-catalog/collections/adding-category-attributes)
# Managing Collections
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/collections/managing-collections
This topic covers the process of editing collections, creating sub-collections, and deleting collections and sub-collections.
## Prerequisites
Ensure you have created at least one collection.
### Sorting collections
You can sort collections and sub-collections alphabetically in either ascending or descending order.
1. In the left menu, click **Product Catalog > Attributes > Collections**.
The **Collections** page is displayed.
2. Click a collection.
The **Collection Preview** page is displayed.
3. Click the arrow next to the name of the collection or sub-collection to sort.
The collections are sorted.
### Editing a collection
1. In the left menu, click **Product Catalog > Attributes > Collections**.
The **Collections** page is displayed.
2. Click a collection.
The **Collection Preview** page is displayed.
3. Click **Manage Products** for the desired collection.
The add products window is displayed.
4. Edit the **Category**, **Attributes & Values**, and **Status** filters as required.
5. Click **Add Products**.
6. Click **Run Collection**.
The collection is updated.
### Creating a sub-collection
1. In the left menu, click **Product Catalog > Attributes > Collections**.
The **Collections** page is displayed.
2. Click a collection.
The **Collection Preview** page is displayed.
3. Click the collection to create a sub-collection for.
A new column for the next level of the collection is displayed to the right with the outline of a new sub-collection.
4. Click the plus sign (**+**) icon inside the outline of the new sub-collection.
5. In the **Enter name** field, give the sub-collection a name and press **Enter**.
6. To add categories and products, click **Manage Products**.
The add products window is displayed.
7. Edit the **Category**, **Attributes & Values**, and **Status** filters as required.
8. Click **Add Products**.
9. Click **Run Collection**.
The sub-collection is created.
### Deleting a collection or sub-collection
1. In the left menu, click **Product Catalog > Attributes > Collections**.
* The **Collections** page is displayed.
2. Click a collection.
* The **Collection Preview** page is displayed.
3. Mouse over a sub-collection and click the trash can icon.
* The **Delete Collection** window is displayed.
Note: Deleting a sub-collection also deletes any sub-collections it contains.
4. Click **Yes, Delete**.
The collection is deleted.
## Related Topics
* [Collections Overview](/v3/product-catalog/user-guides/product-catalog/collections/collections)
* [Creating a Collection](/v3/product-catalog/user-guides/product-catalog/collections/creating-a-collection)
* [Importing Collections](/v3/product-catalog/user-guides/product-catalog/collections/importing-collections)
* [Adding Category Attributes to a Collection](/v3/product-catalog/user-guides/product-catalog/collections/adding-category-attributes)
# Data Ingestion Best Practices
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/data-ingestion-best-practices
## Overview
Optimized data management is at the core of every successful e-commerce operation. For fabric users managing extensive product catalogs, finely tuned data ingestion is paramount.
Adhering to fabric’s best practices will ensure the fastest processing speed, optimum resource management, and enhanced accuracy when importing your data.
This topic covers subjects such as file size restrictions, types of import actions, reconciling errors, and most importantly, the best method of data ingestion: **delta updates**.
## File Size and Upload Guidelines
Before you upload your first file, it's important to understand file size restrictions and how fabric handles files that exceed those restrictions.
* **No files larger than 300MB**
Limit the size of your uploads to 300MB.
* **Split files larger than 300MB into smaller ones**
Splitting large files into smaller ones before uploading them is the quickest way to import large amounts of data. For fastest processing, the ideal file size is between 80-100MB.
* **Parallel processing**
fabric can process multiple files in parallel. The number of parallel files depends on your package. When the limit has been reached, subsequent files will be in a “scheduled” status until moved into the queue. Reach out to your account representative to learn more.
* **Automatic file chunking is available**
fabric can automatically chunk files larger than 300MB into smaller files to improve performance. This feature is only available in select packages. Reach out to your account representative to learn more.
## Delta Updates
A delta update involves transmitting only the changed data fields when making an update. This is in contrast to the more traditional “full feed” updates that send the entire dataset. By sending only the changed data fields, fabric can process updates without reprocessing unchanged data.
**Delta updates are the preferred method for all uploads.**
### Delta updates vs. full feed updates
| | Full Feed Data Updates | Delta Data Updates |
| -------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------- |
| **Resource Usage** | Requires more resources | Requires fewer resources |
| **Processing Time** | Longer processing time | Shorter processing time |
| **Data Transmission** | Transmits entire dataset | Transmits only modified data fields |
| **Network Bandwidth** | Consumes more network bandwidth | Requires less network bandwidth |
| **Storage** | Requires more storage space | Requires less storage space |
| **Error Handling** | Prone to errors during full data transmission | Less prone to errors due to focused updates |
| **Scalability** | Less scalable for large datasets | More scalable, especially for large datasets |
| **Data Accuracy** | Potential for data redundancy and inconsistency | Enhances data accuracy by focusing on changes |
| **Operational Efficiency** | Lower operational efficiency due to higher resource consumption | Higher operational efficiency due to optimized resource usage |
| **Incremental Updates** | Updates entire dataset each time | Updates only modified data fields incrementally |
## Ways to Import Data
You can import data into fabric using the following methods:
* CSV import using API
* Import using RESTful APIs
* CSV import using the Copilot interface
The import method you choose is up to you, but in each case, uploading smaller files and using the delta update method will result in quicker processing, better resource management, and a higher degree of accuracy.
## Data Formatting
It's crucial to make sure your dataset is accurate and compatible with fabric’s formatting before initiating the upload process. Validate your data to avoid errors by reviewing the file to identify any changes since the last upload and confirm that the data structure and format are correct. See the following pages for formatting guidelines:
* [Importing Items](/v3/product-catalog/user-guides/product-catalog/list/items/importing-items#csv-file-guidelines)
* [Importing Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles#csv-file-guidelines)
* [Importing Product Attributes](/v3/product-catalog/user-guides/product-catalog/attributes/importing-product-attributes#attribute-data-formatting)
* [Importing Categories](/v3/product-catalog/user-guides/product-catalog/categories/importing-categories#csv-file-guidelines)
## Import Actions
The actions you use when importing items, bundles, categories, and collections tell fabric how you are modifying your data. The following actions are available:
* **UPSERT:** Creates a new product if the product doesn't exist, or it updates an existing product.
* **CREATE:** Creates a new product.
* **UPDATE:** Updates existing product.
* **PUBLISH:** Publishes an existing product that was in draft state. The product is published to the storefront.
* **UNPUBLISH\_KEEP\_DRAFT:** Unpublishes an existing product. If the product already has a draft version, the live version is unpublished and discarded. If product doesn't already have a draft version, the live version is unpublished and saved as a draft.
* **UNPUBLISH\_KEEP\_LIVE:** Unpublishes an existing product. If the product already has a draft version, the draft version is discarded.
* **DELETE:** Deletes the existing product.
* **ATTACH\_VARIANT:** Adds variants to an existing parent product. The variant column holds the variant to be attached to the SKU.
* **DETACH\_VARIANT:** Detaches existing variants. The variant column holds the variant to be detached from the SKU.
* **CHANGE\_CATEGORY:** Updates the category of existing product.
* **ATTACH\_CHANNELS:** Appends listed channels to the product, allowing it to be available across various sales channels. You can specify the channels to be attached in the Channels column. After attaching channels, users should verify the attachment post-action to confirm the successful addition of channels to the product.
* **DETACH\_CHANNELS:** Removes listed channels from a product. Users specify the channels to be detached in the Channels column. This action is useful when a product needs to be removed from specific sales channels while remaining available on others. Users should verify the detachment of channels post-action to ensure the desired channels are removed from the product.
## Reconciling Errors
If there are errors during processing, download the error file and review each error to identify the problem. Correct the errors by updating the CSV file with the necessary changes and validate the corrected CSV file before re-importing.
* [Troubleshooting Item Imports](/v3/product-catalog/user-guides/product-catalog/list/items/importing-items#troubleshooting)
* [Troubleshooting Bundle Imports](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles#troubleshooting)
# Adding a Bundle
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/bundles/adding-a-bundle
Bundles are two or more products sold together. Creating a bundle allows you to group products that are exclusively sold together or group products that can be purchased together and separately.
This document covers the process of adding a single bundle. To add multiple bundles at the same time, see Import Bundles.
## Prerequisites
Ensure that you have:
* Set up at least one product attribute group. For more information about creating product attributes, see the [Product attributes section](/v3/product-catalog/user-guides/product-catalog/attributes/attributes).
* Created at least one leaf category to add the bundle to. For more information about creating categories, see the [Categories section](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category).
* Created at least two items. For more information about creating items, see [Adding an Item](/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item) or [Importing Items](/v3/product-catalog/user-guides/product-catalog/list/items/importing-items).
## Procedure
1. In the left menu, click **Product Catalog > List > Bundles**.\
The **Bundles** page is displayed.
2. Click **New Bundle**.\
The **Select a leaf category** window is displayed. This window shows the root categories and leaf categories that are configured in the Categories page.
3. Select a leaf category.
Leaf categories are labeled **leaf**. You must click a root category to view the leaf categories within that category. If a root category has more root categories within it, you might have to continue selecting root categories until you can select a leaf category.
4. Click **Next**.\
The attribute groups you have created and mapped are displayed based on the configuration in the Attributes page.
5. To edit an attribute group, click the **Edit** button next to the attribute group name.
* In the **Edit Attributes** window, enter the required details.
* Click **Save**.\
If you want to use more than one attribute group, repeat the above steps for all of those attribute groups.
6. Click **Bundle items**.\
The **Bundle items** tab is displayed.
7. Click **Add items**.\
The **Add items** page is displayed, showing the items in your product list.
8. Select the items to add to the bundle.
9. (Optional) Click **Select individual variants**.\
The **Select individual variants** tab is displayed.
10. (Optional) Select the item variants to add to the bundle.
11. Click **Save**.
12. Click the Bundle name in the breadcrumb at the top of the page.\
The **Edit Bundle** page is displayed.
13. (Optional) If internationalization is enabled, from the language dropdown menu, select the desired language variant for the item.
14. (Optional) Click **Publish**.
The bundle is published and moved from draft to active state.
## Related Topics
* [Bundles Overview](/v3/product-catalog/user-guides/product-catalog/list/bundles/bundles)
* [Importing Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles)
* [Viewing Bundle Import History](/v3/product-catalog/user-guides/product-catalog/list/bundles/viewing-bundle-import-history)
* [Editing a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/editing-a-bundle)
* [Searching, Filtering, and Sorting Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/searching-filtering-sorting-bundles)
# Bundles Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/bundles/bundles
Bundles are combinations of two or more products sold exclusively together or individually, depending on the configuration. Pure bundles consist of items exclusively sold together, and individual items can't be purchased separately. Shoppers have the flexibility to buy items in mixed bundles together or separately.
For example, in a living room furniture set consisting of a coffee table and an end table, shoppers can choose to purchase each table individually or buy both tables together as part of the *living room set* bundle.
Bundles must be assigned to one [category or subcategory](v3/product-catalog/user-guides/product-catalog/categories/overview.mdx) when they're created.
## Related Topics
* [Bundles Overview](/v3/product-catalog/user-guides/product-catalog/list/bundles/bundles)
* [Adding a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/adding-a-bundle)
* [Importing Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles)
* [Viewing Bundle Import History](/v3/product-catalog/user-guides/product-catalog/list/bundles/viewing-bundle-import-history)
* [Editing a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/editing-a-bundle)
* [Searching, Filtering, and Sorting Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/searching-filtering-sorting-bundles)
# Editing a Bundle
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/bundles/editing-a-bundle
Product bundles can be edited in the List section of **Product Catalog**.
## Prerequisites
Ensure that you have created at least one bundle.
## Procedure
1. In the left menu, click **Product Catalog > List > Bundles**.\
The **Bundles** page is displayed.
2. Click on a bundle.\
The **Bundle Details** page is displayed.\
The attribute groups you have created and mapped are displayed.
3. Click the **Edit** button next to an attribute group.\
The **Edit Attributes** window is displayed.
4. Edit the attributes as required and click **Save**.\
The attributes are saved.
5. (Optional) Repeat steps 3 and 4 for additional attribute group menus.
6. (Optional) If [internationalization](/v3/platform/settings/internationalization/internationalization) is enabled, from the language dropdown menu, select the desired language variant for the item.
7. (Optional) Click **Publish**.\
The item is moved from draft to active state.
## Related Topics
* [Bundles Overview](/v3/product-catalog/user-guides/product-catalog/list/bundles/bundles)
* [Adding a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/adding-a-bundle)
* [Importing Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles)
* [Viewing Bundle Import History](/v3/product-catalog/user-guides/product-catalog/list/bundles/viewing-bundle-import-history)
* [Searching, Filtering, and Sorting Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/searching-filtering-sorting-bundles)
# Importing Bundles
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles
Bundles are two or more items sold together. Creating a bundle allows you to group items that are exclusively sold together or group items that can be purchased together and separately.
This document covers the process of adding multiple bundles through CSV import. You can also [add a single bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/adding-a-bundle).
## CSV File Guidelines
You can import bundles using CSV files only; no other data or file formats are supported. Here are the key points to consider:
* Formulas in formula-driven attributes are executed automatically after bundles have been imported.
* If the CSV file doesn't have an attribute that's added to the category, you can add a new column in the CSV with the attribute name in the header. The upload process will populate the value for this attribute. Note that empty rows and columns are ignored.
* Each bundle should include a category node. If the category node is missing, the bundle won't be created.
* Use the **- >** delimiter for category nodes. Incorrect mapping or absence of category nodes may result in bundle creation issues.
* The headers, represented in the first row of the CSV file, should match the attributes of the bundle. While attribute titles aren't case-sensitive, maintaining case consistency with the original attribute titles is recommended.
* Empty rows and columns are ignored.
* When updating or upserting bundles, entering *NULL* in a spreadsheet cell will override existing values with blank values.
* The ActionTarget field determines what action is being taken for that row of data.
We recommend that you download the template file to use as a guide when creating your own CSV file for import to minimize errors during the import process.
### Supported actions
| **Action** | **Description** |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **UPSERT** | Creates a new bundle if the bundle doesn't exist, or updates an existing bundle. |
| **CREATE** | Creates a new bundle. |
| **UPDATE** | Updates an existing bundle. |
| **PUBLISH** | Publishes an existing bundle that's in draft state, making it available on the storefront. |
| **UNPUBLISH\_KEEP\_DRAFT** | Unpublishes an existing bundle. If a draft version exists, the live version is unpublished and the draft is retained. If no draft exists, the live version is unpublished is saved as a draft. |
| **UNPUBLISH\_KEEP\_LIVE** | Unpublishes an existing bundle and moves it to the draft state. If a draft of that item already existed, it's deleted. |
| **DELETE** | Deletes the existing bundle. |
| **ATTACH\_BUNDLE\_PRODUCTS** | Adds products to an existing bundle. You can specify the product SKU and quantity of the bundle products in the items column. |
| **DETACH\_BUNDLE\_PRODUCTS** | Detaches products from an existing bundle and converts them to items. The items column holds the SKU and quantity of the bundle products to be detached from the bundled SKU. |
| **CHANGE\_CATEGORY** | Updates the category of an existing bundle. Depending on how your storefront is configured, this may change where or how your bundle is viewed by the customer. |
| **ATTACH\_CHANNELS** | Adds specified channels to the bundle. The channels column holds the channels to be attached. |
| **DETACH\_CHANNELS** | Removes specified channels from the bundle. The channels column holds the channels to be detached. |
### Attribute data format
When preparing your CSV file for import, ensure that the attribute data format aligns with attribute type requirements. Different attribute types have specific formatting criteria:
| **Data Type** | **Format Rule** |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Text** | Ensure the data is in text string format. |
| **Number** | Use numerical data only. All non-numeric data is ignored. |
| **Boolean** | Use *TRUE* or *FALSE* only. All other values are ignored. |
| **Date** | Format dates exactly as during attribute creation. |
| **List of values** | The value you enter must match one of the predefined values you set up when [adding a list of values attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute). |
| **Serial** | Leave this field blank; fabric automatically generates the serial number during import. |
| **SKU** | Provide the SKU for the bundle to be created. |
The status attribute is imported as live only when all mandatory attributes are provided for the bundle. Otherwise, the status is automatically updated to draft, regardless of the value you provide in the file.
## Prerequisites
Before initiating the bundle import, ensure that:
* You have created at least one leaf category with attributes assigned to it to add the bundle to. For more information about creating categories, see the [Categories section](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category).
* The CSV file adheres to the guidelines.
## Procedure
1. In the left menu, click **Product Catalog > List > Bundles**.\
The **Bundles** page is displayed.
2. Click **Import**.\
The **Select a leaf category** window is displayed.
3. Select a **Leaf**.\
The root categories and leaf categories appear as they're set up in Categories. Depending on your configuration, you may have to select one or more root categories before selecting a leaf category.
4. Click **Next**.\
The **Import CSV file** window is displayed. This window provides a link to download an example template for the CSV file.
5. To import a CSV file, do one of the following options:
* Drag and drop the CSV file into the window.
* Click **Select a File from your computer**.
6. Click **Import file**.
The CSV file is imported, and the bundles are added to your product list.
fabric stores the CSV files you upload to your account. You can view the status of the import and re-download the original files by visiting the [Background Jobs](/v3/product-catalog/user-guides/product-catalog/background-jobs/background-jobs) page.
## Troubleshooting
Refer to the following table for a list of common errors when importing and how to correct them.
| Error Message | What it Means | What Happens to the Bundle | How to Resolve | Comment |
| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| **Category Node not found** | The category node name is incorrect or missing. | A bundle can’t be created without a proper category node. | Verify the name of the node and the delimiter. | |
| **Internal Server Error** | Server issues. | The bundle isn't created or updated. | Try again. | This is an intermittent issue. |
| **Attribute Name not found** | The attribute mentioned in the CSV header isn't added to the category. The attribute name must be an exact match. | The bundle is created, but this specific attribute will be ignored. | Check the attribute name and ensure it's added to the category for importing bundles. | |
| **Attribute Name value is invalid** | The provided value has flaws or validation issues. | The attribute value won't be saved to the bundle. | Provide the correct attribute value. | Example: Adding text for a number-type attribute triggers this error. |
| **Status Mandatory attributes (required)** | To set a bundle's status to live, all mandatory attributes are required. | The bundle is created, and the attributes are updated. However, it can't be set to live, defaulting its status to draft. | Ensure all mandatory attributes have a value in the CSV file. | For delta imports, all mandatory attributes and values are required to set the bundle's status to live. |
| **Some mandatory attribute values missing** | Some mandatory attributes lack values in the CSV file. These are either globally mandatory attributes (set at the attribute level) or category-specific mandatory attributes. The bundle is created with errors; only values in the CSV are added. | Include values for all mandatory attributes. | Bundles with missing mandatory attributes can't be set to live. | |
## Related Topics
* [Bundles Overview](/v3/product-catalog/user-guides/product-catalog/list/bundles/bundles)
* [Adding a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/adding-a-bundle)
* [Viewing Bundle Import History](/v3/product-catalog/user-guides/product-catalog/list/bundles/viewing-bundle-import-history)
* [Editing a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/editing-a-bundle)
* [Searching, Filtering, and Sorting Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/searching-filtering-sorting-bundles)
# Searching, Filtering, and Sorting Bundles
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/bundles/searching-filtering-sorting-bundles
The search, filter, and sort options on the **Bundles** page allows you to refine the3 list of bundles or find a specific bundle.
You can use the filter option only if you have multiple bundles in your list and the bundles belong to multiple categories and collections with different attributes and values.
### To search for one or more bundles, do the following:
1. In the left menu, click **Product Catalog > List > Bundles**.
The Bundles page is displayed.
2. Type a search term into the search bar.
When searching, keep in mind the following:
* You can search for multiple bundles by typing multiple search terms into the search bar, each separated by a comma.
* When searching for multiple bundles, the search terms must be exact. Partial entries yield no results.
* In addition to typing your searches into the search bar, you can also paste them.
3. Press **Enter**.
The results are displayed.
### To filter the list of bundles, do the following:
1. In the left menu, click **Product Catalog > List > Bundles**.
The **Bundles** page is displayed.
2. Choose at least one of the following filters:
* Click the **Category** dropdown and select a category.
* Click the **Collection** dropdown and select a collection.
* Click the **Date** dropdown and select a date range for the date the bundle was created and/or the date the bundles were modified.
* Click the **Attributes & Values** dropdown.
* Select a value to filter by in the **If** field.
* Select a **Validation** option.
* Enter a value in the **Value** field.
* (Optional) Click **Add new condition** to filter by another attribute or value.
Bundles that match the filters you chose are displayed.
Click **Reset filters** to remove all filters.
### To sort the list of bundles, do the following:
1. In the left menu, click **Product Catalog > List > Bundles**.\
The **Bundles** page is displayed.
2. Click one of the column headers to sort the list of bundles.\
Sortable headers are SKU, Product name, Category, Created, and Status.
The bundles are sorted.
### Related Topics
* [Bundles Overview](/v3/product-catalog/user-guides/product-catalog/list/bundles/bundles)
* [Adding a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/adding-a-bundle)
* [Importing Bundles](/v3/product-catalog/user-guides/product-catalog/list/bundles/importing-bundles)
* [Viewing Bundle Import History](/v3/product-catalog/user-guides/product-catalog/list/bundles/viewing-bundle-import-history)
* [Editing a Bundle](/v3/product-catalog/user-guides/product-catalog/list/bundles/editing-a-bundle)
# Adding an Item
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item
Items, which are also referred to as products, are services or stand-alone items sold individually. This document covers the process of adding an individual item to your list of products. You can also add multiple items at the same time by [importing](/v3/guides/product-catalog/list/items/importing-items) them using a CSV file.
## Prerequisites
* Ensure that you have set up at least one product attribute group. For more information about creating attribute groups, see [Creating Attribute Groups](/v3/product-catalog/user-guides/product-catalog/settings/creating-attribute-groups).
* Ensure that you have created at least one leaf category to add the item to. For more information about creating categories, see the [Categories section](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category).
## Procedure
1. In the left menu, click **Product Catalog > List > Items**.
The **Items** page is displayed.
2. Click **New Item**.
The **Select a leaf category** window is displayed. This window displays the root categories and leaf categories that are configured in [Categories](/v3/product-catalog/user-guides/product-catalog/categories/overview).
3. Select a leaf category.
Leaf categories are labelled with **leaf**. You must click a root category to view the leaf categories within that category. If a root category has more root categories within it, you might have to continue selecting root categories until you can select a leaf category.
4. Click **Next**.
The attribute groups you have created and mapped are displayed based on the configuration in the **Attributes** page.
5. To edit an attribute group, click the **Edit** button next to the attribute group name.
6. In the **Edit Attributes** window, enter the required details in each attribute field.
The attributes fields in the **Edit Attributes** window lists the [product attributes](/v3/product-catalog/user-guides/product-catalog/attributes/product-attributes-overview) and [category attributes](/v3/product-catalog/user-guides/product-catalog/attributes/category-attributes-overview) that you have already created.
1. Click **Save**.
If you want to use more than one attribute group, repeat the above steps for all of those attribute groups.
2. (Optional) If [internationalization](/v3/platform/settings/internationalization/internationalization) is enabled, from the language dropdown menu, select the desired language variant for the item.
3. (Optional) Click **Publish**.
The item is now published and moved from draft to active state.
## Related Topics
* [Items Overview](/v3/product-catalog/user-guides/product-catalog/list/items/items)
* [Importing Items](/v3/guides/product-catalog/list/items/importing-items)
* [Viewing Item Import History](/v3/guides/product-catalog/list/items/viewing-item-import-history)
* [Bulk Operations for Items](/v3/guides/product-catalog/list/items/bulk-operations-items)
* [Editing an Item](/v3/guides/product-catalog/list/items/editing-an-item)
* [Adding Item Variants](/v3/guides/product-catalog/list/items/adding-item-variants)
* [Searching, Filtering, and Sorting Items](/v3/guides/product-catalog/list/items/searching-filtering-sorting-items)
# Adding Item Variants
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/items/adding-item-variants
Item variants are different versions of a base product that shoppers can choose from. With variants, you can offer an extensive catalog on your storefront, giving shoppers various options for the same item, such as size, color, or material. You can create and manage any number of combinations of options for variations of an item in fabric.
For example, a store sells a dining table in three different materials: oak, pine, or mahogany. Each material comes in options that accommodate 4, 6, or 8 people. Using the variants, you can create 9 different variations for the parent item, the dining table, as shown in the following table:
| | Oak | Pine | Mahogany |
| ----------- | ------------ | ------------- | ----------------- |
| **Seats 4** | Oak, seats 4 | Pine, seats 4 | Mahogany, seats 4 |
| **Seats 6** | Oak, seats 6 | Pine, seats 6 | Mahogany, seats 6 |
| **Seats 8** | Oak, seats 8 | Pine, seats 8 | Mahogany, seats 8 |
With the above settings, the storefront displays the parent item with 9 options. Each of these options is a variant of the parent item and is referred to as the child item.
There are two ways to create a variant for an item:
* **Select existing items:** Use this method to add variants to an item by selecting from the items that are already present in your items list. You can use this method only if the desired item specifications or attributes already exist within your catalog.
* **Create variants:** Use this method when you want to introduce an item with new attributes or specifications as a variant of a pre-existing item. In this method, you can simultaneously create a new item and set it as a variant of an existing item.
When a product is created as a variant, it will initially be classified as an item if the parent product is still in draft.
## Prerequisites
Ensure that you have at least one item in your list to use the **Create variants** method of creating variants.
Ensure that you have at least two items in the same category in your list (one to use as the parent and one to set as the child) to use the **Select existing items** method.
## Procedure
### Select existing items
1. In the left menu, click **Product Catalog > List > Items**.\
The **Items** page is displayed.
2. Click an item.\
The **Item Details** page is displayed.
3. Click **Variants**.\
The **Variants** tab is displayed.
4. Click **Add Variants**.\
The **Create Relationship** page is displayed. It shows the items that are in the same category as the item you selected in step 2. Items in the category that already have variants aren't displayed.
5. Select the checkbox next to the item to set as a variant.\
You can select as many items as required.
6. Click **Save**.
The variant is added to the item.
### Create variants
1. In the left menu, click **Product Catalog > List > Items**.\
The **Items** page is displayed.
2. Click an item.\
The **Item Details** page is displayed.
3. Click **Variants**.\
The **Variants** tab is displayed.
4. Click **Add Variants**.\
The **Create Relationship** page is displayed.
5. Click **Create variants**.\
The **Create variants** tab is displayed.
6. (Optional) Enter the number of variants to create.
7. Click **Add**.\
The variants are added.
8. Click **Edit**.\
The **Edit Attributes** window is displayed.
9. Enter the attribute fields as required and click **Save**.
10. (Optional) Repeat steps 7 and 8 for additional variants.
The variants are created.
## Related Topics
* [Items Overview](/v3/product-catalog/user-guides/product-catalog/list/items/items)
* [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item)
* [Importing Items](/v3/guides/product-catalog/list/items/importing-items)
* [Viewing Item Import History](/v3/guides/product-catalog/list/items/viewing-item-import-history)
* [Bulk Operations for Items](/v3/guides/product-catalog/list/items/bulk-operations-items)
* [Editing an Item](/v3/guides/product-catalog/list/items/editing-an-item)
* [Searching, Filtering, and Sorting Items](/v3/guides/product-catalog/list/items/searching-filtering-sorting-items)
# Bulk Operations for Items
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/items/bulk-operations-items
This topic covers the process of performing bulk actions on items in your Product Catalog.
You can also perform these operations via [CSV import](/v3/product-catalog/user-guides/product-catalog/list/items/importing-items).
## Delete
1. In the left menu, click **Product Catalog > List > Items**.
The **Items** page is displayed.
2. In the left column, select the items to delete.
The bulk operations controls are displayed.
3. Click the **Delete** button.
The selected items are deleted.
## Export
1. In the left menu, click **Product Catalog > List > Items**.
The **Items** page is displayed.
2. In the left column, select the items to export.
The bulk operations controls are displayed.
3. Click the **Export** button.
The selected items are exported as a CSV file. The download begins automatically as soon as the file is ready.
Track the export status by going to **Product Catalog > Background Jobs > Export**.
## Update Attributes Values
1. In the left menu, click **Product Catalog > List > Items**.
The **Items** page is displayed.
2. In the left column, select the items with attributes to update.
The bulk operations controls are displayed.
3. Click the vertical ellipsis (**⋮**) and select **Update Attributes Values**.
The **Update attribute values** window is displayed.
4. In the **Choose attributes to update** field, select the attributes you want to change.
* After you make your selections, click the **Update attribute values** window outside of the field dropdown.
5. Enter the new values for the fields you selected and click **Update**.
A new window is displayed.
6. Do one of the following:
* To save the updated items and publish them, click **Save & Publish**.
* To save the updated items as drafts, click **Save As Draft**.
Note: Items in a draft state will remain drafts.
The changes you made the selected attributes are saved, and the items are placed in the state you selected.
## Change Category
Changing the category for multiple items at once removes the attributes of the current category and adds the attributes to the destination category.
1. In the left menu, click **Product Catalog > List > Items**.
The **Items** page is displayed.
2. In the left column, select the items to change categories.
The bulk operations controls are displayed.
3. Click the vertical ellipsis (**⋮**) and select **Change category**.
The **Select a leaf node** window is displayed with a list of your categories.
4. Select a leaf category.
When you click a root category, its subcategories are displayed to the right. Leaf categories are labeled **Leaf**.
5. CLick **Next**.
6. The **Are you sure?** window is displayed.
7. Click **Update**.
The selected items are moved to the new category.
## Publishing
1. In the left menu, click Product **Catalog > List > Items**.
The **Items** page is displayed.
2. In the left column, select the items to publish.
The bulk operations controls are displayed.
3. Click the vertical ellipsis (**⋮**) and select **Publish Products**.
The **Publish Products?** window is displayed.
4. Click **Publish**.
The selected items are published.
## Unpublishing
1. In the left menu, click **Product Catalog > List > Items**.
The **Items** page is displayed.
2. In the left column, select the items to publish.
The bulk operations controls are displayed.
3. Click the vertical ellipsis (**⋮**) and select **Publish Products**.
The **Unpublish Products?** window is displayed.
4. Click **Unpublish**.
The selected items are unpublished.
## Related Topics
* [Items Overview](/v3/product-catalog/user-guides/product-catalog/list/items/items)
* [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item)
* [Importing Items](/v3/guides/product-catalog/list/items/importing-items)
* [Viewing Item Import History](/v3/guides/product-catalog/list/items/viewing-item-import-history)
* [Editing an Item](/v3/guides/product-catalog/list/items/editing-an-item)
* [Adding Item Variants](/v3/guides/product-catalog/list/items/adding-item-variants)
* [Searching, Filtering, and Sorting Items](/v3/guides/product-catalog/list/items/searching-filtering-sorting-items)
# Editing an Item
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/items/editing-an-item
Items on your product list can be edited in the List section of **Product Catalog**.
## Prerequisites
* Ensure that you have [added](/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item) or [imported](/v3/product-catalog/user-guides/product-catalog/list/items/importing-items) at least one item.
## Procedure
1. In the left menu, click **Product Catalog > List > Items**.\
The **Items** page is displayed.
2. Click an item.\
The **Item Details** page is displayed.\
The attribute groups you have created and mapped are displayed.
3. Click the **Edit** button next to an attribute group.\
The **Edit Attributes** window is displayed.
4. Edit the attributes as required and click **Apply**.\
The attributes are saved.
5. (Optional) Repeat steps 3 and 4 for additional attribute group menus.
6. (Optional) If [internationalization](/v3/platform/settings/internationalization/internationalization) is enabled, from the language dropdown menu, select the desired language variant for the item.
7. (Optional) Click **Save & Publish**.\
The item is moved from draft to active state.
## Related Topics
* [Items Overview](/v3/product-catalog/user-guides/product-catalog/list/items/items)
* [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item)
* [Importing Items](/v3/guides/product-catalog/list/items/importing-items)
* [Viewing Item Import History](/v3/guides/product-catalog/list/items/viewing-item-import-history)
* [Bulk Operations for Items](/v3/guides/product-catalog/list/items/bulk-operations-items)
* [Adding Item Variants](/v3/guides/product-catalog/list/items/adding-item-variants)
* [Searching, Filtering, and Sorting Items](/v3/guides/product-catalog/list/items/searching-filtering-sorting-items)
# Importing Items
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/items/importing-items
Items, a type of product, are objects sold individually as simple SKUs or as the parent to a variant. This document covers the process of importing multiple items using a CSV file. You can also [add items individually](/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item).
## CSV File Guidelines
You can import products using CSV files only; no other data or file formats are supported. Here are the key points to consider:
* Formulas in formula-driven attributes are executed automatically after items have been imported.
* If the CSV file doesn't have an attribute that's added to the category, you can add a new column in the CSV with the attribute name in the header. The upload process will populate the value for this attribute.
* Empty rows and columns are ignored.
* Each item should include a category node. If the category node is missing, the item won't be created.
* Use the **->** delimiter for category nodes. Incorrect mapping or absence of category nodes may result in item creation issues.
* The headers, represented in the first row of the CSV file, should match the attributes of the item. While attribute titles aren't case-sensitive, maintaining case consistency with the original attribute titles is recommended.
* The Action field determines what action is being taken for that row of data.
* When updating or upserting items, entering *NULL* in a spreadsheet cell will override existing values with blank values.
We recommend that you download the template file to use as a guide when creating your own CSV file for import to minimize errors during the import process.
### Supported actions
| **Action** | **Description** |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **UPSERT** | Creates a new product if it doesn't exist, or updates an existing product. |
| **CREATE** | Creates a new product. |
| **UPDATE** | Updates an existing product. |
| **PUBLISH** | Publishes an existing product that's in draft state to the storefront. |
| **UNPUBLISH\_KEEP\_DRAFT** | Unpublishes an existing product. If a draft exists, the live version is deleted and the draft is retained. If no draft exists, the live version is saved as draft. |
| **UNPUBLISH\_KEEP\_LIVE** | Unpublishes an existing product and moves it to draft state. If a draft of that item already existed, it's deleted. |
| **DELETE** | Deletes the existing product. |
| **ATTACH\_VARIANT** | Adds variants to an existing parent product. Specify the variant SKU in the variant column. |
| **DETACH\_VARIANT** | Detaches existing variants and converts them to items. The variant column specifies the variant to be detached from the SKU. |
| **CHANGE\_CATEGORY** | Updates the category of an existing product. Depending on how your storefront is configured, this may change where or how your product is viewed by the customer. |
### Attribute data format
When preparing your CSV file for import, ensure that the attribute data format aligns with attribute type requirements. Different attribute types have specific formatting criteria:
| **Data Type** | **Format Rule** |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Text** | Provide data in text string format. |
| **Number** | Use numerical data only. All non-numeric data is ignored. |
| **Boolean** | Use *TRUE* or *FALSE* only. All other values are ignored. |
| **Date** | Match the date format specified during [attribute creation](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-date-attribute). |
| **List of values** | The value you enter must match one of the predefined values you set up when [adding a list of values attribute](/v3/product-catalog/user-guides/product-catalog/attributes/adding-a-list-of-values-attribute). |
| **Serial** | Leave this field blank; fabric automatically generates the serial number during import. |
| **SKU** | Provide the SKU for the item. |
The status attribute is imported as live only when all mandatory attributes are provided for the item. Otherwise, the status is automatically updated to draft, regardless of the value you provide in the file.
## Prerequisites
Before initiating the item import, ensure that:
* Ensure that you have created at least one leaf category with attributes assigned to it to add items to. For more information about creating categories, see the [Categories section](/v3/product-catalog/user-guides/product-catalog/categories/adding-a-category).
* The CSV file adheres to the guidelines.
## Procedure
1. In the left menu, click **Product Catalog > List > Items**.\
The **Items** page is displayed.
2. Click **Import**.\
The **Select a leaf category** window is displayed.
3. Select a **Leaf** to which you want to import items.\
The **Select a leaf category** window is displayed. This window displays the root categories and leaf categories that are configured in [Categories](/v3/product-catalog/user-guides/product-catalog/categories/overview).
4. Click **Next**.\
The **Import CSV file** window is displayed. This window provides a link to download an example template for the CSV file.
5. To import a CSV file, do one of the following options:
* Drag and drop the CSV file into the window.
* Click **Select a File**.
6. Click **Import file**.
The CSV file is imported and the items are added to your product list.
fabric stores the CSV files you upload to your account. You can view the status of the import and re-download the original files by visiting the [Import History](/v3/product-catalog/user-guides/product-catalog/list/items/viewing-item-import-history) page.
### Troubleshooting
Refer to the following table for a list of common errors when importing and how to correct them.
| **Error Message** | **What it means?** | **What happens to the item?** | **How to resolve?** | **Comment** |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Category Node not found | The category node name is incorrect or missing. | An item can’t be created without a proper category node given. | Verify the name of the node and the delimiter. | |
| Internal Server Error | Server issues | The item isn't created or updated | Try again | This is an intermittent issue. |
| Attribute Name not found | The attribute mentioned in the CSV header isn't added to the category. The attribute name must be an exact match. | The item is created, but this specific attribute will be ignored. | Check the name of the attribute and ensure that the attribute is added to the category you are trying to import items to. | |
| Attribute Name value is invalid | The value provided has some flaws or validation issues. | The attribute value won't be saved to the item. | Provide the correct attribute value. | Example: If you add text for a number type attribute, you will receive this error. |
| Status Mandatory attributes required | To set the status of an item to live, all mandatory attributes are required. | The item will be created and the attributes will be updated. However, the item can't be set to live; its status will default to draft. | Ensure that all mandatory attributes have a value in the CSV you are trying to import. | When doing a delta import, it is required to have all mandatory attributes and values added to set the item's status to live. |
| Some mandatory attribute values are missing. | There are some mandatory attributes that don't have values in the CSV file that was uploaded. These are either global mandatory, which are set at the attribute level, or category mandatory, which are set at the individual category level. | The item is created with errors. Only the values in the CSV will be added. | Include values for all mandatory attributes. | Items can be created with errors, but they can’t be set to live unless all mandatory attributes have a value. |
## Related Topics
* [Items Overview](/v3/product-catalog/user-guides/product-catalog/list/items/items)
* [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item)
* [Viewing Item Import History](/v3/guides/product-catalog/list/items/viewing-item-import-history)
* [Bulk Operations for Items](/v3/guides/product-catalog/list/items/bulk-operations-items)
* [Editing an Item](/v3/guides/product-catalog/list/items/editing-an-item)
* [Adding Item Variants](/v3/guides/product-catalog/list/items/adding-item-variants)
* [Searching, Filtering, and Sorting Items](/v3/guides/product-catalog/list/items/searching-filtering-sorting-items)
# Items Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/items/items
An item is a standalone service or product sold individually. You can create items manually or import items using a CSV file. Each item can have different variations, known as variants, distinguished by specific differences from the standard version.
For example, in a furniture store, a dining table might have variations in sizes, such as round or rectangular and finishes, such as oak, mahogany, or walnut, resulting in unique versions.
Items and variants must be assigned to one [category or subcategory](v3/product-catalog/user-guides/product-catalog/categories/overview.mdx) when they're created.
## Related Topics
* [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item)
* [Importing Items](/v3/guides/product-catalog/list/items/importing-items)
* [Viewing Item Import History](/v3/guides/product-catalog/list/items/viewing-item-import-history)
* [Bulk Operations for Items](/v3/guides/product-catalog/list/items/bulk-operations-items)
* [Editing an Item](/v3/guides/product-catalog/list/items/editing-an-item)
* [Adding Item Variants](/v3/guides/product-catalog/list/items/adding-item-variants)
* [Searching, Filtering, and Sorting Items](/v3/guides/product-catalog/list/items/searching-filtering-sorting-items)
# Searching, Filtering, and Sorting Items
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/list/items/searching-filtering-sorting-items
The search, filter, and sort options on the **Items** page allows you to refine the list of items or find a specific item.
You can use the filter option only if you have multiple items in your list and the items belong to multiple categories and collections with different attributes and values.
### To search for one or more items, do the following:
1. In the left menu, click **Product Catalog > List > Items**.
The Items page is displayed.
2. Type a search term into the search bar.
When searching, keep in mind the following:
* You can search for multiple items by typing multiple search terms into the search bar, each separated by a comma.
* When searching for multiple items, the search terms must be exact. Partial entries yield no results.
* In addition to typing your searches into the search bar, you can also paste them.
3. Press **Enter**.
The results are displayed.
### To filter the list of items, do the following:
1. In the left menu, click **Product Catalog > List > Items**.\
The **Items** page is displayed.
2. Choose at least one of the following filters:
* Click the **Category** dropdown and select a category.
* Click the **Collection** dropdown and select a collection.
* Click the **Date** dropdown and select a date range for the date the item was created and/or the date the items were modified.
* Click the **Attributes & Values** dropdown.
* Select a value to filter by in the **If** field.
* Select a **Validation** option.
* Enter a value in the **Value** field.
* (Optional) Click **Add new condition** to filter by another attribute or value.
Items that match the filters you chose are displayed.
3. Click **Reset filters** to remove all filters.
### To sort the list of items, do the following:
1. In the left menu, click **Product Catalog > List > Items**.\
The **Items** page is displayed.
2. Click one of the column headers to sort the list of items.\
Sortable header is **Status**.
The items are sorted.
## Related Topics
* [Items Overview](/v3/product-catalog/user-guides/product-catalog/list/items/items)
* [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item)
* [Importing Items](/v3/guides/product-catalog/list/items/importing-items)
* [Viewing Item Import History](/v3/guides/product-catalog/list/items/viewing-item-import-history)
* [Bulk Operations for Items](/v3/guides/product-catalog/list/items/bulk-operations-items)
* [Editing an Item](/v3/guides/product-catalog/list/items/editing-an-item)
* [Adding Item Variants](/v3/guides/product-catalog/list/items/adding-item-variants)
# Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/overview
fabric Product Catalog is a data organization tool that enables merchants to build a centralized source of product information. This information can include technical specifications such as size and weight, design specifications such as color and material, and generic details such as name, description, and ID.
Product categories allow merchants to organize items into logical parent-child groups to make finding products on the storefront easier for the shoppers. While configuring products, merchants can use validations to ensure data consistency and quality for each item and category.
Product Catalog has out-of-the-box integrations with fabric services such as Orders and Offers that enable merchants to add base prices and promotions to any products available in Product Catalog, including categories and collections.
Key Product Catalog capabilities include:
* **Catalog Management:** Create and manage products and services such as items, variants, and bundles. For example, an item could be a coffee table in oak. A variant could be that same coffee table, but in pine. A bundle could be the coffee table sold together with two matching end tables.
* **Taxonomy Management:** Define categories of products to create a structured hierarchy.
* **Distribution management:** Control product data availability for multiple channels and locales and use collections to curate subsets of products for sales and marketing goals, such as holiday sales or seasonal discounts.
* **Bulk Management**: Import product, category, and collection information in a CSV file and export catalog data into a CSV file.
* **Variant management:** Create and manage an unlimited number of variants to indicate that a product is available in different options, such as colors or sizes.
### Use Case
As an example, consider a furniture distributor with an extensive catalog that includes living, dining, and bedroom pieces who wants to display their products for sale on their storefront.
The merchant can upload each item they sell, either individually or in bulk with a CSV file. Attributes of each piece, ranging from physical characteristics such as dimensions and weight to construction characteristics such as materials and finishes can all be included. Variants of items are also supported, so that a coffee table available in mahogany, oak, and pine can all be considered different versions of the same item. In addition, items frequently sold together can be grouped into bundles so that the coffee table can be sold along with a pair of matching end tables.
The merchant can then create a hierarchy of relationships among the items in the catalog that make the most sense to their business. That means the coffee table could be in a category with all living room furniture, or a category of all tables, or both.
The merchant can group items from different categories into themed collections to boost the sales or marketing campaigns. For example, for a Black Friday promotion, merchant can assemble a living room set collection that includes a coffee table, end tables, sofa, loveseat, and lamps.
### Workflow
Basic Product Catalog setup begins with creating attributes, then mapping fabric-mandatory attributes with merchant-defined attributes. The following workflow provides details of the steps involved in product setup:
1. [Create Attributes](/v3/guides/product-catalog/attributes/product-attributes-overview): Create the required attributes for the products. You can also use attribute groups to group relevant attributes and assign to products or categories.
2. [Map Attributes](/v3/guides/product-catalog/attributes/product-attributes-overview): Map the mandatory attributes of fabric, such SKU, title, image, and active status to the corresponding names provided by the merchant.
3. [Add Categories](/v3/guides/product-catalog/categories/adding-a-category): Arrange items, bundles, and variants into a hierarchical tree structure based on common attributes to logically group products.
4. Create Items, Variants, and Bundles: Add your products, which can consist of [items](/v3/guides/product-catalog/list/items/adding-an-item), [bundles](/v3/guides/product-catalog/list/bundles/adding-a-bundle), and [variants](/v3/guides/product-catalog/list/items/adding-item-variants). Prior to adding any products, fabric recommends the following:
* Maintain a list of attributes for products and categories.
* Organize products within a hierarchical tree structure of categories.
* Compile a products list, along with their variants and bundles, to display on the storefront.
5. [Create Collections](/v3/guides/product-catalog/collections/creating-a-collection): Organize products according to marketing needs for display on your storefront. Collections are optional.
Once these steps are complete, basic setup is finished. You may proceed to use the features and capabilities available to you.
### Navigation
Product Catalog is accessible through fabric’s cloud-based application called Copilot, and divided into the following menus and sub-menus:
* **List**
* [Items](/v3/guides/product-catalog/list/items/items): Add, import, and manage product and variant information.
* [Bundles](/v3/guides/product-catalog/list/bundles/bundles): Add, import, and manage bundle information.
* **Attributes**
* [Product Attributes](/v3/guides/product-catalog/attributes/product-attributes-overview): Define item, variant, and bundle characteristics.
* [Category Attributes](/v3/guides/product-catalog/attributes/category-attributes-overview): Define category characteristics.
* **[Categories](/v3/guides/product-catalog/categories/categories_overview):** Create a hierarchy of product groups and relationships.
* **[Collections](/v3/guides/product-catalog/collections/collections):** An alternative method to categories for organizing products.
* **Settings**
* [Attribute Groups](/v3/guides/product-catalog/settings/attribute-groups-overview): Organize similar attributes together.
* [Attribute Mapping](/v3/guides/product-catalog/settings/attribute-mapping-overview): Ensure data in Product Catalog is readable and usable to other systems.
# Attribute Groups Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/settings/attribute-groups-overview
### Overview
Attribute groups enable merchants to organize various attributes together based on meaning or purpose for an easier, more logical flow during the set up process.
For example, a furniture store might need to have height, width, length, or depth attributes present on the item or bundle listing page on their storefront. The merchant can create an attribute group called *dimensions* so that all dimension-related details can be added in one place when adding a new piece of furniture. This allows merchants to streamline the setup process and reducing the time required to manage extensive attribute data in large catalogs.
Before creating attribute groups, you must first set up the attributes that you want to group together in the Attributes > Products page.
While attribute groups enhance storefront convenience, setting them up is optional and not mandatory for product setup.
### Related Topics
* [Creating Attribute Groups](/v3/product-catalog/user-guides/product-catalog/settings/creating-attribute-groups)
# Attribute Mapping Overview
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/settings/attribute-mapping-overview
### Overview
Before creating items in the Product Catalog, proper attribute mapping is essential to ensure other systems can read and use data from the Product Catalog.
fabric has a predefined set of mandatory attributes for items and bundles that Product Catalog uses to deliver a consistent and reliable experience across channels.
However, merchants may have their own naming conventions for these attributes. For instance, Product Catalog uses the term SKU to refer to a unique product identifier while some merchants use the terms UPC or Part Number. To address this inconsistency, merchant-defined attributes are mapped to fabric attributes as productId -> fabric SKU.
Only the SKU is mandatory to create items, but each basic attribute should be mapped to exactly one attribute from the list of attributes.
Attribute mapping is done once, before uploading any items or bundles. After you have mapped the attributes and begun uploading, the features in attribute mapping are disabled.
### Basic attributes detail
Refer to the following table for more information about each attribute.
| Mapping Name | Attribute Specifications | Why does this need to be mapped? |
| --------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SKU | Must be a mandatory Attribute | Each SKU value must be unique. This attribute serves as the primary identifier for items to be created in Product Catalog. |
| Product Title | A text or number type attribute is recommended | This attribute helps Product Catalog identify the display name of the item or bundle. |
| Primary Product Image | A text type attribute is recommended here | This attribute helps Product Catalog identify the main image of the product for thumbnail purposes. |
| Active | Must be a mandatory attribute | Must be a Boolean type attribute. Name the attribute to be Active which can be set to true/false. Required to maintain the status of item to active/disabled. Only items where status is set to Active=TRUE will be available for the commerce API to consume. |
## Related Topics
* [How to Map Attributes](/v3/product-catalog/user-guides/product-catalog/settings/how-to-map-attributes)
# Creating Attribute Groups
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/settings/creating-attribute-groups
### Overview
Attribute groups enable merchants to organize various attributes together based on meaning or purpose for an easier, more logical flow during the item and bundle set up process.
### Prerequisites
Ensure you have created multiple product attributes.
### Procedure
1. In the left menu, click **Product Catalog > Settings > Attribute Groups**.\
The **Product Settings** page is displayed.
2. Click **Create Attribute Group**.\
The **Create Attribute Group** page is displayed.
3. In the **Attribute group title** field, enter a title for the attribute group.
4. (Optional) In the **Description** field, enter a description for the attribute group.
5. In the **Priority order** field, enter a number.\
The attribute group's position on the **Add Item** or **Add Bundle** pages is determined by its Priority order value—lower numbers indicate higher priority.
6. To add attributes to the group, do one of the following:
* In the **Editable attributes** menu, click **Add attributes**.\
The **Select attributes** window is displayed.
* To add an attribute, click its corresponding checkbox.\
You can add as many attributes as needed, but an attribute can only be added to one attribute group.
* When finished selecting attributes, click **Add**.\
The attributes are added to the group.
* In the **Read-only attributes** menu, click **Add attributes**.\
The **Select attributes** window is displayed.
* To add an attribute, click its corresponding checkbox.\
You can add as many attributes as needed, but an attribute can only be added to one attribute group.
* When finished selecting attributes, click **Add**.\
The attributes are added to the group.
7. Click **Save**.
The attribute group is created.
### Related Topics
* [Attribute Groups Overview](/v3/product-catalog/user-guides/product-catalog/settings/attribute-groups-overview)
# Mapping Attributes
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/settings/how-to-map-attributes
### Overview
Before creating items in Product Catalog, proper attribute mapping is essential to ensure other systems can read and use data from Product Catalog.
### Prerequisites
Ensure you have administrator privileges to fabric Product Catalog. For more information, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control).
### Procedure
1. In the left menu, click **Product Catalog > Settings > Attribute mapping**.\
The **Product Settings** page is displayed.
2. In the **SKU** dropdown, select the attribute you will use for SKU values.
3. In the **Product title** dropdown, select the attribute you will use for product titles.
4. In the **Primary Product Image** dropdown, select the attribute you will use for the primary product image.
5. In the **Active** dropdown, select the attribute you will use to set the item’s status.
6. In the **Variant** dropdown, select an attribute you will use to identify variants.
7. Click **Save**.
The product attributes are mapped.
### Related Topics
* [Attribute Mapping Overview](/v3/product-catalog/user-guides/product-catalog/settings/attribute-mapping-overview)
# Settings
Source: https://developer.fabric.inc/v3/product-catalog/user-guides/product-catalog/settings/settings
### Overview
Use the Product Catalog **Settings** menu to create attribute groups and map product attributes.
Use the following links to learn more about attribute groups and attribute mapping.
### Attribute Groups
* [Attribute Groups Overview](/v3/product-catalog/user-guides/product-catalog/settings/attribute-groups-overview)
* [Creating Attribute Groups](/v3/product-catalog/user-guides/product-catalog/settings/creating-attribute-groups)
### Attribute Mapping
* [Attribute Mapping Overview](/v3/product-catalog/user-guides/product-catalog/settings/attribute-mapping-overview)
* [How to Map Attributes](/v3/product-catalog/user-guides/product-catalog/settings/how-to-map-attributes)
# Create a file object and retrieve the file upload URL
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/files/create-file
cc.openapi post /catalog-connector-files
Use this endpoint to retrieve the URL of the AWS S3 location to upload the file that you want to import to the Catalog Connector.
# Download a file by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/files/download-file
cc.openapi get /catalog-connector-files/actions/download
Use this endpoint to retrieve the URL used to download a previously processed file. You can then make a GET request with this URL to retrieve the products data in CSV or JSONL format.
The download link is valid for five minutes.
# Retrieve import and export history
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/files/get-file
cc.openapi get /catalog-connector-files
Use this endpoint to access files previously imported to or exported from the Catalog Connector, sorted in chronological order. You can refine the search results by using the following query parameters:
- `ids`: Provide a comma-separated list of file IDs to retrieve multiple files by their IDs. Note that pagination isn't supported when using this parameter.
- Format type (`formatType`) : Specify the format of the file to filter files by format. The options are **CSV** or **JSONL**.
- Operation type (`type`): Use this parameter to specify whether you want imported or exported files.
- Pagination (`offset`, `limit`): Use offset and limit parameters to refine the number of results returned.
- `sort`: Use this parameter to view results in ascending or descending order.
If no query parameters are specified, the endpoint returns up to 10 records.
# Retrieve an import template
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/files/retrieve-import-template
cc.openapi post /catalog-connector-templates/actions/generate
Use this endpoint to retrieve the product import template for Catalog Connector in either CSV or JSONL format, based on your preferred data handling method. You can open CSV template in applications, such as Excel or Google Sheets and JSONL template in text editors compatible with JSONL, such as Visual Studio Code. After filling in product data, save the template file with a unique name on your local system.
# Export products
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/jobs/export
cc.openapi post /catalog-connector-jobs/actions/export
Use this endpoint to start an internal job to export products from Catalog Connector.
Specify the `formatType` query parameter to export data in either CSV or JSONL format. In the request body, provide the `ids` of all products to be exported, the product type, and the locale.
# Catalog Connector Overview
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/overview
Catalog Connector is a denormalized data organization tool that enables merchants to link information from their third-party product information management system to their fabric account, making it accessible across fabric modules such as Offers, Orders, and Inventory.
This data can include technical specifications, such as size and weight, design attributes, such as color and material, and generic product details such as name, description, and ID.
Catalog Connector provides out-of-the-box integrations with fabric services, such as Orders and Offers, that enable merchants to apply base prices and promotions to any products available within the Catalog Connector.
Key Catalog Connector capabilities include:
* **Bulk Management:** Import product information in a CSV or JSONL file.
* **Catalog Management:** Manage product create, update, and delete actions, including parent, variant, and bundle products.
Catalog Connector is available exclusively to fabric users who don't have fabric’s proprietary Product Catalog service. Setting up Catalog Connector involves importing products, bundles, and their properties using a CSV or JSONL file.
Catalog Connector setup involves importing products and bundles and their properties in a CSV or JSONL file.
# Create product attribute group
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attribute-groups/create-product-attribute-group
attribute.openapi post /product-attribute-groups
Attribute group is a collection of attributes that can be assigned to products or categories. This endpoint creates an attribute group with associated attributes so that it's easier to assign attributes to products and categories **Note**: At least one attribute must be specified.
# Delete attribute group
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attribute-groups/delete-attribute-group
attribute.openapi delete /product-attribute-groups/{id}
To ensure product details are up to date, it's important to remove unused, incorrect attribute groups. This endpoint deletes an attribute group by its ID.
# Find attribute groups
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attribute-groups/find-attribute-groups
attribute.openapi post /product-attribute-groups/search
Attribute groups are a collection of attributes that can be assigned to products or categories. This endpoint searches for attribute groups based on the search criteria specified in the request body.
# Get all product attribute groups
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attribute-groups/get-all-product-attribute-groups
attribute.openapi get /product-attribute-groups
Attribute group is a collection of attributes that can be assigned to products or categories. This endpoint gets all the existing attribute groups along with their attributes.
# Get single attribute group
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attribute-groups/get-single-attribute-group
attribute.openapi get /product-attribute-groups/{id}
Attribute groups are a collection of attributes that can be assigned to products or categories. This endpoint gets details of the product attribute groups for the specified ID for proper details of product information on your e-commerce portal.
# Attribute Groups
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attribute-groups/overview
An Attribute Group is a collection of product attributes that helps categorize products into various semantic groups based on meaning and purpose, allowing for easier management and organization in the Product Catalog. Supports CRUD operations for managing attribute groups.
# Update attribute group
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attribute-groups/update-attribute-group
attribute.openapi put /product-attribute-groups/{id}
When launching a new product line, it may be necessary to update certain aspects, such as adding or deleting attributes, updating attribute group name, or adjusting the sequence in which they appear on UI. This endpoint is used to group attributes and mark them as editable or read-only. In addition, you can update the details of attribute groups such as name, description, priority order, and more. This endpoint completely replaces the existing details.
# Get attributes mapping
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes-mapping/get-attributes-mapping
attribute.openapi get /product-attribute-mappings
Before adding an item (with or without variants) to fabric **Product Catalog**, you must map merchant-specific attributes to fabric-specific attributes.
Once mapping is created, this endpoint is used to get the mapping details.
# Update attributes mapping
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/attributes-mapping/update-attributes-mapping
attribute.openapi put /product-attribute-mappings
This endpoint updates mapping of merchant-defined attributes to fabric-defined standard attributes. This will help ensure consistency.
# Create multiple categories
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/bulk-action-for-categories-and-collections/create-multiple-categories
category.openapi post /categories/batch
Items are organized within categories, which form the original hierarchical tree structure with multiple levels of nested categories.
This endpoint is used to add new categories within this structure.
**Note**: 1. Upon onboarding a new merchant to fabric
**Product Catalog**, a root category is automatically generated.
2. This endpoint doesn't support adding of parent and its children categories at the same time.
3. You can add up to 25 categories.
# Create multiple collections
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/bulk-action-for-categories-and-collections/create-multiple-collections
category.openapi post /collections/batch
Collection is an alternative way to organize products compared to the original Category system; they're created based on merchant's requirements. This endpoint is used to create a new collection **Note**: You can create up to 25 collections in a single call.
# Update collections up to 25
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/bulk-action-for-categories-and-collections/update-collections-up-to-25
category.openapi put /collections
With this endpoint, you can update up to 25 collections. You can also update collection details, such as add sub-collections, exclude sub-collections, add validation rules for attributes, or reorder collections. **Note**:
1. This endpoint replaces the existing details.
2. To avoid losing all details, for minor updates, use the `partially update collection` endpoint - `PATCH /collections/{id}`
# Update multiple categories
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/bulk-action-for-categories-and-collections/update-multiple-categories
category.openapi put /categories
With this endpoint, you can update up to 25 categories and add new child categories. You can update the name of the category as required, update the parent category, change category attributes for improved product discovery, and modify product attributes to efficient product filtering.
# Create category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/create-category
category.openapi post /categories
Items are organized within categories, which form the original hierarchical tree structure with multiple levels of nested categories.
This endpoint is used to create a new category within this
structure. **Note**: 1. Upon onboarding a new merchant to fabric
**Product Catalog**, a root category is automatically generated.
2. This endpoint doesn't support adding of children categories. Use the Update category endpoint - `PUT /categories/{id}` endpoint to add child categories.
# Delete category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/delete-category
category.openapi delete /categories/{id}
If there is a change in product offerings , one or more categories may become unnecessary. This endpoint is used to delete a category by its ID.
# Find categories
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/find-categories
category.openapi post /categories/search
This endpoint is used to search and find specific categories based on the search criteria given in the request body. This endpoint is also used to find the root category that's automatically created when the merchant is onboarded to fabric **Product Catalog**.
# Get a single category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/get-a-single-category
category.openapi get /categories/{id}
The Category system is the original tree hierarchy used to organize and categorize products. This endpoint gets the details of a specific category by its ID. The response includes basic info (ID, name, localized name (if applicable), list of category attributes, product attributes, associated product IDs, associated child categories, and more.
# Get attribute groups of a category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/get-attribute-groups-of-a-category
category.openapi get /categories/{id}/attribute-groups
Attribute groups are a collection of attributes that can be assigned to an item or a category. For example, an `Electronics` category may have `Dimensions` as one of the attribute groups, with `length`, `width`, and `height` as individual attributes. This endpoint gets all attribute groups for the given category. For each attribute group, you can view its basic details such as ID, name, and priority as well as attribute details including validation rules, localized versions, and more
# Get navigation path for categories
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/get-navigation-path-for-categories
category.openapi get /categories-path
In **Product Catalog**, items are organized in a hierarchy tree structure of parent and children categories. This endpoint gets the navigation path starting from the root (level 0) until the given category IDs.
# Get products by category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/get-products-by-category
category.openapi get /categories/{id}/products
To ensure correct items are grouped together within a category, it's important to review them in the context of each category. This endpoint gets a paginated list of products. For each product, you can view its attribute details, localized properties, variant IDs as well as the `categoryId`. You can refine your search results by specifying `offset`, and `limit`. When they're no specified, you'll get up to 10 results.
# Categories
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/overview
Categories are organized into a hierarchical tree structure based on common attributes, allowing logical grouping of items. The Categories endpoints enable CRUD operations, which include creating, finding, and managing categories.
# Partially update category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/partially-update-category
category.openapi patch /categories/{id}
In contrast to the Update Category endpoint - `PUT /categories/{id}`, which fully overwrites the category details, this endpoint allows for selective modification of specific details, such as fixing any typos present in category names as well as facilitating addition or removal of category attributes or product attributes.
# Update category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/categories/update-category
category.openapi put /categories/{id}
Child categories can't be added while creating a new category (using the `POST /categories` endpoint). This endpoint is used to add a child category to a parent category. In addition, when there are changes in product offerings, this endpoint is used to change the item and category attributes as well as rename the category. This endpoint completely replaces the existing details.
# Copy Category to Collections
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/copy-category-to-collections
category.openapi post /collections/actions/copy-category
This endpoint is used to replicate category tree hierarchy to collections.
# Create collection
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/create-collection
category.openapi post /collections
Collection is an alternative way to organize products compared to the Category system, which is the original organization of items. Because the Category system isn't granular enough to meet all the requirements of Storefronts, collections are used to organize products as per the merchant's requirements. This endpoint is used to create a new collection within the alternative organization so that it can be adapted to support various use-cases of Storefronts.
# Delete collection
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/delete-collection
category.openapi delete /collections/{id}
If there is a change in product offerings, one or more collections may become unnecessary. This endpoint is used to delete a collection by ID.
# Find collections
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/find-collections
category.openapi post /collections/search
This endpoint enables you to find collections by the search criteria you specify in the request body. You can also `sort` the results.
# Get a single collection
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/get-a-single-collection
category.openapi get /collections/{id}
Collections are used to organize and categorize products on your e-commerce platform (website and app), making it easier for shoppers to browse and find products. This endpoint gets category details such as basic info (ID, name, localized name, status, etc.), attributes details, categories included, categories excluded, associated child categories, and more.
# Get navigation path for collections
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/get-navigation-path-for-collections
category.openapi get /collections-path
On the Storefront, products are organized in hierarchical tree structure of parent and children collections. This endpoint gets the navigation path starting from the root (level 0) until the given collections.
# Get products under collection
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/get-products-under-collection
category.openapi get /collections/{id}/products
To ensure the right set of products are organized within a collection, it's important to review products in each collection. This endpoint gets a paginated list of products in a collection. **Note**: You can refine your search by specifying `offset` and `limit`. When they're not specified, you'll get up to 10 products by default.
# Collections
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/overview
As the **Categories** system may not be sufficiently granular to accommodate all Storefront use cases, **Collections** provides an alternative means of organizing products on the storefront. Collections create a representational categorization of products, and are primarily used by merchants for short-term marketing campaigns. For instance, a collection could be created for a New Year sale that highlights discounted furniture products.
# Partially update collection
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/partially-update-collection
category.openapi patch /collections/{id}
In contrast to the Update Collection endpoint - `PUT /collections/{id}`, which fully overwrites the collection details, this endpoint allows for selective modification of specific details such as fixing any typos present in the collection name as well as facilitating addition or removal of attributes
# Syncing Collections Using Delta Files
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/syncing-collections-using-delta-files
Collections help organize products for commerce channels and shoppers by using category source inclusions/exclusions and attribute-based rules.
Product Catalog maintains collection assignments through two background jobs, which evaluate and update product assignment based on attribute or rule changes:
| Job Name | Function | Event |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Product Update: Collection Evaluation** | Monitors product attribute updates and re-evaluates product eligibility for collections. | `pim:jobs.ProductUpdate.CollectionEvaluation:completed`
`pim:jobs.ProductUpdate.CollectionEvaluation:failed` |
| **Collection Update: Product Evaluation** | Monitors collection rule updates and re-evaluates products based on the revised collection rules. | `pim:jobs.CollectionUpdate.ProductEvaluation:completed`
`pim:jobs.CollectionUpdate.ProductEvaluation:failed` |
If you are subscribed to Product Catalog's Collections [webhook events](/v3/platform/settings/webhooks/list-of-products-events), the system synchronizes product updates using delta files. The following diagram shows the sequence of tasks performed during the synchronization process:

The system runs background jobs that generate product update files. Depending on the job status, an event is triggered.
Ensure that the webhook listener is subscribed to both "completed" and "failed" events, as failed jobs might still update some products.
## Synchronization Process
### 1. Job execution
The system runs one of two background jobs:
* Product Update: Collection Evaluation (re-evaluates product fitment based on attribute updates).
* Collection Update: Product Evaluation (re-evaluates products based on collection rule changes).
### 2. Event triggering
Once a job completes successfully or fails, it triggers an event. The webhook listener must be subscribed to both **completed** and **failed** events because failed jobs may still update some products.
### 3. Event delivered
The fabric event publisher delivers the event to the webhook listener.
### 4. Extract the output file ID
The Webhook Listener retrieves the first output file ID from the event payload. If multiple output files exist:
* Only the first file should be processed.
* Additional files should be reviewed to determine if they contain duplicates, sequential data, or logs.
#### Example payload with output files
```
{
"specversion": "v3",
"type": "pim:jobs.productUpdate.collectionEvaluation:completed",
"tenantid": "64cbda7e0cf2dcad87b14456",
"events": [
{
"id": "87852cfa-0cf8-4625-8935-20f2292ea0d3",
"time": "2024-02-07T12:09:21.623Z",
"source": "pim:job",
"data": [
{
"id": "65c3705726f919316ba95361",
"tenantId": "64cbda7e0cf2dcad87b14456",
"name": "Product Job_02.07.2024",
"type": "PRODUCT_JOB",
"outputFiles": [
"65c372f1b683f0539a8c18b1"
],
"errorFiles": [],
"status": "COMPLETED",
"createdAt": "2024-02-07T11:58:15.814Z",
"updatedAt": "2024-02-07T12:09:21.618Z",
"batchJobId": "afe320dc-fb2f-4550-89d4-3578a5c9d255",
"completedAt": "2024-02-07T12:09:21.615Z",
"statusMessage": "Job completed successfully"
}
]
}
]
}
```
### 5. Retrieve the file download link
Make an API request to fetch the file download link using the extracted file ID.
#### Example cURL request
```
curl--location
'https://api.fabric.inc/v3/product-files/actions/download?fileId=65c372f1b683f0
539a8c18b1' \--header 'Authorization: ' \--header 'x-fabric-tenant-id: 64cbda7e0cf2dcad87b14456'
```
### 6. Download and extract the file
Download the output file from the retrieved link. The downloaded file is a .zip archive that must be extracted before use.
Retry logic:
* If the download fails, retry with exponential backoff.
* Verify file integrity before extraction.
#### Example signed URL for file download
```
{
"location": "https://pim-v3-prod01-us-east-1-files.s3.us-east-1.amazonaws.com/product-batch-job/64cbda7e0cf2dcad87b14ad7/prod01/1707307761501-65c3705726f919316ba95361-product-job-outputFile.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240207T193937Z&X-Amz-Expires=300&X-Amz-Signature=3f33806438e10764832d0a3dd5f2e98d02be31476b5bb94f7805b775744b60d0"
}
```
This signed URL is a temporary, pre-authenticated link that allows you to download the generated output file. The URL includes security parameters such as an expiration time `X-Amz-Expires`, an algorithm used for signing `X-Amz-Algorithm`, and a signature `X-Amz-Signature`.
Ensure that the webhook listener processes the file right after retrieval to avoid needing multiple API requests.
If the URL expires before the file is downloaded, request a new signed URL by calling the File API again.
### 7. Process the extracted data
If no products were updated, the file contains the message "No products updated."
If products were updated, the file contains JSON entries listing:
* Product ID
* SKU
* Type (item, variant, or bundle)
* Status (live, draft)
* Collections the product was added to or removed from
Category attributes are inherited by default, meaning sub-collection nodes automatically adopt attribute values from their parent categories. However, users can override these values as needed, allowing for customization at different hierarchy levels.
#### Example JSON entries
```
{
"id": "65b293d4bc83fd68411eb0e7",
"sku": "GZZ19228-150-35_pim_pim_2",
"type": "ITEM",
"status": "LIVE",
"collections": {
"added": ["65c3e29b8cf6b31a1f1845fb"],
"removed": []
}
}
```
### 8. Synchronize the updated data
Process the extracted product data for further synchronization within the system to ensure that any updates correctly propagate through downstream services.
# Update children of collection
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/update-children-of-collection
category.openapi put /collections/{id}/children
This endpoint is primarily used to change display order of children collection.
# Update collection
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/collections/update-collection
category.openapi put /collections/{id}
With this endpoint, you can update details of a single collection, such as add or remove sub-collections, add validation rules for attributes, reorder collections, and more. **Note**:
1. This endpoint replaces the existing details.
2. To avoid impacting the entire data, for minor updates, use the Partially update collection endpoint instead - `PATCH /collections/{id}`.
# Create file object and get file upload location
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/files/create-file-object-and-get-file-upload-location
files-jobs.openapi post /product-files
This endpoint creates a file object by specifying the import file's `type`, `name`, and `locale` in the request body. The response will include the URL location to upload the file.
# Download a file by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/files/download-a-file-by-id
files-jobs.openapi get /product-files/actions/download
Use this endpoint to get a download link for imported file, which you can use to review or update the file . **Note**: The link is valid only for five minutes.
# Generate the import template
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/files/generate-the-import-template
files-jobs.openapi post /product-templates/actions/generate
Bulk import must be in a standardized format. Using this endpoint, you can generate the template required to bulk import attribute, category, collection, item, and/or bundle.
# Get files available for a merchant
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/files/get-files-available-for-a-merchant
files-jobs.openapi get /product-files
Get files available for a merchant. This endpoint can be used to search for files using file names or file IDs. **Note**: Query parameter `ids` can't be combined with any other query parameters and pagination isn't supported when `ids` query is used.
# Add products
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/general-product-operations/add-products
product.openapi post /products/batch
At fabric, the term products refers to items, variants, and/or bundles.
With this endpoint, you can add up to 25 products. Refer to the
examples added for each type. **Note**:
1. If product type is Variant, they can be added using either SKU or ID.
2. When product type is Item, either `parentCategoryId` or `parentCategorySKU` must be specified.
3. When product `type` is Bundle, items in a bundle can be added using either SKU or ID.
4. In the response you can see the products that are added successfully and the ones that couldn't be added.
# Bulk reassign products to a different category using filter conditions
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/general-product-operations/bulk-reassign-products-to-a-different-category-using-filter-conditions
product.openapi post /products/actions/filter-change-category
To enhance product visibility or improve product organization, you may want to reassign products to a different category. With this endpoint, you can asynchronously reassign products to a different category. Instead of waiting for results through the API response, you'll gets notified via email whether the products were successfully reassigned.
# Delete products
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/general-product-operations/delete-products
product.openapi delete /products
To keep the product list (catalog) up to date and current, it's important to remove products that are discontinued permanently. With this endpoint, you can delete up to 25 products either by SKUs or IDs. **Note**:
1. Unless all products are deleted, this endpoint fails.
2. To delete a single product, you can use either the ID-based (`DELETE /products/{id}`) or SKU-based endpoint (`DELETE /products/sku/{sku}`).
# Find products
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/general-product-operations/find-products
product.openapi post /products/search
To find specific products for review or reports, you need to specify the criteria for the search. With this endpoint, you can find products (items, variants, and bundles) based on ID or SKU, type, category, and other criteria.
# Get products list
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/general-product-operations/get-products-list
product.openapi get /products
You may have to review products to review or analyze them or create certain reports. This endpoint gets a paginated list of products (items, variants, and bundles) for the specified `locales`. **Note**: Specify product IDs to get only those products. Or, you may mention `offset` and `limit` to refine the search results. When they're not specified, by default, you'll get up to 10 products.
# Reassign products to a different category, synchronously.
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/general-product-operations/reassign-products-to-a-different-category-synchronously
product.openapi post /products/actions/change-category
To enhance product visibility or improve product organization, you may want to reassign products to a different category. With this endpoint, you can synchronously reassign up to 25 products to a different category. The response will show a list of successful and unsuccessful reassignments
# Update products
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/general-product-operations/update-products
product.openapi put /products
With this endpoint, you can update details of multiple products, which could be items, variants, and bundles. **Note**:
1. When product type is `Variant`, it can be added either via SKU or ID.
2. When product type is `Item`, either the `parentCategoryId` or `parentCategorySKU` must be specified.
3. When product type is `Bundle`, the associated items or variants can be added either via SKU or via ID.
4. At least one product must be specified.
# Cancel background jobs using job IDs
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/jobs/cancel-background-jobs
files-jobs.openapi post /product-jobs/{id}/actions/cancel
Cancel any in progress or scheduled background job by providing the job ID. Currently only supports item and variant import jobs.
# Get jobs related to products
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/jobs/get-jobs-related-to-products
files-jobs.openapi get /product-jobs
Get a paginated list of jobs related to products by specifying the query parameters such as job `ids`, `type`. You can refine the results by specifying `offset` and `limit`. **Note**:
1. Query parameter `ids` can't be combined with the rest of the query parameters and when it's specified, pagination isn't supported.
2. Query parameter `inputFileIds` supports up to 15 comma-separated file IDs and it can be combined only with the query parameter `lastJobOnly`. Pagination isn't supported when this parameter is used.
# Initiate job to export items and variants
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/jobs/initiate-job-to-export-items-and-variants
files-jobs.openapi post /product-jobs/actions/export
Use this endpoint to trigger a job to export items and variants, by ids.
# Initiate job to export items and variants
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/jobs/initiate-job-to-export-items-and-variants-1
files-jobs.openapi post /product-jobs/actions/filter-export
Use this endpoint to trigger a job to export items and variants based on the specified filter conditions.
# Search jobs
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/jobs/search-background-jobs
files-jobs.openapi post /product-jobs/search
Get a paginated list of jobs related to products and collections by specifying the request body. You need to specify the criteria for the search such as job `id`, `type`, `status`, `collectionId`, `inputFileId`.
# Add product
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product
product.openapi post /products
At fabric, the term products refers to items, variants, and/or bundles.
# Add products to bundle by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-products-to-bundle-by-id
product.openapi post /products/{id}/bundles/actions/attach
Creating a bundle of two or more complementary products, sold as a single package, is a widely adopted sales and marketing strategy. For example, a laptop is bundled with a carrying case and wireless mouse. This makes it convenient for shoppers to purchase them together. With this endpoint, you can add up to 25 products in a bundle that can be sold together. **Note**:
1. At least one product must be added.
2. If you don't have product ID, use the corresponding SKU-based endpoint - `POST /products/sku/{sku}/bundles/actions/attach`.
# Add variants to products by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-variants-to-products-by-id
product.openapi post /products/{id}/variants/actions/attach
Variants are the different options of an item such as size, color, and materials. For example, there are 12 variants for a laptop that comes in three sizes (13, 15, and 17 inches) and four colors (red, blue, grey, and white). By adding variants to products, you can offer more options to shoppers. With this endpoint, you can add up to 25 variants to an existing product. **Note**:
1. At least one variant must be specified.
2. If you don't have product ID, use the corresponding SKU-based endpoint - `POST /products/sku/{sku}/variants/actions/attach`.
# Change product category
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/change-product-category
product.openapi post /products/{id}/actions/change-category
This endpoint lets you change a product from one category to another. When managing a large number of products, this endpoint gives you the flexibility to organize products easily.
# Delete product by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/delete-product-by-id
product.openapi delete /products/{id}
To keep the product list (catalog) up to date and current, it's important to remove products that are discontinued permanently. With this endpoint, you can delete a product (Item, Bundle, or Variant) by ID. Using `deleteVariants` as query parameter, you an optionally specify if you want to delete the associated variants as well. **Note**: If you don't have product ID, use the corresponding SKU-based endpoint - `DELETE /products/sku/{sku}`.
# Get product by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/get-product-by-id
product.openapi get /products/{id}
With this endpoint, you can get details of a product (item, bundle, or variant) by ID. The response includes the product's attributes and its variants. You can optionally specify `locales` to get products for specific regions. **Note**: If you don't have product ID, use the corresponding SKU-based endpoint - `GET /products/sku/{sku}`
# Get product variants by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/get-product-variants-by-id
product.openapi get /products/{id}/variants
Variants are different options of an item such as size, color, and materials. For example, there are 12 variants for a laptop that comes in three sizes (13, 15, and 17 inches) and four colors (red, blue, grey, and white). By adding variants to products, you can offer more options to shoppers . **Note**:
1. At least one variant must be specified.
2. If you don't have product ID, use the corresponding SKU-based endpoint - `GET /products/sku/{sku}/variants`.
3. The `status` parameter is applicable to the `id` passed in path parameter and not for the variants. That is, the variants returned as part of the response are either the variants attached to the Live or Draft version of the product based on the `status` parameter.
# Get products in a bundle by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/get-products-in-a-bundle-by-id
product.openapi get /products/{id}/bundles
Bundle is a collection of products that are sold together as a single package. For example, a laptop is bundled with a carrying case and a wireless mouse to be sold as a package. This endpoint gets a paginated list of products by ID. **Note**:
1. You can refine the results by specifying `offset` and `limit` values. When they're not specified, by default, you'll get up to 10 products.
2. If you don't have product ID, use the corresponding SKU-based endpoint - `GET /products/sku/{sku}/bundles`.
3. The `status` parameter is applicable to the `id` passed in path parameter and not for bundles. That is, bundles returned as part of the response are either the bundles attached to the Live or Draft version of the product based on the `status` parameter.
# Partially update product attributes by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/partially-update-product-attributes-by-id
product.openapi patch /products/{id}/attributes
Product attributes are the objective and factual descriptions of products that shoppers see when they browse through an e-commerce platform. Attributes may be technical specifications like size, weight, etc., design specifications like color, material, etc., or basic specifications such as name, description, ID, etc. With this endpoint, you can partially update attributes of a given product. **Note**:
1. This endpoint is recommended over `PUT /products/{id}/attributes` (Update product attributes by ID) if you want to update only specific attributes without affecting the others.
2. If you don't have product ID, use the corresponding SKU-based endpoint - `PATCH /products/sku/{sku}/attributes`.
# Product Catalog API
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/products-api
Product team: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | License: [fabric API License](https://fabric.inc/api-license)
Product Catalog API, a subset of fabric **Product Catalog**, is designed to improve product management. A product can refer to an item, variant, or bundle.
Product Catalog API enables you to create items, add variants to an item, create a bundle, add items to a bundle, update product attributes, get details of one or more products, delete products and search for products. Each product has a title, ID, category, and assigned attributes. Multiple options of a given item become variants of that item and they're nested under a parent item, allowing the different options to appear for the item.
[Find out more about Product Catalog](https://developer.fabric.inc/v3/guides/product-catalog/overview)
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsAPI.json)
# Publish product by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/publish-product-by-id
product.openapi post /products/{id}/actions/publish
A newly added product can be in `Published` or `Draft` status. With this endpoint, you can publish the Draft version of a product.
# Remove products from a bundle by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/remove-products-from-a-bundle-by-id
product.openapi post /products/{id}/bundles/actions/detach
When one or more products in a bundle are discontinued or no longer required, you don't want them to appear in the bundle. With this endpoint, you can remove up to 25 products by ID. **Note**
1. Products are only detached from the given product, not deleted. They can be added to the same or another product, at a later point.
2. At least one product must be specified.
3. If you don't have product ID, use the corresponding SKU-based endpoint - `POST /products/sku/{sku}/bundles/actions/detach`.
# Remove variants by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/remove-variants-by-id
product.openapi post /products/{id}/variants/actions/detach
When one or more variants of a product are discontinued or no longer required, you don't want them to appear as options for the product. This endpoint provides the flexibility to remove up to 25 variants by ID and manage options efficiently. **Note**:
1. Variants are only detached from the given product, not deleted. They can be reattached to the same or another product at a later point.
2. At least one variant must be specified.
3. If you don't have product ID, use the corresponding SKU-based endpoint - `POST /products/sku/{sku}/variants/actions/detach`.
# Unpublish product by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/unpublish-product-by-id
product.openapi post /products/{id}/actions/unpublish
Due to changes in market, you may have to remove a product from being live. With this endpoint, you can unpublish product.
# Update product
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/update-product
product.openapi put /products/{id}
With this endpoint, you can update details of a single product, which could be an items, variant, or a bundles. **Note**:
1. When product type is `Variant`, it can be added either using SKU or ID.
2. When product type is `Item`, either `parentCategoryId` or `parentCategorySKU` must be specified.
3. When product type is Bundle, associated items or variants can also be added either using SKU or via ID.
4. At least one product must be specified.
# Update product attributes by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/update-product-attributes-by-id
product.openapi put /products/{id}/attributes
Product attributes are the objective and factual descriptions of products that shoppers see when they browse through an e-commerce platform. Attributes may be technical specifications like size, weight, etc., design specifications like color, material, etc., or basic specifications such as name, description, ID, etc. This endpoint is used to update product attributes, completely replacing the existing ones. **Note**:
1. This endpoint is recommended over `PATCH /products/{id}/attributes`, if the update involves replacing all the attributes. If there are any missing or null fields in the request, the original values will be replaced with empty ones.
2. If you don't have product ID, use the corresponding SKU-based endpoint - `PUT /products/sku/{sku}/attributes`.
# Add products to bundle by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/add-products-to-bundle-by-sku
product.openapi post /products/sku/{sku}/bundles/actions/attach
Creating a bundle of two or more complementary products, sold as a single package, is a widely adopted sales and marketing strategy. For example, a laptop is bundled with a carrying case and wireless mouse. This makes it convenient for shoppers to purchase them together. With this endpoint, you can add up to 25 products in a bundle that can be sold together. **Note**:
1. At least one product must be added.
2. If you don't have product `sku`, use the corresponding ID-based endpoint - `POST /products/{id}/bundles/actions/attach`.
# Add variants to products by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/add-variants-to-products-by-sku
product.openapi post /products/sku/{sku}/variants/actions/attach
Variants are the different options of an item such as size, color, and materials. For example, there are 12 variants for a laptop that comes in three sizes (13, 15, and 17 inches) and four colors (red, blue, grey, and white). By adding variants to products, you can offer more options to shoppers. With this endpoint, you can add up to 25 variants to an existing product **Note**:
1. At least one variant must be specified.
2. If you don't have product ID, use the corresponding ID-based endpoint - `POST /products/{id}/variants/actions/attach`.
# Delete product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/delete-product-by-sku
product.openapi delete /products/sku/{sku}
To keep the product list (catalog) up to date and current, it's important to remove products that are discontinued permanently. With this endpoint, you can delete a product (Item, Bundle, or Variant) by SKU. Using `deleteVariants` as query parameter, you an optionally specify if you want to delete the associated variants as well. **Note**: If you don't have product SKU, use the corresponding ID-based endpoint - `DELETE /products/{id}`.
# Get product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/get-product-by-sku
product.openapi get /products/sku/{sku}
You may want to periodically review details of a product to ensure they're correct. This endpoint gets details of a product (item, bundle, or variant) by SKU. The response includes products attributes and its variants. You can optionally specify `locales` to get products for specific regions. **Note**: If you don't have product SKU, use the corresponding ID-based endpoint - `GET /products/{id}`.
# Get product variants by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/get-product-variants-by-sku
product.openapi get /products/sku/{sku}/variants
Variants are different options of an item such as size, color, and materials. For example, there are 12 variants for a laptop that comes in three sizes (13, 15, and 17 inches) and four colors (red, blue, grey, and white). By adding variants to products, you can offer more options to shoppers **Note**:
1. At least one variant must be specified.
2. If you don't have product ID, use the corresponding ID-based endpoint - `/products/{id}/variants`.
3. The `status` parameter is applicable to the `id` passed in path parameter and not for variants. That is, the variants returned as part of the response are the variants attached to either the Live or Draft version of the product based on the `status` parameter.
# Get products by SKUs
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/get-products-by-skus
product.openapi get /products/sku
Get a paginated list of product (Item, Bundle, or Variant) by SKU, including the attributes and variants. You can optionally specify `locales` to get products for specific regions. **Note**:
1. You can refine the results by specifying `offset` and `limit` values. If you don't specify them, by default, you'll get up to 10 products.
2. If you don't have product SKU, use the corresponding ID-based endpoint - `GET /products/{id}`.
# Get products in a bundle by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/get-products-in-a-bundle-by-sku
product.openapi get /products/sku/{sku}/bundles
Bundle is a collection of products that are sold together as a single package. For example, a laptop is bundled with a carrying case and a wireless mouse to be sold as a package. This endpoint gets a paginated list of products by ID. **Note**:
1. You can refine the results by specifying `offset` and `limit` values. When they're not specified, by default, you'll get up to 10 products.
2. If you don't have product SKU, use the corresponding ID-based endpoint - `GET /products/{id}/bundles`.
3. The `status` parameter is applicable to the `id` passed as path parameter and not for bundles. That is, the bundles returned in the response are the bundles attached to either the Live or Draft version of the product based on the `status` parameter.
# Partially update product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/partially-update-product-by-sku
product.openapi patch /products/sku/{sku}/attributes
Product attributes are the objective and factual descriptions of products that shoppers see when they browse through an e-commerce platform. Attributes may be technical specifications like size, weight, etc., design specifications like color, material, etc., or basic specifications such as name, description, ID, etc. This endpoint is used to partially update attributes of the given product attributes. **Note**:
1. This endpoint is recommended over `PUT /products/sku/{sku}/attributes` (Update product attributes by SKU) if you want to update only specific attributes without affecting the others.
2. If you don't have product SKU, use the corresponding ID-based endpoint - `PATCH /products/{id}/attributes`.
# Publish product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/publish-product-by-sku
product.openapi post /products/sku/{sku}/actions/publish
A newly added product can be in `Published` or `Draft` status. With this endpoint, by specifying `sku`, you can publish a product in Draft status.
# Remove product variants by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/remove-product-variants-by-sku
product.openapi post /products/sku/{sku}/variants/actions/detach
When one or more variants of a product are discontinued or no longer required, you don't want them to appear as options. This endpoint provides the flexibility to remove up to 25 variants by SKU and manage product options, efficiently. **Note**:
1. Variants are only detached from the given product, not deleted. They can be reattached to the same or another product, at a later point.
2. At least one variant must be specified.
3. If you don't have product SKU, use the corresponding ID-based endpoint - `POST /products/{id}/variants/actions/detach`.
# Remove products from a bundle by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/remove-products-from-a-bundle-by-sku
product.openapi post /products/sku/{sku}/bundles/actions/detach
When one or more products in a bundle are discontinued or no longer required, you don't want them to appear in the bundle. With this endpoint, you can remove up to 25 products by SKU. **Note**
1. Products are only detached from the given product, not deleted. They can be added to the same or another product, at a later point.
2. At least one product must be specified.
3. If you don't have product ID, use the corresponding SKU-based endpoint - `POST /products/{id}/bundles/actions/detach`.
# Unpublish product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/unpublish-product-by-sku
product.openapi post /products/sku/{sku}/actions/unpublish
Due to changes in market, you may have to remove a product from being live. With this endpoint, you can unpublish a product by specifying `sku`.
# Update product attributes by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/update-product-attributes-by-sku
product.openapi put /products/sku/{sku}/attributes
Product attributes are the objective and factual descriptions of products that shoppers see when they browse through an e-commerce platform. Attributes may be technical specifications like size, weight, etc., design specifications like color, material, etc., or basic specifications such as name, description, ID, etc. This endpoint is used to update product attributes, completely replacing the existing ones. **Note**:
1. This is recommended over `PATCH /products/sku/{sku}/attributes`, if the update involves replacing all the attributes. If there are any missing or null fields in the request, the original values will be replaced with empty ones.
2. If you don't have product SKU, use the corresponding ID-based endpoint - `PUT /products/{id}/attributes`.
# Update product SKUs
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/product-operations-by-sku/update-product-skus
product.openapi put /products/sku
You may need to update the SKUs of one or more products if the products have undergone significant improvements, and you need a way to differentiate between the updated version and the previous one. Or, you may want to address a typographical error or inconsistencies in the SKU naming conventions. This endpoint updates SKUs for up to 25 products. **Note**: Unless all SKUs are updated, the endpoint will fail.
# Product Catalog - Files and Jobs API
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/products---files-and-jobs-api
Product team: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | License: [fabric API License](https://fabric.inc/api-license)
fabric's **Files and Jobs** API supports bulk import and export of items, attributes, and bundles.
Generally, the first step is to download the appropriate template for import. There are separate endpoints to get templates for items (`POST /item-import-templates`), attributes (`POST /attribute-import-templates`), and bundles (`POST /bundle-import-templates`).
Once the import details are filled out in the template, you need to provide the file name and type in the request body of the `POST /files/product` endpoint. In the endpoint response, you will get the URL to upload the file to be imported. Using job exports endpoints, you can export the uploaded products and attributes based on specified criteria.
For information on the optimal methods to import data into fabric, see [Data Ingestion Best Practices](/v3/api-reference/product-catalog/data-ingestion-best-practices).
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsFileAndJobs.json)
# Product Catalog - Published Product Catalog API
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/products---published-products-api
Product team: [fabric support](https://support.fabric.inc/hc/en-us/requests/new) | License: [fabric API License](https://fabric.inc/api-license)
fabric Published Product Catalog API enables displaying products (items, variants, and bundles) and their details on your e-commerce platform (website or mobile app). Published products are products that are ready to be sold. These endpoints support getting one or more product details by product ID or SKUs also support search and filter functions, making it easier for shoppers to view product details such as descriptions, specification, images, and more. This will help them make informed purchases and enjoy a better shopping experience.
[Find out more about Product](/v3/product-catalog/user-guides/product-catalog/overview)
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/productsPublishedProducts.json)
# Get collections by product ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-id/get-collections-by-product-id
published-product.openapi get /published-products/{id}/collections
On your Storefront products are organized or grouped in logical groups called Collections. The main purpose of Collection is distribution management by displaying products on your website based on separate browsing structures required to achieve specific merchandising objectives, such as organizational requirements, multi-regional assortments, multi-channel assortments, and collections. This endpoint gets the collection details of a published product by ID. You can refine your search results by specifying query parameters - `collectionIds` and `collectionRootName` **Note**:
1. You can narrow down the results by specifying `offset` and `limit`. When they're not specified, by default, you'll get up to 10 products.
2. If you don't have product ID, use the corresponding item ID-based or SKU-based endpoints.
# Get products by IDs
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-id/get-products-by-ids
published-product.openapi get /published-products/ids
Shoppers may want to view the products they've already identified or bookmarked, or you may want to promote a particular set of products as part of promotions. This endpoint get details of published products with or without variants, categories, bundle products, and collections. You can specify multiple comma-separated product `ids`. Using this endpoint, you can show up to 25 products on your Storefront. **Note**: If you don't have product ID, use the corresponding item ID-based or SKU-based endpoints.
# Get products in a bundle by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-id/get-products-in-a-bundle-by-id
published-product.openapi get /published-products/{id}/bundle-products
A bundle is a collection of products that are sold together as a single package. For example, a laptop is bundled with a carrying case and a wireless mouse to be sold as a package. This endpoint gets a paginated list of published products in a bundle by bundle ID. You can refine your search results by specifying query parameters - `excludeBundleProducts`, `excludeCollections`, `excludeCategories` and `excludeVariants` **Note**:
1. You can refine the results by specifying `offset` and `limit`. When they're not specified, by default, you'll get up to 10 products.
2. If you don't have product ID, use the corresponding item ID-based or SKU-based endpoints.
# Get published product by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-id/get-published-product-by-id
published-product.openapi get /published-products/{id}
Your Storefront must displays all the relevant information for shoppers to make an informed purchase decision. This endpoint gets details of a published product (item, bundle, or variant) by ID, which can be used to display product details on your Storefront. **Note**: If you don't have product ID, use the corresponding SKU-based or item ID-based endpoints.
# Get variants of published product by ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-id/get-variants-of-published-product-by-id
published-product.openapi get /published-products/{id}/variants
Variants are the different versions of a product with different sizes, colors, or materials. For example, there are 12 variants of a laptop that comes in three sizes (13, 15, and 17 inches) and four colors (red, blue, grey, and white). By adding variants to products, you can offer shoppers more options. This endpoint gets a paginated list of variants of a published product by ID. **Note**:
1. You can narrow down the search results by specifying `offset` and `limit`. When they're not specified, by default you'll get up to 10 records.
2. If you don't have product ID, use the corresponding SKU-based or item ID-based endpoints.
# Get bundle products by bundle SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-sku/get-bundle-products-by-bundle-sku
published-product.openapi get /published-products/skus/{sku}/bundle-products
A bundle is a collection of products that are sold together as a single package. For example, a laptop is bundled with a carrying case and a wireless mouse to be sold as a package. This endpoint gets a paginated list of published products in a bundle by bundle SKU. **Note**:
1. You can refine the results by specifying `offset` and `limit`. When they're not specified, by default, you'll get up to 10 products.
2. If you don't have product SKU, use the corresponding item ID-based or product ID-based endpoints.
# Get collections by product SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-sku/get-collections-by-product-sku
published-product.openapi get /published-products/skus/{sku}/collections
On your Storefront products are organized or grouped in logical groups called Collections. The main purpose of collection is distribution management by displaying products on your website based on separate browsing structures required to achieve specific merchandising objectives, such as organizational requirements, multi-regional assortments, multi-channel assortments, and collections. This endpoint gets the collection details of a published product by ID. You can refine your search results by specifying query parameters - `collectionIds` and `collectionRootName`. **Note**: If you don't have SKU, use the corresponding item ID-based or product ID-based endpoints.
# Get published product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-sku/get-published-product-by-sku
published-product.openapi get /published-products/skus/{sku}
Your Storefront must displays all the relevant information for shoppers to help them make an informed purchase decision. This endpoint gets details of a published product (item, bundle, or variant) by SKU, which can be used to display product details on your Storefront. **Note**: If you don't have product SKU, use the corresponding item ID-based or product ID-based endpoints.
# Get published products by SKUs
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-sku/get-published-products-by-skus
published-product.openapi get /published-products/skus
Shoppers may want to view the products they've already identified or bookmarked, or you want to promote a particular set of products as part of promotions. This endpoint gets multiple published products based on `skus` (comma-separated values) and is useful to show product list (up to 25 products) on your Storefront. **Note**:
1. Using the examples you can see separate response for items, variants, and bundles.
2. If you don't have product SKU, use the corresponding item ID-based or product ID-based endpoints.
# Get variants of published products by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/product-catalog/published-products-by-sku/get-variants-of-published-products-by-sku
published-product.openapi get /published-products/skus/{sku}/variants
Variants are different versions of a product with different sizes, colors, or materials. For example, there are 12 variants of a laptop that comes in three sizes (13, 15, and 17 inches) and four colors (red, blue, grey, and white). By adding variants to products, you can offer shoppers more options. This endpoint gets a paginated response of variants of a published product by SKU. **Note**:
1. You can refine results by specifying `offset` and `limit`. When they're not specified, by default you'll get up to 10 records.
2. If you don't have product SKU, use the corresponding item ID-based or product ID-based endpoints.
# Create add-on
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/add-ons/create-add-on
addons.openapi post /addons
Create an add-on with its price and currency details. By creating add-ons, you can enhance customer experience by allowing them to choose personalized products while placing an order.
# Delete a specific add-on
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/add-ons/delete-a-specific-add-on
addons.openapi delete /addons/{id}
Delete an add-on by ID.
# Get a specific add-on
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/add-ons/get-a-specific-add-on
addons.openapi get /addons/{id}
Get a specific add-on by ID.
# Get all add-ons
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/add-ons/get-all-add-ons
addons.openapi get /addons
Get a paginated list of all the created add-ons.
# Add-ons
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/add-ons/overview
Add-ons are additional items that shoppers can buy while placing an order. These endpoints let you create, update, and delete details of add-ons, including their prices and currency types.
# Update a specific add-on
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/add-ons/update-a-specific-add-on
addons.openapi put /addons/{id}
Update a specific add-on by ID.
# Bulk update coupon codes
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupon-codes/bulk-update-coupon-codes
coupon-codes.openapi put /coupon-codes/batch
Use this endpoint to update multiple coupon codes using identifiers. Identifiers are a unique combination of a coupon code and a promotion ID. You can update up to 25 codes at a time.
# Get all coupon codes
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupon-codes/get-all-coupon-codes
coupon-codes.openapi get /coupon-codes
This endpoint provides coupon code lists. Use parameters to filter results, for example, set `status` as 'ACTIVE' for active coupons, or add `userId` for user-specific coupon codes. Navigate the results using the query parameters `size` and `startCursor`.
# Create coupon
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/create-coupon
coupons.openapi post /coupons
Create a coupon with the requested conditions.
# Delete a specific coupon
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/delete-a-specific-coupon
coupons.openapi delete /coupons/{couponId}
Delete a specific coupon by ID
# Enable or disable a coupon
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/enable-or-disable-a-coupon
coupons.openapi post /coupons/{couponId}/actions/toggle
Change coupon status by ID. **Enable a coupon:** Only *disabled* coupons can be enabled. **Disable a coupon:** Only *not expired* coupons can be disabled.
# Generate coupon codes
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/generate-coupon-codes
coupons.openapi post /coupons/actions/generate-codes
Generate coupon codes based on the given parameter.
# Get all coupons
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/get-all-coupons
coupons.openapi get /coupons
Get a paginated list of coupons.
# Coupons
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/overview
Coupons are discounts on items, carts, or shipping that are applied to qualified purchases when shoppers provide a valid coupon code during the checkout process. You can use the `coupon` endpoints to create and manage coupons and their codes.
# Retrieve a coupon
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/retrieve-a-coupon
coupons.openapi get /coupons/{couponId}
Use this endpoint to retrieve the details of a coupon by its ID.
# Search for coupons
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/search-for-coupons
coupons.openapi post /coupons/search
Use this endpoint to search for coupons based on filter conditions.
# Update a specific coupon
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/coupons/update-a-specific-coupon
coupons.openapi put /coupons/{couponId}
Update a specific coupon by ID.
# Exporting Offers CSV
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/developer-guide/exporting-csv
This topic provides developers with step-by-step instructions for exporting product pricing data in CSV format using Offers export API endpoints. It includes initiating an export request and downloading a CSV file containing product prices, enabling seamless integration with pricing analytics, inventory management, or external reporting tools.
Exporting product pricing data as a CSV file involves three main steps:
1. [Initiate an export request](/v3/offers/api-reference/offers/exports/initiate-export-request): Send a request to generate an `exportId` and configure filters to target specific data.
2. [Retrieve the export details](/v3/offers/api-reference/offers/exports/get-export-request-by-id): Use the `exportId` to check the progress and retrieve the `fileId` after the export is complete.
3. [Download the CSV File](/v3/offers/api-reference/offers/exports/download-exported-csv-file): With the `fileId`, obtain a download link to retrieve the CSV file.
## Export parameters
You can the refine the data included in your export by specifying filters in the `filters` array. If you leave the array empty, all data is included. The following table describes the parameters for filtering and the functions of each parameter:
| **Parameter** | **Description** |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `field` | Specifies the data type used to search. Use `priceType` to set it as the search criteria. |
| `value` | Specifies the exact value for the selected `field`. If `priceType` is used as `field`, you must enter the corresponding `priceType` value for this parameter. |
| `operator` | Specifies how the `value` is applied to the `field`. If the field is `priceType` and the operator is set to `EQUAL`, all products with the specified `value` are included in the search result. |
The following table provides detailed information for the two different data types:
* `CALCULATED_PRICE`: If the data type you want to export is `CALCULATED_PRICE`, use the following `field`, `operator`, and `value`:
| `field` | `operator` | `value` |
| ----------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `priceType` | `EQUAL` | Filter your data by `BASE` or `SALE` price. If the `filters` array in the request body is empty, both prices are included in the CSV export. |
| `priceListIds` | `IN` | Filter your data by a list of `priceListIds` by including them in an array in the request body. If the `filters` array is empty, the data is based on the default `priceList`. |
| `calculationTime` | `EQUAL` | Filter your data by an ISO timestamp to specify when the price should be calculated. The provided timestamp is used for price determination. If the `filters` array is empty, the price is based on the CSV execution time. |
* `REDEMPTION`: If the data type you want to export is `REDEMPTION`, use the following `field`, `operator`, and `value`:
| `field` | `operator` | `value` |
| ----------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `promoCode` | `EQUAL` | Filter your data by redeemed promotion code. |
| `userId` | `EQUAL` | Filter your data by provided user ID. |
| `email` | `EQUAL` | Filter your data by provided email. |
| `orderId` | `EQUAL` | Filter your data by provided order ID. |
| `redeemedAt` | - `EQUAL`
- `GREATER_THAN_OR_EQUAL_TO`
- `LESS_THAN`
| Filter data based on the provided redemption date. If the operator is: - `EQUAL`: Redemptions on the provided date.
- `GREATER_THAN_OR_EQUAL_TO`: Redemptions on and after the provided date.
- `LESS_THAN`: Redemptions before the provided date.
|
| `storeId` | `EQUAL` | Filter data based on case-insensitive promotion titles. |
| `promotionStatus` | `EQUAL` | Filter data based on the specified promotion status: - `ACTIVE`
- `EXPIRED`
- `DISABLED`
|
We recommend not to seach for all the `REDEMPTION` data by leaving the `filters` array empty.
## Prerequisites
* Ensure that you have Offers editor or administrator privileges to fabric Offers. For more information, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-offers-roles) section.
* Ensure that you have added one or more products using one of the following methods:
* [Copilot](/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item)
* [API endpoints](/v3/product-catalog/api-reference/product-catalog/product-operations-by-id/add-product)
* Ensure that you have added price to the products using one of the following methods:
* [Copilot](/v3/offers/user-guides/offers/pricing)
* [API endpoints](/v3/offers/api-reference/offers/prices/create-price)
* Ensure that you have created a redemption for the products using the [create a redemption](/v3/offers/api-reference/offers/redemptions/create-redemption) endpoint.
## Procedure
### Step 1: Initiating an export request
1. Submit a POST request including the `type`, such as `CALCULATED_PRICE` or `REDEMPTION` with any required `filters`.
The duration for this process increases with the amount of data being exported. The [initiate offers export](/v3/offers/api-reference/offers/exports/initiate-export-request) endpoint initiates a CSV export request and generates an `exportId`. The following example shows a POST request with the request body set to `type` as `REDEMPTION`, searching for `storeId` with the value `store001`:
```bash
curl --request POST \
--url https://api.fabric.inc/v3/offers-exports \
--header 'Authorization: Bearer exampleToken123' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: exampleTenantID456' \
--data '{
"type": "REDEMPTION",
"filters": [
{
"field": "storeId",
"value": "store001",
"operator": "EQUAL"
}
]
}'
```
A successful request returns the following response:
```json
{
"exportId": "ab50fe48-5da0-4e77-92d1-bb629eedf19e",
"startedAt": "2023-05-17T21:24:52.398Z",
"endedAt": "null",
"totalDataExported": 0,
"status": "IN_PROGRESS",
"errors": [],
"type": "REDEMPTION",
"filters": [
{
"field": "storeId",
"value": "store001",
"operator": "EQUAL"
}
]
}
```
### Step 2: Retrieve the `fileId`
After initiating the export request, use the `exportId` generated in [step 1](#step-1-initiate-export-request) to [retrieve details of the request](/v3/api-reference/offers/exports/get-export-request-by-id). You can view the export details, such as `startedAt` and `endedAt` times, as well as the `totalDataExported`. The export request might take up to 10 hours.
1.[Submit a GET request using the `exportId`](/v3/offers/api-reference/offers/exports/get-export-request-by-id) endpoint to check the export status to retrieve the `fileId`.
1. When the `status` is `COMPLETED`, use the `fileId` in the [download the exported CSV file](/v3/offers/api-reference/offers/exports/download-exported-csv-file) step to download the CSV file.
Use the following GET request to retrieve the details of an export request, including its status and `fileId`:
```bash
curl --request GET \
--url https://api.fabric.inc/v3/offers-exports/ab50fe48-5da0-4e77-92d1-bb629eedf19e \
--header 'Authorization: Bearer exampleToken123' \
--header 'x-fabric-tenant-id: exampleTenantID456'
```
A successful request returns the following response:
```json
{
"exportId": "ab50fe48-5da0-4e77-92d1-bb629eedf19e",
"startedAt": "2023-05-17T21:24:52.398Z",
"endedAt": "null",
"totalDataExported": 0,
"status": "IN_PROGRESS",
"errors": [],
"type": "REDEMPTION",
"filters": [
{
"field": "storeId",
"value": "store001",
"operator": "EQUAL"
}
],
"fileId": "redemption/tenantId/1687472977242-redemption-export.csv"
}
```
Wait until you receive a response with `status: COMPLETED` before moving to the next step. If you don't receive a `status` of `COMPLETED`, [you won't get a complete export file](#exported-file-is-incomplete).
### Step 3: Downloading the exported CSV file
1. After retrieving `fileId` from [step 2](#step-2-retrieve-the-fileid), include it in the request body of the [download exported CSV file](/v3/offers/api-reference/offers/exports/download-exported-csv-file) endpoint to generate a temporary URL for downloading the file as shown in the following request:
```bash
curl --request POST \
--url https://api.fabric.inc/v3/offers-exports/actions/download-export-file \
--header 'Authorization: Bearer exampleToken123' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: exampleTenantID456' \
--data '{
"fileId": "redemption/tenantId/1687472972-redemption-export.csv"
}'
```
A successful request returns the following response with a URL used to download your file:
```json
{
"url": {Your Download URL},
"fileId": "redemption/tenantId/1687472972-redemption-export.csv"
}
```
You can copy and paste the URL from the response into your browser's address bar to download your file.
This URL is valid for 5 minutes. If you exceeded this duration, repeat [step 3](#step-3-download-exported-csv-file) to generate another URL.
## Common Variations
### Searching with multiple fields
You can include more than one `field` in the `filters` array as long as you are filtering single data type. Using more than one `field` allows you to refine the search results to meet all of the specified search conditions.
You can expand the following example of a POST request to initiate an export request with more than one `field`. In the following example, the request filters `CALCULATED_PRICE` by both `priceType` and `priceListIds`:
```bash
curl --request POST \
--url https://api.fabric.inc/v3/offers-exports \
--header 'Authorization: Bearer exampleToken123' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: exampleTenantID456' \
--data '{
"type": "CALCULATED_PRICE",
"filters": [
{
"field": "priceType",
"value": "BASE",
"operator": "EQUAL"
},
{
"field": "priceListIds",
"value": [
1000003,
1000004
],
"operator": "IN"
}
]
}'
```
A successful request returns the following response:
```json
{
"exportId": "4a73a9a9-b8c3-4dc1-a467-c528a1b2dfe7",
"startedAt": "2023-12-01T10:33:33.638Z",
"endedAt": "null",
"totalDataExported": 0,
"status": "IN_PROGRESS",
"errors": [],
"type": "CALCULATED_PRICE",
"filters": [
{
"field": "priceType",
"value": "BASE",
"operator": "EQUAL"
},
{
"field": "priceListIds",
"value": [
1000003,
1000004
],
"operator": "IN"
}
]
}
```
### Retrieving all export requests
If you have initiated multiple export requests, you can retrieve details of all export requests using the [Get all export requests](/v3/offers/api-reference/offers/exports/get-all-export-requests) endpoint. A successful request returns an array containing details of all export request details, including the respective `fieldId` values. You can expand the following example to see the GET response:
```json
{
"query": {
"size": 10,
"offset": 10,
"count": 50
},
"data": [
{
"exportId": "ab50fe48-5da0-4e77-92d1-bb629eedf19e",
"startedAt": "2023-05-17T21:24:52.398Z",
"endedAt": "null",
"status": "IN_PROGRESS",
"type": "REDEMPTION",
"totalDataExported": 0,
"fileId": "redemption/tenantId/1687294954996-redemption-export.csv"
},
{
"exportId": "4a73a9a9-b8c3-4dc1-a467-c528a1b2dfe7",
"startedAt": "2023-12-01T10:33:33.638Z",
"endedAt": "null",
"status": "IN_PROGRESS",
"type": "CALCULATED_PRICE",
"totalDataExported": 0,
"fileId": "redemption/tenantId/5900139542278-calculated-price-export.csv"
}
]
}
```
## Troubleshooting
### `EXPORT_CALCULATED_PRICE_ERROR`
If you get the `EXPORT_CALCULATED_PRICE_ERROR` error after initiating an export request, resubmit the request. If the problem persists, contact [fabric support](https://support.fabric.inc/hc/en-us/requests/new).
### Exported file is incomplete
If your exported CSV is incomplete, use the [get export request](/v3/offers/api-reference/offers/exports/get-export-request-by-id) endpoint and ensure that the `status` is marked as `COMPLETED`. If the `status` remains `IN_PROGRESS` after the 10-hours, try the request again or contact [fabric support](https://support.fabric.inc/hc/en-us/requests/new).
### CSV file download link not working
The download link is valid for only 5 minutes. If the link has expired, generate the link again using the [download exported CSV file](/v3/api-reference/offers/exports/download-exported-csv-file) endpoint. If the problem persists, contact [fabric support](https://support.fabric.inc/hc/en-us/requests/new).
## Related Topics
* [Initiate export request](/v3/offers/api-reference/offers/exports/initiate-export-request)
* [Get export request by ID](/v3/offers/api-reference/offers/exports/get-export-request-by-id)
* [Get all export requests](/v3/offers/api-reference/offers/exports/get-all-export-requests)
* [Download exported CSV file](/v3/offers/api-reference/offers/exports/download-exported-csv-file)
# Offers (3.0.0)
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/offers--3-0-0
Offers support: [fabric support](https://support.fabric.inc/hc/en-us/requests/new)| License: [fabric API License](https://fabric.inc/api-license)\
fabric Offers service supports two sets of APIs. The first set is for managing the Create, Retrieve, Update, and Delete (CRUD) operations for objects, such as prices, promotions, and coupons. The second set is our [Real-Time Pricing Engine (RTPE)](/v3/offers/api-reference/offers/real-time-pricing-engine/overview) designed to power your site experiences, such as displaying prices and promotional discounts on a Product Description Page (PDP) or shopping cart.
### Related Resources
* [Offers](/v3/offers/user-guides/offers/overview)
* [Prices](/v3/offers/api-reference/offers/prices/overview)
* [Promotions](/v3/offers/api-reference/offers/promotions/overview)
* [Coupons](/3/offers/user-guides/offers/coupons/overview)
[Download Postman Collection](https://github.com/FabricCommerce/public-fabric-api-postman-collections/blob/main/v3/offers.json)
# Create price control
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-controls/create-price-control
price-controls.openapi post /price-controls
Create a price control record that contains various price types other than the elemental prices such as base price, sale price, and sale price.
# Delete price controls by itemId
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-controls/delete-price-controls-by-itemid
price-controls.openapi delete /price-controls/{itemId}
Delete price controls of a specific item by `itemId`
# Get all price controls
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-controls/get-all-price-controls
price-controls.openapi get /price-controls
Get a paginated list of all the created price controls.
# Get price controls by itemId
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-controls/get-price-controls-by-itemid
price-controls.openapi get /price-controls/{itemId}
Get price control records of an item by `itemId` and `priceListId`. If `priceListId` isn't specified, price controls of the item will be retrieved under the default price list.
# Get price controls by SKU
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-controls/get-price-controls-by-sku
price-controls.openapi get /price-controls/sku/{sku}
Get price controls of a specific product by `sku`.
# Price Controls
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-controls/overview
With price control endpoints, merchants can create and manage more diversified prices, such as Manufacturer Recommended Retail Price (MSRP), Minimum Advertised Price (MAP), floor price, and ceiling price, for an item. These endpoints restrict any accidental changes to the base and sale prices.
# Update price controls by itemId
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-controls/update-price-controls-by-itemid
price-controls.openapi put /price-controls/{itemId}
Update price controls of a specific item by `itemId` and `piceListId`. If `priceListId` isn't specified, price controls of the item will be updated under the default price list.
# Create price list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-lists/create-price-list
price-lists.openapi post /price-lists
Create a price list. Based on the currency code you define for a price list, you will be able to create or update prices under the price list for the defined currency code only.
# Delete a specific price list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-lists/delete-a-specific-price-list
price-lists.openapi delete /price-lists/{id}
Delete a specific price list by ID.
# Get a specific price list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-lists/get-a-specific-price-list
price-lists.openapi get /price-lists/{id}
Get a specific price list by ID.
# Get all price lists
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-lists/get-all-price-lists
price-lists.openapi get /price-lists
Get a paginated list of all price lists.
# Price Lists
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-lists/overview
A price list is a collection of items and their assigned prices. You can add the same item to multiple price lists and set different prices for that item in each of those lists. For example, for the same item, you can assign a one-time purchase price, a subscription price, or a special loyalty member price. You can set the currency and duration of the prices in each price list. If the price list expires, the prices of items within the price list will also expire.
# Update a specific price list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-lists/update-a-specific-price-list
price-lists.openapi put /price-lists/{id}
Update a specific price list by ID.
# Create price method
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-methods/create-price-method
price-methods.openapi post /price-methods
Create a price method that you can use to set up the SKU price. Price method can be created based on SKU quantity, dimension of the SKU, or any other strategy that aligns with the business.
# Delete a specific price method
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-methods/delete-a-specific-price-method
price-methods.openapi delete /price-methods/{id}
Delete a specific price method by ID.
# Get all price methods
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-methods/get-all-price-methods
price-methods.openapi get /price-methods
Get a paginated list of all price methods of SKUs.
# Price Methods
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-methods/overview
Price methods are the different approaches or strategies used in calculating prices. These endpoints let you set up the SKU price by choosing a defined price method.
# Update a specific price method
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-methods/update-a-specific-price-method
price-methods.openapi put /price-methods/{id}
Update a specific price method by ID.
# Get price types
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-types/get-price-types
price-types.openapi get /price-types
Get a paginated list of all price types.
# Price Types
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/price-types/overview
Using the price type endpoints, you can get the following price types:
* **Base price:** The regular amount that merchants charge shoppers to purchase an item.
* **Sale price:** The lowest amount that merchants charge shoppers to purchase an item without a promotion or coupon.
# Get priced products
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/priced-products/get-priced-products
priced-products.openapi get /priced-products
Get a paginated list of products and prices for the specified price list ID.
# Get product and price details by product item ID
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/priced-products/get-product-and-price-details-by-product-item-id
priced-products.openapi get /priced-products/{itemId}
Get product and price details by product item ID
# Get product and price details by SKU
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/priced-products/get-product-and-price-details-by-sku
priced-products.openapi get /priced-products/sku/{sku}
Retrieves the details of a product and its associated prices using the SKU, including the details for the variants of the product, if any.
# Get SKUs in price list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/priced-products/get-skus-in-price-list
priced-products.openapi get /priced-products-identifiers
Retrieve SKUs and product item IDs that have a price entry in the given price list.
# Create batch prices
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/create-batch-prices
prices.openapi post /prices/batch
Create one or more prices for items based on `itemId` and `itemSku`.
# Create price
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/create-price
prices.openapi post /prices
Create or update price of an item based on given `itemId` and `itemSku`
# Delete price by itemId
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/delete-price-by-itemid
prices.openapi delete /prices/{itemId}
Delete price details by `itemId`. If `priceListId` isn't specified, price is deleted for the `itemId` that belongs to the default price list.
# Delete price by SKU
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/delete-price-by-sku
prices.openapi delete /prices/sku/{sku}
Delete price record for the given `sku` and `priceListId`.
# Get all active prices
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/get-all-active-prices
prices.openapi get /prices
Get a paginated list of active and scheduled prices. Active prices have start date greater than the current date and end date is in the future.
# Get price by itemId
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/get-price-by-itemid
prices.openapi get /prices/{itemId}
Get a paginated list of price details for the given `itemId` and `priceListId`. If `priceListId` isn't specified, prices are retrieved for the `itemId` that belongs to the default price list.
# Get price by SKU
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/get-price-by-sku
prices.openapi get /prices/sku/{sku}
Get price details for the `sku` and `priceListId`. If `priceListId` isn't specified, price is retrieved for the `sku` that belongs to the default price list.
# Prices
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/prices/overview
Pricing endpoints let you create and manage price details for one or more items. You can configure the prices endpoints to include your default price list in all requests.
# Create promotion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/create-promotion
promotions.openapi post /promotions
Create a promotion to apply to one or more items to increase sales, or to a customer segment to reward existing customers or attract new ones. Promotions are configured with rules that define the promotion type, conditions, and discounts.
# Delete a specific promotion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/delete-a-specific-promotion
promotions.openapi delete /promotions/{promotionId}
Delete a specific promotion using the corresponding `promotionId`.
# Enable or disable a promotion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/enable-or-disable-a-promotion
promotions.openapi post /promotions/{promotionId}/actions/toggle
Use this endpoint to change the status of a promotion by enabling or disabling it. You can't change the status of a promotion that's currently in the `ACTIVE` state. You can enable promotions that are disabled or disable promotions that haven't yet expired.
# End a promotion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/end-a-promotion
promotions.openapi post /promotions/{promotionId}/actions/end
End a specific promotion using the corresponding `promotionId`. To end a promotion, set the `status` to `EXPIRED` and set both the `startAt` and `endAt` dates to the current date.
# Get a specific promotion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/get-a-specific-promotion
promotions.openapi get /promotions/{promotionId}
Retrieves a specific promotion using the corresponding `promotionId`.
# Get all promotions
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/get-all-promotions
promotions.openapi get /promotions
Retrieves a paginated list of all promotions.
# Promotions
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/overview
Promotions are discounts on items, carts, or shipping that are applied automatically if the required conditions are met. Using the `promotions` endpoints, you can create and manage promotions.
# Search for promotions
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/search-for-promotions
promotions.openapi post /promotions/search
Use this endpoint to search for promotions based on specified filter conditions.
# Update a specific promotion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/promotions/update-a-specific-promotion
promotions.openapi put /promotions/{promotionId}
Updates a specific promotion using the corresponding `promotionId`.
# Calculate prices for products by IDs
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/real-time-pricing-engine/calculate-prices-for-products-by-ids
price-engine.openapi post /price-engine/actions/evaluate-products-by-id
Use this endpoint to calculate prices for one or more products in a specific price list using item IDs. If you prefer to use SKUs to calculate product prices, use the [calculate prices for products by SKUs](/v3/api-reference/offers/real-time-pricing-engine/calculate-prices-for-products-by-skus) endpoint.
# Calculate prices for products by SKUs
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/real-time-pricing-engine/calculate-prices-for-products-by-skus
price-engine.openapi post /price-engine/actions/evaluate-products-by-sku
Use this endpoint to calculate prices for one or more products in a specific price list by product SKUs. If you prefer to use item IDs to calculate product prices, use the [calculate prices for products by item IDs](/v3/api-reference/offers/real-time-pricing-engine/calculate-prices-for-products-by-item-ids) endpoint.
`itemId` is used as the default identifier for a product. If you want to set SKUs as product identifiers and use this endpoint, you must contact fabric support at support@fabric.inc.
# Evaluate cart promotions
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/real-time-pricing-engine/evaluate-cart-promotions
price-engine.openapi post /price-engine/actions/evaluate-cart
Evaluate cart's total cost instantly, after applying all applicable promotions and discount coupons. Using this endpoint, submit a range of data that will be referenced against the conditions that are set earlier using the promotions, coupons or prices APIs. The response includes the details of the promotions and discounts applied. These promotions and discounts can be displayed on your website to help shoppers know that they're getting their expected discounts.
# Real-time Pricing Engine
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/real-time-pricing-engine/overview
fabric’s Real-time Pricing Engine (RTPE) endpoints calculate prices and evaluate discounts for individual products and carts.
* The endpoints `Get prices by item ID` and `Get prices by product SKUs` are used to power product description pages.
* The endpoint `Evaluate cart promotions` is used to determine prices and returns cart-level promotions.
* Both the base price and sales prices are included.
* Use segments to target specific customer groups with particular promotions.
* Settings specific to stacking influence how RTPE applies promotions, determining which can be combined and in what order.
RTPE relies on cached information rather than getting product offers from the database. This approach is useful for immediate evaluation of promotions and price calculations. It's designed for speed, supports intricate promotional strategies, and handles millions of pricing requests daily.
# Bulk update redemptions
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/bulk-update-redemptions
redemptions.openapi put /redemptions/batch
Use this endpoint to update multiple redemptions by including the corresponding `redemptionId` values in the request body. You can update up to 25 redemptions at a time.
# Create redemption
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/create-redemption
redemptions.openapi post /redemptions
Creates a redemption for a specific promotion using the corresponding `promotionId` value in the request body.
# Create redemption
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/create-redemption-using-coupon
redemptions.openapi post /coupons/{couponId}/redemptions
Creates a redemption for a specific coupon using the corresponding `couponId` value.
# Delete a coupon redemption by ID
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/delete-coupon-redemption-by-id
redemptions.openapi delete /coupons/{couponId}/redemptions/{redemptionId}
Delete a specific redemption by redemption ID.
# Delete redemption by ID
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/delete-redemption-by-id
redemptions.openapi delete /redemptions/{redemptionId}
Deletes a specific redemption using the corresponding `redemptionId` value.
# Get redemption by ID
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/get-redemption-by-id
redemptions.openapi get /redemptions/{redemptionId}
Retrieves a specific redemption using the corresponding `redemptionId` value.
# Redemptions
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/overview
Redemptions are used to track the usage of coupons or promotions by shoppers. The redemption records are used to keep track of [coupon limits](/docs/offers-coupons#coupon-limits) across the site or per customer.
# Update redemption by ID
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/update-redemption-by-id
redemptions.openapi put /redemptions/{redemptionId}
Updates a specific redemption using the corresponding `redemptionId`.
# Creating a Buy Get Coupon
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/coupons/creating-a-buy-get-coupon
This topic covers the process of creating a Buy-Get coupon.
## Prerequisites
Ensure that:
* You have **Admin** or **Editor** privileges for Offers. For more detailed information on these settings, see the [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control-offers-roles) topic.
* You have added at least one item in fabric Product Catalog. For more detailed information, see the [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item) topic.
* You have created at least one price list in fabric Offers. For more information, see the [Pricing](/v3/guides/offers/pricing) topic.
If you plan to create a coupon based on [Categories](/v3/guides/product-catalog/categories/categories) or [Collections](/v3/guides/product-catalog/collections/collections), ensure you have set up these features in Product Catalog and added items to them.
## Procedure
1. In the left menu, click **Offers > Coupons > All coupons**.
The **Coupons** page is displayed.
2. Click **Create coupon**.
The **Create Coupon** page is displayed.
3. In the **Coupon title** field, enter a name for the coupon.
This name is for internal use only. fabric recommends giving it a unique, descriptive name that can help you differentiate this coupon from other coupons you might be running concurrently. For example, *Holiday Sale*.
4. In the **Start date** and **Start time** fields, enter the date and time the coupon becomes available for use.
The start date and time must be in the future.
5. In the **End date** and **End time** fields, enter the date and time the coupon expires.
The end date and time must be after the start date and time.
6. In **Coupon usage**, do one of the following:
* Select **Multiple-use** to allow the coupon to be used more than once.
* In the **Coupon code** field, enter the code that customers must use to apply the coupon.
* Select **Single-use** to restrict the coupon usage to once per customer.
* In the **Prefix** field, enter a prefix that's at least 3 characters long, for example *SALE*.
* In the **Starting number** field, enter the number your coupon code starts with, for example, *1*.
* In the **Total coupon count** field, enter how many coupons you want to generate, for example *10*.
* Click **Generate Codes**.\
Coupon codes *SALE01*, *SALE02*, ...*SALE10* are generated.
For more information about **Multiple-use** and **Single-use**, see the [coupon codes](/v3/guides/offers/coupons/overview#coupon-code) section.
7. In the **Price list** field, select one or more price lists.
The coupon only applies to the eligible SKUs on the price lists that you select. The available price lists depend on your organization's price list settings. You can use multiple price lists that use the same currency. For more information, see the [Price lists](/v3/guides/offers/coupons/overview#price-lists) section.
8. In the **Coupons can be applied to** field, select a price type.\
For more information on price types, see the [Price lists](/v3/guides/offers/coupons/overview#price-lists) section.
9. If you want to enable stacking with other coupons or restrict it based on other coupons you are running, select a stacking type in the **Set promotion stacking as** field. If applicable, set the priority. The default is set to stackable coupons.\
For more information on coupon stacking and priority, see the [Stacking and additional settings](/v3/guides/offers/coupons/overview#stacking-and-additional-settings) section.
10. In the **Coupon applied to field**, select **Buy-Get**.
11. Set the target of the coupon to **SKUs** or **Cart Value**.
12. To select the items that are eligible for the promotion, in the **Product target** field, make one or more selection.
* If make more than one selection, choose how the coupons are applied with the **AND** and **OR** operators.\
For more information, see the [Product eligibility definitions for coupons](/v3/guides/offers/coupons/overview#product-eligibility-definitions-for-coupons) section.
13. In the **BUY** field select where you want the discount to apply on.\
For more information on how discounts are applied, see the [Defining discount and how they're applied](/v3/guides/offers/coupons/overview#defining-discount-and-how-they're-applied) section. do the following steps:
14. Select the products to include in the coupon promotion.\
The field corresponding to the **Product target** you selected is displayed. For example, if the **Product target** is **SKUs**, the **SKUs** field is displayed.
15. Click the product target field.\
The **Browse** product target window is displayed.
16. Choose the products to include in your coupon promotion.
* (Optional) If the **Product target** is only **SKUs**, you can import a CSV file. The import function isn't available for other options, or if you selected more than one options . To import, do the following steps:
* Click **Import SKUs**.\
**Bulk Upload SKU List** window is displayed.
* Do one of the following:
* **Drag and drop the file from the local folder to the window**
* Click **Select a File** from your computer.
* Click **Upload file**.
17. Click **Add selection**.
18. (Optional) To exclude products from your coupon promotion, click **Add Rule**.\
The **Product target** field is displayed.
* Click the dropdown menu to select the products that aren't eligible for the coupon.
19. To set a minimum for coupon eligibility, do one of the following:
* If you selected **SKUs** in the **BUY** section, in the **Buy minimum quantity of SKUs (A)** field, enter the number of products required.
* If you selected **Cart Value** in the **BUY** section, in the **Spends minimum cart value** field, enter the minimum cart value required.
20. (Optional) Click **Add Another Set of SKUs** and fill out the fields as required.
21. To set up the **Coupon type**, in the **Discount #1** section, do one of the following.
* To apply the discount to individual SKUs, in the **Get discount on** field, select **SKU**.
The **Sub-Discount** section is available to do the following:
* In the **Get discount on** field, select a set of SKUs.
* In the **Max SKU quantity** field, enter the maximum quantity of the SKU eligible for the discount.
* In the **Get discount type on sku** field, select the type of discount for the SKU.
* In the **Discount value** field, enter a value.
* In the **Apply discount on** field, select the items that are eligible for the discount.
* To apply the discount to the entire cart, in the **Discount on** field, select **Cart** and do the following:
* In the **Get discount type on cart** field, select a discount type.
* In the **Discount value** field, enter a value.
* To apply the discount to the cost of shipping, in the **Discount on** field, select **Shipping** and do the following:
* In the **Shipping type** field, choose one or more shipping methods the discount applies to.
* In the **Applicable on** field, select **Entire Cart** or **Entire Shipment**.
* In the **Get discount type on shipping** field, select a discount type.
* In the **Discount value** field, enter a value.
For more information on **Coupon type**, see the [Defining discounts and how they're applied](/v3/guides/offers/coupons/overview#defining-discounts-and-how-they-re-applied) section.
22. (Optional) To add another discount, select **Add Another Discount** and set up the discount as required.
This options is disabled if the **Cart Value** option is selected in step 11.
23. (Optional) If you want to encourage shoppers to add items to reach a certain threshold to be eligible for the coupon, click the **Promotion proximity** toggle to **On** and do the following:
* In the **Proximity trigger quantity/amount** field, enter the threshold amount for the customer to be eligible for the coupon.
* In the **Locales set 1** field, select the locales where this messaging will appear.
* In the **Message** field, enter a message for the customer about the threshold they need to meet.
* (Optional) Click **Add another locale set** as required.
24. To set coupon limits, do the following:
* In the **Limit use per customer** field, enter a number that specifies how many times a customer can use this coupon.
* In the **Limit use site wide** field, enter a number that specifies how many times any customer can use this coupon across the site.
For more information, see the [Coupon limit](/v3/guides/offers/coupons/overview#coupon-limit) section.
25. (Optional) In the **Terms and conditions** section, do the following:
* Enter the title of the condition in the in the **Title** field.
* Enter the body of the condition in the **Description** field.
* (Optional) Click **Add another condition** and fill out the fields as required.
26. To create tailored messaging about the coupon on various pages of your commerce site, do the following:
* In the **Pages** field, select one or more pages to display the messaging.
* In the **Locales for this group** field, select the locales where this messaging will appear.
27. To add interal-facing tags to help you identify or classify the promotion, in the **Coupon attributes** section, do the following:
* In the **Attribute name** field, select a name.
* In the **Attribute values** field, select one or more values.
* Attribute names and attribute values are user-generated and can be created by visiting **Offers > Settings > Attributes** in Copilot.\
For more information, see the [Creating an attribute](/v3/guides/offers/settings#attributes) section.
28. (Optional) To target the promotion to specific customer segments, do the following:
* In the **Target Audience** field, select **Segment**.
* In the **Segment name** field, select a name.
* In the **Segment values** field, select one or more values.
* Click **Add another segment** as needed.
* (Optional) To exclude segments, select **Add exclusion list**.
* In the **Segment name** field, select a name to exclude.
* In the **Segment values** field, select one or more values to exclude.
* Segment names and segment values are user-generated and can be created by visiting **Offers > Settings > Customer segments** in Copilot.\
For more information, see the [Customer segments](/v3/guides/offers/settings#customer-segments) section.
29. (Optional) To set the maximum number of times the coupon can be used, do the following:
* In the **Promotion Limits** section, click the toggle to enable the limit.
* In the **Max usage per order** section, enter a number.
30. Click **Create** on the top right of the page.
# Creating a SKU Quantity Coupon
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/coupons/creating-a-sku-quantity-coupon
This topic covers the process of creating a SKU quantity coupon.
## Prerequisites
Ensure that:
* You have **Admin** or **Editor** privileges for Offers. For more detailed information on these settings, see the [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control-offers-roles) topic.
* You have added at least one item in fabric Product Catalog. For more detailed information, see the [Adding an Item](/v3/guides/product-catalog/list/items/adding-an-item) topic.
* You have created at least one price list in fabric Offers. For more information, see the [Pricing](/v3/guides/offers/pricing) topic.
If you plan to create a coupon based on [Categories](/v3/guides/product-catalog/categories/categories) or [Collections](/v3/guides/product-catalog/collections/collections), ensure you have set up these features in Product Catalog and added items to them.
## Procedure
1. In the left menu, click **Offers > Coupons > All coupons**.
The **Coupons** page is displayed.
2. Click **Create coupon**.
The **Create Coupon** page is displayed.
3. In the **Coupon title** field, enter a name for the coupon.
This name is for internal use only. fabric recommends giving it a unique, descriptive name that can help you differentiate this coupon from other coupons you might be running concurrently. For example, *Holiday Sale*.
4. In the **Start date** and **Start time** fields, enter the date and time the coupon becomes available for use.
The start date and time must be in the future.
5. In the **End date** and **End time** fields, enter the date and time the coupon expires.
The end date and time must be after the start date and time.
6. In **Coupon usage**, do one of the following:
* Select the **Multiple-use** option to allow the coupon to be used more than once.
* In the **Coupon code** field, enter the code that customers must use to apply the coupon.
* Select the **Single-use** option to restrict the coupon usage to once per customer.
* In the **Prefix** field, enter a prefix that's at least 3 characters long, for example *SALE*.
* In the **Starting number** field, enter the number your coupon code starts with, for example, *1*.
* In the **Total coupon count** field, enter how many coupons you want to generate, for example *10*.
* Click **Generate Codes**.\
Coupon codes *SALE01*, *SALE02*, ...*SALE10* are generated.
For more information about **Multiple-use** and **Single-use**, see the [coupon code](/v3/guides/offers/coupons/overview#coupon-code) section.
7. In the **Price lists** field, select one or more price lists.
The coupon only applies to the eligible SKUs on the price lists that you select. The available price lists depend on your organization's price list settings. You can use multiple price lists that use the same currency. For more information, see the [Price lists](/v3/guides/offers/coupons/overview#price-lists) section.
8. In the **Coupons can be applied to** field, select a price type.\
For more information on price types, see the [Price lists](/v3/guides/offers/coupons/overview#price-lists) section.
9. If you want to enable stacking with other coupons or restrict it based on other coupons you are running, select a stacking type in the **Set promotion stacking as** field. If applicable, set the priority. The default is set to stackable coupons.\
For more information on coupon stacking and priority, see the [Stacking and additional settings](/v3/guides/offers/coupons/overview#stacking-and-additional-settings) section.
10. In the **Coupon applied to field**, select **SKU quantity**.
11. In the **minimum quantity of SKUs** field, enter the minimum number required for the coupon to be eligigble.
12. To set up the **Coupon type**, in the **Tier** section, in the **Minimum quantity of SKUs** field, enter the minimum quantity for the discount to be eligible and do one of the following steps.
* To apply the discount to individual SKUs, in the **Discount on** field, select **SKU**.
* In the **Discount type** field, select a discount type.
* In the **Apply discount on** field, select the items to apply discount.
* (Optional) To allow the coupon to have variable discount amounts to prevent over-discounting when coupons stack, click **Dynamic discount** and in the **Additional discount** field, enter a value.
* In the **Discount value** field, enter a value.
* To apply the discount to the cost of shipping, in the **Discount on** field, select **Shipping** and do the following:
* In the **Discount type** field, select a discount type.
* In the **Shipping type** field, choose one or more shipping methods the discount applies to.
* In the **Applicable on** field, select **Entire Cart** or **Entire Shipment**.
* (Optional) To allow the coupon to have variable discount amounts to prevent over-discounting when coupons stack, click **Dynamic discount** and in the **Additional discount** field, enter a value.
* In the **Discount value** field, enter a value.
* To apply the discount to the entire cart, in the **Discount on** field, select **Cart** and do the following:
* In the **Discount type** field, select a discount type.
* In the **Discount value** field, enter a value.\
For more information on **Coupon type**, see the [Defining discounts and how they're applied](/v3/guides/offers/coupons/overview#defining-discounts-and-how-they-re-applied) section.
13. (Optional) To add another discount, select **Add Another Discount** and set up the discount as required.
14. (Optional) To add more tiers to the coupon eligibility, click **Add Another Tier** as needed.
15. To select the items that are eligible for the coupon, in the **Product target** field, select one or more items.
* If you select more than one, choose how coupons apply to products by selecting **AND** or **OR** before selecting your items.\
For more information, see the [Product eligibility definitions for coupons](/v3/guides/offers/coupons/overview#product-eligibility-definitions-for-coupons) section.
16. Select the products to include in the coupon promotion.\
The field corresponding to the **Product target** you selected is displayed. For example, if the **Product target** is **SKUs**, the **SKUs** field is displayed.
17. Click the product target field.\
The **Browse** product target field is displayed.
18. Choose the products to include in your coupon promotion.
* (Optional) If the **Product target** is only **SKUs**, then you can import a CSV file. The import function isn't available for other options, or if you selected more than one option. To import, do the following steps:
* Click **Import SKUs**.\
**Bulk Upload SKU List** window is displayed.
* Do one of the following:
* **Drag and drop the file from the local folder to the window**
* Click **Select a File** from your computer.
* Click **Upload file**.
19. Click **Add selection**.
20. (Optional) To exclude products from your coupon coupon, click **Add Rule**.\
The **Product target** field is displayed.
* Click the dropdown menu to select the products that aren't eligible for the coupon.
21. To set coupon limits, do the following:
* In the **Limit use per customer** field, enter a number that specifies how many times a customer can use this coupon.
* In the **Limit use site wide** field, enter a number that specifies how many times any customer can use this coupon across the site.\
For more information on setting coupon limits, see the [Coupon limit](/v3/guides/offers/coupons/overview#coupon-limit) section.
22. (Optional) In the **Terms and conditions** section, do the following:
* Enter the name in the **Title** field and the condition in the **Description** field.
* (Optional) Click **Add another condition** as needed.
This section is used to outline the terms and conditions of using this coupon to the customer.
23. To create tailored messaging about the coupon on various pages of your commerce site, do the following:
* In the **Pages** dropdown menu, select one or more places to add the messaging.
* In the **Locales for this group** field, select the locales where this messaging will appear.
24. To add interal-facing tags to help you identify or classify the coupon, click the arrow icon next to **Promotion attributes** and do the following:
* In the **Attribute name** field, select a name.
* In the **Attribute values** field, select one or more values.
* Attribute names and attribute values are user-generated and can be created by visiting **Offers > Settings > Attributes** in Copilot.\
For more information, see the [Creating an attribute](/v3/guides/offers/settings#attributes) section.
25. (Optional) To target the coupon to specific customer segments, do the following:
* In the **Target Audience** field, select **Segment**.
* In the **Segment name** field, select a name.
* In the **Segment values** field, select one or more values.
* Click **Add another segment** as needed.
* (Optional) To exclude segments, click **Add exclusion list**.
* In the **Segment name** field, select a name to exclude.
* In the **Segment values** field, select one or more values to exclude.
* Segment names and segment values are user-generated and can be created by visiting **Offers > Settings > Customer segments** in Copilot.\
For more information, see the [Customer segments](/v3/guides/offers/settings#customer-segments) section.
26. (Optional) To set the maximum number of times the coupon can be used, do the following:
* In the **Promotion Limits** section, click the toggle to enable the limit.
* In the **Max usage per order** section, enter a number.
27. Click **Create** on the top right of the page.
# Managing Coupons
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/coupons/managing-coupons
This topic covers the process of viewing coupons.
## Prerequisites
* Ensure that you have **Admin** or **Editor** privileges for Offers. For more detailed information on these settings, see the [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control-offers-roles) section.
* Ensure that you created at least one coupon. For more detailed information on creating coupons, see one of the following pages:
* [Creating a SKU Coupon](/v3/guides/offers/coupons/creating-a-sku-coupon)
* [Creating a SKU Quantity Coupon](/v3/guides/offers/coupons/creating-a-sku-quantity-coupon)
* [Creating a Buy Get Coupon](/v3/guides/offers/coupons/creating-a-buy-get-coupon)
## Managing All Coupons
If you want to view only redeemed coupons, see the [Viewing Redeemed Coupons](#viewing-redeemed-coupons) section.
1. In the left menu, click **Offers > Coupons > All coupons**.
The **Coupons** page is displayed.
2. In the search bar, you can search by coupon title.
3. Use the dropdown menu to narrow the coupons list. You can filter using the following criteria:
* **Status**
* **Start Date**
* **End Date**
* **Coupon Type**
* **More**
* **Coupon Usage**
* **Coupon Attributes**
* **Segments**
* **Price Lists**
* **Price Type**
* **Categories**
4. In the **Title** column, click the title of a coupon you want to view.
5. (Optional) To edit a coupon, change the details as needed and click **Update**.
You can't edit a coupon that's ended.
6. (Optional) To enable or disable a coupon, click the toggle on the top left as needed.
## Viewing Redeemed Coupons
1. In the left menu, click **Offers > Coupons > Redemption**.
The **Coupon Redemptions** page is displayed.
2. In the search bar, you can search by coupon title.
3. In the search bar, click **Advanced** to search using the following options:
* **Coupon Code**
* **Customer ID**
* **Email ID**
* **Order Number**
* **Store ID**
4. Use the dropdown menu to narrow the coupon redemptions list. You can filter using the following criteria:
* **Redemption Date**
* **Coupon Type**
* **Coupon Status**
5. In the **Title** column, click the title of a redeemed coupon you want to view.
# Overview
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/coupons/overview
With the Coupons feature in fabric Offers, you can create targeted discounts, incentives, and pricing rules tailored to specific products, categories, collections, product attributes, and customer segments. You can also configure coupon conditions, set exclusions, and define how multiple coupons interact through stacking rules. The key elements of a coupon include:
| **Elements** | **Description** |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Eligible products | The SKUs, categories, and collections that qualify for the coupon. |
| Conditions | Criteria that define the requirements to activate the coupon, such as a minimum purchase quantity or specific product features. |
| Discount type | Formats of the discount, including percentage reductions, fixed amount discounts, or free shipping. |
| Coupon stacking | Rules determining how coupons combine, whether by allowing multiple discounts or making them exclusive. |
| Dynamic discounting | Controls the way discounts are applied when multiple coupons are eligible, preventing over-discounting by limiting how discounts stack. |
| Coupon messaging | Customizable coupon messages visible on product pages, in the customer's cart, or at checkout, tailored for specific customer segments. |
To redeem a coupon the customer must enter a coupon code. If the items in their cart meet the criteria you specify, the discount will apply. Unlike [Promotions](/v3/guides/offers/promotions/overview), customers need to provide a code to receive the discount.
## Types of Coupons
fabric supports three types of coupons:
* **SKU Coupon**: A discount targeting specific SKUs, where individual products are selected for eligibility, and a discount type is assigned. This coupon type is ideal for sales on specific products, clearing inventory, or spotlighting new arrivals. For example, a *Spring clearance* could offer a percentage discount on products from the previous year's collection.
* **SKU Quantity Coupon**: A discount applied when a customer buys a specific quantity of a particular SKU. This coupon is often used to clear inventory or promote high-margin products. For example, you can create a *Buy 3, get 15% off* coupon to encourage customers to purchase in bulk and increase average order value.
* **Buy X Get Y Coupon**: A free or discounted product, Y, is offered when customers purchase a designated product or quantity of X. This coupon is ideal for bundling complementary products, driving larger transactions, and increasing cart size. For example, you can create *Buy one, get one free* or *Buy two, get 50% off the third item* to offer an incentive when the customer's cart meets the minimum purchase threshold.
## Coupon Setup
Setting up a coupon includes configuring key elements such as price lists, coupon codes, product eligibility conditions, discount types, exclusions, and how multiple coupons interact, as described in the following workflow:
1. Create a [coupon code](/v3/guides/offers/coupons/overview#coupon-code) section. When customers enter the coupon code during checkout, the discount will apply if the code is eligible.
2. Choose a [price list](/v3/guides/offers/coupons/overview#price-lists) to establish the baseline pricing, ensuring that discounts apply correctly depending on whether items are full-price or already discounted.
3. Set the [conditions](/v3/guides/offers/coupons/overview#product-eligibility-definitions-for-coupons) that determine which products qualify for the promotion. This could include all products, specific SKUs, categories, or product attributes.
4. Set the [coupon limit](#coupon-limit) that determines how many times a shopper can redeem the coupon. The limit can be set for both the customer and site.
5. Apply [exclusions](/v3/guides/offers/coupons/overview#product-exclusions-from-coupons) to refine the promotion by targeting specific products or excluding certain items from the offer.
6. Specify the type of [discount](/v3/guides/offers/coupons/overview#defining-discounts-and-how-they-re-applied) the customer receives. For example, percentage off, amount off, or free shipping, and decide if it applies to individual items, shipping costs, or the entire cart.
7. Set up [stacking](/v3/guides/offers/coupons/overview#stacking-and-additional-settings) to apply multiple promotions simultaneously. Define how they interact by assigning priorities or making them exclusive.
8. Configure [promotion messaging](/v3/guides/offers/promotions/overview#promotion-messaging) to determine where details appear for customers, such as product pages, the cart, or at checkout. Customize messaging based on customer groups or regions.
### Coupon code
Coupons can be configured as the following:
* **Multiple-use coupons**: Allow you to set a usage limit.
* **Single-use coupons**: Restricted to one-time use per customer.
To create more than single-use coupons, the **Total coupon count** field is used. For example, if you set **Prefix** to `SALE`, **Starting number** to `1`, and **Total coupon count** to `3`, the following coupon codes are generated: `SALE1`, `SALE2`, and `SALE3`. For more information on setting coupon limit, see the [coupon limit](#coupon-limit) section.
### Price lists
Price lists determine how discounts are applied to products. By selecting a price list, you define whether the discount applies to full-price items, sale items, or both. This ensures that coupon pricing is applied as desired, without over-discounting. The following table outlines the different types of price lists and how they determine the application of discounts during a coupon:
| **Price list** | **Description** |
| ---------------------- | ---------------------------------------------------------------------------------------- |
| Only base price | The discount applies only if the item isn't already on sale. |
| Only sale price | The discount applies only if the item is on sale. |
| Both sale & base price | The discount applies regardless of whether the item is at base price or already on sale. |
For more information, see the [pricing guide](/v3/guides/offers/pricing) section.
### Product eligibility definitions for coupons
The **Customer buys** section allows you to define conditions that specify which products are eligible for the coupon. Setting these conditions ensures that the coupon is applied only to products that meet your defined criteria.
The following table describes the options to define product eligibility based on the price list or lists you selected:
| **Condition** | **Description** |
| ------------- | ------------------------------------------------------------------------------------------- |
| All SKUs | The coupon applies to all products. |
| SKUs | The coupon applies to specific products you select. |
| Categories | The coupon applies to one or more categories of products that you select. |
| Collections | The coupon applies to one or more collections of products that you select. |
| Attributes | The coupon applies to products based on specific attributes, such as color, size, or brand. |
You can combine multiple conditions using operators to create a more targeted coupon. The `AND` condition requires all conditions to be met, while the **OR** condition allows the coupon to apply if any one condition is satisfied.
For example, if you select both the *Category: Apparel* and *Color: Red*, with the `AND` operator, only red apparel qualifies for the coupon.
On the other hand, if you use the **OR** operator, any items in the category *apparel* will qualify for the coupon.
Combining conditions allows you to ensure that the right products are included based on multiple criteria. For example, you can include all items in the *Apparel* category, but limit the coupon to products with the attribute *Color: Red* or *Size: Large*.
This allows you to ensure that the right products are included based on multiple conditions.
### Coupon limit
Defining the initial group of products—based on SKUs, categories, collections, or product attributes—is the first step in configuring a coupon. Usage limits can be established to manage coupon availability and overuse prevention when creating **Multiple-use** coupons. The following are limits that can be set:
* **Limit use per customer**: Specifies how many times a single customer can redeem the coupon.
* **Limit use per site**: Specifies the total number of redemptions allowed across your retail site.
For example, setting a limit of 1 use per customer and 5 uses site-wide ensures that five unique customers can redeem the coupon before it becomes invalid. If unlimited usage is desired, leave the usage fields empty. Note that single-use coupons don't require these limits, as their usage is inherently restricted.
#### Product exclusions from coupons
After setting your coupon usage limit, you can refine your coupon by excluding specific products. The **Exclude** field allows you to remove certain items from the coupon, even if they meet the initial coupon criteria.
For example, you might run a sale on all products in the *Apparel* category, but exclude premium brands or limited-edition items. Using the exclude field, you can remove these products by specifying their SKUs, categories, collections, or attributes.
You can exclude products in the following ways:
| **Exclusion List** | **Description** |
| ------------------ | -------------------------------------------------------------------- |
| SKUs | Specify the SKUs of individual products to exclude from the coupon. |
| Category | Specify the categories to exclude from the coupon. |
| Collection | Specify the collections to exclude from the coupon. |
| Attributes | Specify the products by their attributes to exclude from the coupon. |
By using exclusions, you gain greater precision over which products are part of a coupon, avoiding unintended discounts on products that don’t align with your strategy.
### Defining discounts and how they're applied
Different types of discounts can be applied to various aspects of a coupon. Here’s an overview of the most common discount applications:
| **Discount on** | **Description** |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SKU | The discount applies to the specific SKU or SKUs you specify. Ideal for coupons highlighting specific products or for clearing inventory. |
| Shipping | The discount applies to shipping. |
| Cart | The discount applies to the total value of the customer's cart. Cart discounts incentivize customers to add more items to their carts to qualify for the discount. |
The discount type defines how the discount is applied to the coupon.
A coupon can support up to three different discounts. For example, you can create a coupon that gives shoppers 10 percent off and then create a second discount that offers free shipping.
There are several discount types available, each with their own function:
| Discount type | Description |
| -------------- | ------------------------------------------------------------- |
| Percentage off | Reduces the cost of eligible items by a specified percentage. |
| Amount off | Reduces the cost of eligible items by a specified amount. |
| Fixed price | Sets a specific price for eligible items. |
| Free | Only available when the discount applies to shipping. |
When creating a coupon that applies to the shipping method, you must select a fulfillment rule set that you configured in fabric Orders. For more information, see the [Creating a fulfillment rule set guide](/v3/guides/orders/order-fulfillment-logic/create-a-new-rule-set-ui) section.
#### Shipping discounts
Shipping discounts can be applied with one of the following options:
* Entire cart: Each item in a cart must qualify for the coupon to apply regardless of ship-to locations.
* Entire shipment: Only the items that share the same ship-to locations qualify for the coupon. For example, in the event of multi-fulfillment orders, when part of the order ships to home and part is picked up in-store, shipping discount will only apply to eligible items in the order.
You can use multiple shipping methods, such as home delivery, in-store pickup, or split shipments. However, only a single discount type can be applied per shipping method. This means if one part of the order is shipped and another part is picked up, you can apply different discounts to different shipping methods.
### Dynamic discounting
Dynamic discounting allows coupons to have variable discount amounts, preventing over-discounting when multiple coupons stack. By enabling dynamic discounting, you can set limits on the discount percentage or amount applied, ensuring that the total discount remains controlled even when coupons overlap. For example, if one coupon discounts an item or cart by 40%, you can limit a subsequent discount to 10%.
Dynamic Discounts aren't eligible for buy-get or spend-get coupons.
## Stacking and Additional Settings
Coupon stacking refers to the ability to combine multiple coupons or discounts on the same cart. When coupon stacking is enabled, a customer can apply more than one discount to their cart, increasing the overall savings. For example, a customer could receive both a 10% discount for a store-wide sale and an additional \$5 off for a specific product coupon.
Coupon stacking is controlled by assigning a priority to each coupon. Coupons with a lower priority number are applied first, and subsequent coupons are stacked on top, applying their discounts to the already-discounted price.
This allows for more control over how multiple coupons interact, ensuring that coupons with higher priority are considered before others.
Coupons are stacked using the following options:
* **Stackable**: The coupon can stack with any other discount, except for those set to exclusive. The discounts are applied on top of each other, increasing the total discount amount if the discounts apply to the same item. Stackable coupons require a priority, which defines the order in which stackable coupons are evaluated. Starting with priority 1, coupons are evaluated and applied in ascending order. Priority 1 uses the price on the price list to apply the discounts. Priority 2 coupons are evaluated with their applicable discounts stacked on top of the discounted price from priority 1 coupons. Evaluation continues until all stackable priorities have been evaluated and applied.
* **Exclusive**: The coupon can't be combined with other discounts, except Universal. Only one non-stackable coupon is applied to the cart, even if other items are eligible. This is considered globally exclusive. In these cases, Offers applies the coupons with the largest monetary discount. If two coupons have the same monetary discount amount, the most recently published coupon is applied.
* **Type exclusive**: This coupon can't be combined with other coupons of the same discount type, such as SKU, cart, or shipping. When multiple coupons of the same type are available, only the one with the highest level or best discount is applied to the customer’s order. This ensures that conflicting coupons don't overlap, preventing excessive discounts.
* **Universal**: The coupon is always evaluated and applied. These discounts are applied last and can stack on any other coupon regardless of its stacking setting.
### Coupon messaging
Coupon messaging allows you to create custom messages to customers on the Product Detail Page (PDP), Product List Page (PLP), in the customer's cart, and on the checkout page, or any combination of these.
Additionally, you can target specific customer groups by choosing the locale, ensuring the message is displayed in the appropriate language or region. This feature helps ensure that your coupon offers are clearly communicated to the right audience.
### Coupon attributes
Coupon attributes are internal-facing tags to categorize and classify coupons for use in reporting and analytics.
For example, you can tag coupons with attributes such as *Seasonal Sales* and further define them with values such as *Summer* or *Fall*. This classification allows you to query and report on coupons based on the attributes you’ve assigned, making it easier to measure the performance of targeted campaigns.
For more information on creating these attributes, see the [Attributes guide](/v3/guides/offers/settings#attributes) section.
### Customer segments
You can define which customer segments are eligible for the coupon. Targeting customer segments allows you to apply discounts or special offers to specific groups of customers.
For more information on customer segments, see the [customer segments](/v3/guides/offers/settings#customer-segments) section.
# Overview
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/overview
Offers is fabric's pricing and promotions engine with tools to manage your pricing, promotions, and coupons in one place.
fabric Offers works in conjunction with Product Catalog to set up and manage Stock Keeping Unit (SKU) prices. Its wide range of coupon and promotion features let you design discounts ranging from single-use, customer-specific coupons to site-wide promotions.
Offers must be connected to a front-end such as a web storefront or mobile app to display content and facilitate interaction.
You must be an active user of fabric's Product Catalog service to use Offers. Product data must be available in Product Catalog to enable the creation of prices, price lists, promotions, and coupons within Offers.
## Role-Based Access Control (RBAC)
fabric Copilot provides the ability to restrict the access of different users to information and actions available to them through roles. For more information and instructions on how to set up these controls for Offers, see [the RBAC](/v3/platform/settings/rbac/role-based-access-control) documentation.
## Accessing Offers in Copilot
1. Log in to your Copilot account.
If you don't have an active Copilot account, [click here](https://live.copilot.fabric.inc/auth/v2/login) to sign up for a free trial, or [contact support](https://support.fabric.inc/hc/en-us/requests/new) for help.
2. On the left menu, click **Offers**, and then click one of the following options as required:
* [Pricing](/v3/offers/user-guides/offers/pricing): Sets and tracks the price of items in your web store.
* [Promotions](/v3/offers/user-guides/offers/promotions/overview.mdx): Automatically applies discounts at checkout.
* [Coupons](/3/offers/user-guides/offers/coupons/overview): Provides discount codes that customers can apply at checkout.
* [Settings](/v3/offers/user-guides/offers/settings): Sets and updates price lists.
# Adding Bulk Price
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/pricing/add-bulk-price
The **Add Bulk Price** feature allows you to upload a [CSV file](/v3/offers/user-guides/offers/pricing/price_template.csv) with details such as cost, price, and clearance price. This streamlined process eliminates the need for manual data entry, reduces errors, and saves time.
## CSV File Guidelines
fabric doesn't support any other data or file formats. Here are the key points to consider:
* The headers, represented in the first row of the CSV file, should match the product details.
* Empty rows and columns are ignored. Ensure that fields don't contain blank spaces, returns, line breaks, or other characters not supported in the CSV.
* fabric provides a CSV template file. Not following the parameters in the template can result in errors when uploading.
## Product Price Data Formatting
When preparing a CSV file for import, ensure that the product pricing data format aligns with the following column requirements:
| **Header** | **Description** |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **SKU ID** | The SKU ID of the item in Product Catalog. |
| **Cost** *Optional* | The cost of the item set by the distributor. |
| **Price** | The price set in fabric to charge buyers for their purchases. |
| **Clearance Price** *Optional* | The lowest price set in fabric to charge customers for their purchases. |
| **Start Date** | The date the price change begins. Dates must follow the `YYYY-MM-DDTHH:MM:00.000Z` format. For example, a price change scheduled for June 1, 2025 at noon would be `2025-06-01T12:00:00.000Z`. |
| **Price List Name** | The name assigned to a price list when created. |
Below is a sample of a valid CSV file for bulk price import:
| **SKU ID** | **Cost** | **Price** | **Clearance Price** | **Start Date (UTC)** | **Price List Name** |
| ------------- | -------- | --------- | ------------------- | ------------------------ | ------------------------ |
| SOME\_SKU\_ID | | 111 | | 2025-12-15T02:05:46.000Z | Default\_PriceList\_Name |
## Prerequisites
* Ensure that you have the **Offers Editor**, or **Administrator** privileges to fabric Offers. For more detailed information on these settings, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-offers-roles) section.
## Procedure
1. In the left menu, click **Offers**.\
The **Products Pricing** page is displayed.
2. Click **Add Bulk Price**.\
The **Import price CSV file** window is displayed.
3. Download the sample template by clicking Template: Price.
4. In the Import price CSV file window, do one of the following:
* Drag and drop your file to the window.
* Click **Select a File from your computer** and select your file.
5. Click **Import File**.
The CSV file is imported, and the prices are added to your products.
# Managing Prices
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/pricing/managing-prices
This topic covers the process of viewing price import history, viewing import errors, and manually editing prices.
## Viewing Import History
You can check the status of your upload by navigating to **Import History**. If the file contains errors, Offers flags the rows with issues. Once the upload is complete, you can download the CSV file with the errors, correct them, and re-upload the file.
### Procedure
1. In the left menu, click **Offers**.\
The **Products Pricing** page is displayed.
2. Click the **Import History** button.\
The **Pricing Import History** page is displayed.
3. Click the **>** icon under the **File Name** to expand for details.\
You can view the **Status** and **Message** about the import job.
4. (Optional) If the **Status** shows **Error**, click the **Download CSV** button under the **Message** column.
5. (Optional) Navigate to your downloads folder and open the CSV file.\
The CSV file is displayed with an **Error** column that specifies the error.
### Errors
| **Error** | **Description** |
| --------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| SKU ID not found | A SKU ID doesn’t match the SKU of any product in your Product Catalog account. |
| Headers don’t match the price template headers | The headers don’t match the headers in the template. |
| Only numeric and decimal values are allowed in cost | The cost column contains a character that isn’t a number or decimal. |
| Incorrect date format for Start/End Date (UTC). Use this date format YYYY-MM-DDTHH:MM:00.000Z | A date doesn’t match the correct format. |
| No price data found | The price columns don’t contain any data. |
| Start Date (UTC)/Price is required | Data is missing from one of these two required fields. |
| Clearance price/Price/Cost price should always be >= 0.00 | The data in these columns must be greater than or equal to 0. |
| Cost can’t be greater than its corresponding Price | The price must be greater than the cost. |
| Clearance price can’t be greater than or equal to its corresponding price | The price must be greater than the clearance price. |
| The header for an additional attributes column isn’t correctly formatted | The header for an additional attributes column doesn’t use the correct format and must follow the format additionalAttributes.exampleAttribute. |
## Manually Editing Price
On the **Products Pricing** page, you can edit price details. Use the **List View** or **Tile View** to adjust how items are displayed.
* **Tile View**: Displays images but includes less information.
* **List View**: Includes more information but doesn't display images.
To bulk edit the cost and price attributes for all variations of a product, such as colors, prints, or sizes, edit the parent product. To edit the cost and price attributes for a single product, such as only the green jacket, locate and edit the individual variant.
Offers supports up to five decimal places for price, cost, and clearance price values.
### Procedure
1. In the left menu, click **Offers**.\
The **Products Pricing** page is displayed.
2. To filter for a specific product, you can do the following:
* Search by product name or item ID.
* Click the dropdown menu to select a price list.
3. Click the product you want to edit.
The product information is displayed.
4. Click the **Edit SKU Price** button.
The **Edit Parent SKU Price** window is displayed.
5. In the **Edit Parent SKU Price** window, enter the following values:
* Cost
* Base Price
* Sale price
* Start date
* Start time
You must include the **Base Price**, **Start date**, and **Start time** values.
6. Click **Add Price**.
# Overview
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/pricing/pricing-overview
Pricing is a core feature of the fabric platform, enabling merchants to manage product prices across their catalog. It works seamlessly with Product Catalog to ensure that the products you upload into your fabric account are automatically available for pricing.
## Key Benefits
* Seamless Integration: Pricing works directly with the Product Catalog, automatically displaying all uploaded products for efficient price management.
* Centralized Management: Access and configure all product prices from the **Offers> Pricing** page.
## Use Case
A merchant needs to set up and manage product prices for its online store. To achieve this, the merchant uploads products to the **Product Catalog** in fabric, making them available for pricing configuration through the **Offers > Pricing** page. This integration centralizes pricing tasks, enabling the merchant to define and control prices efficiently.
Through the **Offers > Pricing** page, the merchant sets base prices for each product. These base prices ensure consistent and accurate pricing for buyers across the platform. By managing prices for individual products or entire catalogs in one place, the merchant maintains full control over their pricing structure and strategies.
The merchant can also adjust prices for products as needed. Whether modifying the price of a single product or applying changes across an entire catalog, the merchant uses the **Offers > Pricing** page to make updates seamlessly. These adjustments are automatically reflected across the platform, ensuring alignment and accuracy across all channels.
With features like **clearance pricing** to prevent over-discounting during promotions or coupon campaigns, and real-time update capabilities, pricing empowers merchants to adapt quickly to market changes. This flexibility allows businesses to remain competitive while maintaining control over profitability and customer value.
# null
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/promotions/creating-a-buy-get-promotion
This topic covers the process of creating a buy-get promotion.
## Prerequisites
* Ensure that you have **Admin** or **Editor** privileges for Offers. For more detailed information on these settings, see [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control-offers-roles).
* Ensure that you have added at least one item in fabric Product Catalog. For more detailed information, see [Adding an Item](/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item).
* Ensure that you have created at least one price list in fabric Offers. For more information, see [Pricing](/v3/offers/user-guides/offers/pricing).
* If you plan to create a promotion based on [Categories](/v3/product-catalog/user-guides/product-catalog/categories/overview) or [Collections](/v3/product-catalog/user-guides/product-catalog/collections/collections), ensure you have set up these features in Product Catalog and added items to them.
## Procedure
1. In the left menu, click **Offers > Promotions**.\
The **Promotions** page is displayed.
2. Click **Add Promotion**.
The **Create Promotion** page is displayed.
3. In the **Select type** field, select **Buy X - Get Y**.
4. Click **Next**.
The **Basic details** menu is displayed.
5. In the **Promotion name** field, enter a name for the promotion.
This name is for internal use only. fabric recommends giving it a unique, descriptive name that will help you differentiate this promotion from other promotions you may be running concurrently. For example, *Labor Day Dining Set Clearance*.
6. (Optional) In the **Notes** field, enter any internal-facing details that might be relevant to this promotion.
7. In the **Start date** and **Start time** fields, enter the date and time the promotion begins.
The start date and time must be in the future.
8. In the **End date** and **End time** fields, enter the date and time the promotion ends.
The end date and time must be after the start date and time.
9. In the **Price lists** field, select one or more price lists.
The promotion will only apply to eligible SKUs on the price lists you select. If selecting multiple price lists, they must all use the same currency. For more information, see [Price lists](/v3/offers/user-guides/offers/promotions/overview#price-lists).
10. In the **Apply promotion to** field, select a price type.
For more information on price types, see [Price lists](/v3/offers/user-guides/offers/promotions/overview#price-lists).
11. Click **Next**.
The **Conditions** menu is displayed.
12. To define the conditions that must be met to receive the promotional offer, do one of the following:
* Select **Buys min. qty of SKUs**.
* In the **A minimum of** field, enter a number of SKUs.
* Select **SPends a min. amount**.
* In the **A minimum amount of** field, enter a dollar amount.
13. To select the items that are eligible for the promotion, in the **From** field, make one or more selections.
For more information, see [Product eligibility definitions for promotions](/v3/offers/user-guides/offers/promotions/overview#product-eligibility-definitions-for-promotions).
14. Click the **Browse** button.
The **Browse SKUs customers must buy** window is displayed.
15. Select the SKUs that are eligible for the promotion and click **Add**.
The SKUs you selected are added to the list of SKUs that are eligible for the promotion.
16. If you selected multiple conditions in step 12, select an operator to choose how your selections interact with each other.
For more information on these settings, see [Product eligibility definitions for promotions](/v3/offers/user-guides/offers/promotions/overview#product-eligibility-definitions-for-promotions).
17. (Optional) To exclude items from the promotion, in the **Exclude** field, select one or more options and configure as required.
For more information on excluding products, see [Excluding products](/v3/offers/user-guides/offers/promotions/overview#product-exclusions-from-promotions).
18. To set up the type of discount, in the **Customer gets** section, take one of the following steps.
For more information on the **Customer gets** section, see [Defining discounts and how they're applied](/v3/offers/user-guides/offers/promotions/overview#defining-discounts-and-how-they-re-applied).
* To apply the discount to individual SKUs, in the **Discount on** field, select **SKU**.
a. In the **Discount type** field, select a discount type.
b. (Optional) To allow the promotion to have variable discount amounts to prevent over-discounting when promotions stack, click **Dynamic discount** and do the following:
* In the **Additional discount (If discount already exists)** field, enter a value.
c. In the **Discount value** field, enter a value.
* To apply the discount to the cost of shipping, in the **Discount on** field, select **Shipping** and do the following:
a. In the **Discount type** field, select a discount type.\
b. In the **Shipping type** field, choose one or more shipping methods the discount applies to.
c. In the **Applicable on** field, select **Entire Cart** or **Entire Shipment**.
d. (Optional) To allow the promotion to have variable discount amounts to prevent over-discounting when promotions stack, click **Dynamic discount** and do the following:
* In the **Additional discount (If discount already exists)** field, enter a value.
e. In the **Discount value** field, enter a value.
* To apply the discount to the entire cart, in the **Discount on** field, select **Cart** and do the following:
a. In the **Discount type** field, select a discount type.\
b. In the **Discount value** field, enter a value.
19. (Optional) To add another discount, select **Add Another Discount** and set up the discount as required.
20. Click **Next**.
The **Stacking & additional settings** menu is displayed.
21. To set how this promotion can be combined with or restricted by other promotions you are running, in the **Set promotion stacking** field, select a stacking type, and, if applicable, set the priority.
For more information on promotion stacking and priority, see [Stacking & additional settings](/v3/offers/user-guides/offers/promotions/overview#stacking-and-additional-settings).
22. (Optional) To create tailored messaging about the promotion on various pages of your commerce site, click the arrow icon next to **Promotion messaging**.
* In the **Choose where to add messaging** field, select one or more places to add the messaging.
* In the **Locale set 1** field, select the locales where this messaging will appear.
* Enter a title for the message.
* Enter the message body.
For more information on promotion messaging, see [Promotion messaging](/v3/offers/user-guides/offers/promotions/overview#promotion-messaging).
23. (Optional) To add interal-facing tags to help you identify or classify the promotion, click the arrow icon next to **Promotion attributes** and do the following:
* In the **Attribute name** field, select a name.
* In the **Attribute values** field, select one or more values.
Attribute names and attribute values are user-generated and can be created by visiting **Offers > Settings > Attributes** in Copilot. For more information, see [Creating an attribute](/v3/guides/offers/settings#attributes).
24. (Optional) To target the promotion to specific customer segments, click the arrow icon next to **Customer segments** and do the following:
* Select **Segment**.
* In the **Segment name** field, select a name.
* In the **Segment values** field, select one or more values.
* (Optional) To exclude segments, select **Exclude Segment**.
* In the **Segment name** field, select a name to exclude.
* In the **Segment values** field, select one or more values to exclude.
Segment names and segment values are user-generated and can be created by visiting **Offers > Settings > Customer segments** in Copilot. For more information, see [Customer segments](/v3/guides/offers/settings#customer-segments).
25. (Optional) To set the maximum number of times the promotion can be used, click the arrow icon next to **Usage limits** and enter a number.
26. Click **Next**.
The **Review & create** menu is displayed.
27. Verify that all promotion details are correct.
Use the **Back** button to move to previous steps in the process.
28. Click **Create**.
The promotion is created with the settings you specified.
## Related Topics
* [Promotions Overview](/v3/offers/user-guides/offers/promotions/overview)
* [Creating a SKU Promotion](/v3/offers/user-guides/offers/promotions/creating-a-sku-promotion)
* [Creating a SKU Quantity Promotion](/v3/offers/user-guides/offers/promotions/creating-a-sku-quantity-promotion)
# null
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/promotions/creating-a-sku-promotion
This topic covers the process of creating a SKU promotion.
## Prerequisites
* Ensure that you have **Admin** or **Editor** privileges for Offers. For more detailed information on these settings, see [Role-Based Access Control](/v3/offers/user-guides/offers/promotions/overview).
* Ensure that you have added at least one item in fabric Product Catalog. For more detailed information, see [Adding an Item](/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item).
* Ensure that you have created at least one price list in fabric Offers. For more information, see [Pricing](/v3/offers/user-guides/offers/pricing).
* If you plan to create a promotion based on [Categories](/v3/product-catalog/user-guides/product-catalog/categories/overview) or [Collections](/v3/product-catalog/user-guides/product-catalog/collections/collections), ensure you have set up these features in Product Catalog and added items to them.
## Procedure
1. In the left menu, click **Offers > Promotions**.\
The **Promotions** page is displayed.
2. Click **Add Promotion**.
The **Create Promotion** page is displayed.
3. In the **Select type** field, select **SKU Promotion**.
4. Click **Next**.
The **Basic details** menu is displayed.
5. In the **Promotion name** field, enter a name for the promotion.
This name is for internal use only. fabric recommends giving it a unique, descriptive name that will help you differentiate this promotion from other promotions you may be running concurrently. For example, *Labor Day Dining Set Clearance*.
6. (Optional) In the **Notes** field, enter any internal-facing details that might be relevant to this promotion.
7. In the **Start date** and **Start time** fields, enter the date and time the promotion begins.
The start date and time must be in the future.
8. In the **End date** and **End time** fields, enter the date and time the promotion ends.
The end date and time must be after the start date and time.
9. In the **Price lists** field, select one or more price lists.
The promotion will only apply to eligible SKUs on the price lists you select. If selecting multiple price lists, they must all use the same currency. For more information, see [Price lists](/v3/offers/user-guides/offers/promotions/overview#price-lists).
10. In the **Apply promotion to** field, select a price type.
For more information on price types, see [Price lists](/v3/offers/user-guides/offers/promotions/overview#price-lists).
11. Click **Next**.
The **Conditions** menu is displayed.
12. To select the items that are eligible for the promotion, in the **From** field, make one or more selections.
For more information, see [Product eligibility definitions for promotions](/v3/offers/user-guides/offers/promotions/overview#product-eligibility-definitions-for-promotions).
13. Click the **Browse** button.
The **Browse SKUs customers must buy** window is displayed.
14. Select the SKUs that are eligible for the promotion and click **Add**.
The SKUs you selected are added to the list of SKUs that are eligible for the promotion.
15. If you selected multiple conditions in step 12, select an operator to choose how your selections interact with each other.
For more information on these settings, see [Product eligibility definitions for promotions](/v3/offers/user-guides/offers/promotions/overview#product-eligibility-definitions-for-promotions).
16. (Optional) To exclude items from the promotion, in the **Exclude** field, select one or more options and configure as required.
For more information on excluding products, see [Excluding products](/v3/offers/user-guides/offers/promotions/overview#product-exclusions-from-promotions).
17. To set up the type of discount, in the **Customer gets** section, take one of the following steps.
For more information on the **Customer gets** section, see [Defining discounts and how they're applied](/v3/offers/user-guides/offers/promotions/overview#defining-discounts-and-how-they-re-applied).
* To apply the discount to individual SKUs, in the **Discount on** field, select **SKU**.
a. In the **Discount type** field, select a discount type.
b. (Optional) To allow the promotion to have variable discount amounts to prevent over-discounting when promotions stack, click **Dynamic discount** and do the following:
* In the **Additional discount (If discount already exists)** field, enter a value.
c. In the **Discount value** field, enter a value.
* To apply the discount to the cost of shipping, in the **Discount on** field, select **Shipping** and do the following:
a. In the **Discount type** field, select a discount type.\
b. In the **Shipping type** field, choose one or more shipping methods the discount applies to.
c. In the **Applicable on** field, select **Entire Cart** or **Entire Shipment**.
d. (Optional) To allow the promotion to have variable discount amounts to prevent over-discounting when promotions stack, click **Dynamic discount** and do the following:
* In the **Additional discount (If discount already exists)** field, enter a value.
e. In the **Discount value** field, enter a value.
* To apply the discount to the entire cart, in the **Discount on** field, select **Cart** and do the following:
a. In the **Discount type** field, select a discount type.\
b. In the **Discount value** field, enter a value.
18. (Optional) To add another discount, select **Add Another Discount** and set up the discount as required.
19. Click **Next**.
The **Stacking & additional settings** menu is displayed.
20. To set how this promotion can be combined with or restricted by other promotions you are running, in the **Set promotion stacking** field, select a stacking type, and, if applicable, set the priority.
For more information on promotion stacking and priority, see [Stacking and additional settings](/v3/offers/user-guides/offers/promotions/overview#stacking-and-additional-settings).
21. (Optional) To create tailored messaging about the promotion on various pages of your commerce site, click the arrow icon next to **Promotion messaging**.
* In the **Choose where to add messaging** field, select one or more places to add the messaging.
* In the **Locale set 1** field, select the locales where this messaging will appear.
* Enter a title for the message.
* Enter the message body.
For more information on promotion messaging, see [Promotion messaging](/v3/offers/user-guides/offers/promotions/overview#promotion-messaging).
22. (Optional) To add interal-facing tags to help you identify or classify the promotion, click the arrow icon next to **Promotion attributes** and do the following:
* In the **Attribute name** field, select a name.
* In the **Attribute values** field, select one or more values.
Attribute names and attribute values are user-generated and can be created by visiting **Offers > Settings > Attributes** in Copilot. For more information, see [Creating an attribute](/v3/guides/offers/settings#attributes).
23. (Optional) To target the promotion to specific customer segments, click the arrow icon next to **Customer segments** and do the following:
* Select **Segment**.
* In the **Segment name** field, select a name.
* In the **Segment values** field, select one or more values.
* (Optional) To exclude segments, select **Exclude Segment**.
* In the **Segment name** field, select a name to exclude.
* In the **Segment values** field, select one or more values to exclude.
Segment names and segment values are user-generated and can be created by visiting **Offers > Settings > Customer segments** in Copilot. For more information, see [Customer segments](/v3/guides/offers/settings#customer-segments).
24. (Optional) To set the maximum number of times the promotion can be used, click the arrow icon next to **Usage limits** and enter a number.
25. Click **Next**.
The **Review & create** menu is displayed.
26. Verify that all promotion details are correct.
Use the **Back** button to move to previous steps in the process.
27. Click **Create**.
The promotion is created with the settings you specified.
## Related Topics
* [Promotions Overview](/v3/offers/user-guides/offers/promotions/overview)
* [Creating a SKU Quantity Promotion](/v3/offers/user-guides/offers/promotions/creating-a-sku-quantity-promotion)
* [Creating a Buy Get Promotion](/v3/offers/user-guides/offers/promotions/creating-a-buy-get-promotion)
# null
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/promotions/creating-a-sku-quantity-promotion
This topic covers the process of creating a SKU quantity promotion.
## Prerequisites
* Ensure that you have **Admin** or **Editor** privileges for Offers. For more detailed information on these settings, see [Role-Based Access Control](/v3/offers/user-guides/offers/promotions/overview).
* Ensure that you have added at least one item in fabric Product Catalog. For more detailed information, see [Adding an Item](/v3/product-catalog/user-guides/product-catalog/list/items/adding-an-item).
* Ensure that you have created at least one price list in fabric Offers. For more information, see [Pricing](/v3/offers/user-guides/offers/pricing).
* If you plan to create a promotion based on [Categories](/v3/product-catalog/user-guides/product-catalog/categories/overview) or [Collections](/v3/product-catalog/user-guides/product-catalog/collections/collections), ensure you have set up these features in Product Catalog and added items to them.
## Procedure
1. In the left menu, click **Offers > Promotions**.\
The **Promotions** page is displayed.
2. Click **Add Promotion**.
The **Create Promotion** page is displayed.
3. In the **Select type** field, select **SKU Quantity**.
4. Click **Next**.
The **Basic details** menu is displayed.
5. In the **Promotion name** field, enter a name for the promotion.
This name is for internal use only. fabric recommends giving it a unique, descriptive name that will help you differentiate this promotion from other promotions you may be running concurrently. For example, *Labor Day Dining Set Clearance*.
6. (Optional) In the **Notes** field, enter any internal-facing details that might be relevant to this promotion.
7. In the **Start date** and **Start time** fields, enter the date and time the promotion begins.
The start date and time must be in the future.
8. In the **End date** and **End time** fields, enter the date and time the promotion ends.
The end date and time must be after the start date and time.
9. In the **Price lists** field, select one or more price lists.
The promotion will only apply to eligible SKUs on the price lists you select. If selecting multiple price lists, they must all use the same currency. For more information, see [Price lists](/v3/offers/user-guides/offers/promotions/overview#price-lists).
10. In the **Apply promotion to** field, select a price type.
For more information on price types, see [Price lists](/v3/offers/user-guides/offers/promotions/overview#price-lists).
11. Click **Next**.
The **Conditions** menu is displayed.
12. To select the items that are eligible for the promotion, in the **From** field, make one or more selections.
For more information, see [Product eligibility definitions for promotions](/v3/offers/user-guides/offers/promotions/overview#product-eligibility-definitions-for-promotions).
13. Click the **Browse** button.
The **Browse SKUs customers must buy** window is displayed.
14. Select the SKUs that are eligible for the promotion and click **Add**.
The SKUs you selected are added to the list of SKUs that are eligible for the promotion.
15. If you selected multiple conditions in step 12, select an operator to choose how your selections interact with each other.
For more information on these settings, see [Product eligibility definitions for promotions](/v3/offers/user-guides/offers/promotions/overview#product-eligibility-definitions-for-promotions).
16. (Optional) To exclude items from the promotion, in the **Exclude** field, select one or more options and configure as required.
For more information on excluding products, see [Excluding products](/v3/offers/user-guides/offers/promotions/overview#product-exclusions-from-promotions).
17. To set the minimum quantity of SKUs the customer must purchase in order to be eligible for the promotion, in the **Buy min quantity of SKUs field**, enter a value.
18. To set up the type of discount, in the **Customer gets** section, take one of the following steps.
For more information on the **Customer gets** section, see [Defining discounts and how they're applied](/v3/offers/user-guides/offers/promotions/overview#defining-discounts-and-how-they-re-applied).
* To apply the discount to individual SKUs, in the **Discount on** field, select **SKU**.
a. In the **Discount type** field, select a discount type.
b. (Optional) To allow the promotion to have variable discount amounts to prevent over-discounting when promotions stack, click **Dynamic discount** and do the following:
* In the **Additional discount (If discount already exists)** field, enter a value.
c. In the **Discount value** field, enter a value.
* To apply the discount to the cost of shipping, in the **Discount on** field, select **Shipping** and do the following:
a. In the **Discount type** field, select a discount type.\
b. In the **Shipping type** field, choose one or more shipping methods the discount applies to.
c. In the **Applicable on** field, select **Entire Cart** or **Entire Shipment**.
d. (Optional) To allow the promotion to have variable discount amounts to prevent over-discounting when promotions stack, click **Dynamic discount** and do the following:
* In the **Additional discount (If discount already exists)** field, enter a value.
e. In the **Discount value** field, enter a value.
* To apply the discount to the entire cart, in the **Discount on** field, select **Cart** and do the following:
a. In the **Discount type** field, select a discount type.\
b. In the **Discount value** field, enter a value.
19. (Optional) To add another discount, select **Add Another Discount** and set up the discount as required.
20. Click **Next**.
The **Stacking & additional settings** menu is displayed.
21. To set how this promotion can be combined with or restricted by other promotions you are running, in the **Set promotion stacking** field, select a stacking type, and, if applicable, set the priority.
For more information on promotion stacking and priority, see [Stacking and additional settings](/v3/offers/user-guides/offers/promotions/overview#stacking-and-additional-settings).
22. (Optional) To create tailored messaging about the promotion on various pages of your commerce site, click the arrow icon next to **Promotion messaging**.
* In the **Choose where to add messaging** field, select one or more places to add the messaging.
* In the **Locale set 1** field, select the locales where this messaging will appear.
* Enter a title for the message.
* Enter the message body.
For more information on promotion messaging, see [Promotion messaging](/v3/offers/user-guides/offers/promotions/overview#promotion-messaging).
23. (Optional) To add interal-facing tags to help you identify or classify the promotion, click the arrow icon next to **Promotion attributes** and do the following:
* In the **Attribute name** field, select a name.
* In the **Attribute values** field, select one or more values.
Attribute names and attribute values are user-generated and can be created by visiting **Offers > Settings > Attributes** in Copilot. For more information, see [Creating an attribute](/v3/guides/offers/settings#attributes).
24. (Optional) To target the promotion to specific customer segments, click the arrow icon next to **Customer segments** and do the following:
* Select **Segment**.
* In the **Segment name** field, select a name.
* In the **Segment values** field, select one or more values.
* (Optional) To exclude segments, select **Exclude Segment**.
* In the **Segment name** field, select a name to exclude.
* In the **Segment values** field, select one or more values to exclude.
Segment names and segment values are user-generated and can be created by visiting **Offers > Settings > Customer segments** in Copilot. For more information, see [Customer segments](/v3/guides/offers/settings#customer-segments).
25. (Optional) To set the maximum number of times the promotion can be used, click the arrow icon next to **Usage limits** and enter a number.
26. Click **Next**.
The **Review & create** menu is displayed.
27. Verify that all promotion details are correct.
Use the **Back** button to move to previous steps in the process.
28. Click **Create**.
The promotion is created with the settings you specified.
## Related Topics
* [Promotions Overview](/v3/offers/user-guides/offers/promotions/overview)
* [Creating a SKU Promotion](/v3/offers/user-guides/offers/promotions/creating-a-sku-promotion)
* [Creating a Buy Get Promotion](/v3/offers/user-guides/offers/promotions/creating-a-buy-get-promotion)
# Managing Promotions
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/promotions/managing-promotions
This document covers the process of editing and deleting promotions.
## Prerequisites
* Ensure that you have **Admin** or **Editor** privileges for Offers. For more detailed information on these settings, see the [Role-Based Access Control](/v3/guides/settings/rbac/role-based-access-control-offers-roles) topic.
* Ensure that you have created at least one required promotion:
* [Create a SKU promotion](/v3/guides/offers/promotions/creating-a-sku-promotion)
* [Create a SKU Quantity Promotion](/v3/guides/offers/promotions/creating-a-sku-quantity-promotion)
* [Create a buy-get promotion](/v3/guides/offers/promotions/creating-a-buy-get-promotion)
## Managing Existing Promotions
1. In the left menu, click **Offers > Promotions**.
The **Promotions** page is displayed.
1.(Optional) **Search by promotion title** in the search bar.
1.(Optional) Use the dropdown menu to filter your results. The dropdown menus can filter by:
* Status
* Start date
* End date
* Promotion Type
* More Filters
* Promotion Attributes
* Segments
* Price Lists
* Price Type
* Categories
* Collections
* Product Attributes
* Stacking
2. Click the promotion that you want to view.
Your promotion is displayed.
3. To edit a promotion, edit the promotion details as required.
If the promotion is expired, you can't edit it.
4. If you want to enable the promotion, turn on the toggle.
You can turn off the toggle and disable the promotion later if required.
5. Click **Update**.
# Overview
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/promotions/overview
With the Promotions feature in fabric Offers, you can create targeted discounts, incentives, and pricing rules tailored to specific products, categories, collections, product attributes, and customer segments. You can also configure promotion conditions, set exclusions, and define how multiple promotions interact through stacking rules. The key elements of a promotion include:
| **Elements** | **Description** |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| Eligible products | The SKUs, categories, and collections that qualify for the promotion. |
| Conditions | Criteria that define the requirements to activate the promotion, such as a minimum purchase quantity or specific product features. |
| Discount type | Formats of the discount, including percentage reductions, fixed amount discounts, or free shipping. |
| Promotion stacking | Rules determining how promotions combine, whether by allowing multiple discounts or making them exclusive. |
| Dynamic discounting | Controls the way discounts are applied when multiple promotions are eligible, preventing over-discounting by limiting how discounts stack. |
| Promotion messaging | Customizable promotional messages visible on product pages, in the customer's cart, or at checkout, tailored for specific customer segments. |
Promotions are applied automatically to a customer's order once the items in their cart meet the criteria you specify. Unlike [Coupons](/3/offers/user-guides/offers/coupons/overview), customers don't need to provide a code to receive the discount.
## Types of Promotions
fabric supports three types of promotions:
* **SKU Promotion**: A discount targeting specific SKUs, where individual products are selected for eligibility, and a discount type is assigned. This promotion type is ideal for sales on specific products, clearing inventory, or spotlighting new arrivals. For example, a *Spring clearance* could offer a percentage discount on products from the previous year's collection.
* **SKU Quantity Promotion**: A discount applied when a customer buys a specific quantity of a particular SKU. This promotion is often used to clear inventory or promote high-margin products. For example, you can create a *Buy 3, get 15% off* promotion to encourage customers to purchase in bulk and increase average order value.
* **Buy X Get Y Promotion**: A free or discounted product,Y, is offered when customers purchase a designated product or quantity of X. This promotion is ideal for bundling complementary products, driving larger transactions, and increasing cart size. For example, you can create *Buy one, get one free* or *Buy two, get 50% off the third item* to offer an incentive when the customer's cart meets the minimum purchase threshold.
## Promotion Setup
Setting up a promotion includes configuring key elements such as price lists, product eligibility conditions, discount types, exclusions, and how multiple promotions interact, as described in the following workflow:
1. Choose a [price list](#price-lists) to establish the baseline pricing, ensuring that discounts apply correctly depending on whether items are full-price or already discounted.
2. Set the [conditions](#product-eligibility-definitions-for-promotions) that determine which products qualify for the promotion. This could include all products, specific SKUs, categories, or product attributes.
3. Apply [exclusions](#product-exclusions-from-promotions) to refine the promotion by targeting specific products or excluding certain items from the offer.
4. Specify the type of [discount](#defining-discounts-and-how-they-re-applied) the customer receives. For example, percentage off, amount off, or free shipping, and decide if it applies to individual items, shipping costs, or the entire cart.
5. Set up [stacking](#stacking-and-additional-settings) to apply multiple promotions simultaneously. Define how they interact by assigning priorities or making them exclusive.
6. Configure [promotion messaging](#promotion-messaging) to determine where details appear for customers, such as product pages, the cart, or the checkout. Customize messaging based on customer groups or regions.
### Price lists
Price lists determine how discounts are applied to products. By selecting a price list, you define whether the discount applies to full-price items, sale items, or both. This ensures that promotional pricing is applied as desired, without over-discounting. The following table outlines the different types of price lists and how they determine the application of discounts during a promotion:
| **Price list** | **Description** |
| ---------------------- | ---------------------------------------------------------------------------------------- |
| Only base price | The discount applies only if the item isn't already on sale. |
| Only sale price | The discount applies only if the item is on sale. |
| Both sale & base price | The discount applies regardless of whether the item is at base price or already on sale. |
For more information, see [the pricing guide](/v3/offers/user-guides/offers/pricing).
### Product eligibility definitions for promotions
The **Customer buys** section allows you to define conditions that specify which products are eligible for the promotion. Setting these conditions ensures that the promotion is applied only to products that meet your defined criteria.
The following table describes the options to define product eligibility based on the price list or lists you selected:
| **Condition** | **Description** |
| ------------------ | ---------------------------------------------------------------------------------------------- |
| All SKUs | The promotion applies to all products. |
| Specific SKUs | The promotion applies to specific products you select. |
| Categories | The promotion applies to one or more categories of products that you select. |
| Collections | The promotion applies to one or more collections of products that you select. |
| Product Attributes | The promotion applies to products based on specific attributes, such as color, size, or brand. |
You can combine multiple conditions using operators to create a more targeted promotion. The **AND** condition requires all conditions to be met, while the **OR** condition allows the promotion to apply if any one condition is satisfied.
For example, if you select both the *Category: Apparel* and *Color: Red*, with the **AND** operator, only red apparel qualifies for the promotion.
On the other hand, if you use the **OR** operator, any items in the category *apparel* will qualify for the promotion.
Combining conditions allows you to ensure that the right products are included based on multiple criteria. For example, you can include all items in the *Apparel* category, but limit the promotion to products with the attribute *Color: Red* or *Size: Large*.
This allows you to ensure that the right products are included based on multiple conditions.
#### Product exclusions from promotions
After selecting your initial group of products based on SKUs, categories, collections, or product attributes, you can refine your promotion by excluding specific products. The **Exclude** field allows you to remove certain items from the promotion, even if they meet the initial promotion criteria.
For example, you might run a sale on all products in the *Apparel* category, but exclude premium brands or limited-edition items. Using the exclude field, you can remove these products by specifying their SKUs, categories, collections, or attributes.
You can exclude products in the following ways:
* SKUs: Specify the SKUs of individual products that you don’t want to include in the promotion.
* Category: Specify the categories that you don't want to include in the promotion.
* Collection: Specify the collections that you don't want to include in the promotion.
* Attributes: Specify the products by their attributes that you don't want to include in the promotion.
By using exclusions, you gain greater precision over which products are part of a promotion, avoiding unintended discounts on products that don’t align with your strategy.
### Defining discounts and how they're applied
Promotions offer various types of rewards, such as a percentage off, a fixed amount off, or free shipping, to customers when the promotion criteria are met. Different types of discounts can be applied to various aspects of a promotion. Here’s an overview of the most common discount applications:
| **Discount on** | **Description** |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SKU | The discount applies to the specific SKU or SKUs you specify. Ideal for promotions highlighting specific products or for clearing inventory. |
| Shipping | The discount applies to shipping. |
| Cart | The discount applies to the total value of the customer's cart. Cart discounts incentivize customers to add more items to their carts to qualify for the discount. |
The discount type defines how the discount is applied to the promotion.
A promotion can support up to three different discounts. For example, you can create a promotion that gives shoppers 10 percent off and then create a second discount that offers free shipping.
There are several discount types available, each with their own function:
| Discount type | Description |
| -------------- | ------------------------------------------------------------- |
| Percentage off | Reduces the cost of eligible items by a specified percentage. |
| Amount off | Reduces the cost of eligible items by a specified amount. |
| Fixed price | Sets a specific price for eligible items. |
| Free | Only available when the discount applies to shipping. |
When creating a promotion that applies to the shipping method, you must select a fulfillment rule set that you configured in fabric Orders. For more information, see the [Creating a fulfillment rule set guide](/v3/orders-and-inventory/user-guides/orders/order-fulfillment-logic/create-a-new-rule-set-ui).
#### Shipping discounts
Shipping discounts can be applied with one of the following options:
* Entire cart: Each item in a cart must qualify for the promotion to apply regardless of ship-to locations.
* Entire shipment: Only the items that share the same ship-to locations qualify for the promotion. For example, in the event of multi-fulfillment orders, when part of the order ships to home and part is picked up in-store, only items that qualify within the same ship-to qualify for the promotion.
You can use multiple shipping methods, such as home delivery, in-store pickup, or split shipments. However, only a single discount type can be applied per shipping method. This means if one part of the order is shipped and another part is picked up, you can apply a shipping discount to one method at a time.
### Dynamic discounting
Dynamic discounting allows promotions to have variable discount amounts, preventing over-discounting when multiple promotions stack. By enabling dynamic discounting, you can set limits on the discount percentage or amount applied, ensuring that the total discount remains controlled even when promotions overlap. For example, if one promotion discounts an item or cart by 40%, you can limit a subsequent discount to 10%.
Dynamic Discounts aren't eligible for buy/get or spend/get promotions.
## Stacking and Additional Settings
Promotion stacking refers to the ability to combine multiple promotions or discounts on the same cart. When promotion stacking is enabled, a customer can apply more than one discount to their cart, increasing the overall savings. For example, a customer could receive both a 10% discount for a storewide sale and an additional \$5 off for a specific product promotion.
Promotion stacking is controlled by assigning a priority to each promotion. Promotions with a lower priority number are applied first, and subsequent promotions are stacked on top, applying their discounts to the already-discounted price.
This allows for more control over how multiple promotions interact, ensuring that promotions with higher priority are considered before others.
Promotions are stacked using the following options:
* **Stackable**: The promotion can stack with any other discount, except for those set to exclusive. The discounts are applied on top of each other, increasing the total discount amount if the discounts apply to the same item. Stackable promotions require a priority, which defines the order in which stackable promotions are evaluated. Starting with priority 1, promotions are evaluated and applied in ascending order. Priority 1 uses the price on the price list to apply the discounts. Priority 2 promotions are evaluated with their applicable discounts stacked on top of the discounted price from priority 1 promotions. Evaluation continues until all stackable priorities have been evaluated and applied.
* **Exclusive**: The promotion can't be combined with other discounts, except Universal. Only one non-stackable promotion is applied to the cart, even if other items are eligible. This is considered globally exclusive. In these cases, Offers applies the promotions with the largest monetary discount. If two promotions have the same monetary discount amount, the most recently published promotions are applied.
* **Type exclusive**: This promotion can't be combined with other promotions of the same discount type, such as SKU, cart, or shipping. When multiple promotions of the same type are available, only the one with the highest level or best discount is applied to the customer’s order. This ensures that conflicting promotions don't overlap, preventing excessive discounts.
* **Universal**: The promotion is always evaluated and applied. These discounts are applied last and can stack on any other promotion regardless of its stacking setting.
### Promotion messaging
Promotion messaging allows you to create custom messages that notify customers about active promotions. The message can appear on any combination of the following pages:
The message can appear on Product Detail Page (PDP), Product List Page (PLP), customer's cart, and the checkout page, or any combination of these.
Additionally, you can target specific customer groups by choosing the locale, ensuring the message is displayed in the appropriate language or region. This feature helps ensure that your promotional offers are clearly communicated to the right audience.
### Promotion attributes
Promotion attributes are internal-facing tags to categorize and classify promotions for use in reporting and analytics.
For example, you can tag promotions with attributes such as *Seasonal Sales* and further define them with values such as *Summer* or *Fall*. This classification allows you to query and report on promotions based on the attributes you’ve assigned, making it easier to measure the performance of targeted campaigns.
For more information on creating these attributes, see the [Attributes guide](/v3/offers/user-guides/offers/settings#attributes).
### Customer segments
You can define which customer segments are eligible for the promotion. Targeting customer segments allows you to apply discounts or special offers to specific groups of customers.
For more information on customer segments, see [customer segments](/v3/offers/user-guides/offers/settings#customer-segments).
## Related Topics
* [Creating a SKU Promotion](/v3/offers/user-guides/offers/promotions/creating-a-sku-promotion)
* [Creating a SKU Quantity Promotion](/v3/offers/user-guides/offers/promotions/creating-a-sku-quantity-promotion)
* [Creating a Buy Get Promotion](/v3/offers/user-guides/offers/promotions/creating-a-buy-get-promotion)
# Settings
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/settings
## Introduction
To manage price lists, global exclusions, and customer segments, click on the **Settings** menu under Offers in the left-hand navigation.
### Price Lists
Price lists is the default view when accessing the Offers Settings menu.
For a new price list, enter a name under Price List Name and then click the **Add price list** button.
The new price list you create will be listed along with other existing prices lists under Manage Price List. Use the buttons at the left to choose which price list is set as the Default List.
The Default Price List serves as the master price list in cases of conflicting prices. For example, if you have a single SKU that appears at different prices on five different price lists, the SKU’s price as it appears in the Default Price List will be shown.
Sort price lists by clicking on the arrow next to Price List ID. To change a Price List Name, click on its corresponding pencil icon and enter a new name. Click the checkmark to save or the X to cancel.
### Global exclusions
Global Exclusions allows you to protect SKUs from being discounted by active promotions.
To set up Global exclusions, select **Global exclusions** from the Settings menu and click the **Create exclusion list** button.
* Give the list a title
* Set the start and end dates/times. This sets the duration that the SKUs in the list will be protected from discounts.
* Set whether you want the SKU price, Shipping price, or both to be protected
* SKU price - This protects the SKU’s price from being discounted
* Shipping price - This will ensure that the shipping price is applied during checkout for this SKU.
* Select the SKUs to be excluded from discounts
* Bulk upload - Use a CSV file to import SKUs
* Browse SKUs - Browse SKUs that are in your Product Catalog and select
* Click **Save**
To edit a Global exclusion list, mouse over the list and click on the edit icon that appears. Make your changes, and then click save.
To delete a Global exclusion list, mouse over the list, click on the delete icon that appears, and then click **confirm** in the dialog box.
## Customer Segments
Offers allows you to target promotions at specific groups of customers. To use this feature, your customers must first be segmented outside of fabric Offers. Segmentation can be achieved through one of the following external methods:
* **Third-party segmentation tools**: Group customers by their traits and behaviors. Each group is assigned a unique segment identifier that can be stored with the customer’s profile.
* **Customization of your online store**: Use browser-based information to segment customers by device type, location, or other factors.
* **Customer tagging**: Add custom traits to customer profiles, which can then be configured into segments.
After a customer is assigned to a segment, [fabric Cart](/v3/cart-and-checkout/api-reference/carts-v3/overview) include the segment information when passing data to fabric Offers when evaluating promotions. The customer segment ID must be included in the **Profile** section of the promotion evaluation request.
The process of identifying and assigning customers to segments is handled entirely outside of fabric Offers.
### Creating a customer segment
1. To set up customer segments in fabric Offers, go to **Settings > Customer Segments** and click **Create Segment**, and do the following:
* **Segment name**: Enter a name for your segment type. For example, **Loyalty Tier** or **Region**.
* **Segment values**: Define multiple options within the segment type. For example, for a **Loyalty Tier** segment, values might include **Gold**, **Silver**, and **Bronze**. Enter each value and press Enter to save it.
Customer segments created in fabric Offers must align with the segment identifiers passed from your external tools through fabric Cart.
### Linking a customer segment to a promotion
After creating a customer segment in **Offers** > **Settings** menu, follow the steps in the [Offers Promotions](/v3/offers/user-guides/offers/promotions/overview) section to link the customer segment to a promotion. Linking customer segments allows you to target specific customer groups with custom discounts or incentives.
### Attributes
With the attributes feature, you can create internal-facing tags to help you identify or classify promotions and coupons.
For example, business intelligence or reporting tools can use the attribute and value you set up for querying purposes. Two attributes can share the same name, such as seasonal Sales, with values such as summer or fall to differentiate them.
**Creating an attribute**
1. In the left menu, click **Offers > Settings**.
The **Settings** page is displayed.
2. Select the **Attributes** tab.
The **Create attribute** tab is displayed.
3. In the **Attribute name** field, enter a name for the attribute.
4. In the **Attribute values** field, enter an attribute value.
5. Click **Create Attribute**.
The attribute is created. You can assign the attribute when creating or editing a promotion or coupon.
# Managing Price Lists
Source: https://developer.fabric.inc/v3/offers/user-guides/offers/settings/price-lists
## Overview
A price list is a collection of items and their assigned prices, enabling merchants to implement various pricing strategies within the Offers Settings menu. The same item can exist in multiple price lists with different prices, allowing for promotions, coupons, discounts, and clearance pricing.
Each price list includes key properties, such as currency, start and end dates, and pricing rules. When a price list expires, the prices of the associated items also expire. Merchants can create and manage price lists, and designate one as the default to maintain consistency when multiple lists contain conflicting prices.
Additionally, price lists influence promotions by defining how discounts apply to products—whether on full-price items, sale items, or both. This flexibility allows merchants to maintain accurate, dynamic pricing across products and channels.
## Creating a Price List
1. In the left menu, click **Offers > Settings**.\
The **Price Lists** tab on the **Offers settings** page is displayed.
2. In the **Price List Name**, enter the name for the price list.
3. In the **Currency** field, select the currency for the price list.
4. In the **Start Date** field, enter the date when this price list takes effect.
5. In the **Time** field, enter the time for when this price list takes effect.
6. In the **End date** field, enter the date when this price list expires.
7. In the **Time** field, enter the time for when this price list expires.
8. Click **Add price list**.
The price list is created.
## Editing a Price List
1. In the left menu, click **Offers > Settings**.\
The **Offers settings** page is displayed. This page consists of **Price Lists**, **Global exclusions**, **Customer segments**, and **Attributes**.
2. On the **Price Lists**, in the price lists table, click the name of the price list that you want to edit.
The **Update price list** window is displayed.
3. Edit the fields as required.
4. Click **Save**.
The price list is updated with the new setting.
# Retrieve jobs
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/jobs/retrieve-jobs
cc.openapi get /catalog-connector-jobs
Use this endpoint to retrieve a paginated list of import and export jobs related to Catalog Connector.
The following constraints apply when using the query parameters:
- The query parameter job `ids` can't be combined with any other query parameters.
- The query parameter `inputFileIds` can only be combined with the query parameter `lastJobOnly`.
- Pagination isn't supported when `ids` or `inputFileIds` is specified.
# Delete a product by Item ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/item-operations/delete-by-item
cc.openapi delete /catalog-connector/products/itemIds/{itemId}
Use this endpoint to delete a single product by its `itemId`.
If you don't have the `itemId`, use one of the endpoints to delete the product:
- [Delete a product by SKU](/v3/api-reference/catalog-connector/operations/sku-operations/delete-with-sku).
- [Delete a product by product ID](/v3/api-reference/catalog-connector/operations/product-operations/delete-by-product).
# Retrieve a product or a variant by Item ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/item-operations/retrieve-by-item
cc.openapi get /catalog-connector/products/itemIds/{itemId}
Use this endpoint to retrieve a single product by its `itemId`. You must specify the query parameters `itemId` and `locale`. Optionally, you can set the following query parameters to `true` to refine the search results:
You must specify the query parameters `itemId` and `locale`.
Optionally, you can set the following query parameters to `true` to refine the search results:
- `excludeBundleProducts`: Exclude bundled products from the response.
- `excludeCollections`: Exclude collections from the response.
- `excludeCategories`: Exclude categories from the response.
- `excludeAttributes`: Exclude attributes from the response.
- `excludeVariants`: Exclude variants from the response.
If you don't have the `itemId`, use one of the endpoints to retrieve the product:
- [Update a product by SKU](/v3/api-reference/catalog-connector/operations/sku-operations/update-with-sku).
- [Update a product by product ID](/v3/api-reference/catalog-connector/operations/product-operations/update-by-product).
# Update a product by the Item ID.
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/item-operations/update-by-item
cc.openapi put /catalog-connector/products/itemIds/{itemId}
Use this endpoint to update a single product by using its `itemId`. You can update the product's details, such as its name, category details, product images, attributes, and collections. However, you can't update the `itemId`. The new data completely replaces the existing data.
You can update the product's details, such as its name, category details, product images, attributes, and collections. However, you can't update the itemId. The new data completely replaces the existing data.
If you don't have the `itemId`, use the one of the endpoints to delete the product:
- [Update a product by SKU](/v3/api-reference/catalog-connector/operations/sku-operations/update-with-sku).
- [Update a product by product ID](/v3/api-reference/catalog-connector/operations/product-operations/update-by-product).
# Add a product
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/product-operations/add-product
cc.openapi post /catalog-connector/products
Use this endpoint to add a single product to Catalog Connector. You must specify the `locale` in the query parameter and the product data in the request body. Only `sku` is mandatory for product data. Optionally, you can specify the `type` as item, variant, or bundle. The default setting for `type` is item.
# Delete a product by product ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/product-operations/delete-by-product
cc.openapi delete /catalog-connector/products/{productId}
Use this endpoint to delete a single product by its `productId`.
If you don't have the `productId`, use one of the endpoints to delete the product:
- [Delete a product by SKU](/v3/api-reference/catalog-connector/operations/sku-operations/delete-with-sku).
- [Delete a product by item ID](/v3/api-reference/catalog-connector/operations/item-operations/delete-by-item).
# Retrieve a product by product ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/product-operations/retrieve-by-product
cc.openapi get /catalog-connector/products/{productId}
Use this endpoint to retrieve a single product by its `productId`.
You must specify the query parameters `productId` and `locale`.
Optionally, you can set the following query parameters to `true` to refine the search results:
- `excludeBundleProducts`: Exclude bundled products from the response.
- `excludeCollections`: Exclude collections from the response.
- `excludeCategories`: Exclude categories from the response.
- `excludeAttributes`: Exclude attributes from the response.
- `excludeVariants`: Exclude variants from the response.
If you don't have the `productId`, use one of the endpoints to retrieve the product:
- [Retrieve a product by SKU](/v3/api-reference/catalog-connector/operations/sku-operations/update-with-sku).
- [Retrieve a product by item ID](/v3/api-reference/catalog-connector/operations/item-operations/update-by-item).
# Update a product by product ID
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/product-operations/update-by-product
cc.openapi put /catalog-connector/products/{productId}
Use this endpoint to update a single product by its `productId`.
You can update the product's details, such as its name, category details, product images, attributes, and collections. However, you can't update the productId.
The new data completely replaces the existing data.
If you don't have the `productId`, use one of the corresponding endpoints:
- [Update a product by SKU](/v3/api-reference/catalog-connector/operations/product-operations/update-by-product).
- [Update a product by item ID](/v3/api-reference/catalog-connector/operations/item-operations/update-by-item).
# Find products
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/search
cc.openapi post /catalog-connector/products/search
Use this endpoint to search for products based on names, IDs, SKUs, image URLs, and more. By specifying the appropriate query parameters, you can exclude one or more types of data, such as collections, categories, variants, attributes, and products within a bundle.
- Use the `CONTAINS` search operation to search for products based on keywords of SKU, name, and more.
- Use the `IN` search operation to search for products based on one or more values, such as IDs, names, SKUs, image URLs, attributes, and types.
- Use the less than or equals to, `LTE`, greater than or equals to, `GTE`, less than, `LT`, greater than, `GT` and equals `EQ` operations to search for date-specific values, such as time of creation or modification.
# Delete a product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/sku-operations/delete-with-sku
cc.openapi delete /catalog-connector/products/skus/{skuId}
Use this endpoint to delete a single product by using its SKU.
If you don't have the product SKU, use one of the endpoints to delete the product:
- [Delete a product by product ID](/v3/api-reference/catalog-connector/operations/product-operations/delete-by-product).
- [Delete a product by item ID](/v3/api-reference/catalog-connector/operations/item-operations/delete-by-item).
# Retrieve a product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/sku-operations/retrieve-with-sku
cc.openapi get /catalog-connector/products/skus/{skuId}
Use this endpoint to retrieve a single product by its SKU. You must specify the query parameters `sku` and `locale` to corresponding to the product. Optionally, you can set the following query parameters to `true` to refine the search results:
- `excludeBundleProducts`: Exclude bundled products from the response.
- `excludeCollections`: Exclude collections from the response.
- `excludeCategories`: Exclude categories from the response.
- `excludeAttributes`: Exclude attributes from the response.
- `excludeVariants`: Exclude variants from the response.
If you don't have the product SKU, use one of the endpoints to retrieve the product:
- [Retrieve a product by product ID](/v3/api-reference/catalog-connector/operations/product-operations/retrieve-by-product).
- [Retrieve a product by item ID](/v3/api-reference/catalog-connector/operations/item-operations/retrieve-by-item).
# Update a product by SKU
Source: https://developer.fabric.inc/v3/product-catalog/api-reference/catalog-connector/operations/sku-operations/update-with-sku
cc.openapi put /catalog-connector/products/skus/{skuId}
Use this endpoint to update details of a product by its SKU. You can update details of the product, such as the product name, category details, product images, attributes, and collections. The new data replaces the existing data. Note that you can't update the SKU.
If you don't have the product SKU, use one of the endpoints update the product details:
- [Update a product by product ID](/v3/api-reference/catalog-connector/operations/product-operations/update-by-product).
- [Update a product by item ID](/v3/api-reference/catalog-connector/operations/item-operations/update-by-item).
# Create an empty cart
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts/carts
modular-cart post /carts
Use this endpoint to create a new cart.
**Default Configurations**: To create a cart with default configurations, send a request with an empty body.
**Provided Configurations**: To create a cart with provided configurations, include the configurations in the request body. To learn more about configuration behaviors, visit the [Configuration Behaviors](/v3/cart-and-checkout/api-reference/carts-v3/configuration-behaviors) page.
# Sequence calling
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts/sequence
modular-cart post /carts/{cartId}/sequence
Use this endpoint to execute multiple cart-related operations with a single request. This allows you to perform various actions such as creating a cart, adding items, and checking out in a single API call.
**Note:** The order of operations matters since IDs are carried over from call to call.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Configuration Behaviors
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/configuration-behaviors
The Configuration Behaviors page provides an overview of the configuration settings and their associated functionalities.
To ensure your cart functions as intended, you must specify which configurations to activate when making a [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) request.
When setting a cache expiry, the minimum duration is 1 second and the maximum duration is 7,776,000 seconds, which is 3 months.
| Configuration | Description |
| ------------- | -------------------------------------------------------- |
| WARN | Executes the action, and the state object is updated. |
| REJECT | Rejects the action and a detailed exception is returned. |
| DROP | Drops the action and resource is removed from the cart. |
| NONE | Accepts the action. |
| BLOCK | Blocks the action and returns an exception. |
## Related Topics
* [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts)
# Configuring Adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-adjustments
This feature in Carts API provides you the flexibility to apply adjustments at the cart, item, or fulfillment level. Adjustments are deductible elements that modify the total amount and are non-taxable.
## Prerequisites
The following prerequisites must be completed sequentially to configure an adjustment.
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Create a fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) to add a fulfillment adjustment.
3. [Create an item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) to add an item adjustment.
## Adjustment Initialization
You can apply adjustments at multiple levels, including the cart, individual items, or fulfillment. The adjustment maintains a consistent structure across all levels.
The following code sample provides the structure of an adjustment object:
```json
{
"id": "6964b984-49fd-4754-b979-a260e944320c",
"price": {
"amount": 10
},
"reason": "DelayedOrder",
"attributes": {
"reasonDescription": "Price Adjustment due to delayed shipping"
},
"updatedAt": "2024-06-20T08:09:58.951Z",
"createdAt": "2024-06-20T08:09:58.951Z"
}
```
As multiple adjustments can be applied to a single cart, item, or fulfillment, adjustments are displayed as a collection.
The following code sample provides the structure of an adjustment object in a collection:
```json
"adjustments": {
"total": 10,
"collection": [
{
"id": "6964b984-49fd-4754-b979-a260e944320c",
"price": {
"amount": 10
},
"reason": "DelayedOrder",
"attributes": {
"reasonDescription": "Price Adjustment due to delayed shipping"
},
"updatedAt": "2024-06-20T08:09:58.951Z",
"createdAt": "2024-06-20T08:09:58.951Z"
}
]
}
```
## Examples
### Making adjustments at the cart level
Use the [create cart adjustment](/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/create-adjustments) endpoint to make adjustments at the cart level and credit points available for discounts as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/adjustments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"price": {
"amount":10
},
"reason":"Avail 1000 Credit Points"
}'
```
### Using adjustments at the item level
Use the [create item adjustment](/v3/cart-and-checkout/api-reference/carts-v3/item-adjustments/create-item-adjustments) endpoint to make adjustments at the item level and apply the sale price as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/items/806d6671-801d-4554-976d-0d38e525a852/adjustments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"price": {
"amount":"10"
},
"reason":"Item was a sale item 2 days ago",
"attributes": {
"type": "retail"
}
}'
```
# Configuring Fees
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-fees
The fees feature in Carts API allows you to add, update, or remove additional fees beyond the resource price, such as gifting fees, platform fees, and service fees. These fees can be applied at various levels, including the cart, individual items, or fulfillment, providing flexibility in customizing the total cost structure. Optionally, the fees may be taxable.
## Prerequisites
The following prerequisites must be completed sequentially to configure a fee.
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Create a fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) to apply the fulfillment fee.
3. [Create an item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) to add the item fee.
## Fee Initialization
You can apply fees at multiple levels, including the cart, individual items, or fulfillment. The fee resource maintains a consistent structure across all levels. Taxes on fees is controlled by the `taxable` attribute in the request payload, which defaults to `true`. This means fees are taxed unless specifically set to `false`.
The following code sample provides the structure of a fee object:
```json
{
"id": "188514cb-f36b-4835-a8b3-df75164325d7",
"name": "cart v3 fees",
"price": {
"amount": 10
},
"taxable": true,
"attributes": {
"message": "gifting-fee"
},
"updatedAt": "2024-06-20T07:55:49.021Z",
"createdAt": "2024-06-20T07:55:49.021Z"
}
```
The resource is displayed as a collection of fees for the associated resource as multiple fees can be applied to a single resource.
The following code sample provides the structure of a fee object in a collection:
```json
"fees": {
"total": 10,
"collection": [
{
"id": "188514cb-f36b-4835-a8b3-df75164325d7",
"name": "cart v3 fees",
"price": {
"amount": 10
},
"taxable": true,
"attributes": {
"message": "gifting-fee"
},
"updatedAt": "2024-06-20T07:55:49.021Z",
"createdAt": "2024-06-20T07:55:49.021Z"
}
]
}
```
## Examples
### Adding shipping fees, including shipping fee tax
The following steps outline how a fulfillment fee is configured:
1. [Create fulfillment fee.](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-fees/add-fulfillment)
```curl
curl --location '{{modular_cart}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/fulfillments/65879f42-edfb-46de-bf57-77835dec3d60/fees' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"name": "Shipping fee",
"price": {
"amount": 10
},
"taxable": true,
"attributes": {
"displayMsg": "Shipping Off for orders over $100"
}
}'
```
2. Add tax for the fulfillment fee using the [replace tax data](/v3/cart-and-checkout/api-reference/carts-v3/validations/add-tax) endpoint.
```curl
curl --location --request PUT 'https://dev.cart.fabric.inc/beta/v3/modular/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/tax' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--data '{
"fulfillments": [
{
"id": "65879f42-edfb-46de-bf57-77835dec3d60",
"tax": [
{
"amount": 2,
"attributes": {
"rate": 1
}
}
],
"fees": [
{
"id": "026b9bd1-2e96-4016-93a3-674da01aa29e",
"tax": [
{
"amount": 1,
"attributes": {
"rate": 1
}
}
]
}
]
}
]
}'
```
Tax here includes fulfillment tax and fulfillment the fee tax as provided in the payload.
Response:
```json
"price": {
"total": 343,
"subtotal": 310,
"tax": 3,
"fulfillments": 30,
"discounts": 0,
"fees": 110,
"adjustments": 0
}
```
### Applying a gifting fee to items that are gift-wrapped
Use the [create item fees](/v3/cart-and-checkout/api-reference/carts-v3/item-fees/create-item-fees) endpoint to apply the gifting fees to the items that are gift wrapped.
The following curl example provides how the request is structured when creating an item fee:
```curl
curl --location '{{modular_cart_domain}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/items/806d6671-801d-4554-976d-0d38e525a852/fees' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"name": "Gift wrap",
"price": {
"amount": 10
},
"taxable": false,
"attributes": {
"message": "Happy Birthday John Doe"
}
}'
```
### Adding a platform fee at the cart level
Use the [create cart fees](/v3/cart-and-checkout/api-reference/carts-v3/fees/create-fees) endpoint to add a platform fee at the cart level.
The following curl example provides how the request is structured when creating fee at the cart level:
```curl
curl --location '{{modular_cart_domain}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/fees' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"name": "Platform-fee",
"price": {
"amount": 100
},
"taxable": true,
"attributes": {
"reason": "added as an example"
}
}'
```
# Configuring Fulfillment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-fulfillment
This feature in Carts API allows you to add, update, or remove fulfillment information in the cart and associate it with individual items. The cart supports multiple fulfillment options.
## Prerequisites
The following prerequisites must be completed sequentially to configure a fulfillment.
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Create a destination address](/v3/cart-and-checkout/api-reference/carts-v3/addresses/create-addresses) if the fulfillment type is `SHIP_TO`.
3. [Create an origin address](/v3/cart-and-checkout/api-reference/carts-v3/addresses/create-addresses) if the fulfillment type is `BOPIS` or `ROPIS`.
## Fulfillment Initialization
After you create a cart with [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts), you will see the fulfillment resource in the cart response.
The following code sample provides the structure of fulfillment object in a cart response:
```json
{
"id": "a7f51053-6fbd-42a6-8fbc-303bfc16c13f",
"type": "SHIP_TO",
"refId": "6425279f661bf878448465b4",
"originAddress": "{{originAddressId}}",
"destinationAddress": "{{destinationAddressId}}",
"price": {
"amount": 10
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 0,
"collection": []
}
}
```
The fulfillment resource can be associated with an item using the `fulfillmentId` by making POST request to the `{cartId}/fulfillments` endpoint.
The following code sample provides how the request is structured in a request payload:
### POST Response
```curl
curl --location '{{cartV3_domain}}/carts/{{cartId}}/items' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--header 'Authorization: {authToken}' \
--data
'{
"sku": "5",
"refId": "19",
"quantity": 10,
"price":
{
"type": "UNIT",
"amount": 100
},
"fulfillment":
{
"id": "a7f51053-6fbd-42a6-8fbc-303bfc16c13f", // fulfillmentId
"inventory":
{
"channels":
{"networkCode": "ShipToHome"},
"type": "preOrder"
}
}
}'
```
The cart has a fulfillment object that stores all the fulfillments added to it.
You can check your fulfillment information by making a GET request to `carts/{cartId}/fulfillments/{fulfillmentId}` endpoint.
The following code sample provides the structure of fulfillment object in the response:
```json
{
"fulfillments":
{
"a7f51053-6fbd-42a6-8fbc-303bfc16c13f":{
"id": "a7f51053-6fbd-42a6-8fbc-303bfc16c13f",
"type": "SHIP_TO",
"refId": "6425279f661bf878448465b4",
"attributes": {},
"originAddress": "d48340ac-23c6-42ef-8aa3-84c43eb4e391",
"destinationAddress": "d48340ac-23c6-42ef-8aa3-84c43eb4e391",
"price": {
"amount": 10
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 0,
"collection": []
}
},
"b326819-6fbd-42a6-8fbc-303bfc16e222": {
"id": "b326819-6fbd-42a6-8fbc-303bfc16e222",
"type": "SHIP_TO",
"refId": "632479f661bf87844846534",
"attributes": {},
"originAddress": "d48340ac-23c6-42ef-8aa3-84c43eb4e391",
"destinationAddress": "d48340ac-23c6-42ef-8aa3-84c43eb4e391",
"price": {
"amount": 10
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 0,
"collection": []
}
}
}
}
```
## Examples
### Adding a fulfillment with a single cost to multiple items
1. [Create a fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) curl.
```curl
curl --location '{{modular_cart_domain}}/carts/07618f2d-8559-479a-80ed-5ed7259cbd25/fulfillments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"type": "SHIP_TO",
"refId": "6622d50d2eee4e4e124c7467",
"destinationAddress": "2ac62be8-2440-46e7-9a42-6b2c62fb6690",
"price": {
"amount": 10.0
}
}'
```
**Response**
```json
{
"id": "e4d68b36-8902-4427-a244-9eb65290855c",
"type": "SHIP_TO",
"refId": "6622d50d2eee4e4e124c7467",
"destinationAddress": "2ac62be8-2440-46e7-9a42-6b2c62fb6690",
"price": {
"amount": 10.0
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 0,
"collection": []
}
}
```
2. Create multiple items with same fulfillment using the [add items](/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/line-items/add-items) endpoint.
```curl
curl --location '{{orchestrator_domain}}/orchestrator/carts/07618f2d-8559-479a-80ed-5ed7259cbd25/items' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'x-fabric-request-id: 1' \
--header 'x-fabric-channel-id: 12' \
--header 'Authorization: {authToken}' \
--header 'customer-id: 1234' \
--header 'Content-Type: application/json' \
--data '{
"items": [
{
"quantity": 4,
"itemId": "41",
"sku": "SKU2",
"priceListId": "100000",
"price": {
"type": "UNIT",
"amount": 10
},
"fulfillment": {
"id": "e4d68b36-8902-4427-a244-9eb65290855c",
"inventory": {
"channels": {
"type": "WEB_PICKUP",
"locationNumber": "15",
"channelId": "12"
},
"type": "availableToPurchase"
}
}
},
{
"quantity": 5,
"itemId": "44",
"sku": "SKU3",
"priceListId": "100000",
"price": {
"type": "UNIT",
"amount": 100
},
"fulfillment": {
"id": "e4d68b36-8902-4427-a244-9eb65290855c",
"inventory": {
"channels": {
"type": "WEB_SHIP",
"networkCode": "ShipToHome",
"channelId": "12"
},
"type": "availablePreorder"
}
}
}
]
}'
```
### Adding a fulfillment with a custom cost to an item
1. [Create a fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) curl.
```curl
curl --location '{{modular_cart_domain}}/carts/07618f2d-8559-479a-80ed-5ed7259cbd25/fulfillments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"type": "SHIP_TO",
"refId": "6622d50d2eee4e4e124c7467",
"destinationAddress": "2ac62be8-2440-46e7-9a42-6b2c62fb6690",
"price": {
"amount": 10.0
}
}'
```
Response:
```json
{
"id": "e4d68b36-8902-4427-a244-9eb65290855c",
"type": "SHIP_TO",
"refId": "6622d50d2eee4e4e124c7467",
"destinationAddress": "2ac62be8-2440-46e7-9a42-6b2c62fb6690",
"price": {
"amount": 10.0
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 0,
"collection": []
}
}
```
2. Add a custom cost to the item using the [add item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint.
The example shows adding an additional \$5.00 as the fulfillment cost for the item.
```curl
curl --location 'https:{{modular_cart_domain}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/items' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--data '{
"sku": "5",
"refId": "1",
"quantity": 1,
"priceListId": "100000",
"price": {
"type": "UNIT",
"amount": 100
},
"fulfillment": {
"id": "e4d68b36-8902-4427-a244-9eb65290855c",
"inventory": {
"channels": {
"networkCode": "ShipToHome"
},
"type": "backOrder"
},
"price": {
"amount": 5
}
}
}'
```
`price.fulfillments` accepts both the fulfillment cost and any additional fulfillment amount added to the item.
Response:
```json
{
"lineItems": {
"total": 100,
"collection": [
{
"id": "806d6671-801d-4554-976d-0d38e525a852",
"sku": "5",
"refId": "1",
"quantity": 1,
"priceListId": "100000",
"position": 1,
"price": {
"unit": 100,
"amount": 100
},
"fees": {
"total": 0,
"collection": []
},
"promotions": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"fulfillment": {
"id": "cda19e15-ab04-419e-8fc1-61fa7874beb0",
"price": {
"amount": 5
},
"inventory": {
"type": "backOrder",
"channels": {
"networkCode": "ShipToHome"
}
},
"tax": {
"total": 0,
"collection": []
}
},
"attributes": {},
"tax": {
"total": 0,
"collection": []
},
"updatedAt": "2024-08-31T15:17:20.584Z",
"createdAt": "2024-08-31T15:17:20.584Z"
}
]
},
"id": "7d403833-8e0c-43f5-aded-72d6a2eaf062",
"attributes": {
"key": "value"
},
"configuration": {
"order": {
"validate": {
"paymentsRemaining": "BLOCK",
"taxRemaining": "BLOCK",
"invalidItem": "BLOCK",
"itemOutOfStock": "BLOCK"
}
},
"product": {
"cacheExpiry": 1,
"behaviors": {
"add": "NONE",
"update": "NONE",
"get": "NONE",
"cacheExpiry": "NONE"
},
"maxQuantity": {
"behaviors": {
"add": "NONE",
"update": "NONE",
"get": "NONE"
}
}
},
"inventory": {
"cacheExpiry": 1,
"behaviors": {
"add": "NONE",
"update": "NONE",
"get": "NONE",
"cacheExpiry": "NONE"
},
"check": "SKU"
},
"tax": {
"cacheExpiry": 5,
"behaviors": {
"cacheExpiry": "NONE"
}
},
"promotions": {
"cacheExpiry": 5,
"behaviors": {
"cacheExpiry": "WARN"
}
},
"maxQuantity": {
"limit": 10,
"behaviors": {
"add": "NONE",
"update": "NONE",
"get": "NONE"
}
}
},
"customerContext": {},
"status": "ACTIVE",
"state": [
{
"resource": "CART",
"resourceId": "",
"key": "MISSING_PAYMENT_DETAILS",
"description": "No payment details have been added to this Cart"
},
{
"resource": "CART",
"resourceId": "",
"key": "MISSING_TAX",
"description": "No tax has been added to this Cart"
}
],
"price": {
"total": 115,
"subtotal": 100,
"tax": 0,
"fulfillments": 15,
"discounts": 0,
"fees": 0,
"adjustments": 0
},
"promotions": {
"total": 0,
"collection": null
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"addresses": {
"702009a6-fc56-4df7-a1b4-c73cf916d9fc": {
"id": "702009a6-fc56-4df7-a1b4-c73cf916d9fc",
"name": {
"first": "Pat",
"last": "E"
},
"email": "samiksha@gmail.com",
"phone": {
"number": "9050123102",
"type": "MOBILE"
},
"addressLine1": "Princeton",
"addressLine2": "Street 2",
"addressLine3": "Stars Hollow",
"city": "Phillidelphia",
"region": "Pennsylvania",
"country": "US",
"postalCode": "1-21-12",
"updatedAt": "2024-08-31T15:17:17.312Z",
"createdAt": "2024-08-31T15:17:17.312Z"
}
},
"summary": {
"totalItems": 1,
"totalUniqueItems": 1
},
"fulfillments": {
"cda19e15-ab04-419e-8fc1-61fa7874beb0": {
"id": "cda19e15-ab04-419e-8fc1-61fa7874beb0",
"type": "SHIP_TO",
"refId": "1",
"attributes": {
"test1": {},
"channelId": [
"12"
]
},
"originAddress": "",
"destinationAddress": "702009a6-fc56-4df7-a1b4-c73cf916d9fc",
"price": {
"amount": 10
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 0,
"collection": []
}
}
},
"coupons": [],
"appliedCoupons": [],
"notAppliedCoupons": [],
"validations": {
"promotions": null,
"lineItems": [],
"product": null,
"tax": null
},
"payments": {
"authorized": 0,
"collection": []
},
"channelId": "13",
"currency": "USD",
"updatedAt": "2024-08-31T15:17:18.982Z",
"createdAt": "2024-08-31T15:17:07.865Z"
}
```
### Adding a fulfillment with the type `BOPIS` or `ROPIS` requires a `locationId`
Use the [add fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint to add a location when creating a fulfillment as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/fulfillments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"type": "BOPIS",
"refId": "1",
"originAddress": "702009a6-fc56-4df7-a1b4-c73cf916d9fc",
"locationId": "1",
"attributes": {
"channelId": [
"12"
],
"test1": 123
},
"price": {
"amount": 10
},
"pickupPerson": {
"primary": {
"name": {
"firstName": "BOB"
},
"email": "123",
"phone": {
"type": "MOBILE",
"number": "1231231234"
},
"addressId": "702009a6-fc56-4df7-a1b4-c73cf916d9fc"
}
}
}'
```
### Adding the same destination address to different fulfillments for multiple items
Use the [add fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint to create multiple fulfillment with the same addresses as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/7d403833-8e0c-43f5-aded-72d6a2eaf062/fulfillments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--data '{
"type": "BOPIS",
"refId": "1",
"originAddress": "702009a6-fc56-4df7-a1b4-c73cf916d9fc",
"destinationAddress": "702009a6-fc56-4df7-a1b4-c73cf916d9fc",
"locationId": "1",
"attributes": {
"channelId": [
"12"
],
"test1": 123
},
"price": {
"amount": 10
},
"pickupPerson": {
"primary": {
"name": {
"firstName": "BOB"
},
"email": "123",
"phone": {
"type": "MOBILE",
"number": "1231231234"
},
"addressId": "702009a6-fc56-4df7-a1b4-c73cf916d9fc"
}
}
}'
```
# Configuring Order Drafts
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-order-drafts
This feature in Carts API enables the cart to be transformed into a schema ready for submission to the **Order Management System (OMS)**, representing the **order draft** stage before the order is officially created.
At this stage, the cart contains all necessary data, including items, fulfillment details, fees, taxes, and payment information. This transformation ensures that the cart aligns with OMS requirements, allowing for final review and confirmation of the order before proceeding to fulfillment.
## Prerequisites
There are two types prerequisites, depending on your cart configurations.
One of the following prerequisites must be completed sequentially to configure an order draft.
```json
"configuration": {
"order": {
"validate": {
"paymentsRemaining": "BLOCK",
"taxRemaining": "BLOCK",
"invalidItem": "BLOCK",
"itemOutOfStock": "BLOCK"
}
}
}
```
**Prerequisites**
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Add item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) to the cart.
3. [Add taxes](/v3/cart-and-checkout/api-reference/carts-v3/validations/add-tax) to the resources in the cart.
4. [Add payments to the cart](/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments), ensuring they match the cart total.
5. Ensure that the items added to the cart are valid and in stock.
```json
"configuration": {
"order": {
"validate": {
"paymentsRemaining": "BLOCK",
"taxRemaining": "BLOCK",
"invalidItem": "BLOCK",
"itemOutOfStock": "BLOCK"
}
}
}
```
**Prerequisites**
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Add item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) to the cart.
## Order Drafts Initialization
The order draft captures a snapshot of the cart, which can then be converted into an order. The ability to create an order draft is controlled by [cart configurations](/v3/cart-and-checkout/api-reference/carts-v3/configuration-behaviors). Cart offers users the flexibility to prevent order draft creation if:
* Payments haven't been added to the cart.
* Taxes are missing for resources in the cart.
* Items are invalid.
* Items are out of stock.
The following code sample provides the structure of order draft settings that block creation in the response:
### Cart configuration
```json
"configuration": {
"order": {
"validate": {
"paymentsRemaining": "BLOCK",
"taxRemaining": "BLOCK",
"invalidItem": "BLOCK",
"itemOutOfStock": "BLOCK"
}
}
}
```
## Examples
### Creating an order draft to send to an order management system (OMS)
Use the [create an order draft](/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/create-order-drafts) endpoint to create an order draft and send it to OMS as in the following example:
```curl
curl --location '{{orchestrator_domain}}/carts/{{cartId}}/order-draft' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'x-fabric-request-id: {{requestId}}' \
--header 'x-fabric-channel-id: {{channelId}}' \
--header 'Authorization: {authToken}' \
--header 'Content-Type: application/json'
--data '{
"orderNumber": "W0013"
}'
```
**Response**
```json
{
"order": {
"number": "W0013",
"currency": "USD",
"createdAt": "2024-06-24T09:22:40.979+00:00",
"attributes": {}
},
"cartId": "39ea2154-7160-4feb-ae42-1506223efd95",
"attributes": {
"name": "cart test",
"description": "This cart is created by cart v2 service"
},
"customerContext": {
"id": "C01",
"segments": [
{
"name": "membership",
"value": [
"premium"
]
},
{
"name": "customer-type",
"value": [
"high"
]
}
],
"attributes": {
"returnRate": "high",
"city": "london",
"type": "regular"
}
},
"status": "ACTIVE",
"state": [
{
"resource": "VALIDATION",
"resourceId": "",
"key": "PROMOTION_REFRESH",
"description": "Promotions require a refresh in the Cart"
},
{
"resource": "CART",
"resourceId": "HAPPY10",
"key": "COUPON_NOT_APPLIED",
"description": "Coupon HAPPY10 has no associated promotion"
}
],
"price": {
"total": 1180.19,
"subtotal": 1043,
"tax": 97.19,
"fulfillments": 40,
"discounts": 0,
"fees": 25,
"adjustments": 12
},
"promotions": {
"total": 0,
"collection": [
{
"id": "6626c179627d450008a5b202",
"title": "SXP Cart Promotion Fixed Price",
"type": "QUANTITY",
"value": 10,
"attributes": {}
},
{
"id": "64959a4b2341cd00080ca746",
"title": "happy10 coupon",
"code": "HAPPY10",
"type": "PRODUCT",
"value": 103,
"attributes": {}
},
{
"id": "662a7a5c65c3c7000cff7c4a",
"title": "SXP Cart Promotion Item Free",
"type": "BUYGET",
"value": 3.9,
"attributes": {}
},
{
"id": "6626e327fc29c3000858c6e6",
"title": "SXP Cart Promotion Percentage Off",
"type": "QUANTITY",
"value": 515,
"attributes": {}
}
]
},
"fees": {
"total": 15,
"collection": [
{
"id": "9db3ed22-9a71-47c7-844e-bd42e28319c2",
"name": "cart v3 fees",
"price": {
"amount": 15
},
"taxable": true,
"attributes": {
"message": "gifting-fee"
},
"tax": {
"total": 1.33,
"collection": [
{
"amount": 0.6,
"attributes": {
"taxRate": 0.04,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "STATE",
"jurisdictionId": "24354"
}
}
},
{
"amount": 0.67,
"attributes": {
"taxRate": 0.045,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "CITY",
"jurisdictionId": "25353"
}
}
},
{
"amount": 0.06,
"attributes": {
"taxRate": 0.00375,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "METROPOLITAN COMMUTER TRANSPORTATION DISTRICT",
"jurisdictionType": "DISTRICT",
"jurisdictionId": "79774"
}
}
}
]
},
"updatedAt": "2024-06-24T09:07:50.155Z",
"createdAt": "2024-06-24T09:07:50.155Z"
}
]
},
"adjustments": {
"total": 7,
"collection": [
{
"id": "c18aa476-97a7-4f31-a2ae-528adb3d6e84",
"price": {
"amount": 7
},
"reason": "DelayedOrder",
"attributes": {
"reasonDescription": "Price Adjustment due to delayed shipping"
},
"updatedAt": "2024-06-24T09:07:51.960Z",
"createdAt": "2024-06-24T09:07:51.960Z"
}
]
},
"addresses": {
"476e673c-10c1-4bd6-b83d-26d403b5a735": {
"id": "476e673c-10c1-4bd6-b83d-26d403b5a735",
"name": {
"first": "Jane",
"last": "Doe"
},
"email": "jane.doe@gmail.com",
"phone": {
"number": "9050123102",
"type": "MOBILE"
},
"addressLine1": "888 Broadway",
"addressLine2": "Street 2",
"addressLine3": "Stars Hollow",
"city": "New York",
"region": "NY",
"country": "US",
"postalCode": "10003",
"updatedAt": "2024-06-24T09:07:41.463Z",
"createdAt": "2024-06-24T09:07:41.463Z"
},
"9f615749-35ef-43e7-adfc-3369eb3b05e8": {
"id": "9f615749-35ef-43e7-adfc-3369eb3b05e8",
"name": {
"first": "Joe",
"last": "Cooper"
},
"email": "joe.cooper@mail.com",
"phone": {
"number": "+1-5807769338",
"type": "MOBILE"
},
"addressLine1": "92 Landon",
"addressLine2": "Street 1",
"addressLine3": "5th Avenue",
"city": "New York",
"region": "NY",
"country": "US",
"postalCode": "10006",
"updatedAt": "2024-06-24T09:07:43.138Z",
"createdAt": "2024-06-24T09:07:43.138Z"
}
},
"lineItems": {
"total": 1035,
"collection": [
{
"id": "75c41689-7bc5-4775-8d72-c7821d38ed9c",
"sku": "SKU2",
"refId": "41",
"quantity": 2,
"priceListId": "100000",
"position": 1,
"price": {
"unit": 500,
"amount": 1000
},
"fees": {
"total": 10,
"collection": [
{
"id": "e3a734c6-d496-43e2-8912-881b44d5f083",
"name": "giftingFee",
"price": {
"amount": 10
},
"taxable": true,
"attributes": {
"message": "regular"
},
"tax": {
"total": 0.89,
"collection": [
{
"amount": 0.4,
"attributes": {
"taxRate": 0.04,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "STATE",
"jurisdictionId": "24354"
}
}
},
{
"amount": 0.45,
"attributes": {
"taxRate": 0.045,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "CITY",
"jurisdictionId": "25353"
}
}
},
{
"amount": 0.04,
"attributes": {
"taxRate": 0.00375,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "METROPOLITAN COMMUTER TRANSPORTATION DISTRICT",
"jurisdictionType": "DISTRICT",
"jurisdictionId": "79774"
}
}
}
]
},
"updatedAt": "2024-06-24T09:07:53.712Z",
"createdAt": "2024-06-24T09:07:53.712Z"
}
]
},
"adjustments": {
"total": 5,
"collection": [
{
"id": "b36d4bf0-3e10-40fb-b629-7f7760bbadcc",
"price": {
"amount": 5
},
"reason": "Item was a sale item 2 days ago",
"attributes": {
"type": "retail"
},
"updatedAt": "2024-06-24T09:07:55.423Z",
"createdAt": "2024-06-24T09:07:55.423Z"
}
]
},
"fulfillment": {
"id": "e8d9d243-80cf-48a3-bf3d-765b55c2bca9",
"inventory": {
"type": "availableToPurchase",
"channels": {
"type": "WEB_PICKUP",
"locationNumber": "15",
"channelId": "12"
}
}
},
"attributes": {},
"tax": {
"total": 88.75,
"collection": [
{
"amount": 40,
"attributes": {
"taxRate": 0.04,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "STATE",
"jurisdictionId": "24354"
}
}
},
{
"amount": 45,
"attributes": {
"taxRate": 0.045,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "CITY",
"jurisdictionId": "25353"
}
}
},
{
"amount": 3.75,
"attributes": {
"taxRate": 0.00375,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "METROPOLITAN COMMUTER TRANSPORTATION DISTRICT",
"jurisdictionType": "DISTRICT",
"jurisdictionId": "79774"
}
}
}
]
},
"updatedAt": "2024-06-24T09:07:53.712Z",
"createdAt": "2024-06-24T09:07:48.783Z"
},
{
"id": "9a45a494-0cc5-49aa-b339-88e4659ede8b",
"sku": "SKU3",
"refId": "44",
"quantity": 3,
"priceListId": "100000",
"position": 2,
"price": {
"unit": 10,
"amount": 30
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"fulfillment": {
"id": "94b538bb-713f-464d-aa2e-d23ae6fd3115",
"inventory": {
"type": "availablePreorder",
"channels": {
"networkCode": "ShipToHome",
"type": "WEB_SHIP",
"channelId": "12"
}
}
},
"attributes": {},
"tax": {
"total": 2.66,
"collection": [
{
"amount": 1.2,
"attributes": {
"taxRate": 0.04,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "STATE",
"jurisdictionId": "24354"
}
}
},
{
"amount": 1.35,
"attributes": {
"taxRate": 0.045,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "CITY",
"jurisdictionId": "25353"
}
}
},
{
"amount": 0.11,
"attributes": {
"taxRate": 0.00375,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "METROPOLITAN COMMUTER TRANSPORTATION DISTRICT",
"jurisdictionType": "DISTRICT",
"jurisdictionId": "79774"
}
}
}
]
},
"updatedAt": "2024-06-24T09:07:48.783Z",
"createdAt": "2024-06-24T09:07:48.783Z"
}
]
},
"summary": {
"totalItems": 5,
"totalUniqueItems": 2
},
"fulfillments": {
"e8d9d243-80cf-48a3-bf3d-765b55c2bca9": {
"type": "SHIP_TO",
"refId": "6622d50d2eee4e4e124c7467",
"attributes": {
"dropOffMethod": false,
"WEB_CARRIER_MODE": "2DAY",
"proOrderShipDays": 2,
"shipmentInstructions": "Ring doorbell for 2nd Floor",
"radialShippingID": "ANY_2 DAY",
"promisedShipDate": "2023-02-10T18:31:31.784Z",
"taxCode": "FR1000",
"WEB_CARRIER_CODE": "ANY",
"storePickupEnabled": false
},
"originAddress": "",
"destinationAddress": "476e673c-10c1-4bd6-b83d-26d403b5a735",
"price": {
"amount": 10
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 0.89,
"collection": [
{
"amount": 0.4,
"attributes": {
"taxRate": 0.04,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "STATE",
"jurisdictionId": "24354"
}
}
},
{
"amount": 0.45,
"attributes": {
"taxRate": 0.045,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "CITY",
"jurisdictionId": "25353"
}
}
},
{
"amount": 0.04,
"attributes": {
"taxRate": 0.00375,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "METROPOLITAN COMMUTER TRANSPORTATION DISTRICT",
"jurisdictionType": "DISTRICT",
"jurisdictionId": "79774"
}
}
}
]
}
},
"94b538bb-713f-464d-aa2e-d23ae6fd3115": {
"type": "BOPIS",
"refId": "64b985ef9e16365c4d2b0083",
"attributes": {
"warehouseId": "6126819ec326fe0009f473ba",
"isPickup": true,
"taxCode": "FR1000"
},
"originAddress": "9f615749-35ef-43e7-adfc-3369eb3b05e8",
"destinationAddress": "476e673c-10c1-4bd6-b83d-26d403b5a735",
"locationId": "15",
"pickupPerson": {
"primary": {
"name": {
"first": "Jay",
"last": "Cooper"
},
"email": "jay.cooper@gmail.com",
"phone": {
"number": "+1-1153202801",
"type": "MOBILE"
}
}
},
"price": {
"amount": 30
},
"fees": {
"total": 0,
"collection": []
},
"adjustments": {
"total": 0,
"collection": []
},
"tax": {
"total": 2.67,
"collection": [
{
"amount": 1.2,
"attributes": {
"taxRate": 0.04,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "STATE",
"jurisdictionId": "24354"
}
}
},
{
"amount": 1.35,
"attributes": {
"taxRate": 0.045,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "NEW YORK",
"jurisdictionType": "CITY",
"jurisdictionId": "25353"
}
}
},
{
"amount": 0.12,
"attributes": {
"taxRate": 0.00375,
"taxType": "SALES",
"taxJurisdiction": {
"jurisdictionValue": "METROPOLITAN COMMUTER TRANSPORTATION DISTRICT",
"jurisdictionType": "DISTRICT",
"jurisdictionId": "79774"
}
}
}
]
}
}
},
"coupons": [
{
"code": "HAPPY10",
"updatedAt": "2024-06-24T09:07:57.295Z"
}
],
"appliedCoupons": [
{
"code": "HAPPY10",
"updatedAt": "2024-06-24T09:07:57.295Z"
}
],
"notAppliedCoupons": [],
"payments": {
"authorized": 1180.19,
"collection": [
{
"id": "43eaf31a-2ef6-403a-ace7-0cca0dee9d97",
"provider": "fabricmock",
"processor": "fabricmock",
"method": "CREDIT_CARD",
"methodType": "VISA",
"state": "AUTHORIZED",
"authorization": {
"amount": 1180.19,
"expiry": "",
"verifier": {
"type": "PAYMENT_TOKEN",
"key": "123"
}
},
"billToAddress": "476e673c-10c1-4bd6-b83d-26d403b5a735",
"cardDetails": {},
"attributes": {}
}
]
},
"channelId": "12",
"updatedAt": "2024-06-24T09:22:40.907Z",
"createdAt": "2024-06-24T09:07:37.140Z",
"errors": []
}
```
# Configuring Payment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-payment
This feature in Carts API allows users to add, update, and delete payment details. The cart maintains the state of each payment—pending, authorized, captured, and failed—as provided by the user, but it doesn't store tokens, which are expected from the System Integrator (SI).
## Prerequisites
The following prerequisites must be completed sequentially to configure a payment.
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Add an item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) to the cart.
## Payments Initialization
The cart displays authorized amounts and allows updates or removals of payments. Payments can be purged or held when the cart changes such as, price changes. The cart also verifies the authorized payment amount against the cart total.
The following code sample provides an example of the structure of payment information and status in the response:
```json
{
"provider": "fabricmock",
"processor": "fabricmock",
"method": "CREDIT_CARD",
"methodType": "VISA",
"state": "PENDING",
"authorization": {
"amount": 520.0,
"expiry": "",
"verifier": {
"type": "PAYMENT_TOKEN",
"key": "{{payment_token}}"
}
},
"billToAddress": "{{addressId}}",
"cardDetails": null,
"attributes":{
"orderSource": "ecommerce",
"expirationDate": "0224",
"requestedDate": "2022-01-27T16:15:58-05:00",
"paymentDate": "2022-01-27T16:15:58-05:00",
"billToId": "213321"
}
}
```
As the cart can contain multiple payments, they are shown as a collection. The authorized amount is the sum of all payments with the **AUTHORIZED** state added to the cart as in the following example:
```json
"payments": {
"authorized": 0,
"collection": [
{
"provider": "fabricmock",
"processor": "fabricmock",
"method": "CREDIT_CARD",
"methodType": "VISA",
"state": "PENDING",
"authorization": {
"amount": 520.0,
"expiry": "",
"verifier": {
"type": "PAYMENT_TOKEN",
"key": "{{payment_token}}"
}
},
"billToAddress": "{{addressId}}",
"cardDetails": null,
"attributes":{
"orderSource": "ecommerce",
"expirationDate": "0224",
"requestedDate": "2022-01-27T16:15:58-05:00",
"paymentDate": "2022-01-27T16:15:58-05:00",
"billToId": "213321"
}
}
]
}
```
## Examples
### Adding payments with the `CAPTURED` status to the cart
Use the [create a payment](/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments) endpoint to add a `CAPTURED` payment method to the cart as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/ba0e93f5-e47f-4b0d-bac8-6233b67ef65f/payments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Authorization: {authToken}' \
--data '{
"provider": "fabricmock",
"processor": "fabricmock",
"method": "CREDIT_CARD",
"methodType": "VISA",
"state": "CAPTURED",
"authorization": {
"amount": 500.0,
"expiry": "",
"verifier": {
"type": "PAYMENT_TOKEN",
"key": "{{payment_token}}"
}
},
"billToAddress": "46622c9c-604c-4f8c-8bcf-2a393a572839",
"cardDetails": null,
"attributes": {
"orderSource": "ecommerce",
"expirationDate": "0224",
"requestedDate": "2022-01-27T16:15:58-05:00",
"paymentDate": "2022-01-27T16:15:58-05:00",
"billToId": "213321"
}
}
'
```
A successful response to `carts/{cartId}/payments` provides a payments object as the following example:
```json
"payments": {
"authorized": 0,
"collection": [
{
"provider": "fabricmock",
"processor": "fabricmock",
"method": "CREDIT_CARD",
"methodType": "VISA",
"state": "CAPTURED",
"authorization": {
"amount": 500.0,
"expiry": "",
"verifier": {
"type": "PAYMENT_TOKEN",
"key": "{{payment_token}}"
}
}
},
"billToAddress": "46622c9c-604c-4f8c-8bcf-2a393a572839",
"cardDetails": null,
"attributes":{
"orderSource": "ecommerce",
"expirationDate": "0224",
"requestedDate": "2022-01-27T16:15:58-05:00",
"paymentDate": "2022-01-27T16:15:58-05:00",
"billToId": "213321"
}
]
}
```
### Adding payments with the `AUTHORIZED` status to the cart
Use the [create a payment](/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments) endpoint to add `AUHTORIZED` payments to the cart as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/ba0e93f5-e47f-4b0d-bac8-6233b67ef65f/payments' \
--header 'Content-Type: application/json' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Authorization: {authToken}' \
--data '{
"provider": "fabricmock",
"processor": "fabricmock",
"method": "CREDIT_CARD",
"methodType": "VISA",
"state": "AUTHORIZED",
"authorization": {
"amount": 500.0,
"expiry": "",
"verifier": {
"type": "PAYMENT_TOKEN",
"key": "{{payment_token}}"
}
},
"billToAddress": "46622c9c-604c-4f8c-8bcf-2a393a572839",
"cardDetails": null,
"attributes": {
"orderSource": "ecommerce",
"expirationDate": "0224",
"requestedDate": "2022-01-27T16:15:58-05:00",
"paymentDate": "2022-01-27T16:15:58-05:00",
"billToId": "213321"
}
}
'
```
A successful response to `carts/{cartId}/payments` provides a payments object as in the following example:
```json
"payments": {
"authorized": 500.0,
"collection": [
{
"provider": "fabricmock",
"processor": "fabricmock",
"method": "CREDIT_CARD",
"methodType": "VISA",
"state": "AUTHORIZED",
"authorization": {
"amount": 500.0,
"expiry": "",
"verifier": {
"type": "PAYMENT_TOKEN",
"key": "{{payment_token}}"
}
}
},
"billToAddress": "46622c9c-604c-4f8c-8bcf-2a393a572839",
"cardDetails": null,
"attributes":{
"orderSource": "ecommerce",
"expirationDate": "0224",
"requestedDate": "2022-01-27T16:15:58-05:00",
"paymentDate": "2022-01-27T16:15:58-05:00",
"billToId": "213321"
}
]
}
```
# Configuring Search Cart
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-search-cart
This feature in Carts API allows the user to search the cart by the following parameters:
* Cart Status
* Order Number
* Customer Information
* Promotion Codes
* Created/Updated Date Range
* Channel ID
## Prerequisites
* A cart that needs to be searched is created with the required parameters using the [create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint.
## Search Cart Initialization
The search endpoint returns a paginated response, displaying the first 10 search results by default. The `total` field in the response indicates the number of results found for the search query, capped at 10,000 results.
For queries that exceed this `limit`, use an `offset`. Querying many carts through this endpoint isn't recommended, as it's intended for basic use cases to retrieve a limited number of carts rather than for analytics purposes.
The following code sample provides the structure of `limit`, `offset`, and `total` in the response when searching for a cart:
```json
{
"query": {
"limit": 20,
"offset": 0,
"total": 3
},
"data": [
{
...
}
]
}
```
## Examples
### Retrieving a cart with an order number
Use the [search for multiple carts](/v3/cart-and-checkout/api-reference/carts-v3/carts/search) endpoint and include the order number in the request body as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/search' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--header 'Authorization: {authToken}' \
--data '{
"offset": 0,
"limit": 20,
"filter": {
"orderNumber": "O1232",
"updatedAt": {
"start": "2024-03-27T06:06:53.709Z",
"end": "2024-06-29T06:06:53.709Z"
}
}
}'
```
### Retrieving a cart with the date range and the `customerId`
Use the [search for multiple carts](/v3/cart-and-checkout/api-reference/carts-v3/carts/search) endpoint and include the date range and the `customerId` in the request body as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/search' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--header 'Authorization: {authToken}' \
--data '{
"offset": 0,
"limit": 20,
"filter": {
"customer": {
"id": "testCustomerId",
"sessionId": "testSessionId"
},
"createdAt": {
"start": "2024-03-27T06:06:53.709Z",
"end": "2024-06-29T06:06:53.709Z"
}
}
}'
```
### Retrieving a cart with the `customerId` and `promotionTitles`
Use the [search for multiple carts](/v3/cart-and-checkout/api-reference/carts-v3/carts/search) endpoint and include `customerId` and promotionTitles\` in the request body as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/search' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--header 'Authorization: {authToken}' \
--data '{
"offset": 0,
"limit": 20,
"filter": {
"promotionTitles": [
"FREE_SHIPPING"
],
"customer": {
"id": "testCustomerId",
"sessionId": "testSessionId"
}
}
}'
```
# Configuring Split Line Items
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-split-line-items
Splitting line items allows the user to split a single line item into multiple line items based on quantity.
## Prerequisites
The following prerequisites must be completed sequentially to configure splitting line items.
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Add an item to the cart](/v3/cart-and-checkout/api-reference/carts-v3/items/items) that needs to be split.
The sum of the quantities of the split items must not exceed the total quantity of the line item.
## Split Line Items Initialization
All information from the original item is copied to the split items except for the item ID, quantity, `createdAt`, and `updatedAt` timestamps. Adjustments, fees, and fulfillment can be copied to split items based on configuration. The default setting is `NONE`, meaning these elements aren't copied to split items unless specified.
The following code sample provides an example for split line items request payload:
```json
{
"quantities": [2,1],
"adjustmentsBehaviour": "COPY",
"feesBehaviour": "COPY",
"fulfillmentBehaviour": "COPY"
}
```
The `quantities` array allows users to specify the number and quantity of split items. The total number of split items is `quantities.size + 1`.\
In this example, a line item with `6` units and `quantities` set to `[2, 1]` splits into `3` items with `quantities [2, 1, 3]`, where the last quantity represents the remainder. With `adjustmentsBehaviour`, `feesBehaviour`, and `fulfillmentBehaviour` set to `COPY`, adjustments, fees, and fulfillment details from the original item are copied to each split item.
The quantities array lets users specify the number and quantity of split items. The total number of split items will be `quantities.size` plus 1.
For example, if a line item has 6 units and quantities is `[2, 1]`, it will be split into 3 items with quantities `[2, 1, 3]`, where the last quantity is the remainder.
The following code sample provides an example for split line items request payload with the `quantities`:
### Split line items request payload
```json
{
"quantities": [2,1],
"adjustmentsBehaviour": "COPY",
"feesBehaviour": "COPY",
"fulfillmentBehaviour": "COPY"
}
```
## Examples
### The item is available in limited quantities at multiple warehouses
Use the [split line items](/v3/cart-and-checkout/api-reference/carts-v3/item-actions/split) endpoint to split and ship items from different locations as in the following example:
In this example, 4 units are available in Warehouse A, and the remaining units are in Warehouse B.
```curl
curl --location '{{modular_cart_domain}}/carts/9877b7ab-092d-4d67-ad42-b070ac778df8/items/806d6671-801d-4554-976d-0d38e525a852/actions/split' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--data '{
"quantities": [4,5],
"adjustmentsBehaviour": "COPY",
"feesBehaviour": "COPY",
"fulfillmentBehaviour": "COPY"
}'
```
### Sending individual items in the order to different addresses as gifts
Use the [split line items](/v3/cart-and-checkout/api-reference/carts-v3/item-actions/split) endpoint to split items in the cart and send them to different addresses as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/9877b7ab-092d-4d67-ad42-b070ac778df8/items/806d6671-801d-4554-976d-0d38e525a852/actions/split' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--data '{
"quantities": [4,5],
"adjustmentsBehaviour": "COPY",
"feesBehaviour": "COPY",
"fulfillmentBehaviour": "COPY"
}'
```
### Splitting items for promotional bundles or discounts
Use the [split line items](/v3/cart-and-checkout/api-reference/carts-v3/item-actions/split) endpoint to split the items in the cart and item prices will adjust appropriately as in the following example:
```curl
curl --location '{{modular_cart_domain}}/carts/9877b7ab-092d-4d67-ad42-b070ac778df8/items/806d6671-801d-4554-976d-0d38e525a852/actions/split' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--data '{
"quantities": [4,5],
"adjustmentsBehaviour": "COPY",
"feesBehaviour": "COPY",
"fulfillmentBehaviour": "COPY"
}'
```
# Configuring Taxes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/configuring-taxes
This feature in Carts API allows users to levy taxes on resources such as items, fulfillment, and fees. Fees are optionally taxable.
### Prerequisites
The following prerequisites must be completed sequentially to configure a fulfillment.
1. [Create a cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts).
2. [Create a fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) to add fulfillment taxes.
3. [Create an item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) to add item taxes.
4. Create either [item](/v3/cart-and-checkout/api-reference/carts-v3/item-fees/create-item-fees), [fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-fees/add-fulfillment), or [cart fees](/v3/cart-and-checkout/api-reference/carts-v3/fees/create-fees) to add fee taxes.
### Tax Initialization
You can add taxes on the cart, cart fees, cart fulfillment, items, item fees, item fulfillment, and fulfillment fees through a single request. To ensure that fees are subject to tax, the fees should be marked as taxable.
You can apply taxes at multiple levels, including individual items, fulfillment, or fees. The tax resource maintains a consistent structure across all levels.
The following code sample provides an example of tax object structure in request payload:
### Tax resource
```json
{
"amount": 4.0,
"attributes": {
"rate": 5,
"message": "5% tax"
}
}
```
For accurate tax calculation, address information is required. While items, fulfillment, and their fees already have associated addresses from the fulfillment information, the cart fee requires a separate field for the address to be provided.
The following code sample provides an example tax object structure in a request payload with the `destinationAddress` and `originAddress`:
### Tax fee resource with addresses
```json
{
"amount": 4.0,
"attributes": {
"rate": 5,
"message": "5% tax"
},
"taxDetails":{
"destinationAddress": "{{destinationAddressId}}",
"originAddress": "{{originAddressId}}"
}
}
```
## Examples
### Applying sales taxes on items and fulfillments
Use the [replace tax data](/v3/cart-and-checkout/api-reference/carts-v3/validations/add-tax) endpoint to create sales taxes on items and fulfillments as in the following example:
```curl
curl --location --request PUT '{{modular_cart_domain}}/carts/ba0e93f5-e47f-4b0d-bac8-6233b67ef65f/tax' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--header 'Authorization: {authToken}' \
--data '{
"items": [
{
"id": "c0f1c36d-35e6-4098-94a7-3b92fba089d7",
"tax": [
{
"amount": 10,
"attributes": {
"rate": 8
}
},
{
"amount": 2,
"attributes": {
"rate": 3
}
}
]
}
],
"fulfillments": [
{
"id": "a7f51053-6fbd-42a6-8fbc-303bfc16c13f",
"tax": [
{
"amount": 10,
"attributes": {
"rate": 1
}
},
{
"amount": 4,
"attributes": {
"VAT": "enabled"
}
}
]
}
]
}'
```
### Applying sales taxes on items, fulfillments and the service charge
Use the [replace tax data](/v3/cart-and-checkout/api-reference/carts-v3/validations/add-tax) endpoint to create sales taxes on items and fulfillments, and service charge which are also taxable as in the following example:
Ensure that fulfillment fees are set to taxable.
```json
{
"id": "d4e9f8dc-c0ae-4ef3-be8b-bd23579a4dd3", // feeId
"name": "fulfillment-fee",
"price": {
"amount": 5.0
},
"taxable": true,
"attributes": {
"message": "Shipping fee"
},
"tax": {
"total": 0,
"collection": []
},
"updatedAt": "2024-09-02T15:21:19.874Z",
"createdAt": "2024-09-02T15:21:19.874Z"
}
```
Add tax to the cart `curl`.
```curl
curl --location --request PUT 'https://dev.cart.fabric.inc/beta/v3/modular/carts/ba0e93f5-e47f-4b0d-bac8-6233b67ef65f/tax' \
--header 'x-fabric-tenant-id: {tenantId}' \
--header 'Content-Type: application/json' \
--header 'Authorization: {authToken}' \
--data '{
"items": [
{
"id": "2c51a3da-e3ff-40ef-bb5b-3e191892293c",
"tax": [
{
"amount": 10,
"attributes": {
"rate": 8
}
},
{
"amount": 2,
"attributes": {
"rate": 3
}
}
]
}
],
"fulfillments": [
{
"id": "131b9a58-8ee5-41dc-a79e-736ca934b435",
"tax": [
{
"amount": 10,
"attributes": {
"rate": 1
}
},
{
"amount": 4,
"attributes": {
"VAT": "enabled"
}
}
],
"fees": [
{
"id": "d4e9f8dc-c0ae-4ef3-be8b-bd23579a4dd3",
"tax": [
{
"amount": 1,
"attributes": {
"rate": 1
}
}
]
}
]
}
]
}'
```
# Getting Started with fabric Carts API
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/developer-guide/getting-started
This guide provides instructions to help you get started with fabric Carts API, from initial setup to basic usage.
## Target Audience
* Third-party developers who set up Carts on behalf of merchants.
* The fabric developers who work with Carts.
### Knowledge and skill requirements
The target audience should:
* Understand [REST APIs](https://fabric.inc/blog/developer/api-endpoint), in the context of e-commerce.
* Get familiar with [fabric APIs](/v3/getting-started/api-guides/getting-started-with-fabric-apis).
* Know the cart [configuration](/v3/cart-and-checkout/api-reference/carts-v3/configuration-behaviors) and [merge](/v3/cart-and-checkout/api-reference/carts-v3/merge-carts-behaviors) behaviors.
* Have access to development tools capable of interacting with HTTP-based APIs, such as Postman or cURL for testing.
## Workflow
The following steps outline the Carts process, from creating a cart to generating an order draft:
1. [Create an empty cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) for shoppers to add products for purchase.
You can customize the cart settings by sending configuration details in the request body. Otherwise, the default settings apply. For more information about cart configuration behaviors, see [Configuration Behaviors](/v3/cart-and-checkout/api-reference/carts-v3/configuration-behaviors) section. If the initial request is successful, a response body containing cart information, such as `cartId` and configurations is returned.
2. [Create a destination address](/v3/cart-and-checkout/api-reference/carts-v3/addresses/create-addresses) to fulfill the order in the cart.
You can [delete](/v3/cart-and-checkout/api-reference/carts-v3/addresses/delete-addresses) or [update](/v3/cart-and-checkout/api-reference/carts-v3/addresses/update-addresses) the address. If the initial request is successful, a response body that contains the address information is returned.
3. [Create all the necessary fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) information for the cart.
You can [partially update](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/add-fulfillments-attribute) or [delete](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/delete-fulfillments-attribute) fulfillment attributes, [fully update](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/update-fulfillments) fulfillments, or [delete them entirely](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/delete-fulfillments) if needed. If the initial request is successful, a response body containing fulfillment information is returned.
4. [Add items](/v3/cart-and-checkout/api-reference/carts-v3/items/items) to the cart.
You can [update](/v3/cart-and-checkout/api-reference/carts-v3/items/update-items) or [delete](/v3/cart-and-checkout/api-reference/carts-v3/items/delete-items) items in the cart. If the initial request is successful, a response body that contains the cart information, including the items that are added, is returned.
5. (Optional) [Apply any eligible coupons](/v3/cart-and-checkout/api-reference/carts-v3/coupons/add-coupons) for the cart.
Use [remove the coupon](/v3/cart-and-checkout/api-reference/carts-v3/coupons/remove-coupons) endpoint to remove coupons if necessary. If the initial request is successful, a response body that contains the cart information, including the coupon information, is returned.
6. [Add tax rules](/v3/cart-and-checkout/api-reference/carts-v3/validations/add-tax) for the cart. Look up the usage as tax rates vary by location. You must apply the appropriate taxes for each area.
If the initial request is successful, a response body that contains cart information with the updated tax rates is returned.
7. [Add a payment method](/v3/cart-and-checkout/api-reference/carts-v3/payments/add-payment-attributes) for the cart.
You can [partially update](/v3/cart-and-checkout/api-reference/carts-v3/payments/add-payment-attributes) or [delete payment attributes](/v3/cart-and-checkout/api-reference/carts-v3/payments/delete-payment-attributes) and [fully update](/v3/cart-and-checkout/api-reference/carts-v3/payments/update-payments) or [delete payment methods entirely](/v3/cart-and-checkout/api-reference/carts-v3/payments/delete-payments). If the initial request is successful, a response body containing payment information is returned.
8. [Create an order draft](/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/create-order-drafts). If the payment is authorized, then the order is shipped.
If the initial request is successful, the response containing all the necessary information for an order to ship is returned. Before submitting the order details, ensure that all the information for the order is correct.
# Overview
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/overview
### Carts 3.0
fabric's Cart API is used to add, update, and remove items from your Storefront cart, either as a guest or logged-in user. It also supports merging carts when transitioning from a guest to a logged-in user, and applying coupons and other attributes, such as gift wrapping, to line items. The API supports advanced features like using multiple carts within a B2B organization, sharing carts, and providing a unified cart experience for multi-region and multi-brand businesses.
The Cart API supports configurability for end-to-end order processing actions by adding items to the cart, handling pre-checkout tasks like billing, shipping, and payment details, and proceeding to checkout, where orders are processed and confirmed by fabric's Order Management System (OMS).
Cart 3.0 is modular, enabling users to select only the necessary endpoints. It integrates seamlessly with both fabric and non-fabric services.
### Cart orchestrator
If you're using other fabric services, you can leverage the Cart Orchestrator endpoints for seamless integration with those services.
### Contact and support
If you have any additional questions, please reach out to the Cart support team at [support.cnc@fabric.inc](mailto:support.cnc@fabric.inc).
# BigCommerce Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/bigcommerce-integration-1
## Adding the BigCommerce Integration
1. To access Integrations, click your account name in the menu at the top of the page.
A dropdown menu appears.
2. Select **Retailer Settings**.
The **Retailer Settings** page is displayed.
3. Click **Integrations**.
The **Integrations** page is displayed.
4. Click **Add Integration**.
The **Add Integration** window is displayed with a list of available integrations.
5. Click **Add** next to the BigCommerce tile.
The **Add BigCommerce Integration** window is displayed.
6. In the **Store Identifier** field, enter your BigCommerce store identifier.
7. In the **Store Token** field, enter your BigCommerce store token.
8. Click **Add Integration**
After successful authorization, BigCommerce will show up on the list of the integrations on the **Integrations** page for Dropship.
## Accessing Integration Options
1. To access your Dropship Integrations, click your account name.
2. In the dropdown that appears, select **Merchant Settings**.
The **Merchants Settings** page is displayed.
3. Click **Integrations**.
The **Integrations** page is displayed.
4. Next to the BigCommerce logo, click **Options**.
The **Options** window is displayed.
5. Select one of the following:
* [Configuration](#configuration): The **Configuration** page allows you to make changes to the basic BigCommerce setup and add or disable webhooks.
* [Webhook History](#webhook-history): The **Webhook History** page shows a list of previous webhook callbacks.
## Configuration
The Configuration page allows you to make changes related to how order and transaction information is shared between Dropship and BigCommerce.
### Enable or disable webhooks
The following webhooks are available for BigCommerce and can be enabled or disabled at any time:
| Webhook | Description |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Orders** | fabric automatically sends purchase orders from your supplier partners directly to your BigCommerce account. Enabling this webhook means that orders from ALL of your supplier connections in fabric will flow through this webhook. |
| **Inventory** | Dropship requires frequent inventory updates to reduce cancellations due to low or no stock. The inventory webhook syncs inventory with Dropship automatically. Turn this webhook off if you prefer to update inventory manually. |
| **Fulfillment** | Dropship requires frequent order fulfillment updates to track orders. The fulfillment webhook syncs order fulfillment data with Dropship automatically. Turn this webhook off if you prefer to update order fulfillment data manually. |
## Webhook History
To access the **Webhook History** page, follow the steps outlined in [Accessing Integration Options](#accessing-integration-options).
The Webhook History page shows details of all the events that have been captured by Dropship from your BigCommerce store:
* **ID:** The ID of the webhook as captured by Dropship.
* **Topic:** The topic that was captured as part of the webhook.
* **Status:** The status of the webhook (success or failure).
* **Payload:** The data that was sent in the webhook payload.
* **Received:** The timestamp of when the webhook was captured. This is in the user’s local time zone.
You can use the filters at the top of the table to adjust the webhook information you see.
# Publishing Products to BigCommerce
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/bigcommerce-publish-products
## Publishing Products Outside of a Proposal
If a supplier isn't submitting a proposal to you and is importing products through a BigCommerce import, products can be published directly from the **Products Dashboard**.
1. In the main menu, click **Products**.
The products page is displayed.
2. Click **Products** located in the **Browse & Review** section.
3. Select the products that you wish to publish. Alternatively, you can check the top box to select all products on the first page.
4. Click **Actions**.
The **Publish Products** window is displayed.
5. In the **Platform** field, select BigCommerce.
6. In the **Template** field, select **BigCommerce Export Template**.
7. Click **Publish Products**.
## Publishing Products on a Proposal
Suppliers that have submitted product proposals can be approved and published in the **Proposal** menu.
1. In the **Proposal Summary** page, click **Approve**.
The proposal state is changed to **Ready to Publish**.
2. In the **Assortment Proposal** page, click **Ready to Publish**.
A list of approved proposals containing the items ready to be published is displayed.
3. To review a proposal, click the proposal **ID**.
The **Proposal Detail** page is displayed.
4. Click **Approve Products**.
The **Approve Proposal** window is displayed.
5. In the **Do you also want to publish products on this proposal to an external platform?** field, select **Yes**.
6. In the **Platform** field, select **BigCommerce**.
7. In the **Template** field, select **BigCommerce Export Template**.
8. Click **Approve**.
## Checking a Job Status
To confirm that products were successfully created in BigCommerce, you can check the **Jobs Report** in Dropship to review the status of the job itself.
1. Click on your account name in the top right hand corner of the navigation bar.
2. Click **Job Reports**.
The **Job Status** window is displayed with the most recent jobs at the top.
3. Click the job **ID** for the **push\_products** job.
The job report is displayed.
If any errors occurred when attempting to push products to BigCommerce, we recommend filing a ticket with support. Please provide [fabric support](https://support.fabric.inc/hc/en-us/requests/new) with the following:
* The error Job ID
* Vendor Name
* Product details (new products added X date, or entire catalog)
# fabric Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/fabric-integration
The fabric Dropship integration seamlessly integrates with fabric Catalog and fabric Orders.
## Prerequisites
* Ensure that you have **Administrator** privilege to fabric. For more detailed information on these settings, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-orders-roles) topic.
## Configuring the Integration
1. In the Dropship UI company name top-nav, click **Merchant Settings**.
The Merchant Settings page is displayed.
2. Click **Integrations**.
The Integrations page is displayed.
3. Click **Add integration**.
The Add Integration window is displayed.
4. In the **Add Integration** window, click **Add** for the fabric option.
The Add fabric Integration window is displayed.
5. In the fabric Account field, enter your fabric account ID.
To find your fabric account ID, see the guide for [getting your account ID](/v3/platform/settings/account-details/account-details).
6. (Optional) In the **Location Number** field, enter a location number.
This option allows you to connect to a specific location instead of the entire platform.
7. Click **Add Integration**.
You are redirected to the **Integrations** page with the fabric integration now visible.
## Updating Settings
1. In the Dropship UI company name top-nav, click **Merchant Settings**.
The Merchant Settings page is displayed.
2. Click **Integrations**.
The Integrations page is displayed.
3. Click **Add integration**.
The Add Integration window is displayed.
4. In the fabric integration section, click **Options > Configuration**.
The **fabric Settings** page is displayed.
5. (Optional) to update the **Location Number** field, enter a new location number and click update.
### Selecting a webhook
1. To select a webhook, in the **fabric Settings Orders** section, use the **Select Webhook** field.
2. Click the Select Webhook field and select an available webhook.
3. Click **Enable Integration**.
The integration is Synced and enabled.
### Disabling the integration
1. Follow the steps outlined in [Updating Settings](#Updating-Settings).
2. In the Orders section, click **Disable Integration**.
# Import Products & Attributes
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/import-products---attributes
Suppliers send product details to their retail partners either through proposals within the fabric Dropship system or through spreadsheets that retailers use to create Import Requests, based on their connection settings with the supplier.
As a retailer, upon receiving products in your catalog from the supplier, you may need to update some of the products' information before publishing them to your store. This is done by updating the items using the **Import Products & Attributes** feature.
## Procedure
Click **Products** in the menu across the top of Dropship. On the Products page, select **Import Products & Attributes**.
On the **Import Products** page, use the **Select Template** dropdown to select a template for the products you’re importing. This will ensure that the data in the file you import is mapped to the product in your store correctly.
Use the Download Empty Template and/or Show Headers buttons to verify you’re uploading to the intended template and format. To learn about templates and how to create them, refer to the [Templates](/v3/dropship/dropship-retailers/settings/templates) page.
Upload the product spreadsheet using the **Select File** field and click **begin import**.
If there are errors present in the template file the following files are made available:
* **A list of SKUs:** For every import with one or more errors, an Error Report file is generated. This report includes all SKUs and provides an itemized list of errors corresponding to each SKU.
* **A template with only errored items:** A separate file is generated that includes only the items with one or more errors. This allows you to fix these specific items and re-import them without needing to handle the entire original file again.
Once the import is complete, you will see a summary of the import process, including its status.
## Import History
To see a list of all product spreadsheets uploaded previously, visit the Products page and click on the **History** link next to **Import Products & Attributes**.
The Import History page shows a sortable list of all previous imports.
| Field | Description |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ID** | The import’s unique, fabric-generated identification number. Click the ID to see more detailed information about the import. |
| **Data** | The type of data import. |
| **File** | The name of the file that was imported. Click the file name to download the original file. |
| **Queued** | The date and time the import was initiated. |
| **Processed** | The date and time the import was processed. |
| **Completed** | The date and time the import was completed. |
| **Status** | The result of the import.
- **Success** is displayed when the file is processed successfully.
- **Created with error** is displayed when the file is processed partially but some items had one or more errors.
- **Failed** is displayed when the file fails to upload or when no item is created or updated. |
If you encounter any import error, check the **Jobs Report** by clicking on your account name at the top right corner of the navigation bar.
Select **Jobs Report**.
The most recent job should appear as **Import Products**. Click on the job ID in blue text review the error.
In case of errors during import, we recommend filing a support ticket. Include the **Job ID** and any other relevant information, such as Vendor Name and file, if available.
# Submit and Manage Import Requests
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/import-requests
Import requests allow retail partners to preview a supplier's products before the data is added to the Product Catalog.
When an import request is submitted to a supplier, the supplier receives a notification from fabric notifying them that you are waiting for them to review and approve the products.
## Submitting an Import Request
1. In the main menu, click **Products**.
The products page is displayed.
2. Click **Import Requests**.
The **Import Requests** page is displayed.
3. Click **Upload**.
4. In the **Connection** field, select a supplier.
5. In the **File Template** field, select an import template.
If you are unsure of what template to select, check your current template setup in your merchant settings.
6. In the **Purpose** field, select a purpose.
7. (Optional) In the **Reference Number** field, provide details and additional context or identifiers.
8. In the \*\*Upload File \*\*section, drag and drop the product file you with to upload.
9. Click **Request Approval from Supplier**.
The supplier receives a notification notifying them that you are waiting for them to review and approve the products.
## Managing Import Requests
1. In the main menu, click **Products**.
The products page is displayed.
2. Click **Import Requests**.
The **Import Requests** page is displayed.
On the **Import Requests** page you can view all the import requests submitted to your suppliers.
### Import statuses
**Pending** - The supplier has yet to approve or reject the import request. If the import request has been pending for an allotted amount of time, we recommend reaching out to the supplier directly to have them review the submitted file and approve.
**Approved** - The supplier has approved the requested products and these products should now be available to your team within your fabric Dropship account.
# Inventory
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/inventory
View and export inventory reports on both the item and supplier levels.
## Item level inventory
To access inventory positions on each item you are selling, navigate to the **Products** page and select **Inventory** within the **Browse & Review** section of the products page.
The Item Inventory page will provide you with a list of all items and their associated inventory positions.
You can search for an individual item or use the filters to create a specific inventory report.
All inventory reports can exported by using the **Export** button on the top right of the inventory page.
NOTE: if the supplier provides an estimated availability date for out of stock items, that date will appear underneath the inventory amount.
## Inventory by supplier
To access inventory status by Supplier, navigate to the **Products** page and click the blue **By Supplier** link within the **Inventory** section.
The **Inventory by Supplier** page is a high level status of each of your connected suppliers. It provides the number of items associated with each of your suppliers, the number of items that are in stock, the number of items that are out of stock, and the last time each supplier submitted inventory.
# Inviting Suppliers
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/inviting-suppliers
To invite a new supplier to your dropship program, click **Suppliers** in the top navigation menu.
Click **Invite Supplier** at the top-right of the page.
In the new window, enter the following details in the **Supplier Info** section:
* The name of the supplier.
* The primary contacts first name, last name, and email.
If the connection settings of the new supplier are different than your account's default settings, you can change those settings during the invite process by using the **Advanced Settings** on the invite form.
**Note:** Your account's default settings are set during the initial onboarding of the retailer with the help of the Customer Success Manager.
To invite a new supplier who will have different account settings:
* Check the **I want to override the settings below** box on the invite form.
* Select the settings you wish to create for this supplier using the following fields:
* **Default Fulfillment SLA**
* **Payment Terms**
* **Cost Model**
* **Returns & Customer Service Allowance**
* When the form is complete, click **Send Invitation**.
Your new supplier will receive an email from the Dropship Platform prompting them to sign in and begin the onboarding process. If the supplier requires more detail on how to use the Dropship Platform or has additional questions, they can schedule a call with a fabric Supplier Onboarding Specialist.
## Managing invitations
To manage the suppliers you have invited, navigate to the **Suppliers** page and click **Invitations**located in the **New Suppliers** section.
The **Invitations** page provides you with a list of all suppliers who you have sent an invitation to but have yet to access the platform.
If your supplier has not received the invite email, you can resend the email by clicking the **Resend** button next to that supplier.
## Activating new suppliers
Once a supplier accepts your invitation, they will move to the **Onboarding** section on the **Suppliers** page. You can opt into receiving a notification when your supplier has completed onboarding to know when they're ready for their connection to be activated.
To activate a new supplier, navigate to the **Supplier** page and click **Onboarding** within the **Browse Suppliers** section of the suppliers page.
This page provides you with a list of suppliers who have accepted your invite and in the process of setting up their account.
The **In Review** status means that the supplier has completed their onboarding and is ready for your team to activate them.
Click on the blue supplier link to pull up that suppliers detail page.
Click **Activate** on the top left of the **Supplier Detail** page.
**NOTE:** If you don't activate a new supplier, they won't be able to receive orders.
Once the supplier is **Active**, they will move from the **Onboarding** section to the **Active** section within the **Suppliers** page and they can begin receiving orders.
## Checking Onboarding Status
Once a supplier accepts your invitation, they will move to the **Onboarding** section on the **Suppliers** page. If a supplier is still in an **Onboarding** status and you want to check where they're at with their onboarding items, click on the blue supplier link to pull up that suppliers detail page.
On the **Supplier Detail** page, click **Onboarding** in the left connection menu to pull up the status of their onboarding.
# Invoices
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/invoices
View, export, and manage invoices for all dropship orders.
## Viewing and exporting invoices
1. To access invoices associated with your dropship orders, click **Orders**.
The **Orders** page is displayed.
2. Click **Invoices** located in the **Reports** section of the **Orders** dashboard.
The **Invoices** page is displayed.
3. To find an invoice report, use the filter options.
You can view and export reports.
4. To export your invoice report, click **Export**.
Your invoice report is sent through an email to the user who requested the export.
## Managing invoices
The fabric Dropship Platform provides you with the tools to manage invoices by updating their status to both **Acknowledged** and **Paid**.
1. To access invoices associated with your dropship orders, click **Orders**.
The **Orders** page is displayed.
2. Click **Invoices** located in the **Reports** section of the **Orders** dashboard.
The **Invoices** page is displayed.
3. Select the invoices you wish to update as **Acknowledged** or **Paid**.
4. To mark an invoice as **Acknowledged** or **Paid**, click **Actions**.
5. Two options appear, select **Accept Invoices** or **Mark Invoices as Paid**.
If you selected multiple invoices, all the invoices are updated.
The **Acknowledged** or **Paid** column is updated for the invoices.
# Loop Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/loop-integration
The Loop Dropship integration seamlessly integrates with fabric Catalog and fabric Orders.
## Prerequisites
* Ensure that you have **Administrator** privilege to fabric. For more detailed information on these settings, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control-orders-roles) section.
## Configuring the Integration
1. Submit a support request to [fabric customer success](https://support.fabric.inc/hc/en-us/requests/new) with the following details:
* `Loop_api_key` (Required)
* `Loop_webhook_secret` (Required)
* `Loop_rma_number_mapping` (Optional): The default mapping is with the `id` of the return. Retailers can use this option to map other values such as `order_name`. This field's value is set as the return merchandise authorization **RMA** number in Dropship.
* **Return to vendor warehouse** (Optional): Loop doesn't provide data on where the return is being shipped by default. The return to vendor warehouse credential is used to set up the shipping address on the return. Choose one of the following options:
* **True**: Create the return address on RMA to be set to the vendor's warehouse.
* **False**: RMA is created without any `shipTo` address. A tracking number is still available but no shipping address.
* Select one of the following webhooks:
* **Return Created**: This is the standard webhook for returns. Loop provides the `return_created` event and an RMA is created in fabric dropship.
* **Return Updated**: This webhook enables you to create a return without an initial tracking number allowing you to later update the return with the tracking number once available.
Loop doesn't support automatic enabling of webhooks for their API. Once set up, you need to manually enable the webhook on the Loop dashboard.
If a return fails to sync, fabric can identify the return based on the Webhook History ID, Order Number, or return ID. fabric will then retry retrieving the return information again.
# Create Purchase Order
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/orders/create-purchase-order
Generate a custom purchase order manually.
## Create order
To manually create a purchase order, select **Create Purchase Order** from the **More** dropdown menu on the **Orders** page.
Select **Create Purchase Order**.
You will be directed to the **Order Create** page to start manually creating your Purchase Order. Each field must be completed manually unless it's marked optional.
### Order details
| Field | Required Information |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Purchase Order Number** | Provide the purchase order number. |
| **Order Date** | Provide the purchase order date. |
| **Retailer Order Number** (Optional) | Use this field if an additional identifier is needed to reference the **Purchase Order Number**. For example, an Order Management System order number. |
| **Customer Order Number** (Optional) | Provide the customer order number if applicable. |
### Ship to
1. To enter a customer shipping address, click the ship to link.
2. Complete the **Add Ship To Address** form.
3. Click **Save**.
### Requested ship method
In the **Requested ship method** section, assign the shipping method.
Use the dropdown to select **Expedited** or **Ground**.
### Optional notes
In the notes section, you can add purchase order notes.
### Order lines
1. Select the supplier the order should be created against using the dropdown list.
2. Click **Add new line**.
Select the variant using the dropdown search bar.
3. Enter the quantity, price, and cost of the item.
4. Click **Add**.
5. Click **Create Order**.
The data is saved in the system for future reference.
# Managing cancels & backorders
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/orders/managing-cancels---backorders
Manage orders canceled or flagged as backordered by a supplier.
## Managing canceled orders
When orders are canceled by a supplier, retailers have the ability to acknowledge the cancelation. If you don't have an automated integration with fabric Dropship, you can acknowledge canceled orders directly within Dropship.
1. Click **Orders** in the top navigation.
The **Orders** page is displayed.
2. In the **Require Attention** section, click **New Cancels**.
The **Cancels** page is displayed with a table of canceled orders.
3. Select the canceled orders you wish to acknowledge by clicking the checkbox next to the order.
4. Click the **Actions** button and select **Acknowledge Cancels.**
The Acknowledge Cancels window is displayed.
5. Click **Acknowledge All Cancels**.
## Managing orders with backordered Items
When items on an order are marked as backordered by a supplier, retailers have the ability to acknowledge the backorder. If you don't have an automated integration with fabric Dropship, you can acknowledge orders with backordered items directly within Dropship.
1. Click **Orders** in the top navigation.
The **Orders** page is displayed.
2. In the **Require Attention** section, click **New Backorders.**
A list view of orders containing backordered items is displayed.
3. To open the order detail page, click the blue PO#.
The order details page is displayed.
On the order detail page you can view the date the supplier expects the item to be back in stock within the **Key Dates** section.
4. To acknowledge the backorder, click **Acknowledge Backorder** on the main **Order Detail** page.
# Order Detail
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/orders/order-detail
Search for and view detailed information on each order.
## Finding orders
If you know the **PO#** of the order you want to view, enter it in the search bar on the main **Orders** dashboard. From the results, click the **PO#** to view the [detail page](#order-detail-page).
### Advanced filtering
If you don't have the **PO#** available for the order you want to view, click **advanced** next to the search bar on the main **Orders** dashboard. You can filter by:
* PO Number (exact)
* PO Number (contains)
* Customer Order Number (exact)
* Customer Order Number (contains)
* Tracking Number
* Invoice Number
## Order detail page
The following fields and data are available on each individual **Order Detail** page.
* **Order Identifiers** - The order identifiers provide a breakdown of the supplier name, customer order number, purchase order number, and the fabric ID assigned to the order.
* **Shipping** - The shipping section provides the ship method information with the customer **Ship To Address**.
* **Key Dates** - The key dates capture all the important dates tied to the order such as the date of order creation, expected completion date, and the date the order was closed out. If there is a backorder date associated with the order it's displayed with other key dates.
* **Extras** - This section provides miscellaneous information against the order.
* A direct link to the order packing slip; Dropship automatically generates a packing slip for each order once an order has been created within the platform. If a supplier doesn't wish to generate packing slips outside of the platform, the supplier can access the packing slip within the individual order.
* Gift Message; If a customer provides a gift message when placing an order, the information can be found within the individual order. The gift message will also appear on the packing slip.
**Order Lines** - The Order Lines section within the individual order screen provides you with a simple overview of the products available on the order. The item description and SKU are captured on the left-hand side while the units ordered breakdown is captured on the right-hand side. To view the pricing associated with the line item you can change the view using the **View** dropdown on the line item.
**Tracking Numbers** - The Tracking Numbers section within the individual order screen provides you with a simple overview of the shipment information that's available on the order. The tracking number can be clicked to open a pop-up providing complete Shipment Detail information.
Clicking on the tracking number in the shipment detail popup will re-direct you to the carrier site for additional tracking details.
**Invoices** - The Invoices section within the individual order screen provides your team with a simple overview of the invoice information that's available on the order. The invoice number can be clicked on to open a pop-up providing complete invoice detail information.
**Order Messages** - This section contains all the messages shared on the order between you and the supplier.
**Order Activity** - This section contains a running list of all activity associated with the order.
## Order detail Shopify activity
If your supplier is integrated with Shopify, on the Order Detail page you can see if the order was successfully pushed to their Shopify or not. If the order wasn't pushed to your suppliers Shopify, a error message will be present at the top of the individual order detail page.
Typically errors will occur when attempting to push to suppliers Shopify’s due to the following:
* The SKU on the order doesn't exist in the suppliers Shopify. Examples include:
* The SKU was changed in the suppliers Shopify but wasn't updated in fabric Dropship.
* The SKU was removed from the suppliers Shopify due to it being discontinued.
* The SKU on the order is duplicated in the suppliers Shopify.
* Although fabric recommends that each SKU is unique in a suppliers Shopify, fabric understands that this can't always be the case. When there is a duplicate variant in the suppliers Shopify, the supplier will need to confirm what Shopify Variant ID fabric Dropship should sync to.
If an error is available for your suppliers orders, please reach out to the supplier directly to have them work with fabric support.
# Orders
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/orders/orders
Visualize the information needed to manage all aspects of your dropship orders across all connected suppliers.
To navigate to the **Orders** dashboard, login to the Dropship Platform and click **Orders** on the top menu bar.
## Orders dashboard
The **Orders** dashboard consists of three main sections that make it easy to quickly view all information associated with dropship orders. They're **Open Orders**, **Reports**, and **Require Attention**.
Clicking on any of the pre-filtered lists or reports within each of the main sections of the Orders dashboard provides a list view of all orders that fit within the pre-filtered criteria.
### Open orders
**Open Orders** contains four pre-filtered lists:
| List | Description |
| ------------------------ | ---------------------------------------------------------------------------------- |
| **Open Orders** | A list of all open orders |
| **Current Orders** | A list of open orders that are within your fulfillment SLA. |
| **Past Fulfillment SLA** | A list of open orders that are past your fulfillment SLA. |
| **Late Invoices** | A list of open orders that have shipments but remain open due to missing invoices. |
### Reports
**Reports** contains pre-filtered reports for various order details.
| Report | Description |
| ---------------------------- | ----------------------------------------------------------------- |
| **Orders with New Messages** | A report with the latest order notes from your partners. |
| **Shipments & Tracking** | A report containing information for shipments & tracking numbers. |
| **Returns** | A report containing information on returns and RMAs. |
| **Invoices** | A report containing all invoices from your suppliers. |
### Require attention
**Require Attention** contains two pre-filtered lists to manage cancellations and backorders.
| Name | Description |
| ------------------ | -------------------------------------------------------------------------------- |
| **New Cancels** | A list of cancellations that require acknowledgement by you, the retailer. |
| **New Backorders** | A list of orders that contain items that the supplier has marked as backordered. |
All data from any page containing a list view of orders can be exported by clicking on the **Export** link on the upper right side of each page. If any additional filters are applied to the page, the export will contain all orders that fit the filter criteria.
# Returns and Credit Memos
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/orders/returns-and-credit-memos
Create returns on orders and manage the credit memos associated with those returns.
## Creating returns
To create a return on an order, navigate to the **Orders** dashboard by clicking on **Orders** in the top menu bar.
Search for the order you wish to create the return on and click the PO# that's displayed in the search results to pull up the order detail page.
NOTE: An order must be in a closed status in order to create a return against that order.
On the **Order Detail**page click **Start a Return**.
Complete the form by selecting a reason for the return, adding an RMA number (optional), and entering the number of items being returned.
Submit the return by clicking on **Start Return.**
Once a return has been created against an order, the supplier associated with that order will be notified via email of the return. The supplier can then either Approve or Decline the return.
## Managing returns
To track and manage returns, navigate to the **Orders** dashboard and click **Returns** located in the **Reports** section of the dashboard.
The **Returns** page will provide you with a list of all returns and their current status (Pending, Approved, Declined).
## Credit memos
If your supplier approves a return that was created against an order, they then have the ability to create a Credit Memo against that return.
To access **Credit Memos**, navigate to the **Orders** dashboard and using the **More** dropdown, and select **Review Credit Memos**.
The **Credits** page provides you with a list of all credit memos submitted by your suppliers. You can use the filtering options to create a report of specific credit memos.
Click the blue **ID** link of a specific credit memo to pull up additional details of that credit memo.
# Shipping & Tracking
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/orders/shipping---tracking
The Shipments & Tracking dashboard allows you to see all the shipments sent by all of your suppliers in one spot.
## Viewing the Shipments and Tracking Dashboard
1. To view a filterable list of all the existing shipments, click **Orders**.
2. On the **Orders** page, click **Shipments & Tracking**.
The **Tracking #s** page features a filterable list of all existing shipments with sortable column headers.
| Column Header | Description |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Supplier** | The name of the supplier who sent the shipment. |
| **Service** | The shipping service the supplier used. |
| **Tracking #** | The shipment tracking number. Clicking on an individual tracking number in the list opens the **Shipment Detail** window. |
| **PO #** | The purchase order associated with the shipment. |
| **Registered** | The date the shipment was registered, shown in the user’s local time zone. |
| **Acknowledged** | The date you (the retailer) acknowledged the shipment as complete. |
| **Track** | A direct link to the carrier’s website for tracking. |
# Overview
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/overview
Rapidly launch, operate, and scale a curated assortment of products from an unlimited number of dropship suppliers.
fabric Dropship acts as a business catalyst by enabling retailers to curate and offer new product assortments with low risk, low cost and zero added inventory. It's the only dropshipping platform that seamlessly integrates into a business's commerce stack and allows for rapid expansion and revenue growth while handling all of the complex inventory, transactions, billing, and supplier management functions in the backend.
## Navigation
The fabric Dropship Platform for retailers is divided into four separate sections accessible from the top navigation menu
* **Orders** - Your dashboard for managing and tracking all dropship orders
* **Product Catalog** - Your dashboard for managing existing items, curating new items from your suppliers, and tracking inventory
* **Suppliers** - Your dashboard for managing existing supplier connections and inviting new suppliers to your dropship program
* **Reports** - Detailed reports to review the performance of your dropship business and all your suppliers
# Proposals
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/proposals
Review and approve proposals online.
A proposal is a list of items that a supplier submits directly to a retailer partner through the fabric Dropship Platform.
When one of your connected suppliers submits a proposal, you receive an email notification that a new list of items are submitted. You can then review the items before accepting and approving.
## Proposal statuses
The status of a newly submitted proposal shows as **Proposed**. The following table describes the various proposal statuses.
| Status | Description |
| -------------------------- | ---------------------------------------------------------------------------------------------------- |
| **Requires Approval** | Indicates the supplier has submitted the proposal for the retailer's review and approval. |
| **Waiting for Supplier** | Indicates the proposal is sent back to the supplier for additional revisions to product data. |
| **Needs Pricing Approval** | Indicates that the proposal requires an approval for pricing or product data. |
| **Pricing Approved** | Indicates that the proposal requires a second approval before it's ready for publishing. |
| **Ready to Publish** | Indicates the proposal is approved and is ready for publishing. |
| **Completed** | Indicates that the proposal is complete. |
| **Declined** | Indicates the proposal is declined, along with a reason. However,the reasons for declining may vary. |
## Proposal types
There are three types of proposals:
* **New item proposals**: These proposals contain new items that aren't currently available on your site.
* **Cost update proposals**: Suppliers submit these proposals to update the previously approved wholesale cost of items.
* **Attribute update proposals**: Suppliers submit these proposals to change product details, including images and descriptions, of already approved items.
All proposals are reviewed and approved with the same process outlined below.
## Managing proposals
To manage new item proposals, cost update proposals, and attribute update proposals, navigate to the **Products** page and select **Proposals**, located in the **Curate** section of the **Products** page.
On the **Assortment Proposals** page, Click **Requires Approval** to pull up a list of all recently submitted proposals.
The **Requires Approval** page lists all submitted proposals awaiting action. On this page, you can view the following details:
* Proposal ID.
* The name of the supplier who submitted the proposal.
* The name of the proposal, which includes the department name.
* The total items added to the proposal.
* The date when the proposal was submitted.
* The status of the proposal.
To review a proposal from the list, click the blue link in the proposal **ID** column to access the individual **Proposal Detail** page.
Using the **Proposal Menu** on the **Proposal Detail** page, you can review the items on the proposal at both the product level and the item level.
* To view items on the product level, click products under the **Proposal Menu**.
* To view items on the item level, click pricing under the **Proposal Menu**.
### Removing Items
To reject items or entire products from a proposal that aren't relevant to the agreed upon assortment, you can remove by:
* Select the items or products under the designated view (pricing or products).
* Click **Actions**.
* Select **Remove Products**.
## Sending Items Back to a Supplier
If a supplier needs to revise a proposal, create an issue for each item, detailing the reason for sending it back and setting the expectation for the required changes.
### Creating an issue
Select an item or product under the designated view (pricing or products).
Click **Actions**.
Click **Create Issue**.
* Add an Issue Title. For example, Images.
* Add an Issue explanation. For example, images provided are broken, please provide new ones.
Once all issues have been created on the proposal, return to the summary screen using the proposal menu and click **Return**.
## Approving Proposals
1. When you are ready to approve the reviewed items, return to the summary screen using the proposal menu and click **Approve**.
2. Once the proposal is approved, it's moved to the **Ready to Publish** section of the **Assortment Proposals** page.
3. Click on the **Ready to Publish** section to pull up a list of approved proposals containing the items that are ready to be published on your site.
4. To pull up a proposal from the list, click the blue link in the proposal **ID** column to access the **Proposal Detail** page.
5. Click **Approve Products**.
When approving, a new window opens, asking the following:
* Do you also want to publish the products on this proposal to an external platform.
6. Select one of the following:
* Yes. Continue the steps below.
* No, just mark this proposal as approved. Skip to step 10.
7. Using the **Platform** field, select the platform where you want to publish the product.
8. Using the **Template** field, select the preferred template for publishing products.
9. To complete the process and remove the proposal from the **Ready to Publish** section, click **Mark as Complete!**.
Marking the proposal as complete moves the proposal to the **Completed** section on the main **Proposals** page.
Once the items from the proposal are added to your site you can begin receiving orders for those items.
# Compliance Scorecard
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/reports/compliance-scorecard
## Overview
The Compliance Scorecard is a tool that allows Retailers to track and monitor their suppliers' compliance and ensure dropship performance. The scorecard is calculated using three factors:
* Number of orders fulfilled within a specified SLA
* Number of canceled orders
* Number of orders replaced
To access the Compliance Scorecard, click **Reports** in the menu across the top of Dropship. In the dropdown that appears, select **Compliance Scorecard**.
## Compliance Scorecard
The main Compliance Scorecard page shows an overview of all Suppliers along with a quick look at their performance metrics.
* **Score & Change:** The supplier’s score for the month and change compared to the previous month.
* **Award (Gold/Silver/Bronze):** The award level the supplier has achieved in comparison with all of your other suppliers.
* **Rank & Change:** The supplier’s rank compared with all of your other suppliers and change in comparison with the previous month.
* **Actions:** Click the icon to access more detailed compliance numbers for that individual supplier.
## Compliance Scorecard Details
To see the Supplier Details report on an individual supplier, find and click on that supplier’s name or click on the icon under Actions.
The Supplier Details page shows graphs and rankings in two categories: **Summary** and **Orders**.
### Summary
* **Compliance Score:** The supplier’s compliance score over the past six months.
* **Rank:** The supplier’s rank out of all of your suppliers over the past six months.
### Orders
* **Orders Received:** The total number of orders the supplier has received.
* **Fulfillment Score:** The supplier’s fulfillment score, which is calculated by their ability to fulfill orders within the SLA time.
* **Cancellation Score:** The number of orders that customers have cancelled with the supplier, measured against the total number of orders they’ve received.
* **Replacement Score:** The number of orders the supplier has had to replace, measured against the total number of orders they’ve received.
* **Supplier Revenue:** The total revenue generated by the supplier through fabric Dropship.
* **Merchant Share Paid:** The retailer’s share of revenue paid by the supplier.
# Reports
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/reports/reports
## Introduction
The Reporting features in fabric Dropship allow you to export information about Orders, Shipments, Invoices, Products, and Cancellations.
## Order Report
To export orders, select **Orders** from the menu at the top, and then click on one of the categories under **Open Orders** on the Orders page.
You will be directed to the **List** page, which shows all of the orders in the category you chose.
When exporting an orders report, you can apply different filters to the data. Some filters include Connection (supplier name), Order Status, and Date range in which the orders were received.
Once you are ready to export the order report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Retailer account.
## Shipment Report
To export past shipments, click on **Shipments & Tracking** on the Orders page.
You will be directed to the **Tracking #s** page, which shows all of your previous shipments.
When exporting a shipment report, you can apply different filters to the data. Some filters include Connection (supplier name) and the date the shipment was created.
Once you are ready to export the shipment report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Retailer account.
## Invoice Report
To export past invoices, click on **Invoices** on the Orders page.
You will be directed to the **Invoices** page, which shows all of your invoices.
When exporting an invoice report, you can apply different filters to the data. Some filters include Connection (supplier name), the date invoice was submitted, and whether the invoice has been received by your retailer partner.
Once you are ready to export the invoice report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Retailer account.
## Product Report
To export a supplier’s product catalog, select **Products** from the menu at the top of the page.
From the Products page, there are two ways to view the supplier’s product catalog:
* Click **Products** to view the catalog by parent information
* Click **Items** to view the catalog by child SKU information
When exporting a product catalog, you can apply different filters to the data. Some filters include Connection (supplier name), the date item was created, and whether or not the item is in stock.
Once you are ready to export the product report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Retailer account.
## Cancels Report
To export a supplier's cancellations, select **Orders** from the menu at the top, and then click on **New Cancels** under the **Requires Attention** section.
You will be directed to the **Cancels** page, which shows all order cancellations.
When exporting a supplier’s cancellations, you can apply different filters to the data. Some filters include Connection (supplier name), the reason for the cancellation, and the date order was canceled.
Once you are ready to export the cancel report, click the Export button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Retailer account.
# Sales Performance Reporting
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/reports/sales-performance-reporting
## Overview
fabric Dropship Performance Reporting allows you to see the sales performance of your top suppliers each supplier’s top products.
## Performance Reporting
Click on **Reports** in the menu at the top of Dropship. In the dropdown that appears, select **Sales Reporting**.
The graphs on the Reporting page display numbers based on the dates selected in the fields at the top-right. Enter a custom date range or use the dropdown to select a predefined date range to adjust the data you see.
The dashboard across the top of the page shows an overview of the number of suppliers with orders, number of orders, estimated gross merchandise value, average order value, and a line graph plotting performance over time.
Use the Export buttons in the Daily Performance, Top Suppliers, and Top Products menus to save the information in a CSV file.
# Attribute Value Transformers
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/settings/attribute-value-transformers
Transform the value of attributes automatically and accurately.
## Overview
Attribute Value Transformers provide retailers with the capability to transform the product and variant attributes through various transformation rules. This enables consistent and accurate conversion of supplier-provided attribute values into the desired value as required by the business.
Some examples of an attribute value transformation rule-
Transform the value of “Category” attribute
* Tshirt → Fashion > Apparel > Topwear > Tshirt
* Shoes → Fashion > Footwear > Shoes
Transform the value of “Supplier ID” attribute
* 15 → Asian, Inc
* 18 → Viets Corp
## Create an Attribute Value Transformer
To access the Proposal Department, login to your dashboard, select **Retailer Settings**, then **Attribute Value Transformers,** then **Create Transformer.**
Enter your **Transformer Name**
Select **Save**
Click on new transformer in **Transformer Name** list
**Search** the attribute you want to transform
* Not all identifier attributes can be added to a transformer
Click on the attribute in the **Attribute** list
Enter the details in the **Transformation Settings** section
* Attribute Value Match - This is the value to be transformed
* Transformation Output Value - The value you need after the transformation
Each transformation can be modified by clicking on the **Edit** link
You can create and number of transformations for this Attribute
Once completed, click on the **Transformers** link in the breadcrumb navigation in the upper right of the page.
## Apply a transformer
Once transformer is created, there are multiple screens and workflows where a transformer can be applied.
### Accepting Proposals
If you have any new open proposals after creating a transformer, values of the proposal can be transformed.
Navigate to the proposal that still requires an approval
Click on **More** button
Click on **Apply Transformer**
Select the **Transformer** of choice from the dropdown menu and click **Apply**
All matching attribute values across all items of proposal will be transformed.
### For Suppliers and Retailers
**Importing the Products**
You can apply transformer on a spreadsheet before you import any products
Navigate to **Import Products**
Select a **Template** from the dropdown menu
Select the desired **Transformer** from the dropdown menu
Select your import file and click **Begin Import**
### Product List Page
You can apply a transformer even after items have been added to the catalog.
Navigate to the **Products** list page
Select the relevant products using the checkbox
Click on **Actions**
Select the **Transformer** from the dropdown menu
Click on **Apply to All Products**
# Categories & Commission Profiles
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/settings/categories---commission-profiles
The Categories feature in fabric Dropship allows retailers to organize products into groups and set different commission rates for each group of products.
Categories can then be used to create Commission profiles for different supplier partners on the Dropship to maximize commissions.
## Categories
To access Categories, click on your account name in the menu at the top of Dropship and select **Retailer Settings** in the menu that appears. On the Settings page, scroll to the bottom and select **Categories**.
The Categories page displays a table of all the Categories you’ve created previously, with a quick look at the ID, Category Name, Number of Items in the Category, and the Last Updated date.
To create a new Category, click the **Add New Category** button at the top-right of the page. In window that appears, give the new Category a name and click **Save**.
To rename or delete an existing Category, find it in the list of Categories you’ve created previously, click on the corresponding vertical ellipsis icon (⋮), and then click Rename or Delete. Please note that Category names must be unique and only Categories with no items can be deleted.
**Please Note:** Your Suppliers will be able to see all the Categories you create and any products you assign to them.
### Adding Products to a Category
In Dropship, categories are attributes of a product, similar to a product’s name, description, color, etc. Like these other attributes, categories are set up in the CSV file of your products that you import into Dropship. To learn more about this process, visit the Import Products & Attributes page.
## Commission Profiles
To access Commission Profiles, click on your account name in the menu at the top of Dropship and select **Retailer Settings** in the menu that appears. On the Settings page, scroll to the bottom and select **Commission Profiles**.
The Commission Profiles page displays a table of all the Commission Profiles you’ve created previously, with a quick look at the Profile Name, Suppliers, and Method.
### Creating a Commission Profile
To create a new Commission Profile, click the **Add New Profile** button at the top-right of the page.
On the Create Commission Profile page, give the new profile a name and a description, and select a method for the Commission Profile, either **Flat Commission %** or **Commission by Category**.
* **Flat Commission %:** Specify a commission rate to be applied to all items, regardless of their category.
* **Commission by Category:** Enter a commission rate for each category. **All Categories** is selected by default and used for any items without a category. Click **Add Categories** to set up custom commission rates on a per-category basis.
When you’re finished setting up your Commission Profile, click **Save**.
### Managing Commission Profiles
To edit or delete a commission profile, visit the Commission Profiles page and click on a Commission Profile to change.
* To edit the Commission Profile, make your changes and then click the Update button at the top right.
* To delete the Commission Profile, click Delete at the top right, and then click Delete in the popup that appears.
## Best Practices for Commission Profiles
To use Commission Profiles effectively, consider the following best practices:
* Set commission rates that align with your business goals and help you maximize profits.
* Use category-specific Commission Profiles to set different commission rates for different categories of products.
* Keep Commission Profile names and descriptions clear and descriptive to help you identify them later.
# Proposal Departments
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/settings/proposal-departments
Standardize product data rules for all suppliers across various categories.
## Overview
When retailers are sourcing products in various categories from their suppliers, it becomes essential for them to be able to differentiate product attributes and their validations for each category.
A proposal department enables retailers to set any number of categories and apply different validations on each one, making it easy to implement control over the quality of data their suppliers share.
A proposal department enforces the rules of a product import template and two predefined rulesets on every proposal before a supplier can send proposals to the retailer.
Status
* Active - An active Proposal Department is available for all suppliers of the retailer.
* Disabled - You can set the status of a department to Disabled if you don’t want to use this anymore.
## Create a Proposal Department
To access the Proposal Department, login to your dashboard, select **Retailer Settings**, then **Proposal Department,** then **Create.**
Enter the name of the proposal in **Department Name**
Select a **Product Import Template**
* Every proposal department requires the product import template to identify the list of attributes for the proposal department
* A retailer can only select from the existing list of templates.
Select a **Supplier Ruleset**
* You will be able to see a list of existing rulesets
* Select the ruleset that all items must be compatible with when being added to a proposal
NOTE: Supplier ruleset is also applied on all items during the compatibility check of every proposal.
Select a **Retailer Ruleset**
* You will be able to see a list of all existing rulesets
* Select the ruleset that the items must be compatible with when being accepted from a proposal
NOTE: The retailer ruleset is applied on the all items of a proposal during the compatibility check before it can be sent over to the retailer for a review
Select a **Sample Template URL** (optional step)
* Dropship gives retailer the capability to provide a ready template to their supplier that can be referenced while creating the spreadsheet for a proposal.
* You can simply upload the file on your server and add a URL here. This will make the file available for the supplier while creating a proposal. Please reach out to fabric Support if you need support in uploading the sample file to fabric’s server.
Select **Save.**
# Rulesets
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/settings/rulesets
Set the conditions and validations used by the Proposal Department.
## Overview
A ruleset is a set of conditions that can be applied to a proposal through the feature called Proposal Departments. A ruleset consists of multiple rule groups. Each rule group can have multiple rules configured where each rule dictates the conditions for an individual attribute.
* Retailers and suppliers use rulesets to dictate the terms of a proposal department
* Rules set under a ruleset are applied to all items and attributes during a proposal
* Proposal compatibility will check all the items from the template and apply the rulesets on them. Only validated items will be added to the proposal
* Every retailer must have at least 2 rulesets, one to be used as Retailer ruleset and one to be used as suppliers ruleset. Refer to [Proposal Departments](/v3/dropship/dropship-retailers/settings/proposal-departments) for more details.
### Create a Ruleset
To create a ruleset, login to your dashboard, select **Retailer Settings**, then **Product Rulesets,** then **Create Ruleset.**
Enter a **Name** and **Description** of the ruleset.
Click **Create** and the new ruleset will appear in the list.
## [](#section-)
### Create a Rule Group inside the Ruleset
To configure a Rule Group in a Ruleset, click on the **Ruleset Name** you created.
Click on Create inside the **Rule Group** section and complete the dialog box
* **Name** - Name of the Rule Group. This represents the group to which the attribute belongs. For example, all identifier-related attribute rules can be part of the a single group called Identification.
* **Position** - Only an integer is accepted. This will dictate the order of this group on the item details page.
* **Description** - An optional description of the Rule Group.
Click **Save**.
A single Ruleset can have any number of Rule Groups.
### Create rule group
### Create a rule inside a Rule Group
To add a rule, click on the relevant **Rule Group**.
Click on **Create** inside the **Rules** section and complete the dialog box
* **Attribute** - Select an attribute on which you want to apply the rule.
* Note: This list will have the attribute names as defined by fabric Dropship. Retailers’ own attribute names aren't shown here, so be careful when selecting the attribute while creating a rule.
* **Name** - Provide a name for the rule.
* **Position** - Set the priority of the rule. This will dictate the order in which this attribute should appear on the Item details page.
* **Description** - an optional field to add a description to the rule.
* **Is Required** - Determines if the attribute must be included to pass the compatibility with this Ruleset.
Click **Save**.
A single Rule Group can have any number of rules.
### Create rule
### Adding validators to a rule (optional)
A validator Enables retailers to set more complex validations on their attributes.
Once a rule is added, validators can be added to it.
* Multiple validators are available to be added, however, only one validator can be added per rule.
To add a validator, click **Add** next to the rule inside the list.
Select the validation **Type** from the dropdown menu.
Enter the relevant expression in **Value.**
Click **Save.**
# Settings
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/settings/settings
Add users and configure notifications in Dropship.
## Introduction
To access Retailer Settings, click on your account name in the menu at the top of the page. In the dropdown menu that appears, select **Retailer Settings**.
Use the tiles on the Retailer Settings page to manage everything from general information and user privileges to API clients and webhook settings.
## Default Onboarding Preferences
Manage the default onboarding settings for all new suppliers.
The settings you configure here will be the default settings for all new connections. You can always override these settings when inviting a new connection.
Each of these preferences is set for a new vendor automatically. These preferences can be changed for an individual vendor by going to their Connection Details Page.
### Default Cost Determination
All incoming items on a purchase order must have an associated cost to the retailer. Use the **Cost Method** dropdown menu to make a selection:
**Specified on Platform:** Dropship is responsible for capturing the cost in this scenario. For Proposals, an attribute called “Cost” becomes mandatory for all of a supplier’s items. It's implemented through rulesets being used by Proposal Departments and requires that suppliers define the value for the “Cost” attribute for every item when creating a proposal. For Import Requests, the same “Cost” attribute becomes mandatory for all items created by the retailer, and retailers won't be able to send import requests without the “Cost” attribute.
**Specified on Order:** The retailer is responsible of providing the value of “Net Price” with every order they create in Dropship. Orders created without “Net Price” or “Retailer Price” will be rejected by the system.
**Commission:** The retailer must specify the commission amount. Dropship will automatically calculate the cost to be paid to the supplier based on the retail price in every item. Retailers need to provide the “Retail Price” while creating an order in Dropship. Any order without the Retail Price will be rejected. The net price will be calculated based on the commission and retail price.
After making a selection, click the **Save Preference** button.
### Default Fulfillment SLA
The Fulfillment SLA governs how long suppliers have to ship orders before they're considered late.
Use the dropdown to choose whether suppliers have one, two, or three business days to ship orders once they receive the order.
After making a selection, click the **Save Preference** button.
### Default Payment Terms
The retailer pays the cost of all the items on a purchase order. The Payment Terms reflect how long the retailer has in credit days before that amount is due to the supplier. For example, if set to Net 15, the retailer will need to remit the supplier within 15 days of invoice receipt.
Use the dropdown to make a selection and then click the **Save Preference** button.
### Default Catalog Import Method
The catalog import method defines how suppliers share their product catalog with you.
Selecting **Import Requests** requires you to upload a spreadsheet on behalf of your suppliers and subsequently seek their approval to publish the products.
Selecting **Proposals** requires suppliers to submit products to you for approval.
After making a selection, click the **Save Preference** button.
### Default Customer Service & Returns Allowance
Setting a customer service & returns allowance on a connection automatically applies an adjustment to all new incoming supplier invoices, decreasing the amount the retailer owes the supplier.
This allowance is typically applied to offset the costs of returns and other costs associated with servicing a customer.
To set a default returns allowance for any new connections automatically, enter a value between 0 and 10% and then click the **Save Preference** button.
### Packing Slip Template
Including a retailer-branded packing slip is often an important component of the customer experience. The default packing slip will include your logo and core order data including the customer order number.
If you have worked with fabric Support to configure a custom packing slip, please provide the template name and click the **Save Preference** button.
## Currency Settings
Manage the currency of your account. Use the dropdown menu to select a primary currency. This will help Dropship apply location-specific configurations for things like a product’s cost and price. Supported currencies include United States Dollar, Canadian Dollar, British Pound Sterling, and Euros.
## Notifications
Dropship supports real-time push notifications so that you can receive supplier onboarding alerts or transaction alerts.
To enable a notification, enter an email address or a distribution list the corresponding field, and then use the toggle menu to set the notification to **Enabled** or **Not Enabled**.
Types of **Onboarding Notifications**:
* Supplier Invite Accepted: Notifications when a supplier partner accepts an invitation to join.
* Supplier Completed Onboarding: Notifications when a new supplier completes onboarding.
* Connection Notifications: Real-time alerts related to your connections and connection notes.
Types of **Transaction Notifications**:
* Connection Notifications: Notifications related to your connections and connection notes.
* Order Received: Notifications when a new order is received.
* Order Canceled: Notifications when a cancellation request is received.
* Order Ship To Address Updated: Notifications when a “ship to” address change request is received.
* Message Received: Notifications when a new message is received on an orders.
* Return Received: Notifications when a new RMA is created on an order.
* Return Approved/Rejected: Notifications when an RMAs is approved or rejected.
In addition, **Digest Notifications** allow you to receive daily, aggregated reports on any late purchase orders.
## Branding
Use the Branding menu to upload your business’s logo. It will be displayed to your supplier partners throughout the fabric platform and included on your packing slip.
The ideal logo is a 360x120 pixel PNG.
Click on the **Upload From Device** button to browse files on your computer to upload. Once you’ve selected a file, click and drag the preview to zoom, pan, and crop the image.
When finished, click **Save**.
## Payment Settings (Staff Only)
Connect your bank account to your fabric Dropship profile for automatic payments through Plaid. Click on the **Open Plaid** button to begin the setup process within Plaid.
## User Management
Invite new users and manage existing ones.
### Creating a new user
To add a user to the account, click the **Add New User** button. Enter the new user’s first name, last name, and email address, and fabric will send them an email with instructions to activate their user account.
### Editing a user
To edit a user’s account information, find and click their name on the User Management page.
The **General Settings** section allows you to edit basic profile information that identifies the user across the fabric platform. Use the Status dropdown menu to change the account between Active, Suspended, and Invited. When finished with your changes, click **Update**.
The **Role** section allows you to configure a user’s access level. Click **Add Role** to assign a user a new role. To edit a user’s existing role, click on the role and the Update Role popup will appear. Select a new role for the user in the dropdown menu and click Save Role.
**Security Credentials** allows you to give the user a new temporary password. Use the New Password and Confirm Password fields to create their new password. Upon logging in, the user will be required to change their password.
**Security Info** shows details from the last time the user signed in to fabric.
## API Clients
Manage API keys for your account.
### Adding a new API Client
To add a new client, click the **Add API Client** button, give the client a name, and click **Create Client**. After the client is created, you will be able to retrieve their credentials.
### Accessing Client Credentials
To access a client’s credentials, find and click their name on the API Clients page.
The Client Credentials section shows the name you gave the client, their API URL, their Brand ID, and Client ID, along with the Client Secret. To access the client secret, click on **Get Client Secret**. **However, you can only access the client secret once.** When you’re ready, click on the Show API Secret button. The API secret will be shown, along with a copy button so that you can save it. If you need to access the client secret again, please submit a support ticket.
## Integrations
Manage existing integrations associated with your account and add new ones.
Dropship supports integrations with BigCommerce, fabric, and Shopify.
### Adding an Integration
Basic setup for integration with third-party platforms consists of clicking on the **Add Integration** button at the top-right of the page. In the Add Integration popup that appears, click the **Add** button next to the platform you’d like to integrate with. From there, integrating with each platform is different, but setup includes information like the API Key, API Secret, or Store URL.
### Integration Options
Existing integrations appear on the Integrations page below the **Add Integration** button. To manage an existing integration, find and click its corresponding **Options** menu. The options in the window that appears are shortcuts to edit settings within the integration.
## Webhooks (Advanced)
Configure webhooks and review webhook history.
## Webhooks
Configure webhooks to listen to key events from the fabric platform. To add a new webhook, click the **Add Webhook** button.
* Proposal Approved
* Item Inventory updated
* Offer Created
* Order Created
* Order Closed
* Shipment Closed
* Cancel Created
* Invoice Created
The **Method** dropdown menu allows you to choose between post, put, and patch.
In the **URL** field, enter the webhook URL.
Use the **Status** dropdown menu to choose whether the webhook is Enabled or Disabled.
When finished, click **Add Webhook**.
### Webhook History
Review recent webhook results.
## Retailer SKU Settings
Configure auto generation of retailer SKUs.
You can turn on automatic SKU assignment if you would like Dropship to generate unique SKUs for items as soon as they're approved by a member of the retailer team.
The settings configured on this page will be applied to new products only; existing products and items will NOT be modified.
After making a selection, click the **Save Preference** button.
### Serial Key
If Retailer SKU Assignment is enabled, you can choose a seed value for your SKUs. Fill out the Prefix, Seed Value, and Net Value fields, and then click **Save Preference**.
## Proposal Departments
Visit the [Proposals](/v3/dropship/dropship-retailers/settings/proposal-departments) page to learn more about Proposal Departments in fabric Dropship.
### Creating a Proposal Department
To create a new Proposal Department, click the **Create** button at the top-right of the page and fill out the fields in the **Create Department** popup that appears.
* Name: Give the Department a name
* Product Import Template: select from fabric’s default templates or a template you created
* Supplier Ruleset: Select the attribute validations that suppliers must meet
* Retailer Ruleset: Select the attribute validations that you must meet
* Sample Template URL (optional)
## Attribute Value Transformers
Please see the [Attribute Value Transformers](/v3/dropship/dropship-retailers/settings/attribute-value-transformers) page for more information.
## Product Rulesets
Please see the [Rulesets](/v3/dropship/dropship-retailers/settings/rulesets) page for more information.
## Product & Inventory Templates
Please see the [Templates](/v3/dropship/dropship-retailers/settings/templates) page for more information.
## Shipping Accounts
Create and manage Shipping Accounts
### Adding a Shipping Account
To add a new shipping account, click the **Add Shipping Account** button. In the window that appears, give shipping account a nickname, use the **Carrier** dropdown menu to select a shipping provider, and then click **Save & Continue**.
## Terms of Service
Review the Terms of Service from fabric Dropship.
Click the Commerce Network Merchant Agreement link to open a PDF of the Terms of Service.
## Tracking Number History
The Tracking Number History section allows retailers to acknowledge changes in tracking numbers.
The Tacking History page shows the Shipment ID and old and new tracking numbers, as well as the date the tracking number was changed.
Click the **Shipment ID** to see details about the shipment, including the Packing Slip.
Click the **Acknowledge** button at the right to acknowledge the changes to an order’s tracking number.
## Commission Profiles
Please see the [Categories & Commission Profiles](/v2/guides/marketplace-retailers/settings/categories---commission-profiles) page for more information.
## Categories
Please see the [Categories & Commission Profiles](/v2/guides/marketplace-retailers/settings/categories---commission-profiles) page for more information.
# Templates
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/settings/templates
Keep data consistent between internal and external systems
## Overview
Templates are a key feature of Dropship that facilitates the data exchange of Dropship with other external systems.
To access the templates, login to your dashboard, select **Retailer Settings**, then **Product & Inventory Templates.**
These templates are specific to the retailer and come in two varieties, product and inventory.
### Product Templates
* Pre-existing list of global attributes that's shared by all items and all businesses.
* Retailers can use their own attribute names for the spreadsheets and will be able to see these names on the Dropship platform UI
* Templates are mappings between the Dropship attributes and the attributes names defined by the retailer
* Import templates are responsible for data ingestion into Dropship
* Export templates can be used for extracting data from Dropship.
* This allows the retailer and their suppliers to generate spreadsheets that match the template as required by other systems such as Shopify, fabric Product Catalog, and others.
### Retailers and Suppliers can create and clone templates
Retailers
* Retailers can create templates for importing and exporting products.
* Retailers templates are also accessible by all of their suppliers.
* Retailers can clone a template by selecting the clone option on the template details screen.
Suppliers
* Suppliers can create their own templates for importing and export products.
* Supplier templates are only accessible by suppliers and can't be seen by their retailers.
## Create a template
Click on **Create Template**
Enter the **Template Name**
Select **Product** as **Data Type**
Select the **Direction** of template
* Import - Select this if you want to use the template to import products into Dropship
* Export - Select this if you want to use the template to export products from Dropship
* Sample file
* You need to provide a sample file of the template in order to create one
* The sample file should only contain the header row of the spreadsheet you want to be using for the said operation
* Once you upload the file, you will be asked to map the attributes
### Map Attributes
Dropship automatically tries to map user-uploaded attributes with those of fabric Dropship, however, all mapping needs to be checked by the user before creating the template. There are certain attributes that are relevant for most dropship businesses and need to be mapped and added to capture key details related to dropship products.
You can accept the values Dropship offers or enter your own for each column.
Column Header - the name of the attribute in your file
Map To - the name of the corresponding fabric Dropship attribute
* You should be able to find a similar attribute in the dropdown
* In case you can’t find a match for your attribute in the list provided by fabric, please raise a request to support team
Level - this indicates whether this is a parent or individual item attribute
* This field is only relevant for an import template
* Defines whether the attribute is relevant for the product (the parent item) or its variants
* Most attributes are relevant for items
* Attributes that leveled to Products will be inherited by all of the variants automatically
Priority - dictates the order in which the attributes will appear everywhere in the platform UI and during the exports
Required - indicate if this is a mandatory or optional attribute
* This field is only relevant for product import templates.
* If an attribute is mandatory in the import template, items without that attribute will show an error when imported through into Dropship.
Click **Save Template**
# Shopify Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/shopify-integration
Integrate your fabric Dropship account with your Shopify account
## Adding the Shopify Integration
1. To access your Dropship Integrations, click your account name.
2. In the dropdown that appears, select **Merchant Settings**.
The **Merchants Settings** page is displayed.
3. Click **Integrations**.
The **Integrations** page is displayed.
4. Click **Add Integrations**.
The **Add Integrations** page is displayed with a number of tiles.
5. Click the **Shopify** tile.
The **Add Shopify Integration** window is displayed.
6. Do the following:
* In the **Shopify Store URL** field, provide your store name.
* In the **API Key** field, provide your Shopify API key.
7. Click **Add Integration**.
After you enter your Shopify credentials in Dropship, you are directed to Shopify’s website.
8. Click **Install unlisted app** to install the fabric Dropship app in your **Shopify** profile.
Once your credentials are entered and the app is installed, you are ready to begin configuring the various settings of your integration.
## Accessing Integration Options
1. To access your Dropship Integrations, click your account name.
2. In the dropdown that appears, select **Merchant Settings**.
The **Merchants Settings** page is displayed.
3. Click **Integrations**.
The **Integrations** page is displayed.
4. Next to the Shopify logo, click **Options**.
The **Options** window is displayed.
5. Edit one of the following:
* [Configuration](#configuration): The **Configuration** page allows you to make changes to the basic Shopify setup.
* [Webhook History](#webhook-history): The **Webhook History** page shows a list of previous webhook callbacks.
* [Utilities](#utilities): The **Utilities** page is used to update and sync order/inventory data.
## Configuration
To access the **Configuration** page, follow the steps outlined in [Accessing Integration Options](#accessing-integration-options).
### Orders
Configure how your Shopify store syncs orders with fabric.
When you enable a Shopify orders webhook, fabric automatically imports customer orders that contain items from your approved suppliers and distribute purchase orders to suppliers via their preferred integration method (Console, EDI, API, etc). When suppliers ship items, fulfillments and tracking numbers will be automatically synced back to the original customer order in your Shopify store account.
1. To choose when fabric imports customer orders, click the **Select Webhook** field.
2. Choose one of the following options:
* **Order Paid (Recommended)**
* **Order Created**
3. Click **Enable Integration**.
To disable the order integration, click **Disable Integration**.
### Fraudulent order protection
You can specify and configure whether you want to import orders flagged by Shopify as High or Medium risk.
Enable this service if you would like to skip medium-risk orders as recommended by Shopify. High-risk orders are always skipped. The field is **Disabled** by default.
1. To enable this service, select **Enabled** from the fraud field.
2. Click **Save Preference**.
### Location
Set which inventory location to use when syncing inventory.
When fabric updates inventory in Shopify, we have to assign the inventory to a location that's configured in your Shopify account.
fabric recommends setting up a new, dedicated dropship location in order to keep your owned inventory separate from your dropship inventory. For more information on how to do that in Shopify, check the Shopify Help Center.
1. To choose an inventory location, select the **Select Shopify Location** field.
2. Click **Save Location**.
### Inventory
fabric allows you to configure how your Shopify store syncs inventory with fabric. With this feature enabled, fabric can automatically sync supplier inventory movements to your Shopify store.
1. To choose how fabric syncs orders, use the **Select Webhook** field.
2. Choose the **Product/Inventory Updated (Recommended)** option.
3. Click **Enable Integration**.
To disable inventory integrations, click the red **Disable Integration** button.
## Webhook History
The Webhook History page shows a list of previous webhook callbacks. To access the **Webhook History** page, follow the steps outlined in [Accessing Integration Options](#accessing-integration-options).
To inspect a webhook, click on the webhook ID. The **Inspect Webhook** window has basic information about the webhook including any messages the webhook returned, and the script used to fetch the webhook.
## Utilities
To access the **Utilities** page, follow the steps outlined in [Accessing Integration Options](#accessing-integration-options).
### Retry Order
If an order didn't import into fabric, its likely that there was a problem routing the order to the correct supplier. If you have doubled-checked the SKUs and the Shopify mappings, you can attempt to import the order again by supplying the **Shopify Order Number**.
1. To import the order, enter the order number into the **Shopify Order Number** field.
2. Use the fraud checkbox to toggle whether you would like to ignore Shopify’s fraud risk recommendation.
3. Click **Retry Order**.
### Push Inventory
This utility pushes inventory for all synced items from a specified connection. Use the dropdown to select the connection and click **Push Inventory** to kickoff the sync process.
### Sync Variants by Vendor
This utility attempts to sync variants between Shopify and fabric using a vendor name. It searches your Shopify store for all items created within the date range you specified and then attempts to sync them with variants in fabric. fabric checks if the Shopify variant's SKU field matches the Merchant SKU, the UPC, or the Supplier SKU (in that order).
1. Use the **Select Date Range** field to choose whether you would like to look for products created between two given dates, or run a sync against all products (a process that can be very slow).
2. Click **Run Sync** to begin the process.
### Sync Variant
Use this utility to sync variants between Shopify and fabric using a fabric **Item ID**. Enter a value in the **fabric Item ID** field and click **Run Sync**, and fabric will search your Shopify store for any items matching using the Merchant SKU, Vendor SKU, and/or UPC.
* **Variant-Level Metafields:** You can publish Metafields and their values at the variant level.
* **Additional Metafield Types:** Support for additional Metafield types such as `multi_line_text_field`, `boolean`, `URL`, and `date_time`.
### Data Override on Publish
Any publish to Shopify action overrides the data for products and variants in Shopify with the data in Dropship. Empty attributes aren't sent over.
# Publishing Products to Shopify
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/shopify-publish-products
## Publishing Products Outside of a Proposal
If a supplier isn't submitting a proposal to you and is importing products through a Shopify import, products can be published directly from the **Products Dashboard**.
1. In the main menu, click **Products**.
The products page is displayed.
2. Click **products** located in the \*\*Browse & Review \*\*section.
3. Select the products that you wish to publish. Alternatively, you can check the top box to select all products on the first page.
4. Click **Actions**.
The **Publish Products** window is displayed.
5. In the **Platform** field, select Shopify.
6. In the **Template** field, select **Shopify Export Template**.
7. Click **Publish Products**.
## Publishing Products on a Proposal
Suppliers that have submitted product proposals can be approved and published in the **Proposal** menu.
1. In the **Proposal Summary** page, click **Approve**.
The proposal state is changed to **Ready to Publish**.
2. In the **Assortment Proposal** page, click **Ready to Publish**.
A list of approved proposals containing the items ready to be published is displayed.
3. To review a proposal, click the proposal **ID**.
The **Proposal Detail** page is displayed.
4. Click **Approve Products**.
The **Approve Proposal** window is displayed.
5. In the **Do you also want to publish products on this proposal to an external platform?** field, select **Yes**.
6. In the **Platform** field, select **Shopify**.
7. In the **Template** field, select **Shopify Export Template**.
8. Click **Approve**.
## Checking a Job Status
To confirm that products were successfully created in Shopify, you can check the **Jobs Report** in Dropship to review the status of the job itself.
1. Click on your account name in the top right hand corner of the navigation bar.
2. Click **Job Reports**.
The **Job Status** window is displayed with the most recent jobs at the top.
3. Click the job **ID** for the **push\_products** job.
The job report is displayed.
If any errors occurred when attempting to push products to Shopify, we recommend filing a ticket with support. Please provide [fabric support](https://support.fabric.inc/hc/en-us/requests/new) with the following:
* The error Job ID
* Vendor Name
* Product details (new products added X date, or entire catalog)
# Supplier Information
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/supplier-information
## Introduction
As a retailer, you can manage your suppliers, see their details, and make changes to their accounts from the **Supplier** page.
To access the **Supplier** page, click **Suppliers** from the menu at the top. The **Suppliers** page features a dashboard that allows you to search for existing suppliers, invite new ones, and browse suppliers by status. There’s also a supplier calendar that allows you to look ahead at upcoming supplier events.
Use the search bar or the options under **Browse Suppliers** to find existing suppliers. Searching for or browsing suppliers displays a list of suppliers.
Clicking on a supplier’s name opens the **Supplier Detail** page.
## Supplier Detail Page
The **Supplier Detail** page shows information about the supplier, broken up in to four menus available in the left-hand side of the page: **Summary**, **Locations**, **Attributes**, and **Carriers**.
## Summary
Summary is the default view of the **Supplier Detail** menu. At the top of the **Summary** menu is a button that allows you to either **Activate** or **Suspend** the supplier, depending on the supplier’s status.
* **Activate** - The Activate button is available for suppliers that have completed the onboarding process. You must click **Activate** in order to complete their onboarding process and enable their supplier account.
* **Suspend** - The Suspend button is available for active suppliers that have completed the onboarding process. It allows you to suspend their status as your supplier at any time.
The **Summary** menu shows basic information about the supplier. There are five sections: **Connection Detail**, **Payment Settings**, **SLAs**, **Contacts**, and **Settings**.
### Connection Detail
The **Connection Detail** section displays the following information:
* **Supplier:** The supplier’s name.
* **Supplier #:** The supplier’s number.
* **Supplier ID:** The supplier’s ID.
* **Integration Type:** The integration type the supplier used.
* **Catalog Import Method:** The method of catalog sharing you used to for this specific supplier.
* **Packing Slip Template:** The type of packing slip the supplier uses to fulfill the retailer’s orders. This is a global setting. See the Settings page to learn more.
Click the **Edit** button next to the **Connection Detail** heading to make changes to this section. In the **Update Settings** window that appears, you can make changes to the **Supplier #**, **Transactions Integration** type, and **Catalog Import Method** type. Please note that while it's possible to edit these settings, it's recommended that you contact fabric support prior to making any changes in the **Update Settings** window.
### Payment Settings
The **Payment Settings** section displays the following information:
* **Cost Tracking:** The cost method the retailer is using for this specific supplier connection.
* **Payment Terms:** The payment terms the retailer is using for the supplier connection.
Click the **Edit** button next to the **Payment Settings** heading to make changes to this section. In the **Update Connection Fees** window that appears, you can make changes to the **Cost Method**, **Commission Rate**, and **Payment Terms**. Please note that, for auditing purposes, we recommend that you don't make changes to these settings. If changes are necessary, please contact fabric support first.
### SLAs
The **SLAs** section shows the number of days the Service-Level Agreement gives the supplier to fulfill an order. Click the **Edit** button next to the SLAs heading to make changes. In the **Update Connection SLAs** window that appears, enter the number of days the supplier has to fulfill an order. When finished, click **Save Settings**.
### Contacts
The **Contacts** section displays the following information:
* **Primary:** The primary point of contact at the supplier’s business.
* **Merchandising:** The merchandising point of contact at the supplier’s business.
* **Fulfillment:** The fulfillment point of contact at the supplier’s business.
The information is displayed as it was when the account was set up and can't be edited.
### Connection Notes
The **Connection notes** section keeps notes from fabric staff or the retailer to store any critical information or decisions while onboarding or during business with the supplier.
Click the **Add a Note** button to create a new note.
In the **Add Note** window that appears, enter a message, use the **Message Visibility** field to choose who can see the note, and use the **Message Notification** checkbox to choose whether or not creating this new note will send an email to all those selected in the **Message Visibility** field. Click **Save Note**.
To edit an existing note, click on the **Options** button to the right of its title and click **Edit**.
### Invoice Adjustments
The **Invoice Adjustments** section displays any invoice adjustments you have set up previously. To make changes to these adjustments, click on the **fabric Retailer** menu at the top of the page, click **Retailer Settings**, and then click **Default Onboarding Settings**.
### Locations
To visit the **Locations** menu, click **Locations** from the navigation at the left of the **Supplier Detail** page. The Locations menu shows a list of all of the supplier’s warehouse locations. This information is owned by the supplier and can't be changed by the retailer.
### Attributes
To visit the **Attributes** menu, click **Attributes** from the navigation at the left of the **Supplier Detail** page. The Attributes menu features a list of all supplier attributes you’ve created previously, and an **Add Attribute** at the top right.
Click **Add Attribute** to open the Edit Connection Attribute window. In the **Attribute** dropdown, there are four types of attributes:
* **About Supplier:** Used to store key information about the supplier.
* **Terms & Conditions:** Specific terms and conditions related to the supplier.
* **Return Policy:** Any agreements related to returns.
* **Packing Slip Text:** Text that shows below the packing slip that's generated by the supplier when they're fulfilling the order.
### Carriers
The **Carriers** menu is where the retailer designates the Shipping Accounts this specific supplier is able to use. To visit the Carriers menu, click **Carriers** from the navigation at the left of the **Supplier Detail** page.
Click **Edit Shipping Accounts** to open the **Update Connection Shipping Methods** window. Use the checkboxes next to each shipping method to choose which ones this supplier can use.
If you don’t have any shipping accounts to choose from, you haven’t created one yet. To set up a shipping account, click on the **fabric Retailer** button in the menu at the top of the page, click **Retailer Settings**, and then click **Shipping Accounts**.
# Supplier Payment
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/supplier-payment
Track supplier invoices and payments
## Overview
Dropship enables retailers to create payments for the invoices generated by their suppliers. One payment can only contain invoices coming from a single supplier. Retailers will be able to pool multiple invoices together and create a single payment draft and add its details such as check number, check amount, and the date of payment.
Please note that this feature only facilitates creating payments against invoices to keep a record of supplier remittances. The feature doesn’t involve movement on money.
## Create Payments
To create a payment, select **Reports** in the top header, then **Payments.**
Click on **Create Payment**
Use the **Select Supplier** dropdown menu to select the recipient for the payment, then click **Continue**.
You can select the invoices to be added individually, or use the **Filter** to narrow the list to a specific range.
Browse the list, or search for invoices, then select the checkbox next to it.
After the selection is complete, click on **Actions** and **Add Invoice.**
You can also **Search** for existing payments or see a list of **Draft** and **Completed** payments.
### Adding credits to the payment
You can also add any existing credits to a payment. Credits are the amount a supplier has already been compensated with. This amount will be subtracted from the total invoice amount.
Once you have your invoices selected a payment in the **Payment Detail** screen, select the **Add Credits** link to the left.
Select the **Credits** from the list, then click **Actions**, **Add Credits.** In the confirmation dialog, select **Save**.
### Adding adjustments to the payment
To add an adjustment to a payment, select **Adjustments** in the **Payment Detail** screen, select the **Add Adjustment** button.
Select the kind of adjustment from the dropdown menu, enter the **Amount** and a **Description**. Click the **Save** button. If you need to modify or delete the adjustment, click the **Edit** link.
### Adding Check Information
Once all invoices, credits and adjustments are added, a final amount of payment will be automatically calculated.
Go to **Payment Summary Page**, to see the summary and check information.
Click on **Edit** and add the check information
* Provide Check number
* Check Amount
* Check Issue Date
Once all details are added, click on **Mark as paid** and all invoices will be closed and payment information will be recorded.
# Support
Source: https://developer.fabric.inc/v3/dropship/dropship-retailers/support
## Overview
fabric Tech Support is available for all current customers and registered prospects.
## Dropship Support for Retailers
Under the **Support** dropdown in the menu at the top of the page, select **File a Ticket,** complete the form, and click the **Submit** button. The support dropdown exists on all pages within the platform. It's helpful to submit your request directly from the page where you are experiencing the issue.
Note: Please use your company email address for all form completion.
## Definitions
Use the following lists to help guide you when filling out the Issue Type and Priority dropdown fields. Ensuring these fields are filled out correctly will help fabric's support team respond to your ticket accurately.
#### Issue Types
* Product Training: Demo fabric Dropship or feature training request.
* Merchandising: Product Help (Submission of proposals, Cost Updates, Import Request Issues, Broken Images).
* Upload Failure: Import issues (Products, Inventory, Shipment, Invoices).
* Order Help: Help during closing orders or registering shipments.
* Shopify: Shopify Help (Order fulfillment and Inventory Help).
* ShipStation: ShipStation Help (Order and Fulfillment Help ).
* Account Help: Supplier, Retailer Settings Help, Adding new users.
* EDI Integration: EDI Help (Order fulfillment and Inventory Help).
* API Integration: API Help (Order fulfillment and Inventory Help).
* Reporting: Reporting requests (Invoice export).
* Inventory Issues: Inventory Errors (Inventory not updating in fabric system).
* Proposal Help: Data Correction (fabric Dropship data team proposal help).
#### Priority Types
* Urgent: Complete loss of access to fabric Dropship.
* High: Major functionality is severely impaired (Timeout issues, Product Update Requests not passing Shopify API).
* Normal: Non-critical loss of functionality of the software or application (Shipment not registering, invoice issue, Order management issues).
* Low: General usage questions and product help issues (Documentation errors, Adding users, Product Imports, Proposal).
## General Support
If you need Tech Support for the fabric Core Platform, [click here](https://support.fabric.inc/hc/en-us/requests/new).
# BigCommerce Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/bigcommerce-integration
## Initial Setup
To access Integrations, click your account name in the menu at the top of the page. In the dropdown that appears, select **Retailer Settings**. On the Retailer Settings page, find and click the **Integrations** tile.
On the Integrations page, click the **Add Integration** button at the top-right of the page. In the Add Integration popup that appears, click the **Add** button in the BigCommerce tile.
You will be prompted to fill out your BigCommerce **Store Identifier** and **Store Token**. When finished, click the **Add Integration** button.
After successful authorization, BigCommerce will show up on the list of the integrations in the Integrations section of Dropship.
## Configuration
On the Integrations page, find and click the **Options** button to the right of the BigCommerce logo and select **Configuration** from the dropdown. The Configuration page allows you to make changes related to how order and transaction information is shared between Dropship and BigCommerce.
### Configure Webhooks
Choose whether or not to enable webhooks for **Orders**, **Inventory**, or **Fulfillment**.
* **Orders:** With the orders integration enabled, fabric can automatically send purchase orders from your supplier partners directly to your BigCommerce account. Enabling this integration means that orders from all your supplier connections in fabric will flow through this integration.
* **Inventory:** Dropship requires frequent inventory updates to reduce cancellations due to stockouts. The BigCommerce integration can sync inventory with Dropship automatically. Turn this integration off if you would prefer to update inventory manually.
* **Fulfillment:** Dropship requires frequent order fulfillment updates to track orders. The BigCommerce integration can sync order fulfillment with Dropship automatically. Turn this integration off if you would prefer to update order fulfillment manually.
**Note:** You can enable and disable these webhooks at any time.
### Webhook History
On the Integrations page, find and click the **Options** button to the right of the BigCommerce logo and select **Webhook History** from the dropdown.
The Webhook History page shows details of all the events that have been captured by Dropship from your BigCommerce store:
* **ID:** The ID of the webhook as captured by Dropship.
* **Topic:** The topic that was captured as part of the webhook.
* **Status:** The status of the webhook (success or failure).
* **Payload:** The data that was sent in the webhook payload.
* **Received:** The timestamp of when the webhook was captured. This is in the user’s local time zone.
Use the Filter feature at the top of the table to adjust the webhook information you see.
# Adding Fulfillment Locations
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/fulfillment/adding-fulfillment-locations
## Overview
To add a fulfillment location, click your supplier name in the menu at the top of the page. In the dropdown that appears, select **Supplier Settings**.
From Supplier Settings, find and click **Inventory Settings**.
In Inventory Settings, click the **Add Location** button in the Fulfillment Locations section. In the Add Location popup that appears, fill out the location's information and click the **Add Location** button at the bottom to save.
You can add as many fulfillment locations as you need.
# Bulk Actions for Orders
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/fulfillment/bulk-actions-for-orders
## Introduction
With the Bulk Actions features in Dropship, you can perform actions that affect multiple orders.
This document is divided into two sections: **Open Orders** and **Canceled Orders and Backorders**.
## Open Orders
This section outlines the steps to perform bulk actions on open orders, including printing pick tickets, reprinting shipping labels, reprinting packing slips, and manually accepting orders.
To begin, navigate to the **Orders** page in Dropship, and click one of the tiles under **Open Orders**.
On the Orders page, find the orders you would like to print a pick ticket for and click the corresponding checkboxes at the left to select them.
After you select the Orders, click the **Actions** dropdown and take the following steps based on the action you need to perform.
### Print Pick Ticket
The pick ticket differs from a packing slip. A packing slip is required for all Retailer orders and contains all of your required information. A pick ticket provides a “pick list” of the order line information with your supplier SKU information and total ordered quantity. This can be helpful if your Retailer uses a retailer SKU on the packing slip instead of your internal supplier SKU.
Select **Print Pick Tickets** from the Actions dropdown.
In the popup that appears, you will be able to download and/or print your pick tickets.
### Reprint Shipping Labels
If shipping labels are being generated directly in fabric Dropship, you can reprint them at any time.
Select **Print Shipping Labels** from the Actions dropdown.
In the popup that appears, you will be able to download and/or print your shipping labels.
### Reprint Packing Slips
To reprint a packing slip for a specific order or batch of orders, select **Print Packing Slips** from the Actions dropdown.
In the popup that appears, you will be able to download and/or print packing slips.
### Manually Accepting (Acknowledging) Orders
To accept (also called acknowledge) an order or a set of orders, select **Accept Orders** from the Actions dropdown.
In the popup that appears, you will see an overview of the orders you selected. Click **Accept All Orders** to confirm.
Once the orders have been accepted, the status will change from **Ready** to **OK**.
## Canceled Orders and Backorders
This section outlines the steps to perform bulk actions on orders that require attention, including canceled and backordered orders.
### Manually Accepting (Acknowledging) Canceled Orders
When orders are canceled by a Supplier, Retailers have the ability to acknowledge the cancellation. If you don't have an automated integration with the fabric Dropship Platform, you can acknowledge canceled orders manually within the platform.
Navigate to the **Orders** page and click **New Cancels** in the **Requires Action** section of the **Orders** dashboard.
In the list of canceled orders, **click the checkbox** beside the canceled order you would like to acknowledge.
Click the **Actions** dropdown at the top of the list and select **Acknowledge Cancels**.
Click the **Acknowledge All Cancels** in the popup window to complete the process.
### Managing orders with backordered Items
When items in an order are marked as backordered by a Supplier, Retailers have the ability to acknowledge the backorder. If you don't have an automated integration with the fabric Dropship Platform, you can acknowledge orders with backordered items directly within the platform.
Navigate to the **Orders** page and click **New Backorders** in the **Requires Action** section of the **Orders** dashboard.
In the list of backorders, click the **blue PO# link** to open the order detail page.
On the order detail page you can view the date the supplier expects the item to be back in stock in the **Key Dates** section.
You can then acknowledge the backorder by clicking the **Acknowledge Backorder** button at the top of the page.
# Fulfillment
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/fulfillment/fulfillment
Process and ship orders from all connected retail partners.
## Overview
To navigate to the **Orders** dashboard, login to the Dropship Platform and click **Orders** on the top menu bar.
The three main sections within the **Orders** Dashboard are: Open Orders, Reports, and Require Attention.
**Open Orders** - contains four pre-filtered buckets of dropship orders
* Open Orders - a list of all open orders
* Current Orders - a list of open orders that are within your fulfillment SLA
* Past Fulfillment SLA - a list of open orders that are past your fulfillment SLA
* Late Invoices - a list of open orders that have shipments but remain open due to missing invoices.
**Reports** - contains pre-filtered reports for various order details
* Orders with New Messages - Browse the latest order notes from your partners
* Shipments & Tracking - Review shipments & tracking numbers
* Returns - Track returns and RMAs
* Invoices - Review all invoices from suppliers
**Require Attention** - contains two pre-filtered buckets to manage cancellations and backorders
* New Cancels - a list of cancellations that require acknowledgement by you, the Supplier
* New Returns - a list of orders that have a return associated with them.
Clicking on any of the pre-filtered buckets within each of the main sections of the **Orders** dashboard will provide a list view of all orders that fit within the pre-filtered criteria. All data from any page containing a list view of orders can be exported by clicking on the **Export** link on the upper right side of each page. If any additional filters are applied to the page, the export will contain all orders that fit the filter criteria.
### Manage Orders in Bulk
1. To access the bulk operations page, click **Manage Orders in Bulk**.
The Bulk Operation Details Page is displayed with available workflow actions.
2. Click one of the following fields:
* **Cancel Entire Orders by PO Number**
This operation cancels all orders of the given Purchase Order Numbers. To use this operation, the following mandatory fields are required: **Purchase Order Number**, **Retailer ID**, and **Cancellation Reason Code**.
* **Cancel specific order lines by SKU**
This operation cancels all order lines when given the purchase order of a given SKU. For example, if orders include an item that's now discontinued or is OOS, you can cancel just those items. To use this operation, the following mandatory fields are required: \*\* PO Number\*\*, *SKU* and **cancellation reason code**. If **Quantities** isn't provided, the default action cancels all quantities in that order.
* **Cancel all order lines of specific SKU**
This operation cancels all order lines of the given SKU. For example: A vendor can upload a template with the **SKU** affected and the **Cancellation Reason**. Then all orders containing the affected SKUs have those SKUs cancelled instead of going into each order individually. To use this operation, the following mandatory fields are required: **SKU** and **Cancellation Reason Code**.
Only the specific SKUs are canceled when an order contains multiple order lines with different SKUs.
### Video: Dropship manual fulfillment
# Invoices
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/fulfillment/invoices
Invoice orders directly within Dropship individually or in bulk via file upload.
## Invoicing individual orders
Navigate to the list by clicking **Orders** from the top navigation menu.
From the **Orders** dashboard, choose Late Invoices to view a list of orders that have been marked as shipped but are missing an invoice.
Select an order by clicking on the **blue** link in the PO# column, click the **Invoice Order** and complete the form.
Orders must have a shipment associated with them before they're eligible for invoicing.
A pop-up window will appear. Complete the **required** data for the Invoice.
Add Invoice Number (must always be a unique reference number, can never be an Invoice Number used prior in the Dropship platform under your Supplier Account.
Add the items that you are Invoicing against.
If you have any adjustments that you wish to capture on the Invoice, click **Add adjustments** where you can proceed to select **Adjustment Types** from the dropdown menu.
Adjustments must be allowed by the retailer.
**Adjustment Types**
Charges
* Service fee
* Shipping expenses
* Other charges (if you select this option, you will have a memo appear where you can enter the type of charge you wish to capture such as a Dropship Fee)
Allowance
* Returns allowance
* Promotion allowance
* Other allowance (if you select this option, you will have a memo appear where you can enter the type of charge you wish to capture, such as a Dropship Fee)
Enter the **Calculation** of the adjustment, Flat or Percent.
Enter the total **Amount** of the adjustment.
Click **Add** to have the adjustment applied to the Invoice.
After you have completed filling out the **required** information for the Invoice, you may proceed to click the **Register Invoice** button at the bottom of the pop-up window.
If you need to add multiple invoices for a particular order, you will need to repeat the process until all items have been invoiced.
## Importing Invoices
**Navigate to the Orders Dashboard page**
* Click the **More** button towards the right-hand corner of the screen next to the search bar
* Select **Import invoices**
If you don't have the Import File Template on-hand, you may download the template via the pop-up screen for Importing Invoices. Click the blue text **import template** where the template file will automatically download for your reference and use.
After you have completed the template, save it as a .csv file. Next, drag or select the desired file to the box, then click the **Schedule Import** button.
You can view the file import status within the same pop-up screen by clicking **Check Import Status**.
### Video: Dropship manual invoicing
# Shipments & Tracking
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/fulfillment/shipments---tracking
Update orders with tracking information on a single order or in bulk via file upload and generate shipping labels.
## Register tracking
To register tracking numbers, navigate to the orders list by choosing **Orders** from the navigation menu at the top.
From the **Orders** dashboard, choose either **Open Orders**, **Current Orders**, or **Past Fulfillment SLA**. If you know the PO number of the order you would like to process, use the search bar to search that specific number.
Select an order that you want to fulfill by clicking on the link in the PO # column.
From the Fulfill Items menu, choose **Register Tracking Numbers** and complete the form.
To register a tracking number, you must enter the **Carrier & Service** and the **Tracking Number** in the form.
Select the items that are included in the shipment.
Click on **Register Tracking Number** at the bottom of the form.
NOTE: You can have multiple tracking numbers for a single order. After you register a tracking number, the form will reset so that you can quickly enter the next tracking number.
## Importing shipments
To import shipments, click the **More** button towards the right-hand corner of the screen next to the search bar, and select **Import Tracking Numbers.**
If you **don't** have the Import File Template on-hand, you may download the template via the pop-up screen for **Importing Tracking Numbers**. Click the blue **import template** link and the template file will automatically download for your reference and use.
After you have completed the template, save it as a .csv file.
Drag or select the desired file to the box, and click the **Schedule Import** button.
NOTE: You can view the file import status within the same pop-up screen by clicking on **Check Import Status**.
## Generate shipping label
To generate a shipping label, choose **Orders** from the top navigation menu.
From the **Orders** dashboard, choose either **Open Orders**, **Current Orders**, or **Past Fulfillment SLA**. If you know the PO# of the order you wish to process you can use the search bar to search a specific PO#.
Click on the blue text (PO#) of the desired order you wish to ship within one of the Order Buckets found via the main **Orders** dashboard page or use the main search bar for a specific order to launch the **Order Detail** page.
Select **Print Shipping Labels** from the **Fulfill Items** dropdown and complete the form.
If the order only requires one shipping label click **Fill All** to fulfill all units on the order for a single shipping label.
If your order requires more than one shipping label, add the number of units for each of the items by clicking on the plus sign + to add the units shipping in the package.
Add the shipping dimensions of the package and click **Create Label.**
NOTE: If your order requires multiple packages to be shipped, you will need to repeat the process until all associated items on the order.
After you have successfully generated shipping labels, the page will refresh. The tracking numbers associated with the order will appear along with a new button for your team to **Print all Labels.**
When you press the **Print All Labels** button, a pop-up will appear for your team to review the carrier shipping labels. You can click the Open in New Tab button to download and print the documents on a separate tab.
# Inventory
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/inventory
Maintain inventory positions for your items in Dropship via file upload.
## Updating inventory
1. To update existing inventory for an individual item in your product catalog, click **Products** in the top navigation menu.
The **Products Review & Export** page is displayed.
1. Click **Browse Products & Inventory**.
The **Items** page is displayed.
1. Select the item you want to update by clicking the blue hyperlink text.
2. To update an items inventory level, use the **On Hand** field.
3. Click **Update Inventory**.
### Uploading inventory through file import
1. To upload inventory into your product catalog, click **Products** in the top navigation menu.
The **Import** page is displayed.
1. Click **Update Inventory**.
2. To upload your inventory, select the correct template from the dropdown field based on the category of products you are uploading.
3. Select **Download Empty Template** to obtain a .csv file to populate with your info.
To view the headers on the file click the **Show Headers** link.
1. Select the completed file you wish to upload
2. Click **Begin Import**.
Review the results of your import.
### Video: Updating inventory
# Overview
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/overview
fabric Dropship provides suppliers a platform to discover, connect with, and grow successful partnerships with retailers to expand their reach and distribution
fabric Dropship combines ease of onboarding, technical implementation, day-to-day management, and promotional opportunities to make long-lasting, profitable connections with retailers.
## Navigation
The fabric Dropship Platform is divided into four separate sections accessible from the top navigation menu
* **Orders** - Your dashboard for managing and processing all dropship orders
* **Products** - Your dashboard for managing your item catalog. Submit new items to connected retail partners and submitting up to date inventory.
* **Retailers** - Your dashboard for reviewing all retailers who are connected to your dropship account
* **Reports** - Detailed reports to help manage your dropship business
# Import Products from Shopify
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/product-management/import-products-from-shopify
## Introduction
To import products from Shopify, click on Products in the menu across the top of Dropship.
On the Products dashboard, scroll to the bottom of the page and select **Import from Shopify** to begin pulling in your products.
Choose the products you would like to import:
* **Import products from a Shopify collection (recommended).** This method requires that you have products in a Shopify collection. You will be prompted to enter the name of the Collection in the search bar (it must match the name of your collection in Shopify).
* **Import all products that are currently published to my online store.**
Click **Continue** to begin importing.
Once products have been imported from Shopify, they will be available from the Product Dashboard. Depending on your retailer partner's product requirements, you may be asked to submit a proposal for these items.
# Product Management
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/product-management/product-management
Upload all your product offerings and submit them to your connected retailer partners.
## Browse your catalog
To view the items in your current catalog and their inventory levels, select **Browse Products & Inventory** from the **Products** dashboard.
On the **Items** page, you have options to filter the view based on several criteria by selecting **Filter**.
To find any instance of a particular item, use the **Search** function.
To create a file with the information currently in view, select the **Export** dropdown and choose the option you require. A download link will arrive at the email address of the account you are using in 5-10 minutes.
## Approving products submitted by retail partners
When your retailer submits an import request to your team, you will receive a notification from fabric alerting you that products have been submitted and require action by your team to review and approve the products.
1. To review the import request your retailer has submitted, select **Review Import Requests** within the **Products Dashboard**.
You will be able to access any current and historical import requests submitted by your retail partner within the **Import Requests** page.
2. To review and approve the import request, click the blue ID of the request with a pending status.
3. Download the file to review all product data submitted by your retailer.
Ensure the product data in the file submitted by your retailer is thoroughly reviewed to verify its accuracy.
4. If the product data is correct, click approve. Otherwise, click decline.
If an import request is declined, we recommend reaching out to your retailer to have the necessary updated/changes made and re-submitted for approval.
## Submitting Products to Retail Partners
1. Navigate to the Products dashboard.
2. To submit items to your retailer partner, select **Submit New Proposal**.
An introduction page is displayed.
3. Click **Get Started**.
4. In the **Select Retail Partner** field, choose the partner you want to receive your proposal.
5. Select the **Category** of products for this proposal.
6. Select the proposal purpose type from the following options:
* “I want to submit new products for approval”
* “I want to proposal changes to my items costs or prices”
* “I want to submit updated attributes for previously approved products”
7. Upload the category template with your product information.
If you need a template, click the **Download Sample** link in blue.
8. Click **Create Proposal**.
Once your file has been uploaded successfully, you will see **Completed** displayed. If there are any errors, you will be notified and instructions will appear on possible corrections.
9. To complete the process, click **Review Compatibility**.
Dropship will now compare and validate your imported data with the requirements of the retailer who will receive your proposal. If the data is valid, **Compatibility Passed** is displayed.
If there are any errors, you are notified and instructions appear with possible corrections.
### Error Handling
* **Ruleset Error Report:** Each proposal's compatibility check returns an Error Report file. This report includes all SKUs and an itemized list of errors corresponding to them.
* **Ruleset Failure Report:** A separate file is generated for items that encountered errors during the compatibility check. You can address these specific items and re-import them without re-processing the entire proposal.
Here you will be able to review all failing attributes (requirements) with instructions on how to resolve them.
* **I want to fix it myself:** This option allows your team to resolve the compatibility issues yourself. Your team will need to make the necessary corrections to the failing attributes on the file used to create the proposals. Once corrections have been made to the existing file, you can select the “I want to fix it myself” button to re-import the same file (with corrections) to the affected proposals to clear compatibility issues.
* **Get help from fabric:** This option allows your team to submit a request to the Dropship Product Onboarding team for further assistance. Once the product onboarding team has received your request, they will begin reviewing the affected proposal to help clear compatibility errors and enrich product data.
Once compatibility is passing on your proposal, you can proceed to **Submit for Approval**, which will notify the retailer that there is a proposal to review.
# Reporting
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/reporting
## Introduction
The Reporting features in fabric Dropship allow you to export information about your Orders, Shipments, Invoices, and Products.
To begin, log in to fabric Dropship and select **Orders** from the menu at the top of the page.
## Order Report
To export orders, click on one of the categories under **Open Orders** on the Orders page.
You will be directed to the **List** page, which shows all of the orders in the category you chose.
When exporting an orders report, you can apply different filters to the data. Some filters include Connection (retailer partner), Order Status, and Date range in which the orders were received.
Once you are ready to export the order report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Supplier account.
## Shipment Report
To export past shipments, click on **Shipments & Tracking** on the Orders page.
You will be directed to the **Tracking #s** page, which shows all of your previous shipments.
When exporting a shipment report, you can apply different filters to the data. Some filters include Connection (retailer partner) and the date the shipment was created.
Once you are ready to export the shipment report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Supplier account.
## Invoice Report
To export past invoices, click on **Invoices** on the Orders page.
You will be directed to the **Invoices** page, which shows all of your invoices.
When exporting an invoice report, you can apply different filters to the data. Some filters include Connection (retailer partner), the date invoice was submitted, and whether the invoice has been received by your retailer partner.
Once you are ready to export the invoice report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Supplier account.
## Product Report
To export your product catalog, select **Products** from the menu at the top of the page.
To access your product catalog, click on **Browse Products & Inventory**.
You will be directed to the **Items** page, which shows all of the products in your catalog.
When exporting your product catalog, you can apply different filters to the data. Some filters include Connection (retailer partner), the date the item was created, and whether the item in stock.
Once you are ready to export the product report (with or without filters), click the **Export** button to the right of the search bar.
The export will be delivered as a CSV file to the email address associated with the Supplier account.
# Retailer Information
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/retailer-information
## Introduction
The Retailer menu lets suppliers view a list of all connected retailer partners and details about each, as well as make edits to the connection settings that affect transaction and business practices with each retailer.
To view the Retailer page, click **Retailers** from the menu across the top of the page in Dropship.
The Retailer page features a searchable, filterable table that displays basic information about each retailer.
* **ID:** The connection ID. A unique value that the system assigns each specific Supplier - Retailer connection.
* **Retailer:** Name of the retailer.
* **Supplier #:** Your supplier number in the context of the connection.
* **orders (Last 7):** The total number of orders you’ve received from the retailer partner in the last seven days.
* **Integration:** The type of integration between the Retailer partner’s system and their fabric Dropship portal.
* **Status:** Status of the connection in real time.
Clicking on a retailer’s name opens the Retailer Detail page.
## Retailer Details Page
The Retailer Detail page shows information about the retailer, broken up in to four menus available at the left-hand side of the page: **Summary**, **Locations**, **Attributes**, and **Carriers**.
### Summary
Summary is the default view of the Retailer Detail menu. There are five sections: Connection Detail, Payment Settings, SLAs, Contacts, Settings, Connection Notes, and Invoice Adjustments.
#### Connection Detail
The Connection Detail section displays the following information:
* **Retailer:** The retailer’s name
* **Retailer #:** The retailer’s number
* **Retailer ID:** The retailer’s ID
* **Integration Type:** The integration type the retailer used
* **Catalog Import Method:** The method of catalog sharing you used to for this specific retailer
* **Welcome Call Date:** The date the retailer had their scheduled welcome call with fabric Dropship
* **Packing Slip Template:** The type of packing slip the retailer uses to fulfill the supplier’s orders
You can make your playbook and other assets available to all supplier partners through the portal. To do this, you need to share the assets with the fabric team. The assets are then uploaded to your account and suppliers are able to access this information on the connection details page.
#### Payment Settings
The Payment Settings section displays the following information:
* **Cost Tracking:** the cost method the retailer is using for this specific connection
* **Payment Terms:** The payment terms the retailer follows for the Purchase Orders you fulfill. There are five payment terms available: Net 15 Days, Net 30 Days, Net 45 Days, Net 60 Days, and Net 90 Days.
#### SLAs
The SLAs section shows the number of days you have to fulfill any order you receive so that you meet the SLA criteria.
#### Contacts
The Contacts section displays the following information:
* **Primary:** The primary point of contact at the retailer’s business
* **Merchandising:** The merchandising point of contact at the retailer’s business
* **Fulfillment:** The fulfillment point of contact at the retailer’s business
#### Settings
The information in the Settings section is set by your retailer partner.
* **Ship from Retailer:** If the supplier generates Shipping Labels from fabric Marketplace, enabling this option will populate the "ship from" on all shipping labels with a merchant return address. Some carriers might not respect this address, so it should be viewed as cosmetic only.
* **Auto-populate Invoice Data:** If enabled, all the invoices will be generated automatically as soon as the order is fulfilled. Only the invoice number will be left blank. Enabling this feature may reduce invoicing discrepancies, but suppliers won't be able to submit custom adjustments.
* **Require Pricing Approval On Proposals?:** If the retailer/supplier connection is using Proposals as the Catalog Import Method, enabling this option will require the extra step of approving Pricing before the proposal is accepted.
* **Include 850 In Packing Slip?:** If the supplier has an EDI integration in place, enabling this option will include the packing slip in the EDI 850 document.
* **Auto Invoice And Close Order When Fulfilled:** If this option is enabled, as soon as an order is fully shipped, the invoice is automatically generated and the order is closed. This is different from “Auto-populate Invoice Data,” which doesn't close the order. This option overrides the settings done for “Auto-populate Invoice Data.”
#### Connection Notes
The Connection Notes section keeps any notes left by fabric staff and retailers to store critical information or decision taken while onboarding or during business with the retailer.
The visibility of these notes can be set by the retailer based on the business requirements. As the supplier, you can only view the notes you have permission to see.
#### Invoice Adjustments
The Invoice Adjustments section stores the default adjustments set for the particular connection with your retailer partner.
As a supplier, you may need various adjustments on the invoices, such as shipping fees, service fess, or other types of charges incurred while fulfilling the order.
You may also have to pay certain charges on your retailer partner such as return allowances, damages etc.
To edit these settings, contact your retailer partner.
### Attributes
To visit the **Attributes** menu, select Attributes from the navigation at the left of the Retailer Detail page. You will be able to see any attributes your retailer partner might have stored related to their connection with you.
### Carriers
The Carriers menu is where the retailer designates the Shipping Accounts the supplier is able to use. To visit the Carriers menu, select **Carriers** from the navigation at the left of the Supplier Detail page.
Retailers can approve any number of Shipping Accounts to be used by you as their supplier. Once approved, you will be able to ship an order using your Shipping Accounts.
If you don’t have any carriers listed here, [you might need to set up your own carriers](/v3/dropship/dropship-suppliers/settings#shipping-accounts).
### Assets
Retailers can now make their playbook and other assets available to all supplier partners through the portal. They need to share the assets with the fabric team, which can upload them on their account and suppliers will be able to access them on the connection details page.
# Returns
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/returns
Approve and reject returns, then issue credit memos in Dropship.
## Managing Returns
If your retailer partner uses the fabric Dropship Platform to manage returns, they will create the return in Dropship and you as the supplier need to update and approve those returns in Dropship.
## Procedure
1. In the top navigation, click **Orders**.
The **Orders** page is displayed.
2. In the **More** field, select **Review Returns**.
The **Returns** page is displayed.
3. From the list of returns, click the return you want to process.
The **Return Detail** window for the return is displayed.
4. Do one of the following:
* Click **Approve Return**.
* Click **Reject Return**.
### Credit memos
When a return is approved, you are asked if you want to create a *Credit Memo* for that return.
1. In the **Confirmation** window, select the **Create a credit memo on approval** field.
2. Enter the memo.
3. Enter your credit number.
4. Click **Confirm**.
Once the return and credit memo has been processed, your retailer partner will have access to the data. If you have specific questions as to how your retailer partner manages returns, please contact them directly.
# Settings
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/settings
Manage information about your business and its operations.
To access **Supplier Settings**, click your account name in the menu at the top of the page. In the dropdown menu that appears, select **Supplier Settings**.
Use the tiles on the **Supplier Settings** page to manage everything from general information and user privileges to API clients and webhook settings.
## General Information
### Key details
Manage general information about your business.
* **Name:** The name of your business as it appears in fabric Dropship.
* **Website URL:** Your business’s URL.
* **Connections Manager:** The key contact for all supplier business inquiries.
* **Merchandising Manager:** The contact person for all product & inventory inquiries.
* **Transactions Manager:** The contact person for all order and fulfillment inquiries.
### Business address
Manage your business’s physical location information.
You must set a business address before you can start dropshipping with fabric Dropship.
## Currency Settings
**Currency Settings** is used to manage the currency of your account.
Use the dropdown menu to select your business’s primary currency. This will help Dropship apply location-specific configurations such as a product’s cost and price. Supported currencies include United States Dollar, Canadian Dollar, British Pound Sterling, and Euros.
## Notifications
Dropship supports real-time push notifications so that you can receive alerts related to transaction events.
To enable a notification, enter an email address or a distribution list, then use the toggle menu to set the notification to **Enabled** or **Not Enabled**.
Types of **Transaction Notifications**:
* **Connection Notifications:** Notifications related to your connections and connection notes.
* **Order Received:** Notifications when a new order is received.
* **Order Canceled:** Notifications when a cancellation request is received.
* **Order Ship To Address Updated:** Notifications when a “ship to” address change request is received.
* **Message Received:** Notifications when a new message is received on an orders.
* **Return Received:** Notifications when a new RMA is created on an order.
* **Return Approved/Rejected:** Notifications for when RMAs are approved or rejected.
In addition, **Digest Notifications** allow you to receive daily, aggregated reports on any late purchase orders.
## Branding
Use the **Branding** menu to upload your business’s logo. The uploaded logo is displayed to your partners throughout the fabric platform and included on your packing slip.
The ideal logo is a 360 x 120 pixel PNG.
1. To upload a logo, click **Upload From Device**.
2. Select a file from your computer.
3. Update the preview by clicking and dragging the preview to zoom, pan, and crop the image.
4. Click **Save**.
## Payment Settings (Staff Only)
Connect your bank account to your fabric Dropship profile for automatic payments through Plaid. Click the **Open Plaid** button to begin the setup process within Plaid.
## Inventory Settings
Register and update fulfillment and inventory locations.
### Inventory tracking
Inventory Tracking is used to configure how fabric tracks your inventory by choosing between **Managed** or **Unmanaged**.
* **Managed**: fabric tracks and shares inventory positions with your retail partners. Managed inventory is automatically updated when orders ship, inventory is updated, or new proposals are sent. If you are using an integration to manage inventory, it will automatically be refreshed through your integration.
* **Unmanaged**: fabric won't track inventory for any items. The fabric platform will assume all items listed in your inventory are always in stock.
Once you’ve made your selection, click **Update** to save your changes.
### Fulfillment locations
Manage the locations you stock with inventory and fulfill orders from. These locations are only used for shipping and carrier services and aren’t synched with warehouse locations. There is no limit to the number of locations you can add.
1. To add a new location, click **Add Location**.
2. Fill out the fields in the window that appears.
3. Click **Add Location**.
To make changes to a location you’ve already created, click its corresponding **Edit** button.
## User Management
Invite new users and manage existing ones.
### Creating a new user
1. To add a user to the account, click **Add New User**.
2. Enter the new user’s first name, last name, and email address.
fabric sends them an email with instructions to activate their user account.
### Editing a user
To edit a user’s account information, find and click their name on the User Management page.
The **General Settings** section allows you to edit basic profile information that identifies the user across the fabric platform. Use the Status dropdown menu to change the account between **Active**, **Suspended**, and **Invited**. Once complete, click **Update**.
The **Role** section allows you to configure a user’s access level. Click **Add Role** to assign a user a new role. To edit a user’s existing role, click the role and the **Update Role** window appears. Select a new role for the user in the dropdown menu and click **Save Role**.
**Security Credentials** allows you to give the user a new temporary password. Use the **New Password** and **Confirm Password** fields to create their new password. Upon logging in, the user is required to change their password.
**Security Info** shows details from the last time the user signed in to fabric.
## API Clients
Manage API keys for your account.
### Adding a new API Client
1. To add a new client, click **Add API Client**.
2. Provide a client name.
3. Click **Create Client**.
After the client is created, you will be able to retrieve their credentials.
### Accessing client credentials
1. To access a client’s credentials, find and click their name on the **API Clients** page.
The Client Credentials section shows the name you gave the client, their API URL, their Brand ID, and Client ID, along with the Client Secret.
2. To access the client secret, click **Get Client Secret**.
You can only access the client secret once
1. Click **Show API Secret**.
The API secret is displayed along with a copy button so that you can save it.
If you need to access the client secret again, please submit a support ticket.
## Integrations
Manage existing integrations associated with your account and add new ones.
fabric Dropship supports integrations with other e-commerce services, such as Shopify, WooCommerce, BigCommerce, ShipStation, and more.
### Adding an integration
Basic setup for integration with third-party platforms consists of clicking on the **Add Integration** button at the top-right of the page. In the Add Integration window that appears, click the **Add** button next to the platform you’d like to integrate with. From there, integrating with each platform is different, but setup includes information like the API Key, API Secret, or Store URL.
For specific setup instructions for each platform, please see the following documents:
* [Shopify](/v3/dropship/dropship-suppliers/shopify-integration)
* [WooCommerce](/v3/dropship/dropship-suppliers/woocommerce-integration)
* [BigCommerce](/v3/dropship/dropship-suppliers/bigcommerce-integration)
* [ShipStation](/v3/dropship/dropship-suppliers/shipstation-integration)
### Integration Options
Existing integrations appear on the **Integrations** page below the **Add Integration** button.
To manage an existing integration, find and click its corresponding **Options** menu. The options in the window that appears are shortcuts to edit settings within the integration. See the platform-specific setup instructions above for more details.
## Webhooks (Advanced)
Configure webhooks and review webhook history.
### Configuring webhooks
Configure webhooks to listen to key events from the fabric platform.
1. To add a new webhook, click **Add Webhook**.
* Item Inventory updated
* Offer Created
* Order Created
* Order Closed
* Shipment Closed
* Cancel Created
* Invoice Created
2. In the **Method** field, select **post**, **put**, or **patch**.
3. In the **URL** field, enter the webhook URL.
4. In the **Status** field, select whether the webhook is **Enabled** or **Disabled**.
5. Click **Add Webhook**.
### Webhook history
Review recent webhook results.
## Proposal Departments
Visit the [Proposals](/v3/dropship/dropship-retailers/proposals) page to learn more about Proposal Departments in fabric Dropship.
### Creating a proposal department
To create a new Proposal Department, click the **Create** button at the top-right of the page and fill out the fields in the **Create Department** window that appears.
* **Name:** Give the Department a name.
* **Product Import Template:** select from fabric’s default templates or a template you created.
* **Supplier Ruleset:** Select the attribute validations that suppliers must meet.
* **Retailer Ruleset:** Select the attribute validations that you must meet.
* **Sample Template URL** (optional)
## Attribute Value Transformers
Visit the [Transformers](/v3/dropship/dropship-retailers/settings/attribute-value-transformers) page to learn more about Attribute Value Transformers in fabric Dropship.
### Creating a transformer
1. To create a new transformer, click **Create Transformer**.
2. Provide a transformer name.
3. Click **Save**.
### Editing transformer attributes
1. To add a new Transformation Attribute, click in the search field in the **Transformation Attributes** section.
A list of all attributes will appear. Search through the list of attributes or begin typing the name of the attribute you would like to add.
2. When you find the desired attribute, click it to add it to the list of your transformation attributes.
Attributes you’ve added will appear in a list below the search bar.
3. Clicking on an attribute you’ve added takes you to the **Edit Transformations** page to make changes.
The **Attribute Settings** section allows you to update the attribute for the transformation.
4. Click the **Edit** button to search for a different attribute.
5. Click **Update** when finished.
6. The **Transformation Settings** section allows you to configure transformations for the attribute.
7. Enter an **Attribute Value Match** and a **Transformation Output Value** and click **Create**.
The attributes you create in the Transformation Settings section will appear in the **Transformations** section below.
8. Edit an attribute by clicking on its corresponding **Edit** button.
9. In the window that appears, you can give the attribute a new **Attribute Value Match** and a new **Translation Output**.
10. Click **Update** when finished.
## Product & Inventory Templates
Create and manage product and inventory templates.
### Creating a new template
1. To create a new template, click **Create Template**.
The create template page is displayed.
2. In the name field, provide a template name.
3. In the data type field, select the templates data type, and choose whether this template imports to Dropship, or exports from Dropship.
4. Click and drag a test file from your computer to the **Sample File** field.
This field is used by fabric to check and make sure column headers are correctly formatted. After a test file has been uploaded, the **Column Mappings** section appears.
5. For each column in your file, you can map it to the closest available attribute. Use the **Priority column** to rank the **Column Headers** by importance.
6. Click **Save Template**.
### Editing a template
1. To access a template, click the Template page.
2. In the template list that's displayed, click a template.
The template settings menu is displayed.
3. In the **Name** field, provide a name for the template.
4. In the **Data Type** field, select a data type.
5. In the **Direction** field, select a direction.
6. Click **Update Template**.
### Template mappings
The Template Mappings menu allows you to review the template columns.
1. To edit an existing Column Header, click its title.
The **Edit Template Mapping Style Name** window is displayed.
2. Optionally update the following fields:
* Column Header Name
* Platform Attribute
* Target
* Priority
Additionally, you can mark whether a column is required or not.
1. Click **Save**.
#### Create a new template mapping
1. To add a new mapping, click **Add Mapping** at the top-right of the **Template Mappings** section.
2. Optionally fill out the following fields:
* Column Header Name
* Platform Attribute
* Target
* Priority
Additionally, you can mark whether a column is required or not.
1. Click **Save**.
## Shipping Accounts
Create and manage Shipping Accounts
### Adding a shipping account
1. To add a new shipping account, click **Add Shipping Account**.
The **Add Shipping Account** window appears.
2. In the **Nickname** field, give shipping account a nickname.
3. In the **Carrier** field, select a shipping provider.
4. Click **Save & Continue**.
## Subscriptions
Configure subscriptions and review available resources.
The Subscriptions page shows an overview of RevCascade’s tiered subscription plans. Click the Subscribe button to open the payment portal in a new window.
## Terms of Service
Review the Terms of Service from fabric Dropship.
Click the fabric Dropship Supplier Agreement link to open a PDF of the Terms of Service in a window.
# ShipStation Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/shipstation-integration
## Initial Setup
To access Integrations, click on your account name in the menu at the top of the page. In the dropdown that appears, select **Retailer Settings**. On the Retailer Settings page, find and click on the **Integrations** tile.
On the Integrations page, click on the **Add Integration** button at the top-right of the page. In the Add Integration popup that appears, click the **Add** button on the ShipStation tile.
You will be prompted to fill out your ShipStation **API Key** and **API Secret**. When finished, click the **Add Integration** button.
After successful authorization, ShipStation will appear in your list of integrations in Dropship.
If you don't have your ShipStation credentials, [use their guide](https://help.shipstation.com/hc/en-us/articles/360025856212-ShipStation-API) to learn how to generate your API Key and Secret.
## Configuration
On the Integrations page, find and click on the **Options** button to the right of the ShipStation logo and select **Configuration** from the dropdown. The Configuration page allows you to make changes related to how order and transaction information is shared between Dropship and ShipStation.
### Orders
Dropship can send orders directly to your ShipStation account so that you can view all your orders in one place. Enabling this option allows you to fulfill orders from ShipStation while fabric captures the fulfillment details every time an order is fulfilled.
Click the **Enable Integration** button to turn on the Push Orders to ShipStation feature.
Click **Disable Integration** to turn off Push Orders to ShipStation feature.
**Please note:** the Push Orders to ShipStation feature affects all of your retail partners; it **can't** be configured to each individual partner.
### Configure fulfillments
Configure how ShipStation syncs fulfillments with fabric.
When tracking numbers are added to your fulfillments, you have the option to automatically return the tracking numbers to your Retailer partner.
Click the **Enable Integration** button to turn on the Pull Shipments from ShipStation feature.
Once you’ve made a selection click **Enable Integration**.
To disable fulfillment sync, click the **Disable Integration** button.
## Webhook History
Select **Webhook History** from the **Options** dropdown on the Integration page.
The Webhook History page shows details of all the events that have been captured by Dropship from ShipStation:
* ID: The ID of the webhook as captured by Dropship. This ID is generated by Dropship.
* Topic: The topic that was captured as part of the webhook.
* Received: The timestamp of when the webhook was captured, shown in the user’s local time zone.
* Has Message?: A checkmark will indicate whether or not the webhook came with an additional message, such as the reason of failure or skipping.
* Status: The status of the webhook in Dropship.
### Inspect Webhook
Click on a webhook ID to open the Inspect Webhook dialog. Inspect Webhook shows information captured in the webhook and includes a message to provide details on the status of the webhook.
# Shopify Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/shopify-integration
## Initial Setup
You can connect to Shopify during onboarding with fabric Dropship by selecting **Shopify** under your **Transaction Integration Task** which prompts you to complete the **Connect to Shopify** task. During onboarding, if you aren't ready to connect to Shopify, the integration can always be established later.
Please file a ticket with the fabric Dropship support team if you are interested in connecting to Shopify.
## Integration Options
On the **Integrations** page in fabric Dropship, you will see the Shopify logo with an **Options** button next to it. Click the **Options** button and in the window that appears, choose whether you would like to edit the **Configuration**, **Webhook History**, or **Utilities**.
### Configuration
Select **Configuration** from the **Options** dropdown on the Integration page. The Configuration page allows you to make changes related to how order and transaction information is shared between Dropship and Shopify.
### Orders
Configure how your Shopify store syncs orders with fabric.
Dropship can send orders directly to your Shopify store so that you can view all your orders in one place. Enabling this option allows you to fulfill orders from your Shopify store while fabric captures the fulfillment details every time an order is fulfilled.
Click the **Enable Integration** button to turn on the Push Orders to Shopify feature.
Click **Disable Integration** to turn off Push Orders to Shopify feature.
The Push Orders to Shopify feature affects all of your retail partners; it can't be configured to each individual partner.
### Configure fulfillments
Configure how your Shopify store syncs fulfillments with fabric.
When tracking numbers are added to your fulfillments, you have the option to automatically return the tracking numbers to your Retailer partner.
Use the **Select Webhook** dropdown to choose how fabric captures fulfillment updates.
* **Fulfilment Created:** If you are using Shopify’s fulfilment method to print shipping labels, use this option to notify Dropship about the fulfilment.
* **Fulfilment Updated:** If you are using any other external app to create fulfillments and updating them later, select this option to notify Dropship about the fulfilment.
Once you’ve made a selection click **Enable Integration**.
To disable fulfillment sync, click the **Disable Integration** button.
### Cancellations
Configure how your Shopify store syncs full cancellations with fabric.
When you cancel an order in its entirety in Shopify, we can automatically cancel that order in fabric Dropship.
Click the **Enable Integration** button to turn on the cancellation sync feature.
To disable cancellation sync, click the **Disable Integration** button.
fabric listens to both fully and partially cancelled orders, but Shopify only publishes this specific event when there is a FULL cancellation. Partial cancellations still have to be registered via the supplier portal.
### Inventory
Configure how your Shopify store syncs inventory with fabric.
With this feature enabled, Dropship listens to the product and inventory updates in your Shopify store and updates the inventory count with the Dropship portal in real-time. This allows you to make sure your Retailer partners have up-to-date inventory numbers.
Use the **Select Webhook** dropdown to choose how fabric sync orders, choose **Product/Inventory Updated (Recommended)**, and then click **Enable Integration**.
To disable inventory sync, click the **Disable Integration** button.
## Webhook History
Select **Webhook History** from the **Options** dropdown on the Integration page.
The Webhook History page shows details of all the events that have been captured by Dropship from your Shopify store:
* ID: The ID of the webhook as captured by fabric Dropship. This ID is generated by Dropship.
* Topic: The topic that was captured as part of this webhook.
* Received: The timestamp of when the webhook was captured. This is in the user’s local time zone.
* Has Message?: A checkmark will indicate whether or not the webhook came with an additional message, such as the reason of failure or skipping.
* Status: The status of the webhook in fabric Dropship.
### Inspect Webhook
Click on a webhook ID to open the Inspect Webhook dialog. Inspect Webhook shows information captured in the webhook and includes a message to provide details on the status of the webhook.
## Utilities
Select **Utilities** from the **Options** dropdown on the Integration page.
The Utilities page features tools to troubleshoot issues and manually sync types of data between your fabric and Shopify accounts.
### Retry Fulfillment
If an order fulfillment didn't import into fabric, it's likely there was a problem processing the Shopify webhook.
Enter an order number in the **Shopify Order Number** field, click the **Retry Fulfillment Import** button, and fabric will attempt to fetch and import existing fulfillments.
### Sync Variant
This utility attempts to sync variants between Shopify and fabric using a fabric Item ID, which can be found on the item details page under the heading **ID**.
Enter a value in the **fabric Item ID** field and click **Run Sync**, and fabric will search your Shopify store for any items matching using the Retailer SKU, Supplier SKU, and/or UPC.
### Sync Variants by Supplier
This utility attempts to sync variants between Shopify and fabric using a supplier name.
Enter a name in the **Shopify Supplier Name** field and click the **Run Sync** button.
This will search your Shopify store for all items matching the name you entered that were name created within the last 30 days, and then attempt to sync them with variants in fabric. Please enter the supplier name exactly as it appears in Shopify.
### Sync Variants by Date
This utility attempt to sync variants between Shopify and fabric using a date range.
This utility searches your Shopify store for all items created within specified date range and attempts to sync them with variants in fabric. fabric checks if the Shopify variant's SKU field matches the Merchant Retailer SKU, the UPC, or the Supplier SKU (in that order).
* **Look for products created between two given dates:** only syncs the items that were created in the specified date range. Any items outside the date range will be ignored.
* **Run Sync against all products:** syncs your entire Shopify catalog with fabric Dropship. This process is usually very slow and can take hours, even days depending on your catalog size.
After you’ve made your selection, click **Run Sync** to begin the process.
### Sync Variants by Metafields
You can publish Metafields and their values at the variant level.
### Customizable Order Notes
Order notes can be customized to include the “Fulfill By” date.
# Supplier Onboarding Guide
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/supplier-onboarding-guide
## Introduction
Welcome to fabric Dropship. This guide will walk you through the supplier onboarding workflow.
## Welcome Email
The Dropship onboarding process begins with a welcome email that contains a unique link to Dropship that will connect you to your retail partner.
If you are having trouble finding your invitation email, start by checking your spam folder. If you still can’t find the invitation email, ask the retailer who invited you or your fabric onboarding specialist to resend the invitation email. If you still don’t receive the email, reach out to [fabric Support](https://support.fabric.inc/hc/en-us/requests/new).
After clicking the link to begin the onboarding process, you are directed to the **Sign Up** screen.
* If you are new to Dropship and don't have an account, select **I am new to fabric Dropship** to set up your account.
* If you already have an account, select **I already have a fabric Dropship account**.
Once you have completed initial account setup and logged in, you will need to complete the [onboarding tasks](#onboarding-tasks) to finish the onboarding process.
## Onboarding Tasks
After your onboarding call, you will need to complete the onboarding tasks to finish the onboarding process.
The **Onboarding Tasks** page has a checklist that includes setup tasks such as:
* Adding a [Billing address](#billing-address)
* Adding a [default fulfillment location](#default-fulfillment-location)
* Adding [Primary contacts](#primary-contacts)
* Configuring the [Transactions Integration](#transactions-integration)
* [Getting Started with EDI](#getting-started-with-edi)
* Configuring [Product Imports & Proposals](#catalog-import-products-approve-import-request)
* Configuring [Notifications](#notifications)
* (Optional) [Schedule a Demo Call](#schedule-a-demo-call-optional)
The Onboarding Tasks page is accessible by clicking on **fabric Home** from the menu at the top of the page in Dropship and selecting **Onboarding**.
Dropship will also remind you of any incomplete tasks whenever you log in by displaying the **Continue Onboarding** popup.
### Billing address
Click **Start** next to the Billing Address section of the Onboarding Tasks page to add your address.
The billing address is for all payment remittances and other communication with the retailer and Dropship. Fill out the Legal Business Name field, as well as all of the other address fields.
When finished, click **Continue**.
### Default fulfillment location
Click **Start** next to the Default Fulfillment Location section of the Onboarding Tasks page to add your Default Fulfillment Location.
The Default Fulfillment Location serves as the default warehouse for all of your orders. It's mandatory to set up your default warehouse before proceeding as a supplier.
When finished, click **Continue**.
**Note:** After you set up the default location, you can add more locations (warehouses) by clicking on **fabric Home** from the menu at the top of the page in Dropship, selecting **Supplier Settings**, and then clicking on **Inventory Settings**.
### Primary Contacts
Click **Start** next to the Primary Contacts section of the Onboarding Tasks page to add contacts at your organization.
Three contacts are required to complete this task:
* The **Primary Business Contact** is notified of any policy- or business-related changes to your relationship with the retailer.
* The **Merchandising Contact** is contacted by the retailer to discuss things related to merchandising, proposals, and products being dropshipped with the retailer.
* The **Fulfillment Contact** is contacted by the retailer whenever there is an issue with order fulfillment, such as delays, missing shipments, or order cancellation.
When finished, click **Complete Task**.
### Transactions Integration
Click **Start** next to the Transactions Integration section of the Onboarding Tasks page.
Dropship supports multiple methods to trade inventory, order, shipment, and inventory data. As a supplier, you can choose the integrations you want to have with Dropship.
For low and medium order volumes, we recommend using the fabric Supplier Portal, which includes import/export tools to process orders in bulk. For higher volumes, we recommend using EDI or API.
Choose an integration method in the Integration Options window, click **Complete Task**, and then complete the following steps to finish setting up that option.
#### EDI: Managed Onboarding
Create your Dropship EDI account by filling out the **EDI Qualifier** and **EDI ID** fields, and then clicking **Create EDI Account**. The fabric team will help you onboard your EDI.
#### fabric Supplier Portal
There are no additional steps required to set up the fabric Supplier Portal integration.
#### ShipStation
fabric can be configured to automatically push purchase orders to and pull tracking numbers from your ShipStation account. Enter your **ShipStation API Key** and **ShipStation API Secret** and then click **Continue**.
On the following screen, you can specify a ShipStation Store ID if you would like orders to land in a designated ShipStation store. Otherwise, your orders will land in your default ShipStation store. This field is optional. Enter a Store ID or leave the field blank and then click **Continue**.
The next screen allows you to select the tags you want to be added to all orders that go from Dropship to ShipStation. If you would like fabric to tag orders, select the tag from the list below. If you need to a new tag, create it in your ShipStation account and it will be available in Dropship instantly. When finished, click **Continue**.
#### Shopify
The Dropship Shopify app can be installed to automatically push purchase orders into your Shopify store and pull tracking numbers once you ship. To install the app, fill out the **Shopify Store Name** and **API Key** fields and then click **Continue**.
Once your store is connected, you can configure the integration’s webhooks and other settings. Click **Continue** to finish.
#### BigCommerce
The Dropship BigCommerce app can be installed to automatically push purchase orders into your BigCommerce store and pull tracking numbers once you ship. To install the app, fill out the **Store Identifier** and **Store Token** fields.
You can find your Store Identifier in your BigCommerce store URL. Example: store-**storeidentifier**.mybigcommerce.com/admin.
Your Store Token is the admin API Key you can generate from your BigCommerce account.
When you’ve entered your information, click **Continue**.
#### WooCommerce
The Dropship WooCommerce app can be installed to automatically push purchase orders into your WooCommerce store and pull tracking numbers once you ship. To install the app, fill out the **WooCommerce Store URL** field and then click **Continue**.
Once your store is connected, click **Install App** to finish.
#### API
There are no additional steps required to set up an API integration.
### Getting started with EDI
fabric trades EDI documents over SFTP through our proprietary, in-house EDI system.
In this onboarding task, you are asked to download and review fabric’s “EDI Specifications” file.
1. Click continue
You are prompted to create and EDI account.
2. Retrieve and input your EDI Qualifier and EDI ID to create the account.
3. The fabric team will help you set up and test your EDI integration.
### Catalog (Import Products/Approve Import Request)
Depending on your connection settings, you will see either **Import Products** or **Approve Import Request** for the **Catalog** section.
* **About Product Imports & Proposals** means you need to create products by importing them.
* **Approve Import Request** means that your retail partner creates products and you have to approve their requests for products.
Click **Start** to begin the process. You are presented with a how-to video relevant to the import process you selected.
### Video: Approve import requests
### Product imports & proposals
Based on the category of products you are uploading, select a template from the dropdown, choose a file to upload, and then click Import.
To learn more about importing products, see [Adding products to your catalog](/v3/dropship/dropship-suppliers/product-management/product-management#adding-products-to-your-catalog).
### Video: Submit a proposal for a new product
### Approve import request
A fabric retailer will submit a request to upload a set of products on your behalf. Once submitted, this “import request” requires your approval.
When the retailer submits the import request, you receive an email with instructions and a link to view the products and approve the request.
You don’t have to take any action at this time.
1. Click **Complete Task** to continue onboarding.
2. (Optional) Click **Schedule a Demo Call** after the **Notifications** section, before **Complete Onboarding**.
### Notifications
Click **Start** next to the Notifications section of the Onboarding Tasks page to configure which push notifications you receive.
There are four types of notifications to configure:
* **Connection:** notifications whenever there are changes to your connections or connection notes
* **Order Received:** notifications whenever you receive an order
* **Order Change Requests:** notifications when a customer has requested a change to their order
* **Order Digest:** a notification at the end of each business day that contains a summary of that day’s new or open orders
For each step in the Notifications workflow, enter an email address to enable the notification and click **Save & Continue**. To disable the notification, click **Skip Notification**.
### Schedule a demo call (Optional)
Still have questions about fabric? Feel free to schedule a call with our team of specialists to discuss your questions and concerns! We recommend that you invite any members of your team who may be using **Dropship** to join the onboarding call.
## Complete Onboarding
After you have finished all of your onboarding tasks, your retail partner will receive a notification to activate your connection. Once the retailer has activated the connection, click the **Complete Onboarding** button at the bottom of the Onboarding Tasks page. You will start receiving orders in the Dropship portal.
# Support
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/support
## Overview
fabric Tech Support is available for all current customers and registered prospects.
## Dropship Support for Suppliers
Under the **Support** dropdown in the menu at the top of the page, select **File a Ticket,** complete the form, and click the **Submit** button. The support dropdown exists on all pages within the platform. It's helpful to submit your request directly from the page where you are experiencing the issue.
Note: Please use your company email address for all form completion.
## Definitions
Use the following lists to help guide you when filling out the Issue Type and Priority dropdown fields. Ensuring these fields are filled out correctly will help fabric's support team respond to your ticket.
#### Issue types
* Product Training: Demo fabric Dropship or feature training request.
* Merchandising: Product Help (Submission of proposals, Cost Updates, Import Request Issues, Broken Images).
* Upload Failure: Import issues (Products, Inventory, Shipment, Invoices).
* Order Help: Help during closing orders or registering shipments.
* Shopify: Shopify Help (Order fulfillment and Inventory Help).
* ShipStation: ShipStation Help (Order and Fulfillment Help).
* WooCommerce: WooCommerce Help (Order and Fulfillment Help).
* BigCommerce: BigCommerce Help (Order and Fulfillment Help).
* Account Help: Supplier, Retailer Settings Help, Adding new users.
* EDI Integration: EDI Help (Order fulfillment and Inventory Help).
* API Integration: API Help (Order fulfillment and Inventory Help).
* Reporting: Reporting requests (Invoice export).
* Inventory Issues: Inventory Errors (Inventory not updating in fabric system).
* Proposal Help: Data Correction (fabric Dropship data team proposal help).
#### Priority types
* Urgent: Complete loss of access to fabric Dropship.
* High: Major functionality is severely impaired (Timeout issues, Product Update Requests not passing Shopify API).
* Normal: Non-critical loss of functionality of the software or application (Shipment not registering, invoice issue, Order management issues).
* Low: General usage questions and product help issues (Documentation errors, Adding users, Product Imports, Proposal).
## General support
If you need Tech Support for the fabric Core Platform, [click here](https://support.fabric.inc/hc/en-us/requests/new).
# WooCommerce Integration
Source: https://developer.fabric.inc/v3/dropship/dropship-suppliers/woocommerce-integration
## Initial Setup
To access Integrations, click on your account name in the menu at the top of the page. In the dropdown that appears, select **Supplier Settings**. On the Supplier Settings page, find and click on the **Integrations** tile.
On the Integrations page, click on the **Add Integration** button at the top-right of the page. In the Add Integration popup that appears, click the **Add** button in the WooCommerce tile.
You will be prompted to fill out your **WooCommerce Store URL**. When finished, click the **Add Integration** button.
After successful authorization, WooCommerce will show up on the list of the integrations in the Integrations section of Dropship.
## Configuration
On the Integrations page, find and click on the **Options** button to the right of the WooCommerce logo and select **Configuration** from the dropdown. The Configuration page allows you to make changes related to how order and transaction information is shared between Dropship and WooCommerce.
### Configure Webhooks
Choose whether or not to enable webhooks for **Orders**, **Inventory**, or **Fulfillment**.
* **Orders:** With the orders integration enabled, fabric can automatically send purchase orders from your supplier partners directly to your WooCommerce account. Enabling this integration means that orders from ALL of your supplier connections in fabric will flow through this integration.
* **Inventory:** Dropship requires frequent inventory updates to reduce cancellations due to stockouts. The WooCommerce integration can sync inventory with Dropship automatically. Turn this integration off if you would prefer to update inventory manually.
* **Fulfillment:** Dropship requires frequent order fulfillment updates to track orders. Our WooCommerce integration can sync order fulfillment with Dropship automatically. Turn this integration off if you would prefer to update order fulfillment manually.
**Note:** You can enable and disable these webhooks at any time.
### Webhook History
On the Integrations page, find and click on the **Options** button to the right of the WooCommerce logo and select **Webhook History** from the dropdown.
The Webhook History page shows details of all the events that have been captured by Dropship from your WooCommerce store:
* **ID:** The ID of the webhook as captured by Dropship.
* **Topic:** The topic that was captured as part of the webhook.
* **Status:** The status of the webhook (success or failure).
* **Payload:** The data that was sent in the webhook payload.
* **Received:** The timestamp of when the webhook was captured. This is in the user’s local time zone.
Use the Filter feature at the top of the table to adjust the webhook information you see.
# Create attribute
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/attributes/create-attribute
attributes.openapi post /attributes
Use this endpoint to create a new attribute. Attributes can be used as part of the qualifications for promotions or coupons.
# Delete attribute
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/attributes/delete-attribute
attributes.openapi delete /attributes/{attributeId}
Using this endpoint, you can delete an attribute by its ID.
# Get all attributes
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/attributes/get-all-attributes
attributes.openapi get /attributes
Using this endpoint, you can get a paginated list of attributes. You can narrow down the search results by specifying pagination criteria, and you can also sort the results.
# Get attribute
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/attributes/get-attribute
attributes.openapi get /attributes/{attributeId}
Using this endpoint, you can get details of an attribute by its ID.
# Update attribute
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/attributes/update-attribute
attributes.openapi put /attributes/{attributeId}
Using this endpoint, you can update an attribute by its ID. You can primarily update attribute and its value.
# Download exported CSV file
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/exports/download-exported-csv-file
exports-offers.openapi post /offers-exports/actions/download-export-file
This endpoint lets you generate a URL, using fileId, from which you can download the exported CSV file. The generated URL expires in five mins.
# Get all export requests
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/exports/get-all-export-requests
exports-offers.openapi get /offers-exports
Get a paginated list of all the export requests.
# Get export request by ID
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/exports/get-export-request-by-id
exports-offers.openapi get /offers-exports/{exportId}
Get the details of a specific export request by the corresponding `exportId` that was generated from the [initiate export request](/v3/api-reference/offers/exports/initiate-export-request) endpoint.
# Initiate export request
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/exports/initiate-export-request
exports-offers.openapi post /offers-exports
Initiate an export request based on the specified filter criteria.
# Generate URL to import a CSV file
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/imports/generate-url-to-import-a-csv-file
imports-offers.openapi post /offers-imports/actions/generate-upload-url
Use this endpoint to create a secured S3 URL to import a CSV file, allowing for bulk data updates from the information within the file. For example, if the data in the file is price type, then only the price related data will be updated. Note that an error will be shown if the type of data included in the file doesn't match with the data type mentioned in the request body. You must upload only one single file, specifically in the CSV format, to the generated URL.
# Get import job by ID
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/imports/get-import-job-by-id
imports-offers.openapi get /offers-imports-jobs/{jobId}
Get details of a specific import job by job ID.
# Get import jobs
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/imports/get-import-jobs
imports-offers.openapi get /offers-imports-jobs
Get a paginated list of import jobs.
# Retrieve the download URL for an error file
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/imports/retrieve-the-download-url-for-an-error-file
imports-offers.openapi post /offers-imports/actions/generate-error-file-download-url
Use this endpoint to retrieve an AWS S3 URL to access the error data of a previously imported file. The URL is valid for five minutes. Make a GET request with this URL to download the error data in a CSV format.
# Create product exclusion list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/product-exclusion-lists/create-product-exclusion-list
product-exclusion-lists.openapi post /product-exclusion-lists
Create a product exclusion list with target products that will be exempted from being discounted.
# Delete a specific product exclusion list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/product-exclusion-lists/delete-a-specific-product-exclusion-list
product-exclusion-lists.openapi delete /product-exclusion-lists/{id}
Delete a specific product exclusion list by ID.
# End a product exclusion list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/product-exclusion-lists/end-a-product-exclusion-list
product-exclusion-lists.openapi post /product-exclusion-lists/{id}/actions/end
End a product exclusion list by setting the start date and end date to the same current date. When you end a product exclusion list, target products of the product exclusion list become eligible for discounts.
# Get a specific product exclusion list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/product-exclusion-lists/get-a-specific-product-exclusion-list
product-exclusion-lists.openapi get /product-exclusion-lists/{id}
Get a specific product exclusion list by ID. The response contains a list of target products that are exempted from being discounted based on the `scopes` value.
# Get all product exclusion lists
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/product-exclusion-lists/get-all-product-exclusion-lists
product-exclusion-lists.openapi get /product-exclusion-lists
Get a paginated list of product exclusion lists based on the query parameters.
# Product Exclusion Lists
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/product-exclusion-lists/overview
Product exclusion lists let you protect SKUs from being discounted by active promotions. These endpoints let you create and manage such product exclusion lists.
# Update a specific product exclusion list
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/product-exclusion-lists/update-a-specific-product-exclusion-list
product-exclusion-lists.openapi put /product-exclusion-lists/{id}
Update a specific product exclusion list record by ID.
# Get all redemption details
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/redemptions/get-all-redemption-details
redemptions.openapi get /redemptions
Use this endpoint to retrieve a list of redemption records. You can filter the records using parameters, such as `couponCode`, `userId`, `email`, `orderId`, or `storeId`.
# Create segment
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/segments/create-segment
segments.openapi post /segments
Create a segment to group a specific set of customers. By segmenting customers, you can gain insight into which products are popular among different customer segments, and can create targeted retention strategies. You can also create targeted marketing campaigns that can result in higher conversion rates and increased sales.
# Delete a specific segment
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/segments/delete-a-specific-segment
segments.openapi delete /segments/{segmentId}
Delete a specific segment by ID.
# Get a specific segment
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/segments/get-a-specific-segment
segments.openapi get /segments/{segmentId}
Get details of a specific segment by ID.
# Get all segments
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/segments/get-all-segments
segments.openapi get /segments
Get a paginated list of all the created segments.
# Segments
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/segments/overview
Segmentation is a way of grouping customers that share similar characteristics, such as loyalty status, demographics, location, or device type. Using the `segment` endpoints, merchants can create and manage segments. After creating a segment of customers, merchants can target promotions to a specific customer segment by linking the promotion to a segment identifier.
# Update a specific segment
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/segments/update-a-specific-segment
segments.openapi put /segments/{segmentId}
Update a specific segment by ID.
# Coupon
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/coupon
### Overview
Coupons are used to apply discounts on items, carts, or shipping during the checkout process. By subscribing to coupon-related events, as merchants, you can get event-specific information, including coupon ID, event name, and event status.
The following table details various coupon-related events along with the example responses:
### Events
| Event Type | Description | Example Response |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| offers:coupon:created | The event is triggered when a coupon is created. | `{ "specversion": "v1", "type": "offers:coupon:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON", "status": "CREATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:coupon:deleted | The event is triggered when a coupon is deleted. | `{ "specversion": "v1", "type": "offers:coupon:deleted", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON", "status": "DELETED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:coupon:updated | The event is triggered when a coupon is updated. | `{ "specversion": "v1", "type": "offers:coupon:updated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON", "status": "UPDATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:coupon:enabled | The event is triggered when a coupon is enabled. Only disabled coupons can be enabled. When a coupon is enabled, shoppers can use them to get a discount on eligible products. | `{ "specversion": "v1", "type": "offers:coupon:enabled", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON", "status": "ENABLED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:coupon:disabled | The event is triggered when a coupon is disabled. When a coupon is disabled, shoppers can't use them to get a discount on their purchases. | `{ "specversion": "v1", "type": "offers:coupon:disabled", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON", "status": "DISABLED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:coupon:activated | The event is triggered when a coupon becomes active and is available for use. | `{ "specversion": "v1", "type": "offers:coupon:activated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON", "status": "ACTIVATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:coupon:deactivated | The event is triggered when a coupon is deactivated and is no longer available for use. | `{ "specversion": "v1", "type": "offers:coupon:deactivated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON", "status": "DEACTIVATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:couponCode:created | The event is triggered when a coupon code is created. | `{ "specversion": "v1", "type": "offers:couponCode:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON-CODE", "status": "CREATED", "promotionId": "642babcd3ebd250008455701","couponCode":"ABC-123" "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:couponCode:updated | The event is triggered when a coupon code is updated. | `{ "specversion": "v1", "type": "offers:couponCode:updated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "COUPON-CODE", "status": "UPDATED", "promotionId": "642babcd3ebd250008455701","couponCode":"ABC-123" "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
# Global Exclusion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/global-exclusion
### Overview
Global exclusion refers to a list to which you can add SKUs to prevent them from being discounted by active promotions. By subscribing to global exclusion events, as merchants, you can get event-specific information, including the ID of the global exclusion list.
The following table details various global exclusion events along with the example responses:
### Events
| Event Type | Description | Example Response |
| ------------------------------ | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| offers:globalExclusion:created | The event is triggered when a global exclusion list is created. | `{ "specversion": "v1", "type": "offers:globalExclusion:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "GlobalExclusion", "status": "CREATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
| offers:globalExclusion:deleted | The event is triggered when a global exclusion list is deleted. | `{ "specversion": "v1", "type": "offers:globalExclusion:deleted", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "GlobalExclusion", "status": "DELETED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
| offers:globalExclusion:updated | The event is triggered when a global exclusion list is updated. | `{ "specversion": "v1", "type": "offers:globalExclusion:updated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "GlobalExclusion", "status": "UPDATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
# Glossary
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/glossary
This section collects brief definitions of some of the technical terms used in the documentation for Convoy.
### Projects
Projects are used to create logical contexts or separate environments (dev, staging & production). Different projects can also be created for different teams each with its own login details on the same convoy deployment.
### Endpoints
An endpoint represents a target URL to receive events. An endpoint can be in either of these states - `active`, `inactive` or `pending`. When an endpoint is in the `inactive` state all events sent will be saved but not dispatched until the endpoint is re-enabled. These events are known set to the `Discarded` state.
### Events
An event represents a specific event triggered by your system. Convoy persists events sent to [dead endpoints](#dead-endpoints) with a status - `Discarded`. This enables users re-activate their endpoints and easily retry events without the need to re-trigger the events from your systems.
### Event delivery
An event delivery is resource that tracks successive attempts to deliver the event payload to each endpoint. Multiple event deliveries can be created for a single event, this is influenced by the number of subscriptions that are matched to it.
### Event Types
Events are sent to an endpoint depending on the event type, which is defined when creating the endpoint defaulting to `"*"` if not set, which is a catch all for all events. An endpoint can define multiple event types, as such it will receive an event from all those events. Event types are matched using direct string comparison and are case sensitive. Support for regex event matching is planned.
### Delivery Attempts
A delivery attempt represents a single attempt to dispatch an event to an endpoint. Specifically, it contains two things - Request Headers & Payload, Response Headers & Payload. Convoy records this information for every retry attempt sent. The UI currently shows only the last delivery attempt. The number of delivery attempts and retry strategy can be configured per group.
### Dead Endpoints
A dead endpoint is an endpoint that failed consecutively to acknowledge events. Currently, we define consecutively failures as at least one event as maxed out it's retry limit to the maximum configured. In the future, we should support different consecutive failure strategies.
### Secrets
Secrets are used to sign the payload when sending events to an endpoint. If you don't supply a secret convoy will generate one for you.
### Hash Functions
We've found out that most implementations use `SHA256` or `SHA512`. However, Convoy also supports the following hash functions:
* `MD5`
* `SHA1`
* `SHA224`
* `SHA256`
* `SHA384`
* `SHA512`
* `SHA3_224`
* `SHA3_256`
* `SHA3_384`
* `SHA3_512`
* `SHA512_224`
* `SHA512_256`
### Replay Attacks
A replay attack occurs when an attacker intercepts a valid network payload with the intent of fraudulently re-transmitting the payload. Convoy supports replay attack prevention by including a timestamp in the request header under the key `Convoy-Timestamp`. This timestamp is also included in the signature-header and is signed together with the request body using the endpoint secret. Therefore, an attacker can't change the timestamp without invalidating the signature. Take the following steps to verify your signature and prevent replay attacks;
* Extract the timestamp and the signed signature-header from the request header, extract the request body.
* Prepare a string by concatenating the timestamp followed by a `,` and the request body.
* Generate a signature of the concatenated string using the endpoint secret and your hashing algorithm (e.g `SHA256`)
* Compare the newly generated signature with the value in the signature-header, if the signatures match, check the time interval between the timestamp and the current time. In your system, set a tolerance on this time interval to prevent replay attacks.
### Rate Limiting Endpoints
While you are guaranteed you'll be able to receive events as fast as possible using convoy, your customers might not be able to handle events coming to their systems at the same rate which might cause a disruption of service on their end. You can control the number events you want to send to an endpoint by setting a rate limit and a rate limit duration on each endpoint. The default is `5000` in `1m` or 5,000 requests per minute.
### Retry Schedule
When an endpoint is experiencing temporary disruption of service, events sent to them might fail to require you to retry them. Convoy allows you to set the number of attempts to a particular endpoint and how to initiate the retry. Convoy supports two retry strategies:
* `default`: retries are done in linear time. It's best to set a reasonable number of attempts if the duration is short.
* `exponential-backoff`: retries events while progressively increasing the time before the next attempt. The default schedule looks like this:
* 10 seconds
* 30 seconds
* 1 minute
* 3 minutes
* 5 minutes
* 10 minutes
* 15 minutes
Retry strategies are configured per group.
# Price
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/price
### Overview
Price represents the cost of an item or [Stock Keeping Unit (SKU)](/v3/offers/api-reference/offers/webhook-events/glossary#sku). By subscribing to price-based events, as merchants, you can get event-specific information, including the `itemId`, `SKU`, and price list `id`.
The following table details various pricing events along with the example responses:
### Events
| Event Type | Description | Example Response |
| ------------------------ | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| offers:price:created | The event is triggered when a price is created. | `{ "specversion": "v1", "type": "offers:price:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PRICE", "status": "CREATED", "itemId": 1684471584, "itemSku": "DS SD S", "priceListId": 100001, "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/price/DS SD S/priceList/100001?type=itemSku" \] } } \] }` |
| offers:price:deleted | The event is triggered when a price is deleted. | `{ "specversion": "v1", "type": "offers:price:deleted", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PRICE", "status": "DELETED", "itemId": 1684471584, "itemSku": "DS SD S", "priceListId": 100001, "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/price/DS SD S/priceList/100001?type=itemSku" \] } } \] }` |
| offers:price:activated | The event is triggered when a price becomes operational. | `{ "specversion": "v1", "type": "offers:price:activated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PRICE-ACTIVATION", "status": "ACTIVATED", "itemId": 1684471584, "itemSku": "DS SD S", "priceListId": 100001, "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/price/DS SD S/priceList/100001?type=itemSku" \] } } \] }` |
| offers:price:deactivated | The event is triggered when a price is no longer valid. | `{ "specversion": "v1", "type": "offers:price:deactivated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PRICE-ACTIVATION", "status": "DEACTIVATED", "itemId": 1684471584, "itemSku": "DS SD S", "priceListId": 100001, "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/price/DS SD S/priceList/100001?type=itemSku" \] } } \] }` |
# Price List
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/price-list
### Overview
A price list is a collection of items and their assigned prices. By subscribing to `priceList` events, as merchants, you can get event-specific information, including the price list ID.\
The following table details the various `priceList` events along with the example responses:
### Events
| Event Type | Description | Example Response |
| ------------------------ | ---------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| offers:priceList:created | The event is triggered when a price list is created. | `{ "specversion": "v1", "type": "offers:priceList:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PRICELIST", "status": "CREATED", "id": 100001, "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:priceList:deleted | The event is triggered when a price list is deleted. | `{ "specversion": "v1", "type": "offers:priceList:deleted", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PRICELIST", "status": "DELETED", "id": 100001, "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:priceList:updated | The event is triggered when a price list is updated. | `{ "specversion": "v1", "type": "offers:priceList:updated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PRICELIST", "status": "UPDATED", "itemId": 1684471584, "itemSku": "DS SD S", "priceListId": 100001, "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/price/DS SD S/priceList/100001?type=itemSku" \] } } \] }` |
# Promotion
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/promotion
### Overview
Promotions are discounts on items, carts, or shipping that are automatically applied when the required conditions are met. By subscribing to promotion events, as merchants, you can receive event-specific information, including promotion ID, event name, and event status.
The following table details various promotion events along with the example responses:
### Events
| Event Type | Description | Example Response |
| ------------------------ | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| offers:promo:created | The event is triggered when a promotion is created. | `{ "specversion": "v1", "type": "offers:promo:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PROMOTION", "status": "CREATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:promo:deleted | The event is triggered when a promotion is deleted. | `{ "specversion": "v1", "type": "offers:promo:deleted", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PROMOTION", "status": "DELETED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:promo:updated | The event is triggered when a promotion is updated. | `{ "specversion": "v1", "type": "offers:promo:updated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PROMOTOION", "status": "UPDATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:promo:activated | The event is triggered when a promotion becomes active and is available for use. | `{ "specversion": "v1", "type": "offers:promo:activated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PROMOTION", "status": "ACTIVATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] } ` |
| offers:promo:deactivated | The event is triggered when a promotion is deactivated and is no longer available for use. | `{ "specversion": "v1", "type": "offers:promo:deactivated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "PROMOTION", "status": "DEACTIVATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
# Redemption
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/redemption
### Overview
Redemption refers to instances when coupons or promotions are applied to an order. By subscribing to redemption events, as merchants, you can get event-specific information, including redemption ID, event name, and event status.
The following table details various redemption events along with the example responses:
### Events
| Event Type | Description | Example Response |
| ----------------------------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| offers:redemption:promotion:created | The event is triggered when redemption details for a promotion are created. | `{ "specversion": "v1", "type": "offers:redemption:promotion:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "REDEMPTION", "status": "CREATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
| offers:redemption:promotion:deleted | The event is triggered when redemption details for a promotion are deleted. | `{ "specversion": "v1", "type": "offers:redemption:promotion:deleted", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "REDEMPTION", "status": "DELETED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
| offers:redemption:promotion:updated | The event is triggered when redemption details for a promotion are updated. | `{ "specversion": "v1", "type": "offers:redemption:promotion:updated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "REDEMPTION", "status": "UPDATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
| offers:redemption:coupon:created | The event is triggered when redemption details of a coupon are created. | `{ "specversion": "v1", "type": "offers:redemption:coupon:created", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "REDEMPTION", "status": "CREATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
| offers:redemption:coupon:updated | The event is triggered when the redemption details of a coupon are updated. | `{ "specversion": "v1", "type": "offers:redemption:coupon:updated", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "REDEMPTION", "status": "UPDATED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
| offers:redemption:coupon:deleted | The event is triggered when the redemption details of a coupon are deleted. | `{ "specversion": "v1", "type": "offers:redemption:coupon:deleted", "tenantid": "63a123070cf218e178efda30", "events": \[ { "id": "0076064a-695e-43ac-b004-17802ed186ac", "time": "2023-06-01T13:29:40.000Z", "source": "offers:business-layer", "subject": null, "data": { "eventName": "REDEMPTION", "status": "DELETED", "id": "642babcd3ebd250008455701", "callbackUrls": \[ "https://stg02.copilot.fabric.inc/api-offers/priceList/100001" \] } } \] }` |
# Ship To
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/ship-to
Ship To APIs
**Note:** These are the legacy Ship To APIs. To view fabric's new Shipping APIs, navigate to *Cart API > Shipping* from the left side navigation pane.
# Subscribing Events
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/subscribing-events
### Overview
As a merchant, you can subscribe to one or more Offers events to get asynchronous event notifications without calling the individual REST API endpoints.
### Procedure
To subscribe to Offers events, you must either [raise a support ticket](https://support.fabric.inc/hc/en-us) with the following details or share the details with your customer success manager:
1. Webhook URL or API that you want fabric to send notifications to.
2. Webhook call method(POST, GET) associated with the Webhook URL or API.
3. API key.
4. Stage for which you want to receive notifications when the event takes place in that stage. For example, sandbox or production.
5. Tenant ID, which is the 24-character Copilot account ID.
6. Event types that you want to subscribe to.
# Webhook Events
Source: https://developer.fabric.inc/v3/offers/api-reference/offers/webhook-events/webhook-events
### Overview
An event is a specific action within a system, such as updating price, generating a coupon code, or deleting a promotion. Through Webhooks, you can get automated, real-time notifications when an event is initiated. You can subscribe to one or more webhook events to receive event-specific information without making individual REST API calls. For example, if you subscribe to a `price update` event, you will be notified whenever a new price becomes active. This enables you to update your Product Description Page (PDP) promptly, ensuring your website reflects the latest prices accurately. Similarly, by subscribing to new promotions event, you are notified whenever a new promotion becomes active, enabling you to display the new promotion on your website as soon as the promotion is available. For using the event-driven notifications, you must [subscribe to the relevant webhook events](/v3/api-reference/offers/webhook-events/subscribing-events).
## fabric Offer Events
You can subscribe to one or more Offers events in each of the following objects to get event-specific information in real-time:
* [Price](/v3/offers/api-reference/offers/webhook-events/price)
* [Promotion](/v3/offers/api-reference/offers/webhook-events/promotion)
* [Coupon](/v3/offers/api-reference/offers/webhook-events/coupon)
* [Price list](/v3/offers/api-reference/offers/webhook-events/price-list)
* [Global exclusion](/v3/offers/api-reference/offers/webhook-events/global-exclusion)
* [Redemption](/v3/offers/api-reference/offers/webhook-events/redemption.mdx)
For example, by subscribing to `offers:price:created` event, you can get notified whenever a new price is created for a specific item. If you want more information about an event, you can make an API call to the `callBackUrl` available in the sample response. The following is a sample cURL request to get an event-related information from a specific URL:
```javascript
curl --location 'https://api-stg02.admin.offers.fabric.inc/v3/prices/1000072889?priceListId=100000' \\ Replace this URL with the event-specific callBackUrl
--header 'x-fabric-tenant-id: 64a86ebb0cf29efc89cd2d9d' \
--header 'x-fabric-channel-id: 12' \
--header 'x-fabric-source: copilot' \
--header 'x-fabric-request-id: 73068ccf-d359-4292-bbc9-6b31e865587b' \
--header 'x-fabric-stage: stg02' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJraWQiOiJqbXE2bFNUTTZEZTRfcGhveTQ4eVFjb1dLLWFnLWo3RktVbkhaUG5vbmhRIiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULm5KQ0tvMzRtNjFUUHZqU1NmeHN4VlB1allEMUdiZENfRjU5NGc0YU05b0UiLCJpc3MiOiJodHRwczovL2NvcGlsb3QubG9naW4tc2J4LmZhYnJpYy5pbmMvb2F1dGgyL2F1c29wYm85c3JPUndIY001Njk2IiwiYXVkIjoiYXBpOi8vc2VydmljZSIsInN1YiI6IjBvYTFqb2s0OGR6YWZLZEZsNjk3IiwiaWF0IjoxNjkzMzc5ODM2LCJleHAiOjE2OTMzODE2MzYsImNpZCI6IjBvYTFqb2s0OGR6YWZLZEZsNjk3Iiwic2NwIjpbInMycyJdLCJhY2NvdW50cyI6IntcImZhYnJpY1wiOntcInJvbGVzXCI6W1wiNWU5YmNhYmItYWFhOC00MTgwLWE3ZjctNzQ0MjQxMzI2MmZkXCIsXCJmODJkOGIyMC1lMjZmLTQxZjYtYWRhNi0xMWI3YWU5YjMxNDFcIixcIjkwYWM0OWExLTdhYTQtNGQ0OS1hMmM3LTE2MGQxY2Y0NWYzOVwiXSxcImlkXCI6XCJmYWJyaWNcIixcIm5hbWVcIjpcImZhYnJpY1wiLFwidGVuYW50SWRcIjpcImZhYnJpY1wifX0iLCJpZGVudGl0eVZlcnNpb24iOiJ2MiJ9.Tcl9I9Z76t0rj_L49cW7h7VzSNbhl7tzqZjQv1CUkDZ1aNw6DgXDIuwp-XsKP4_zTsAJ7CtHMDBt00usRPJYvUAKmi5C6I19rB5bw9t4wrqg-3hqItg_vVEmMTMUq9LryVfuc42NDoA29BvQ6bWfQ43B66e4c5yK77HqRULJegrESB9jXNGbMAXiQtMcv1IBMtK5uMHWfGnffMEvJpsl5lJq9QW0Lfn5PUQo5Gkm7YZMKXNYfneWROwuYqaY6cCykcas2rRVP5sx0pmnBSRYISoBGGe6o4m-k2k07oVxnI_vg4yAcraqxyFw1Qxu7wyBd0nJkWxogm3-tc2UnAmKhw' \
--data ''
```
# Create address
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/addresses/create-addresses
modular-cart post /carts/{cartId}/addresses
Adds a billing address to the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Delete address
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/addresses/delete-addresses
modular-cart delete /carts/{cartId}/addresses/{addressId}
Removes the billing address associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Address ID from the [Create address](/v3/cart-and-checkout/api-reference/carts-v3/addresses/create-addresses) endpoint is used in the path parameter.
# Get address
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/addresses/get-addresses
modular-cart get /carts/{cartId}/addresses/{addressId}
Gets the billing address associated the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Address ID from the [Create address](/v3/cart-and-checkout/api-reference/carts-v3/addresses/create-addresses) endpoint is used in the path parameter.
# Update address
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/addresses/update-addresses
modular-cart patch /carts/{cartId}/addresses/{addressId}
Updates the billing address associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Address ID from the [Create address](/v3/cart-and-checkout/api-reference/carts-v3/addresses/create-addresses) endpoint is used in the path parameter.
# Add cart attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/cart-actions/add-attributes
modular-cart post /carts/{cartId}/actions/add-attributes
Partially updates attributes of your choice in the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Delete cart attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/cart-actions/delete-attributes
modular-cart post /carts/{cartId}/actions/delete-attributes
Partially deletes attributes of your choice associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Merge carts
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/cart-actions/merge
modular-cart post /carts/{cartId}/actions/merge
This endpoint merges two carts together. Specify one cart in the path parameter and the second cart in the request body.
To learn more about merge cart behaviors, you can check out the [Merge Cart Behaviors](/v3/cart-and-checkout/api-reference/carts-v3/merge-carts-behaviors) page.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Create adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/create-adjustments
modular-cart post /carts/{cartId}/adjustments
Creates adjustments to the corresponding cart. This is useful when a price needs to be adjusted by a CSR agent.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Remove adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/delete-adjustments
modular-cart delete /carts/{cartId}/adjustments/{adjustmentId}
Removes an adjustment made to the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Adjustment ID from the [Create adjustment](/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/create-adjustments) endpoint is used in the path parameter.
# Update adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/update-adjustments
modular-cart patch /carts/{cartId}/adjustments/{adjustmentId}
Updates the adjustments made to the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Adjustment ID from the [Create adjustment](/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/create-adjustments) endpoint is used in the path parameter.
# Delete cart
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts/delete-cart
modular-cart delete /carts/{cartId}
Removes the cart corresponding to the provided cart ID.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Get the provided cart
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts/get-cart
modular-cart get /carts/{cartId}
Retrieves the cart information corresponding to the provided cart ID.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Search for multiple carts
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts/search
modular-cart post /carts/search
Returns a list of carts based on the search criteria.
# Update cart
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/carts/update-cart
modular-cart patch /carts/{cartId}
Updates the cart information corresponding to the provided cart ID.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Add Coupon
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/coupons/add-coupons
modular-cart post /carts/{cartId}/coupons/{couponId}
Adds a coupon to the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Coupon ID, which is the coupon code generated when [creating a custom coupon](/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/create-adjustments) in Copilot, is used in the path parameter.
# Removes Coupon
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/coupons/remove-coupons
modular-cart delete /carts/{cartId}/coupons/{couponId}
Removes the existing coupon from the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Coupon ID is a coupon code generated when [creating a custom coupon](/v3/cart-and-checkout/api-reference/carts-v3/carts-adjustments/create-adjustments) in Copilot and is used in the path parameter.
# Add customer attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/customer/add-customer-attributes
modular-cart post /carts/{cartId}/customer/actions/add-attributes
Partially updates attributes of your choice in the customer object associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Delete customer attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/customer/delete-customer-attributes
modular-cart post /carts/{cartId}/customer/actions/delete-attributes
Partially deletes attributes of your choice in the customer object associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Update customer
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/customer/update-customer
modular-cart patch /carts/{cartId}/customer
Updates the customer information in the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Create fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fees/create-fees
modular-cart post /carts/{cartId}/fees
Creates a fee that is applied to the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Delete fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fees/delete-fees
modular-cart delete /carts/{cartId}/fees/{feeId}
Removes a fee from the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fee ID from the [Create fee](/v3/cart-and-checkout/api-reference/carts-v3/fees/delete-fees) endpoint is used in the path parameter.
# Update fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fees/update-fees
modular-cart patch /carts/{cartId}/fees/{feeId}
Updates a fee in the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fee ID from the [Create fee](/v3/cart-and-checkout/api-reference/carts-v3/fees/delete-fees) endpoint is used in the path parameter.
# Create fulfillment adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-adjustments/create-fulfillment-adjustments
modular-cart post /carts/{cartId}/fulfillments/{fulfillmentId}/adjustments
Creates an adjustment to the fulfillment associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
# Delete fulfillment adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-adjustments/delete-fulfillment-adjustments
modular-cart delete /carts/{cartId}/fulfillments/{fulfillmentId}/adjustments/{adjustmentId}
Removes the adjustment from the fulfillment associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
The Adjustment ID from the [Create fulfillment adjustment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-adjustments/create-fulfillment-adjustments) endpoint is used in the path parameter.
# Update fulfillment adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-adjustments/update-fulfillment-adjustments
modular-cart patch /carts/{cartId}/fulfillments/{fulfillmentId}/adjustments/{adjustmentId}
Updates the adjustment to the fulfillment associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
The Adjustment ID from the [Create fulfillment adjustment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-adjustments/create-fulfillment-adjustments) endpoint is used in the path parameter.
# Create fulfillment fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-fees/add-fulfillment
modular-cart post /carts/{cartId}/fulfillments/{fulfillmentId}/fees
Creates a fee associated the fulfillment.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
# Delete fulfillment fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-fees/delete-fulfillment
modular-cart delete /carts/{cartId}/fulfillments/{fulfillmentId}/fees/{feeId}
Removes the fee from associated with the fulfillment.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
The Fee ID from the [Create fulfillment fee](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-fees/add-fulfillment) endpoint is used in the path parameter.
# Update fulfillment fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-fees/update-fulfillment
modular-cart patch /carts/{cartId}/fulfillments/{fulfillmentId}/fees/{feeId}
Updates the fee associated with the fulfillment.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fee ID from the [Create fulfillment fee](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment-fees/add-fulfillment) endpoint is used in the path parameter.
# Add fulfillment attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/add-fulfillments-attribute
modular-cart post /carts/{cartId}/fulfillments/{fulfillmentId}/actions/add-attributes
Partially updates the attributes of the fulfillment associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
# Create fulfillment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments
modular-cart post /carts/{cartId}/fulfillments
Creates a fulfillment to the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Delete fulfillment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/delete-fulfillments
modular-cart delete /carts/{cartId}/fulfillments/{fulfillmentId}
Removes the fulfillment associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
# Delete fulfillment attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/delete-fulfillments-attribute
modular-cart post /carts/{cartId}/fulfillments/{fulfillmentId}/actions/delete-attributes
Partially deletes attributes of your choice in the fulfillment object associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
# Get fulfillment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/retrieve-fulfillments
modular-cart get /carts/{cartId}/fulfillments/{fulfillmentId}
Returns the fulfillment associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
# Update fulfillment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/update-fulfillments
modular-cart put /carts/{cartId}/fulfillments/{fulfillmentId}
Updates the fulfillment associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Fulfillment ID from the [Create fulfillment](/v3/cart-and-checkout/api-reference/carts-v3/fulfillment/create-fulfillments) endpoint is used in the path parameter.
# Update item attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-actions/add-item-attributes
modular-cart post /carts/{cartId}/items/{itemId}/actions/add-attributes
Partially updates the attributes of your choice in the item object associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Delete item attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-actions/delete-item-attributes
modular-cart post /carts/{cartId}/items/{itemId}/actions/delete-attributes
Partially deletes attributes of your choice in the item object associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Split line items
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-actions/split
modular-cart post /carts/{cartId}/items/{itemId}/actions/split
Splits the item associated with the corresponding cart into multiple line items based on quantity.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Create item adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-adjustments/create-item-adjustments
modular-cart post /carts/{cartId}/items/{itemId}/adjustments
Creates an adjustment for the item in the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Delete item adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-adjustments/delete-item-adjustments
modular-cart delete /carts/{cartId}/items/{itemId}/adjustments/{adjustmentId}
Deletes the adjustment from the item associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
The Adjustment ID from the [Create item adjustment](/v3/cart-and-checkout/api-reference/carts-v3/item-adjustments/create-item-adjustments) endpoint is used in the path parameter.
# Update item adjustment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-adjustments/update-item-adjustments
modular-cart patch /carts/{cartId}/items/{itemId}/adjustments/{adjustmentId}
Updates the adjustment to the item associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
The Adjustment ID from the [Create item adjustment](/v3/cart-and-checkout/api-reference/carts-v3/item-adjustments/create-item-adjustments) endpoint is used in the path parameter.
# Create item fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-fees/create-item-fees
modular-cart post /carts/{cartId}/items/{itemId}/fees
Creates a fee for the item.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Delete item fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-fees/delete-item-fees
modular-cart delete /carts/{cartId}/items/{itemId}/fees/{feeId}
Deletes the fee that is applied to the item.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
The Fee ID from the [Create item fee](/v3/cart-and-checkout/api-reference/carts-v3/item-fees/create-item-fees) endpoint is used in the path parameter.
# Update item fee
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/item-fees/update-item-fees
modular-cart patch /carts/{cartId}/items/{itemId}/fees/{feeId}
Updates the fee that is applied to the item.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
The Fee ID from the [Create item fee](/v3/cart-and-checkout/api-reference/carts-v3/item-fees/create-item-fees) endpoint is used in the path parameter.
# Delete item
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/items/delete-items
modular-cart delete /carts/{cartId}/items/{itemId}
Deletes the item from the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Get item
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/items/get-items
modular-cart get /carts/{cartId}/items/{itemId}
Returns the item from the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Create item
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/items/items
modular-cart post /carts/{cartId}/items
Creates the item in the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Update item
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/items/update-items
modular-cart patch /carts/{cartId}/items/{itemId}
Updates the item in the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/cart-and-checkout/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Merge Cart Behaviors
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/merge-carts-behaviors
The Merge Cart Behaviors page provides an overview of the configuration settings and the associated functionalities.
To ensure your merged cart functions as intended, you must specify which configurations to activate when making a [Merge carts](/v3/cart-and-checkout/api-reference/carts-v3/cart-actions/merge) request.
| Merge Cart Behavior | Represents |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `MERGE` | Include both primary and secondary resources, and in case of a conflict, override secondary data with primary data. For example, a coupon can be merged between carts. If one cart has no coupon and the other does, the merged cart will retain the coupon. However, if one cart has a 10% discount and the other has a 20% discount, the merge can't happen exactly due to conflicting coupon functions. In this case, the 20% discount from the second cart will be discarded, and the merged cart will have the 10% discount. |
| `ALL` | Include both primary and secondary resources together without checking for conflicts. This is mostly applicable for list resources. |
| `PRIMARY` | Only include primary resources. |
| `SECONDARY` | Only include secondary resources. |
| `PURGE` | Remove both primary and secondary resources. |
| `REFERENCED` | Add primary resources and retain only the secondary resources that are referred to in the merged cart. |
## Merge Results
### Validations merge
* **Behavior for line item validation**: Inherited from [`mergeBehavior.item.behavior`](/v3/cart-and-checkout/api-reference/carts-v3/cart-actions/merge).
* **Behavior for product catalog validation**: Inherited from [`mergeBehavior.item.behavior`](/v3/cart-and-checkout/api-reference/carts-v3/cart-actions/merge).
When carts are merged, promotions are cleared due to updated items, quantities, taxes, or fulfillments in the cart. Additionally, a state is added to refresh the promotions.
### Taxes
Taxes follow the same rules as the parent item. For example, if the item merge rule is set to secondary, the respective taxes are included accordingly.
When the item merge rule is set to `MERGE`, taxes are cleared, and a state is added to the cart indicating that the item is missing taxes. This adjustment is necessary because changes in quantities may require tax updates.
### Item quantity behavior
Item merge behaviors are:
* **Default (SUM)**: Quantities of items with the same SKU are summed.
* **MAX**: The highest quantity of items with the same SKU is selected.
### States
You must fully re-evaluate the state object for the merged cart from the response body to ensure the merged cart is configured with the intended settings.
## Related Topics
* [Merge carts](/v3/cart-and-checkout/api-reference/carts-v3/cart-actions/merge)
# Apply coupon
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/carts/add-coupon
ShopperXP post /orchestrator/carts/{cartId}/coupons/{couponCode}
Apply a coupon code to the corresponding cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The coupon code generated when [creating a custom coupon](/v3/api-reference/carts-v3/carts-adjustments/create-adjustments) in Copilot is used in the path parameter.
# Delete cart
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/carts/delete-cart
ShopperXP delete /orchestrator/carts/{cartId}
Removes the cart corresponding to the provided cart ID.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Removes coupon
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/carts/delete-coupon
ShopperXP delete /orchestrator/carts/{cartId}/coupons/{couponCode}
Removes the coupon from the corresponding cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Get the cart
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/carts/get-cart
ShopperXP get /orchestrator/carts/{cartId}
Retrieves the cart information corresponding to the provided cart ID.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Create an order draft
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/carts/order-drafts
ShopperXP post /orchestrator/carts/{cartId}/order-drafts
Creates an order from the current cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Add items
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/line-items/add-items
ShopperXP post /orchestrator/carts/{cartId}/items
Add items to the corresponding cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Delete items
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/line-items/delete-items
ShopperXP delete /orchestrator/carts/{cartId}/items
Removes the items from the corresponding cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Split line items
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/line-items/split-items
ShopperXP post /orchestrator/carts/{cartId}/items/{itemId}/actions/split
Splits the item associated with the corresponding cart into multiple line items based on quantity.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The Item ID from the [Create item](/v3/api-reference/carts-v3/items/items) endpoint is used in the path parameter.
# Update items
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/line-items/update-items
ShopperXP patch /orchestrator/carts/{cartId}/items
Updates the item information in the corresponding cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Authorize payments
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/payments/authorize
ShopperXP post /orchestrator/carts/{cartId}/payments/actions/authorize
Authorize payments made within the corresponding cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Void payments
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/orchestrator/payments/void
ShopperXP post /orchestrator/carts/{cartId}/payments/actions/void
Void payments made within the corresponding cart.
The Cart ID from the [Create cart](/v3/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Create an order draft
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/create-order-drafts
modular-cart post /order-drafts
Create an order using the cart ID of the cart that contains the order.
# Get the order draft by the customer ID
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/get-order-drafts-customerid
modular-cart get /order-drafts/customer/{customerId}
Retrieves the order draft using the customer ID associated with it from [Create an order draft](/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/create-order-drafts) endpoint.
# Get the order draft by the order draft ID
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/get-order-drafts-draftid
modular-cart get /order-drafts/{orderDraftId}
Retrieves the order draft using the order ID associated with it from [Create an order draft](/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/create-order-drafts) endpoint.
# Get the order draft by the order draft number
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/get-order-drafts-number
modular-cart get /order-drafts/order-number/{orderNumber}
Retrieves the order draft using the order number associated with it from [Create an order draft](/v3/cart-and-checkout/api-reference/carts-v3/order-drafts/create-order-drafts) endpoint.
# Add payment attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/payments/add-payment-attributes
modular-cart post /carts/{cartId}/payments/{id}/actions/add-attributes
Partially updates attributes of your choice in the payment.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The ID from the [Create payment](/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments) endpoint is used in the path parameter.
# Create payment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments
modular-cart post /carts/{cartId}/payments
Adds a payment method to the corresponding cart to process a transaction.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Delete payment attributes
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/payments/delete-payment-attributes
modular-cart post /carts/{cartId}/payments/{id}/actions/delete-attributes
Partially deletes attributes of your choice in the payment object associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The ID from the [Create payment](/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments) endpoint is used in the path parameter.
# Delete payment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/payments/delete-payments
modular-cart delete /carts/{cartId}/payments/{id}
Removes the payment from the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The ID from the [Create payment](/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments) endpoint is used in the path parameter.
# Update payment
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/payments/update-payments
modular-cart patch /carts/{cartId}/payments/{id}
Updates the payment in the cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
The ID from the [Create payment](/v3/cart-and-checkout/api-reference/carts-v3/payments/create-payments) endpoint is used in the path parameter.
# Replace inventory data
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/validations/add-inventory-data
modular-cart put /carts/{cartId}/inventory
Replaces inventory data associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Replace product data
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/validations/add-product-data
modular-cart put /carts/{cartId}/product
Replaces product data associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Replace promotions
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/validations/add-promotions
modular-cart put /carts/{cartId}/promotions
Replaces promotions associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Replace tax data
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/validations/add-tax
modular-cart put /carts/{cartId}/tax
Replaces tax data associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Updates inventory data
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/validations/updates-inventory-data
modular-cart patch /carts/{cartId}/inventory
Partially updates inventory data associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Updates product data
Source: https://developer.fabric.inc/v3/cart-and-checkout/api-reference/carts-v3/validations/updates-product-data
modular-cart patch /carts/{cartId}/product
Partially updates product data associated with the corresponding cart.
The Cart ID from the [Create cart](/v3/cart-and-checkout/api-reference/carts-v3/carts/carts) endpoint is used in the path parameter.
# Algolia connector
Source: https://developer.fabric.inc/v3/integrations/algolia-connector
Use Algolia’s search suite to meet search, recommendation and browsing needs everywhere. Send product, pricing, and inventory data to Algolia to power your storefront search, recommendation, and browse experience.
### Use case
fabric aggregates product, pricing, and inventory data which is sent to the Algolia SDKs to be indexed. This indexed data is used to build custom search, recommendations, and browsing experiences based on your Algolia account setup.
#### Available actions
* Define index settings during customer onboarding process
* Get index instance
* Save records
* Delete records
### Set up the Algolia connector in your fabric account
1. Complete the setup and activation for your Algolia account
2. Submit a support request to [fabric customer success](https://support.fabric.inc/hc/en-us/requests/new) with the following details:
* [Algolia App Id](https://support.algolia.com/hc/en-us/articles/11040113398673-Where-can-I-find-my-application-ID-and-the-index-name)
* [Algolia Admin key](https://support.algolia.com/hc/en-us/articles/11972559809681-How-do-I-find-my-Admin-API-key)
3. Using the table below, provide fabric customer success with the search configuration values you require.
| Search configuration | Description | Value |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| **Should Save Zero Price Item** | Should save zero price item checks for records with pries equal to 0 and determines if these items should be indexed. The default value is false. | True/False |
| **Should Save Variants** | Should save variants checks if variant records should be published. The default value is false. | True/False |
| **Should Index Alternate Categories** | Determines if Product alternate categories should be indexed. The default value is false. | True/False |
| **Should Use I18N Service** (Localization) | Used to index localized data. Default value is false. | True/False |
| **Price Lists** | Determines the list of priceListIds to be requested when calling fabric Offers APIs. This is used when an item has many currencies associated with the price. The default value is null. | Enabled/Null |
Note: once you have completed the initial setup. You must use the Algolia dashboard to change the index settings.
# Avalara connector
Source: https://developer.fabric.inc/v3/integrations/avalara-connector
Avalara helps businesses of all sizes get tax compliance right. In partnership with leading ERP, accounting, ecommerce, and other financial management system providers, Avalara delivers cloud-based compliance solutions for various transaction taxes, including sales and use, VAT, GST, excise, communications, lodging, and other indirect tax types.
### Use case
Avalara is set in the merchant’s fabric account and used by the storefront to calculate tax during checkout. The fabric checkout experience calls Avalara to create tax calculations during checkout.
#### Available actions
* Create Avalara Tax Estimate
### Set up the Avalara connector in your fabric account
1. Complete the setup for your [Avalara account](https://home.avalara.com).
2. Submit a support request to [fabric customer success](https://support.fabric.inc/hc/en-us/requests/new) with the following details:
* AVA\_ACCOUNT\_ID for example 110034662
* AVA\_API\_KEY for example, C12EER1422IU76
* AVA\_COMPANY\_CODE for example, NBF
* AVA\_CUSTOMER\_CODE for example DEFAULT
* Avalara environment: Sandbox or Production
# Constructor.io connector
Source: https://developer.fabric.inc/v3/integrations/constructor-io-connector
Bring together site wide ecommerce search and product discovery, merchant solutions, and enterprise-ready delivery all in one Al-powered, KPI-obsessed platform built for the results that matter to you. Send product, pricing, and inventory data to Constructor.io to power your storefront search, recommendation, and browse experience.
### Use case
Constructor.io syncs with fabrics Product item information such as titles, colors, and SKUs. When an item is updated in Product Catalog, the event is captured and also sent to Constructor.io where it's processed using their certified SDK.
#### Available actions
* Create item
* Delete item
* Update item
### Set up the Constructor.io connector in your fabric account
1. Complete the setup and activation for your Constructor.io account
2. Submit a support request to [fabric customer success](https://support.fabric.inc/hc/en-us/requests/new) with the following details:
* Constructor.io API Key (index key)
* [Constructor.io API Token](https://docs.constructor.io/rest%5Fapi/authentication/)
# Overview
Source: https://developer.fabric.inc/v3/integrations/overview
fabric supports integrations with many of its core applications such as Product Catalog, Orders, Inventory, Cart, Checkout, and more. Integrations make working with your choice of a technical vendor easy without the need for custom code.
### Standard integrations
fabric has a set of pre-built standard integrations. These standardized integrations cover common use cases making them easy to set up. Standard integrations don't support customizations to the code but can be configured within 24 hours. The following standard integrations are currently supported:
* [Stripe Connector](/v3/integrations/stripe-connector)
* [Algolia Connector](/v3/integrations/algolia-connector)
* [Constructor.io Connector](/v3/integrations/constructor-io-connector)
* [Avalara connector](/v3/integrations/avalara-connector)
Custom integrations aren't supported at this time.
### Security
fabric takes security seriously and always follows the recommended standards. AWS secret manager handles all the values passing between the standard connectors and keeps everything encrypted. Additionally, fabric uses each connectors official SDK to send and receive encrypted data.
### Monitoring
Currently, fabric monitors all the standard integrations internally by a number of metrics such as latency. It's encouraged to use a standard integrations respective dashboard to receive more direct monitoring metrics. For example, to confirm a standard integration connector is working as intended, you can check the respective connectors dashboard. The dashboard displays changes that should be happening such as product information updates or payments.
### Contact and support
If you have any additional questions, please reach out to [fabric customer success](https://support.fabric.inc/hc/en-us/requests/new).
# Stripe connector
Source: https://developer.fabric.inc/v3/integrations/stripe-connector
Stripe enables merchants to accept payments online, in person, and around the world with a payments solution built for any business—from scaling startups to global enterprises.
### Use case
Stripe is set to a merchant’s account and used by the fabric storefront to process payments during checkout. The fabric checkout experience calls Stripe to authorize, process, refund, or void payments.
#### Available actions
* Authorize payments
* Get payment
* Capture payment
* Refund payment
* Void payment
* Create customer
* Create payment
* Get customer
* Generate client token
### Set up the Stripe connector in your fabric account
1. Complete the setup and activation for your Stripe account
2. Submit a support request to [fabric customer success](https://support.fabric.inc/hc/en-us/requests/new) with the following details:
* [Stripe Secret Key](https://stripe.com/docs/keys)
* [Stripe Public Key](https://stripe.com/docs/keys)
3. Provide the following payment settings values:
| Setting | Description | Value |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| **Auto capture authorization** | Indicates if the capture should be performed in the authorization request. The `Auto_Capture` default is off. | on/off |
| **Payment method deleted after authorization** | Indicates if the payment token should be kept or invalidated for later uses. The `KEEP_TOKEN` default value is set to perform the token invalidation. This is so guest users can be handled by the connector. | on/off |
# Overview
Source: https://developer.fabric.inc/v3/platform/home/alerts/alerts-overview
The Alerts feature in fabric Copilot notifies you of potential issues using the data within your account. You can use these notifications to identify and respond to system errors or data anomalies that could impact business operations. For example, you can set up alerts for high order failure rates, abnormal dips in prices, published SKU counts dropping significantly, and transactional failures.
You can subscribe to receive alerts by email when an event occurs, and view alerts on the **Alerts** dashboard in Copilot. Users with shared access to your organization’s account can view the alerts you set up and optionally subscribe to them.
Setting up and configuring alerts requires **Administrator** privileges in Copilot. For more detailed information on these settings, see [Role-Based Access Control](https://developer.fabric.inc/v3/guides/settings/rbac/role-based-access-control).
## Use Cases
Common use cases for alerts within fabric’s applications include:
* **Orders:** Alert that flags orders that might negatively impact trailing metrics, such as returns and cancellations.
* **Inventory:** Alert that creates a notification for any issues updating your inventory records.
* **Product Catalog:** Alert that creates a notification whenever a product information import fails.
## Alert Components
Creating an alert involves setting up three main components: the **Alert trigger conditions**, **Look-back period**, and **Severity threshold**.
### Alert Trigger Conditions
Alert trigger conditions consist of a series of statements that define the circumstances that trigger an alert. In these statements, you establish the components of an alert by selecting a fabric application, a service within that application, an attribute of that service, an operator, and a value for which you would like to set up the alert. When configuring these statements, you can use a variety of parameters, such as order statuses, inventory levels, and transaction outcomes, to create customized trigger conditions that meet your specific monitoring requirements.
It's important to note that when you are setting up an alert in Copilot, the values displayed in each field are entirely dependent upon the selection in the previous field.
The following table outlines the fields in the Alert trigger conditions section, and their values.
| Field Name | Description | Values |
| -------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **App** | The fabric application to set up the alert for. | - **Orders**
- **Inventory**
- **Product Catalog** |
| **Service:** | The service is the specific feature within the fabric application selected in the **App** field. | - Orders: **Order**, **Invoice**, and **Allocation**
- Inventory: **Inventory\_imports**
- Product Catalog: **Attribute**, **Bundle**, **Category**, **Product**, and **Collection** |
| **Attribute** | Specifies a characteristic or property of the selection in the **Service** field. | Includes options such as:
- **createdAt:** The time the service was created.
- **updatedAt:** The time the service was updated.
- **statusCode:** The service’s status code. |
| **Operator** | The **Operator** field describes the relationship between the **Attribute** field and the **Add Values** field. | - **IN:** Includes
- **NIN:** Doesn't include
- **EQ:** Is equal to
- **NEQ:** Not equal to
- **GT:** Is greater than
- **LT:** Is less than
- **GTE:** Is greater than or equal to
- **LTE:** Is less than or equal to |
| **Add Values** | The values represent specific states or conditions of the selected **Attribute**. | Time-based values include options such as:
- **NOW() - PT2H:** The time of the attribute is within the last two hours.
- **NOW() - PT6H:** The time of the attribute is within the last six hours.
- **NOW() - P2D:** The time of the attribute is within the last two days.
Status-based values include options such as:
- **ALLOCATED:** Indicates a status of allocated for the selected attribute.
- **PROCESSING:** Indicates a status of processing for the selected attribute.
- **FAILED:** Indicates a status of failed for the selected attribute. |
#### Alert trigger conditions example
As an example of how you can use the fields in alert trigger conditions to create statements, consider the Payments Failure Alert template. It’s an alert that’s generated from the Orders application whenever an invoice fails.
There are two statements required to create this alert; an **if** statement and an **and** statement. The **if** statement simply says, “if the Orders app invoicing service created an invoice more than two hours ago.” To create this statement in the alert trigger conditions, the **if** statement is configured as follows:
* **App:** is set to **Orders**
* **Service:** is set to **Invoice**
* **Attribute:** is set to **createdAt**
* **Operator:** is set to **GT**
* **Add value:** is set to **NOW() - PT2H**
This statement tells Alerts where to look and when, but what it’s looking for - the failed invoice - is incomplete. The **and** statement finishes the alert trigger condition by describing the type of invoice to look for. It says, "the status of the invoice includes the values `_failed_` or `_settlement failed_`." To create this statement in the alert trigger conditions, the **and** statement is configured as follows:
* **Service:** is set to **Invoice**
* **Attribute:** is set to **statusCode**
* **Operator:** is set to **IN**
* **Add Values:** is set to **FAILED** and **SETTLE\_FAILED**
Understanding alert trigger conditions is crucial for setting up effective alerts in your fabric applications. By configuring both `if` and `and` statements, you can specify the exact conditions that trigger an alert.
#### Adding and removing conditions
When creating an alert from scratch, you can refine your alert trigger conditions by adding **and** statements. This allows for even more nuanced and targeted alerting, so that you can specify combinations of attributes, operators, and values that must be met to trigger an alert. However, every condition for all your statements must be met to trigger the alert, which means too many **and** statements could cause you to miss an event that you want to monitor.
### Look-Back Period
The look-back period is the timeframe that fabric considers when assessing data for potential alerts.
For instance, if an alert is configured to trigger when order processing times exceed a certain threshold, the look-back period could be defined as the past 24 hours. In this scenario, fabric examines order processing times over the last day to determine if the current processing time deviates significantly from the average.
Configuring the look-back period helps provide context to alerts. A shorter look-back period may capture recent changes or sudden spikes in activity, while a longer look-back period can help identify sustained trends or recurring issues.
### Severity Threshold
The **Severity threshold** is the term for the required number of events to occur for an alert to be considered low, medium, or severe.
* **Low Severity:** Alerts with a low severity threshold are triggered when the specified event occurs infrequently. These alerts typically highlight events that might require attention but may not be of immediate concern.
* **Medium Severity:** A medium severity threshold indicates a moderate frequency of the event. Alerts in this category often point to events that may warrant closer monitoring due to their increased occurrence as a potential issue that should be addressed.
* **High Severity:** Alerts with a high severity threshold are triggered when the specified event reaches a significant frequency. These alerts usually require immediate attention, as they typically signify critical events or issues that require prompt resolution to prevent impact on business operations.
You can configure the severity threshold numbers to tailor alerts to your specific needs.
Keeping with the example of the Payments Failure Alert, you could set the **Low Severity** field in this template to five. This will generate a low severity alert when five payments have failed within the time frame you specified. From there, you could set **Medium Severity** to 10, so that a medium severity alert would be generated when 10 payments fail within your time frame. Setting **High Severity** to 15 would generate high severity alert when 15 payments have failed within your time frame.
You will need to adjust the severity thresholds until you get the alert dialed in to your needs. Typically, you want to avoid infrequent or minor events and focus on frequent and severe events. Adjusting the severity threshold will help you strike a balance between being notified of potential issues and avoiding unnecessary alert fatigue.
## Templates
You can use templates to set up alerts quickly without having to configure each trigger condition manually. These templates have pre-configured trigger conditions for common operational events, such as failed payments. With the predefined triggers for situations that often require immediate attention, you can address potential issues before they escalate into bigger problems.
## Related Topics
* [Alerts Conceptual Guide](/v3/platform/home/alerts/alerts-conceptual-guide)
* [Alerts Homepage](/v3/platform/home/alerts/alerts-page)
* [Creating Alerts](/v3/platform/home/alerts/creating-alerts)
* [Managing Alerts](/v3/platform/home/alerts/managing-alerts)
# Alerts Page
Source: https://developer.fabric.inc/v3/platform/home/alerts/alerts-page
The Alerts page shows an overview of the alerts that have occurred. Alerts are organized into groups based on severity: **High Alerts**, **Medium Alerts**, **Low Alerts**, and **Total Alerts**.
The Alerts page only displays the alerts you created or subscribed to.
## Filter controls
The controls on the Alerts page allow you to filter and search for alerts. The following table describes each filter option.
| Filter | Description |
| ---------- | -------------------------------------------------------------------------------------------------------- |
| Search | Search for an alert by name. |
| Severity | Filter by severity, whether **High**, **Medium**, or **Low**. |
| App | Filter by the fabric application the event occurred in, whether **Products**, **Orders**, or **Offers**. |
| Created at | Filter by the date and time the alert was triggered. |
| All Time | Show alerts from a specific timeframe. |
## Field descriptions
You can see additional details about alerts in the table at the bottom of the page. The following table describes each field.
| Field | Description |
| ----------- | ---------------------------------------------------------------------------------------------- |
| Severity | The severity of the alert, whether **High**, **Medium**, or **Low**. |
| Alert Name | The name assigned to the alert. |
| App | The fabric application the event occurred in, whether **Products**, **Orders**, or **Offers**. |
| Issue count | The number of times the event occurred. |
| Created at | The date and time when the alert was created. |
## Related Topics
* [Alerts Overview](/v3/platform/home/alerts/alerts-overview)
* [Creating Alerts](/v3/platform/home/alerts/creating-alerts)
* [Managing Alerts](/v3/platform/home/alerts/managing-alerts)
# Creating Alerts
Source: https://developer.fabric.inc/v3/platform/home/alerts/creating-alerts
With the **Alerts** feature, you can set up notifications when business-impacting events occur within your fabric applications. For example, you can set up alerts for high order failure rates, abnormal dips in prices, published SKU counts dropping significantly, or transactional failures.
For an overview of the conceptual topics related to creating an alert, see the [Alerts Overview](/v3/platform/home/alerts/alerts-overview).
## Prerequisites
Ensure that you have **Administrator** privileges in Copilot. For more detailed information on these settings, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control).
## Create My Own Alert
1. In the left menu, click **Home** > **Alerts**.
The **Alerts** page is displayed.
2. Click **Create Alert**.
The **Create alert** page is displayed.
3. Click **Create My Own**.
The **Alert Details** page is displayed.
4. In the **Alert Name** field, enter a name for the alert.
5. In the **Description** field, enter a description of the alert.
6. In the **Alert trigger conditions** section, configure the following fields as required:
* **App:** Specifies the application you want to set up the alert for, such as **Orders** or **Inventory**.
* **Service:** Specifies the feature within the application to set up the alert for, such as **INVOICE** or **INVENTORY\_IMPORTS**.
The options available in the **Service** field are dependent on the selection you made in the **App** field.
* **Attributes:** Specifies the characteristics or properties, such as **createdAt** or **statusCode**.
The options available in the **Attributes** field are dependent on the selection you made in the **Service** field.
* **Operators:** Specifies an expression to filter data, such as greater than (**GT**) or less than or equal to (**LTE**).
The options available in the **Operators** field are dependent on the selection you made in the **Attributes** field.
* **Add Values:** Specifies the states, statuses, or outcomes related to the selections in the App, Service, and Attribute fields, such as **ALLOCATED** or **NOW() - PT4H**.
The options available in the **Add Values** field are dependent on the selection you made in the **App**, **Service**, and **Attribute** fields.
For more information on alert trigger conditions, see the [Alerts Overview](/v3/platform/home/alerts/alerts-overview).
7. In the **Look-back period** field, select the frequency you want the system to review and assess data for potential alerts.
Note: The **Look-back period** field is displayed depending on how you configure the Alert trigger conditions. If you don't see the **Look-back period** field, skip this step.
8. (Optional) To add another trigger condition to this alert, click **Add Condition**, and fill out the fields as required.
9. Enter a value in the **Low Severity**, **Medium Severity**, and **High Severity** fields.
For more information on setting the severity threshold, see the [Alerts Overview](/v3/platform/home/alerts/alerts-overview).
10. Click **Next**.
The **Review** page is displayed.
11. To receive email alerts about this event, in the **Alert notification** section, select **Subscribe to this alert**.
Choosing to receive email alerts will only send an email to the address associated with your fabric account. Other users with shared access to your organization’s fabric account can [subscribe to this alert](/v3/platform/home/alerts/managing-alerts#subscribing-to-an-alert) or view events that triggered this alert on the Alerts page.
12. Click **Save**.
The alert is created. You can access the alert in the **Configured Alerts** tab on the **Alerts** homepage.
### Alert Trigger Conditions Field Descriptions
When you are setting up an alert in Copilot, the values displayed in each field are entirely dependent on previously selected fields. The following table outlines the fields in the Alert trigger conditions section, and their values.
| Field Name | Description | Values |
| -------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **App** | The fabric application to set up the alert for. | - **Orders**
- **Inventory**
- **Product Catalog** |
| **Service:** | The service is the specific feature within the fabric application selected in the **App** field. | - Orders: **Order**, **Invoice**, and **Allocation**
- Inventory: **Inventory\_imports**
- Product Catalog: **Attribute**, **Bundle**, **Category**, **Product**, and **Collection** |
| **Attribute** | Specifies a characteristic or property of the selection in the **Service** field. | Includes options such as:
- **createdAt:** The time the service was created.
- **updatedAt:** The time the service was updated.
- **statusCode:** The service’s status code. |
| **Operator** | The **Operator** field describes the relationship between the **Attribute** field and the **Add Values** field. | - **IN:** Includes
- **NIN:** Doesn't include
- **EQ:** Is equal to
- **NEQ:** Not equal to
- **GT:** Is greater than
- **LT:** Is less than
- **GTE:** Is greater than or equal to
- **LTE:** Is less than or equal to |
| **Add Values** | The values represent specific states or conditions of the selected **Attribute**. | Time-based values include options such as:
- **NOW() - PT2H:** The time of the attribute is within the last two hours.
- **NOW() - PT6H:** The time of the attribute is within the last six hours.
- **NOW() - P2D:** The time of the attribute is within the last two days.
Status-based values include options such as:
- **ALLOCATED:** Indicates a status of allocated for the selected attribute.
- **PROCESSING:** Indicates a status of processing for the selected attribute.
- **FAILED:** Indicates a status of failed for the selected attribute. |
## Create an Alert with a Template
1. In the left menu, click **Home** > **Alerts**.
The **Alerts** page is displayed.
2. Click **Create Alert**.
The **Create alert** page is displayed.
3. Click **Use Template**.
4. In the **Use Template** section, do the following:
* Select the tab of the fabric application you want to set up the alert for; whether **Orders**, **Inventory**, or **Product Catalog**. The templates available for that application are displayed.
* Select a template.
5. Click **Next**.
The **Alert details** section is displayed.
6. In the **Alert Name** field, enter a name for the alert.
7. In the **Description** field, enter a description of the alert.
**Note:** The fields in **Alert trigger conditions** are disabled when creating an alert from a template since they come pre-configured to trigger based on a specific event. For more details on editing the **Alert trigger conditions** fields, see the [create an alert from scratch](/v3/guides/home/alerts/creating-an-alert) section.
8. In the **Look-back period** field, select the frequency at which fabric checks for events that could have triggered the alert.
9. Enter a value in the **Low Severity**, **Medium Severity**, and **High Severity** fields. For more detailed information on setting the severity threshold, see the [Alerts Conceptual Guide](/v3/platform/home/alerts/alerts-conceptual-guide).
10. Click **Next**.
The **Review** section is displayed.
11. To receive email alerts about this event, in the **Alert notification** section, select **Subscribe to this alert**.
Choosing to receive email alerts will only send an email to the address associated with your fabric account. Other users with shared access to your organization’s fabric account can \[subscribe to this alert]\(link to configured alerts tab) or view events that triggered this alert on the Alerts homepage.
12. Click **Save**.
The alert is created. You can access the alert in the **Configured Alerts** tab on the **Alerts** homepage.
## Related Topics
* [Alerts Overview](/v3/platform/home/alerts/alerts-overview)
* [Alerts Homepage](/v3/platform/home/alerts/alerts-page)
* [Managing Alerts](/v3/platform/home/alerts/managing-alerts)
# Managing Alerts
Source: https://developer.fabric.inc/v3/platform/home/alerts/managing-alerts
This document covers the process of editing an alert's details, subscribing to an alert, managing an alert's status, and browsing alert templates.
## Prerequisites
Ensure that you have **Administrator** privileges in Copilot. For more detailed information on these settings, see [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control).
### Editing an alert’s details
1. In the left menu, click **Home > Alerts**.
The Alerts page is displayed.
2. Click **Configured alerts**.
The **Configured alerts** tab is displayed.
3. Click on an alert’s title.
The alert details page is displayed.
4. Edit the alert’s details as required.
Depending on the configuration for the alert, editing for certain fields might be disabled.
5. Click **Save**.
The alert’s details are saved. You can access the alert in the **Configured Alerts** tab on the **Alerts** homepage.
### Subscribing to an alert
1. In the left menu, click **Home > Alerts**.
The **Alerts** page is displayed.
2. Click **Configured Alerts**.
The **Configured Alerts** tab is displayed.
3. Click on the title of an alert.
The alert details page is displayed.
4. In the **Alert notification** section, select **Subscribe to this alert**.
5. In the **Subscribe by level of severity** fields select the alerts you want to subscribe to.
6. In the **Subscription alert notification method** field, select whether you want to receive email alerts or only see the alert on the **Alerts** page.
7. Click **Save**.
You are subscribed to the alert. You will receive email notifications whenever an event triggers the alert conditions.
### Assigning users to alerts
fabric users with admin access to their organization’s account can assign alerts to other users in their organization.
1. In the left menu, click **Home > Alerts**.\
The **Alerts** page is displayed.
2. Click **Configured Alerts**.\
The **Configured Alerts** tab is displayed.
3. To edit who is notified when an alert is triggered, click the **Alert** name.\
The alert details page is displayed.
4. In the **Alert notifications** section, select **Users**.\
A list of users in your organization who already have alert notifications set up is displayed.
5. To assign or edit alert settings, choose one of the following options:
* To assign alerts to a user or users who don't already have alerts set up, do the following:
* Click **Add Users**.
The **Add users** window is displayed.
* In the **Users** field, select one or more users.
* In the **Subscribe by level of severity** fields, select the severity you want to subscribe the user or users to.
* In the **Subscription alert notification method** field, select whether you want the user to receive email alerts or only see the alert on the **Alerts** page.
* Click **Add Users**.
* To edit a single user's existing subscription settings, do the following:
* Mouse over the user in the table and click the pencil icon.
The **Edit alert notifications window** is displayed.
* In the **Subscribe by level of severity** fields, select the severity you want to subscribe the user to.
* In the **Subscription alert notification method** field, select whether you want the user to receive email alerts or only see the alert on the **Alerts** page.
* Click **Save**.
* To batch edit the subscription settings for multiple users, do the following:
* Select one or more users in the list and click the **Edit** button.
The **Are you sure you want to edit alert notifications for these users?** window is displayed.
* (Optional) In the **Users** add or remove the users you are editing.
* In the **Subscribe by level of severity** fields, select the severity you want to subscribe the user to.
* In the **Subscription alert notification method** field, select whether you want the user to receive email alerts or only see the alert on the **Alerts** page.
* Click **Save**.
The user or users are subscribed to receive alerts based on the settings you selected.
### Managing an alert’s status
1. In the left menu, click **Home > Alerts**.
The **Alerts** page is displayed.
2. Click **Configured alerts**.
The **Configured alerts** tab is displayed.
3. Click the alert name.
The alert details page is displayed.
4. Click the **Active** toggle button.
* If the alert is already in an active state, the **Are you sure you want to deactivate alert?** popup is displayed.
* To confirm deactivation, click **Yes, I’m Sure**.
* To cancel, click **Cancel**.
5. Click **Save**.
The alert’s status is updated. You can access the alert in the **Configured Alerts** tab on the **Alerts** homepage.
### Browsing alert templates
1. In the left menu, click **Home > Alerts**.
The **Alerts** page is displayed.
2. Click **Templates**.
The **Templates** tab is displayed. Templates are organized by fabric application.
3. To browse templates by fabric application, click the arrow icon to the right of a product menu to expand or collapse that application menu.
4. To learn more about an individual template, click its **View Details** button.
The **Template details** menu is displayed. It shows the template’s name, description, severity threshold, and trigger conditions.
5. Take one of the following actions:
* To create an alert from this template, click **Use**.
The **Create alert** page is displayed. For detailed instructions on creating an alert from a template, see [Creating an Alert from a Template](/v3/platform/home/alerts/creating-an-alert-from-template).
* To resume browsing, click **Cancel**.
The **Template details** menu closes.
## Related Topics
* [Alerts Overview](/v3/platform/home/alerts/alerts-overview)
* [Alerts Homepage](/v3/platform/home/alerts/alerts-page)
* [Creating Alerts](/v3/platform/home/alerts/creating-alerts)
# Sales Dashboard
Source: https://developer.fabric.inc/v3/platform/sales-analytics/dashboard
The **Sales Dashboard** page in fabric **Analytics** provides a simple and intuitive interface to monitor key performance metrics of your e-commerce operations.
This topic covers a brief overview of the sales reports and their calculations.
## Sales Dashboard Reports
The **Sales Dashboard** displays the following sales data:
* [Gross Demand Trend](#gross-demand-trend)
* [Net Sales](#net-sales)
* [Net Sales Trend](#net-sales-trend)
* [Gross AOV](#gross-average-order-value-aov)
* [Average Order Value Trend](#average-order-value-aov-trend)
* [Shipment Value](#shipment-value)
* [Shipment Value Trend](#shipment-value-trend)
* [Orders Shipped](#orders-shipped)
* [Orders Shipped Trend](#orders-shipped-trend)
* [Average Unique SKUs per Order](#average-unique-skus-per-order)
* [Open Orders](#open-orders)
* [Average Quantity per Original Order](#average-quantity-per-original-order)
To view the data for a specific timeframe, use the [filters](#filtering-sales-data). To view the data for [specific SKUs](#searching-with-skus), use the **Search with SKU** option.
### Gross Demand
The **Gross Demand** report helps in understanding the market demand for your products over a period.
It's calculated as the sum of original order totals.
`(\(\sum \text{{originalOrderTotal}}\))`, where `Original Order Total` refers to the total value of an order when it was initially placed, before any returns, discounts, or other adjustments.
### Gross Demand Trend
The **Gross Demand Trend**, a line graph, shows the fluctuation in market demand for your products for a selected period.
### Net Sales
The **Net Sales** report provides insights into your profitability after cancellations, returns, and refunds.
It's calculated as the sum of invoice totals.
`(\(\sum \text{{invoiceTotal}}\))`. The `invoiceTotal` must be greater than zero and `invoiceType` must be set as **Shipping**.
### Net Sales Trend
The **Net Sales Trend**, a line graph, shows the fluctuation in your profitability for a selected period.
### Gross Average Order Value (AOV)
The **Gross Average Order Value** report helps in measuring your customer's spending behavior in your store over a period. The Average Order Value (AOV) is a crucial indicator of the overall effectiveness of your sales strategies.
It's calculated as the sum of original order totals divided by the total number of orders.\
`(\(\frac{\sum \text{{originalOrderTotal}}}{\text{{total\_orders}}}\))`.
### Average Order Value (AOV) Trend
The **Average Order Value (AOV) Trend**, a line graph, shows the fluctuation in the average spending per order for a selected period.
### Shipment Value
The **Shipment Value** report helps you track the total revenue from shipped orders over a period, before any returns or cancellations are made.
It's calculated as the sum of invoice totals.
`(\(\sum \text{{invoiceTotal}}\))`, where the `invoiceType` is **Shipping**.
### Shipment Value Trend
The **Shipment Value Trend**, a line graph, shows the fluctuation in the total value of shipped orders for a selected period.
### Orders Shipped
The **Orders Shipped** report helps you assess the operational efficiency of fulfilling orders and the scale of deliveries completed over a period.
It's calculated as the count the unique order numbers for items in cartons.
`\(Count(Unique(cartons[].items[].orderNumber))\)`, where, the `shippedQuanity` of an `item` in the carton must be greater than zero.
### Orders Shipped Trend
The **Orders Shipped Trend**, a line graph, shows the fluctuation in the number of orders dispatched for a selected period.
### Average Unique SKUs Per Order
The **Average Unique SKUs Per Order** report shows the average number of unique items per order over a period. It helps in understanding the diversity of products purchased from your online store.
It's calculated as the average number of unique product SKUs per order by dividing the total count of unique SKUs across all orders by the total number of orders.
`(\(\frac{\text{{CountOf(Unique items[].sku) per order}}}{\text{{total\_orders}}}\))`.
### Open Orders
The **Open Orders** report provides insights into the number of unfulfilled orders over a period.
It's calculated as the count of orders where the sum of shipped and cancelled quantities for each item is less than the ordered quantity of that item. `\[\text{Count}(\{orders\})\]`, where the combined quantities of shipped and cancelled items, must be less than the total quantities of items ordered.
### Average Quantity per Original Order
The **Average Quantity per Original Order** report helps measure the average number of items in an order over a period, before any modifications are made. This report provides insights into purchasing behavior and on how many products, on an average, customers are buying in a single transaction.
It's calculated as the average quantity per original order by aggregating the quantities ordered across all transactions and dividing by the number of orders.
`(\(\frac{\sum (\text{items[].orderedQuantity})}{\text{total\_orders}}\)\)`
## Filtering Sales Data
1. In the left menu, click **Analytics** > **Sales Dashboard**.
The **Sales Dashboard** page is displayed with sales data.
2. Select one of the following filter options:
* **Last 7 days**: Displays data for the last seven days. This is the default setting.
* **Last month**: Displays data for the previous month.
* **Custom data**: Displays data based on the custom data range. You can specify the start date in the **From** field and the end date in the **To** field.
### Searching with SKUs
1. In the left menu, click **Analytics** > **Sales Dashboard**.
The **Sales Dashboard** page is displayed with sales data.
2. Specify one or more SKUs in the search box and click **Enter**.
The sales data is shown for the specified SKUs.
# Account Details
Source: https://developer.fabric.inc/v3/platform/settings/account-details/account-details
### Overview
On the **Account Details** page, you can:
* View your account (tenant) ID and the fabric applications you have access to. The account ID is included in the profile information in the top right of any page in Copilot. You need account ID to access any of fabric’s endpoints.
* View your organization’s details, such as the organization ID.
* Request a new account. Note that requesting a new account is limited to fabric users with administrative permissions.
### Related Topics
* [Getting the Account ID](/v3/platform/settings/account-details/getting-the-account-id)
* [Request New Account](/v3/platform/settings/account-details/requesting-a-new-account)
* [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control)
# Getting the Account ID
Source: https://developer.fabric.inc/v3/platform/settings/account-details/getting-the-account-id
### Overview
The account ID, also referred to as the tenant ID in fabric, is required for accessing the API endpoints.
### Procedure
1. In the left menu, click **Settings > Account Settings**.
2. Click **Account Details**.\
The **Account Details** page is displayed.
The account ID is displayed in the **Account Details** section.
You can also get the account ID by clicking on the profile icon in the top right of any page in Copilot and copying the ID.
### Related Topics
* [Account Details](/v3/platform/settings/account-details/account-details)
* [Request New Account](/v3/platform/settings/account-details/requesting-a-new-account)
* [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control)
# Requesting a New Account
Source: https://developer.fabric.inc/v3/platform/settings/account-details/requesting-a-new-account
## Overview
fabric users with administrator privileges can use the **Request New Account** feature to create additional accounts under their organization's profile. a merchant might want separate accounts for various sales channels or different development environments, such as staging and production. Even though each account can operate independently, this feature allows merchants to oversee and manage all accounts within the same organization profile.
## Prerequisites
Ensure you have [administrator privileges](/v3/platform/settings/rbac/role-based-access-control) to request a new account.
## Procedure
1. In the left menu, click **Settings > Account Settings**.
2. Click **Account Details**.\
The **Account Details** page is displayed.
3. Click **Request new account**.\
The **Request new account** page is displayed.
4. In the **Account Name** field, enter the account’s name.
5. In the Reason for new account field, select one of the following:
* **Environment will be used for learning**
* **Environment will be used for development**
* **Environment will be used for QA**
* **Environment will be used for UAT**
* **Environment will be used for production**
* **Environment will be used for demos**
6. (Optional) Enter a **Description** of the new account.
7. Click **Submit Request**.
You will receive an email with a link to activate the new account.
### Post requisites
1. Check your email for the confirmation message containing the activation link.
2. Click the activation link to activate the new account.
## Related Topics
* [Account Details](/v3/platform/settings/account-details/account-details)
* [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control)
# API Apps
Source: https://developer.fabric.inc/v3/platform/settings/api-apps/api-apps
### Overview
API apps allow multiple software programs to exchange data and make it easier for developers to create applications that leverage external resources and capabilities.
fabric authenticates and authorizes API requests using your account’s API keys. When using any of fabric’s APIs through an API client, you must include an API key as part of the requests. These keys are used to validate the permissions and access rights associated with the client before allowing access to a specific merchant's data.
Copilot has two types of API apps:
* System App: Generates an access token using a client ID and client secret to identify itself and to communicate with other systems. System Apps don't use fabric Identity to authenticate end users, instead use system-to-system communications with fabric APIs. If you want to use your own identity provider, you must create a System App.
* User App: Uses fabric Identity to authenticate end users. A user app relies on the login page that fabric Identity hosts for end users to log in. User apps are used by e-commerce apps that use fabric Identity for their authentication and authorization.
For more information about user apps and system apps, see the [APP Types](/v3/getting-started/authentication-v3/concepts#app-types) section.
### Terminologies
The following terminologies are used when creating or managing fabric API apps:
* **App Name:** The name of the app.
* **Role:** The scope of permissions for the app.
* **User Pool:** The user directory where user credentials are stored.
* **Redirect URL:** The URL the user should be redirected to after successful authentication.
* **Logout URL:** The URL the user should be redirected to after logout.
* **Authorization URL:** The URL to which the user will provide their client id and client secret to. If authorization is successful, then the user will be redirected to their redirect URL with an access token.
* **Client ID:** Public identifier of an app.
* **Client Secret:** The Secret known only to your application and the authorization server used to authenticate the app.
### Related Topics
* [Creating a System App](/v3/platform/settings/api-apps/creating-system-app)
* [Creating a User App](/v3/platform/settings/api-apps/creating-user-app)
* [Managing API Apps](/v3/platform/settings/api-apps/managing-api-apps)
* [Concepts Page](/v3/getting-started/authentication-v3/concepts)
# Creating a System App
Source: https://developer.fabric.inc/v3/platform/settings/api-apps/creating-system-app
### Overview
A **System App** is a type of API app that generates an access token to identify itself using a client ID and client secret. System Apps don't use fabric Identity to authenticate end users; rather they use system-to-system communications with fabric APIs. If you are using your own identity provider, you should create a System App.
Visit the [Concepts page](/v3/getting-started/authentication-v3/concepts) to learn more about System Apps.
### Prerequisites
Ensure you have [admin or restricted admin privileges](/v3/platform/settings/rbac/role-based-access-control) to create a new System App.
### Procedure
1. In the left menu, click **Settings > Developer Tools**.
2. Click **API Apps**.\
The **API Apps** page is displayed.
3. Click **Create API App**.\
The **Create an app** page is displayed.
4. In the **App name** field, enter the name of the application.
5. (Optional) In the **Description** field, enter a description.
6. In the **App type** field, select **System App**.\
The Role field appears.
7. In the **Role** field, select one of the following roles for the app:
* **Admin:** Has admin access for all fabric products.
* **Developer Admin:** Can create server-to-server apps and has admin access for all fabric products.
* **Developer Viewer:** Can view the details of a server-to-server app and has viewer role access for all fabric products.
* **Editor:** Has editor role access for all fabric products.
* **Experiences Editor:** Creates content for use on storefronts in Experiences.
* **Experiences Publisher:** Reviews and approves content to be published in Experiences.
* **Offers Editor:** Creates, updates, and deletes prices, promotions, customer segments, and exclusions in Offers.
* **Orders & Inventory Editor:** Manages orders, locations, inventory, networks, and settings in Orders and Inventory.
* **Product Catalog Editor:** Creates and updates catalog changes in Product Catalog.
* **Viewer:** Has viewer role access for all fabric products.
8. Click **Create**.
The new System App is created.
### Related Topics
* [API Apps](/v3/platform/settings/api-apps/api-apps)
* [Creating a User App](/v3/platform/settings/api-apps/creating-user-app)
* [Managing API Apps](/v3/platform/settings/api-apps/managing-api-apps)
* [Concepts Page](/v3/getting-started/authentication-v3/concepts)
* [Getting Started with fabric APIs](/v3/getting-started/api-guides/getting-started-with-fabric-apis)
* [Making Your First API Call](/v3/getting-started/api-guides/api-authentication)
# Creating a User App
Source: https://developer.fabric.inc/v3/platform/settings/api-apps/creating-user-app
### Overview
A User App is a type of API app that uses fabric Identity to authenticate end users. A User App relies on the login page that fabric Identity hosts in order for end users to log in. It's suitable for e-commerce apps that direct their authentication and authorization needs to fabric Identity.
Visit the [Concepts page](/v3/getting-started/authentication-v3/concepts) to learn more about User Apps.
### Prerequisites
Ensure you have [admin or restricted admin](/v3/platform/settings/rbac/role-based-access-control.mdx) privileges to create a new user app.
### Procedure
1. In the left menu, click **Settings > Developer Tools**.
2. Click **API Apps**.\
The **API Apps** page is displayed.
3. Click **Create API App**.\
The **Create an app** page is displayed.
4. In the **App name** field, enter the name of the application.
5. (Optional) In the **Description** field, enter a description.
6. In the **App type** field, select **User App**.\
The User Pool, Usage Type, Redirect URL, and Logout URL fields appear.
7. In the **[User Pool](/v3/getting-started/authentication-v3/concepts#user-pools)** field, select default.\
If you want to create a new user pool, contact [fabric Customer Support](https://support.fabric.inc/hc/en-us).
8. In the **Usage Type** field, choose one of the following options:
1. **Headless shopper authentication:** Supports a custom log in experience using fabric APIs.
2. **Hosted log in:** Shopper must verify their identity by logging in through Okta.
9. In the **Redirect URL** field, enter a URL to redirect the user to after successful authentication.
10. In the **Logout URL** field, enter a URL to redirect the user to after logging out.
11. Click **Create**.
The new User App is created.
### Related Topics
* [API Apps](/v3/platform/settings/api-apps/api-apps)
* [Creating a System App](/v3/platform/settings/api-apps/creating-system-app)
* [Managing API Apps](/v3/platform/settings/api-apps/managing-api-apps)
* [Concepts Page](/v3/getting-started/authentication-v3/concepts)
* [Getting Started with fabric APIs](/v3/getting-started/api-guides/getting-started-with-fabric-apis)
* [Making Your First API Call](/v3/getting-started/api-guides/api-authentication)
# Getting System App Credentials
Source: https://developer.fabric.inc/v3/platform/settings/api-apps/getting-system-app-credentials
System App generates an access token to establish its identity by using a [client ID](#client%5Fid) and [client secret](#client%5Fsecret). Unlike regular user applications, system apps don't rely on fabric identity for authenticating end users. Instead, they employ system-to-system communication with fabric APIs to fulfill their intended functionalities and services. This topic provides step-by-step instructions to get the setting required for a system app to complete the authentication.
## Prerequisite
Ensure that a [system app is created](/v3/guides/settings/api-apps/creating-system-app) for your account. You must have [admin rights](/v3/platform/settings/rbac/role-based-access-control) to create a system app in Copilot. For more information on creating system apps, see the [Creating a System App](/v3/platform/settings/api-apps/creating-system-app) section.
## Procedure
1. Log in to your Copilot account.
2. In the left menu, click **Settings > Developer Tools**.
3. Click **API Apps**.\
The API Apps page is displayed. This page provides a list of apps created in your account. The **app type** field specifies whether the application is a user app or system app.
4. Click the name of the **system app** that's already created for your account.\
The details of the system app is displayed.
5. Make a note of the following settings:
* **Authorization URL**: A unique URL for each fabric merchant and is common across all system apps defined for a single merchant.
* **Client ID**: Public identifier of an app.
* **Client Secret**: The Secret known only to your application and the authorization server used to authenticate the app.\
These values are required for authentication of your system app and to start using fabric APIs. For more information about these settings, see the [API Apps](/v3/platform/settings/api-apps/api-apps) page.
## Related Topics
* [API Apps](/v3/platform/settings/api-apps/api-apps)
* [Creating a System App](/v3/platform/settings/api-apps/creating-system-app)
* [Creating a User App](/v3/platform/settings/api-apps/creating-user-app)
* [Concepts Page](/v3/getting-started/authentication-v3/concepts)
* [Getting Started with fabric APIs](/v3/getting-started/api-guides/getting-started-with-fabric-apis)
* [Making Your First API Call](/v3/getting-started/api-guides/api-authentication)
# Managing API Apps
Source: https://developer.fabric.inc/v3/platform/settings/api-apps/managing-api-apps
### Overview
fabric users with Admin or Restricted Admin privileges can edit or delete API apps.
### Prerequisites
Ensure you have [admin or restricted admin privileges](/v3/platform/settings/rbac/role-based-access-control) to edit or delete API apps.
### Editing API Apps
1. In the left menu, click **Settings > Developer Tools**.
2. Click **API Apps**.\
The **API Apps** page is displayed.
3. To edit an API app, find the API app you want to change and hover over the name of the API app.
4. Click the **pencil** icon at the right.\
The **App Details** page is displayed.
5. Make the required changes.
6. Click **Save**.
The API app is updated.
### Deleting API Apps
1. In the left menu, click **Settings > Developer Tools**.
2. Click **API Apps**. The API Apps page is displayed.
3. To delete an API app, find the API app you would like to delete and hover over it.
4. Click the **trash** icon that appears at the right.
The API app is deleted.
### Related Topics
* [API Apps](/v3/platform/settings/api-apps/api-apps)
* [Creating a System App](/v3/platform/settings/api-apps/creating-system-app)
* [Creating a User App](/v3/platform/settings/api-apps/creating-user-app)
* [Concepts Page](/v3/getting-started/authentication-v3/concepts)
# Currencies
Source: https://developer.fabric.inc/v3/platform/settings/internationalization/currencies
### Overview
With the internationalization feature in Copilot, you can manage currencies and enable multi-currency pricing. You can also to set a default currency for your storefront.
### Procedure
1. In the left menu, click **Settings > Account Settings**.
2. Click **Internationalization**.\
The Internationalization page is displayed.
3. Click the **Currencies** tab.\
The Currencies tab is displayed.
4. In the **Currency** field, do one of the following:
* From the drop-down menu, select a currency.
* Enter the three-letter currency code in the search field. For example, use **USD** for US Dollar.
5. Click **Add currency**.
The new currency is added to the list of currencies below.
### Changing the Default Currency
1. On the Internationalization page, click on the **Currencies** tab.
2. To set a currency as default, hover over the currency and click on the **vertical ellipses icon (⋮)** that appears at the right.
3. Click **Make default**.
The currency is set as the default.
### Related Topics
* [Internationalization Overview](/v3/platform/settings/internationalization/internationalization)
* [Languages](/v3/platform/settings/internationalization/languages)
# Internationalization
Source: https://developer.fabric.inc/v3/platform/settings/internationalization/internationalization
### Overview
fabric's internationalization (I18N) feature allows merchants to tailor their storefront experiences and products based on customers' geographic needs. Through centralized configuration in Copilot, you can manage languages and currencies, enabling localized content and multi-currency pricing within the fabric platform.
### Related Topics
* [Languages](/v3/platform/settings/internationalization/languages)
* [Currencies](/v3/platform/settings/internationalization/currencies)
# Languages
Source: https://developer.fabric.inc/v3/platform/settings/internationalization/languages
### Overview
With the internationalization feature in Copilot, you can manage languages and enable localized content. You can also to set a default language for your storefront.
### Procedure
1. In the left menu, click **Settings > Account Settings**.
2. Click **Internationalization**.\
The Internationalization page is displayed.
3. In the **Locale code** field, do one of the following:
* From the drop-down menu, select a locale.
* Enter the two letter language-country string in the search field. For example, enter **en-US** for US English or **en-GB** for British English.
4. Click **Add locale**.
The new locale is added to the list of locales.
### Changing the Default Locale
1. To set a locale as default, on the Internationalization page, hover over the locale and click the **vertical ellipses icon (⋮)** that appears at the right.
2. Click **Make default**.
The locale is set as the default.
### Related Topics
* [Internationalization Overview](/v3/platform/settings/internationalization/internationalization)
* [Currencies](/v3/platform/settings/internationalization/currencies)
# Role-Based Access Control (RBAC)
Source: https://developer.fabric.inc/v3/platform/settings/rbac/role-based-access-control
## Overview
With role-based access control in fabric, you can control and limit the access to information and actions based on the roles assigned to the users. Each user can be assigned multiple roles, such as products editor and orders and inventory editor. By assigning roles, you can prevent unintended changes or data entry errors through the Copilot accounts.
fabric offers the following roles to enhance security and data integrity:
* **Admin:** Invites other users and assigns them roles, as well as reassigns roles to existing users. The admin can also revoke user access from the account.
* **Developer Admin**: View and manage integration configurations.
* **Developer Viewer**: View integration configurations.
* **Restricted Admin:** Assigns and modifies the roles of other users. Restricted admin can also view the content in fabric applications, but can't modify them.
* **Editor:** Creates and manages content in all fabric applications available to their Copilot account.
* **Experiences Editor:** Creates and manages content within the Experiences application. However, this user group can't publish content to the Storefront.
* **Offers Editor:** Creates and manages content within the Offers application.
* **Orders & Inventory Editor:** Creates and manages content within the Orders and Inventory applications.
* **Products Editor:** Creates and manages content within the Products application.
* **Experiences Publisher:** Manages Experiences content and publishes it to the storefront.
* **Viewer:** Views content across all fabric applications, but can't create or manage any content.
For more information about role-based access control within fabric’s individual products, see the following sections:
* [Products Roles](/v3/platform/settings/rbac/role-based-access-control-products-roles)
* [Experiences Roles](/v3/platform/settings/rbac/role-based-access-control-experiences-roles)
* [Offers Roles](/v3/platform/settings/rbac/role-based-access-control-offers-roles)
* [Orders and Inventory Roles](/v3/platform/settings/rbac/role-based-access-control-orders-roles)
* [Customers Roles](/v3/platform/settings/rbac/role-based-access-control-customers-roles)
# Product Catalog Roles
Source: https://developer.fabric.inc/v3/platform/settings/rbac/role-based-access-control-products-roles
User roles have predefined permissions in fabric. This page covers the roles as they relate to the products application and their unique capabilities within each products menu:
* **Admin:** Manages product settings including attribute mapping and attribute groups. With this role, you can publish or unpublish an item or bundle, and delete items, bundles, and categories.
* **Editor:** Creates and updates content and sends changes for review.
* **Viewer:** Views content but can't create, update, or delete content. Viewers can't manage product settings.
## List and Details
The List menu is where products are imported, reviewed, and revised.
* **Admin:** Views and manages item lists and item details, including creating, publishing, and deleting items individually or in bulk. An admin can also upload items in bulk via CSV import, download older imported files, and export all items.
* **Editor:** Views, creates, and manages item lists and item details, but can't publish or delete items. Editors can also upload items in bulk via CSV import, download older imported files, and export all items from a catalog.
* **Viewer:** Views item lists and item details but can't edit, publish, or delete items. Viewers can download pervious imports and export existing data from Products. Viewers can't create or update items or bulk imports via CSV.
## Categories and Collections
The products are grouped together for better discovery and catalog management in the Categories and Collections menus.
* **Admin:** Creates and manages both categories and collections. Admins can add attributes and define attribute values for each node. They also have the capability to delete an entire collection, delete a single node of a category, and publish a collection.
* **Editor:** Creates and manages both types of hierarchies. Editors can also modify an existing collection, category, or any of its nodes and category attribute values. Editors can't publish or delete a category.
* **Viewer:** Views both types of categories and the details of each node. Viewers can't create a new category and can't make any changes to any existing categories.
## Product and Category Attributes
The Attributes menu is where product characteristics are defined.
* **Admin:** Creates and manages product attributes and has permission to import attributes, perform bulk uploads, and delete any existing attributes as permitted by the system. Admins can also export existing attributes and review import history of attributes.
* **Editor:** Creates and manages product attributes and has permission to import attributes, perform bulk uploads. They can't delete any attributes.
* **Viewer:** Views existing attributes and their details. They can also export existing attributes and review old import attributes.
## Settings
The Settings menu allows attributes to be grouped together to manage large volumes of product information.
* **Admin:** Creates and manages Attribute Mappings. Admins can also create new attribute groups and modify existing attribute groups.
* **Editor:** Creates new attribute groups and modifies existing groups. Editors can't make any changes to Attribute Mappings.
* **Viewer:** Views existing attribute groups and attribute mapping. Viewers aren't permitted to make any changes.
## Related Topics
For more information about role-based access control within fabric’s individual products, see the following sections:
* [Role-Based Access Control Overview](/v3/platform/settings/rbac/role-based-access-control)
* [Experiences Roles](/v3/platform/settings/rbac/role-based-access-control-experiences-roles)
* [Offers Roles](/v3/platform/settings/rbac/role-based-access-control-offers-roles)
* [Orders and Inventory Roles](/v3/platform/settings/rbac/role-based-access-control-orders-roles)
* [Customers Roles](/v3/platform/settings/rbac/role-based-access-control-customers-roles)
# Inviting Users
Source: https://developer.fabric.inc/v3/platform/settings/user-management/inviting-users
fabric users with administrator privileges can invite new users to their organization’s fabric account.
This topic covers the process of inviting new users to your organization.
## Prerequisites
* Ensure you have administrator privileges to invite new users.
## Procedure
1. In the left menu, click **Settings > Account Settings**.
The **Account Settings** page is displayed.
2. Click **User Management**.
The **User Management** page is displayed.
3. Click **Invite new users**.
The **Invite new users** window is displayed.
4. In the **First Name** field, enter the user’s first name.
5. In the **Last Name** field, enter the user’s last name.
6. In the **Email address** field, enter the user’s email address.
You can add multiple users by clicking **Add new user**.
7. In the **Invite as** field, select the roles you want to assign to each user.
The selected roles are assigned to every user you invited.
8. Click **Send invitations**.
A new user's status is set to **Pending**. They will receive an email with a link to activate their accounts. Upon activation, their status is set to **Active**.
## Related Topics
* [Managing Users](/v3/platform/settings/user-management/managing-users)
* [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control)
# Managing Users
Source: https://developer.fabric.inc/v3/platform/settings/user-management/managing-users
fabric users with administrator privileges can edit or delete other users associated with their organization’s fabric account.
## Prerequisites
Ensure you have administrator privileges to edit or delete other users.
## Editing Users
You can edit users individually or select multiple users for a bulk update.
* [Updating individual users](#updating-individual-users)
* [Updating multiple users](#updating-multiple-users)
### Updating individual users
1. In the left menu, click **Settings > Account Settings**.
The **Account Settings** page is displayed.
2. Click **User Management**.
The **User Management** page is displayed.
3. In the **User** column, mouse over the user you want to edit and click the **Edit Roles** icon.
The **Edit Roles** window is displayed.
4. In the **Roles** field, select the roles you want enabled for the user.
Multiple roles can be selected.
5. Click **Save**.
The user's roles are updated in the **User Management** table.
### Updating multiple users
1. In the left menu, click **Settings > Account Settings**.
The **Account Settings** page is displayed.
2. Click **User Management**.
The **User Management** page is displayed.
3. In the **User** column, select users.
Selecting users displays a banner with the **Clear selection**, **Assign Role**, and **Delete Users** options.
4. Click **Assign Role**.
The **Assign Roles** window is displayed with a list of all the users you selected. To remove a user from the list, click the **X** next to the users name.
5. In the **Roles** field, select the roles you want to assign.
Multiple roles can be selected.
6. Do one of the following:
* Click **Add Roles** if you don't want to override the existing roles of the selected users.
* Click **Add and Replace Existing Roles** to override any existing roles and replace them with the newly selected roles.
7. Click **Add Roles**.
The users' roles are updated in the **User Management** table.
For more information about Role-Based Access Control, see the [Role-Based Access Control (RBAC) documentation](/v3/platform/settings/rbac/role-based-access-control).
## Deleting Users
You can delete users individually or select multiple users for bulk delete.
* [Deleting individual users](#deleting-individual-users)
* [Deleting multiple users](#deleting-multiple-users)
### Deleting Individual Users
1. In the left menu, click **Settings > Account Settings**.
The **Account Settings** page is displayed.
2. Click **User Management**.
The **User Management** page is displayed.
3. In the User column, hover over the user name you want to delete, and then click the **De-activate** trash icon.
The remove user window is displayed.
4. Click **Yes, I'm sure**.
The permissions and roles of the selected user are removed.
### Deleting Multiple Users
1. In the left menu, click **Settings > Account Settings**.
The **Account Settings** page is displayed.
2. Click **User Management**.
The **User Management** page is displayed.
3. In the **User** column, select users.
Selecting users displays the **Clear selection**, **Assign Role**, and **Delete Users** options.
4. Click **Delete Users**.
The delete users window is displayed with a list of all the selected users.
5. Click **Yes, delete**.
The selected users' permissions and roles are removed.
## Related Topics
* [Inviting Users](/v3/platform/settings/user-management/inviting-users)
* [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control)
# User Management
Source: https://developer.fabric.inc/v3/platform/settings/user-management/user-management
With fabric’s role-based access control settings, you can restrict which users are authorized to manage or access certain parts of your organization’s fabric account.
On the **User Management** page, you can:
* Manage the users in your fabric account.
* Assign roles to control levels of access.
* Update account information for existing users.
* Delete users.
## Viewing All Users
1. Click **Account Settings**.
The **Account Settings** page is displayed.
2. Click **User Management**.
The **User Management** page is displayed with a table containing all the users in your organization.
### Filtering users
The **User Management** table can be filtered by **Role** and **Status** so that the table only displays users that match the filter parameters. Additionally, using the search bar, you can filter by name or email.
### User management table
The **User Management** table displays information on the user, their status, when they last logged in, and their current roles. The following table describes each column:
| Field | Description |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **User** | Displays the first name, last name, and email of the user. |
| **Status** | Displays the current status of the user. **Active** status indicates that the user can log in and has accepted the initial login email. **Pending** status indicates that the user is added, but not accepted the login email. |
| **Last active** | Displays the user's most recent login date. |
| **Role** | Displays a list of roles currently assigned to the user. If the user has more than two roles, the total number of roles is shown. Hovering over this number shows each individual role in a text popover. |
## Related Topics
* [Inviting Users](/v3/platform/settings/user-management/inviting-users)
* [Managing Users](/v3/platform/settings/user-management/managing-users)
* [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control)
# Add a new address
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/add-a-new-address
customers.openapi post /customers/{customerId}/customer-address
Using this endpoint, you can add a new address for the customer by `customerId`.
# Delete customer's address
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/delete-customers-address
customers.openapi delete /customers/{customerId}/customer-address/{addressId}
Using this endpoint, you can delete an existing address of a customer based on the `customerId` and `addressId`.
# Get customer's address
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/get-customers-address
customers.openapi get /customers/{customerId}/customer-address/{addressId}
Using this endpoint, you can get a single address of a customer based on the `customerId` and `addressId`.
# Get customer's addresses
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/get-customers-addresses
customers.openapi get /customers/{customerId}/customer-address
Using this endpoint, you can get all addresses of a customer.
By specifying the query parameters `offset` and `limit`, you can narrow down the search results. You can also `sort` the results in an ascending or descending order. Additionally, with the `isDeleted` query parameter, you can filter for either deleted or non-deleted customers. When no query parameter is specified, by default, you get up to 10 records.
# Customer Address
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/overview
These endpoints provide the features for store admins to create and manage customers' addresses.
# Partially update customer's address
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/partially-update-customers-address
customers.openapi patch /customers/{customerId}/customer-address/{addressId}
Using this endpoint, you can partially update a customer's address based on the `customerId` and `addressId`. To fully replace an existing address, use the `PUT /customers/{customerId}/customer-address/{addressId}` endpoint.
# Search for customer's addresses
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/search-for-customers-addresses
customers.openapi post /customers/{customerId}/customer-address/search
With this endpoint, you can search for customer's addresses based on the specified filter conditions. In addition, you can tailor the search results by including or excluding the deleted addresses and the default addresses.
**Note**:A customer can have a default address for both billing and shipping.
# Update customer's address
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-address/update-customers-address
customers.openapi put /customers/{customerId}/customer-address/{addressId}
Using this endpoint, you can update a customer's address based on the `customerId` and `addressId`. This replaces the existing address with the new one. If you want to make only a partial update, use the `PATCH /customers/{customerId}/customer-address/{addressId}` endpoint.
# Add a new customer
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/add-a-new-customer
customers.openapi post /Customers
Using this endpoint, you can add a new customer to the system. The response includes an `id` which is required in subsequent calls, such as `GET /customers/{customerId}`, `PUT /customers/{customerId}`, `PATCH /customers/{customerId}`, and more.
When `externalId` is specified, the customers have the ability to manage their own details through the storefront UI.
# Delete customer
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/delete-customer
customers.openapi delete /customers/{customerId}
With this endpoint, you can delete an existing customer data by `customerId`.
# Get customer details
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/get-customer-details
customers.openapi get /customers/{customerId}
Using this endpoint, you can get details of a single customer by `customerId`.
# Get customers
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/get-customers
customers.openapi get /Customers
Use this endpoint to get a paginated list of customers.
By specifying the query parameters `offset` and `limit`, you can narrow down the search results. You can also `sort` the results in an ascending or descending order. Additionally, with the `isDeleted` query parameter, you can filter for either deleted or non-deleted customers. When no query parameter is specified, by default, you get up to 10 records.
# Partially update customer details
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/partially-update-customer-details
customers.openapi patch /customers/{customerId}
Using this endpoint, you can partially update details of a customer by `customerId`. To fully replace the details of an existing customer, use the `PUT /customers/{customerId}` endpoint.
# Search for customer
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/search-for-customer
customers.openapi post /customers/search
Using this endpoint, you can search for customers based on filter conditions. By specifying `offset` and `limit`, you can narrow down your search results. In addition, using the `isDelete` property in the request body, you can filter for either deleted or non-deleted customers.
# Update customer details
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/update-customer-details
customers.openapi put /customers/{customerId}
Using this endpoint, you can update details of an existing customer by `customerId`.
This endpoint replaces the existing details of the customer. If you want to make only a partial update, without replacing the entire details, use the `PATCH /customers/{customerId}` endpoint.
# Update customer status
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-profile/update-customer-status
customers.openapi post /customers/{customerId}/actions/update-status
With this endpoint, you can update the account status of an existing customer by `customerId`.
# Add address - customer context.
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/add-address--customer-context
customers.openapi post /customers/self/customer-address
Using this endpoint, a customer can add their address through a storefront UI.
# Delete address - customer context
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/delete-address--customer-context
customers.openapi delete /customers/self/customer-address/{addressId}
Using this endpoint, a customer can delete their own address through the storefront UI based on `addressId`.
# Get customer details - customer context
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/get-customer-details--customer-context
customers.openapi get /customers/self
Using this endpoint, a customer can view their details through the storefront UI.
# Customer Self
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/overview
These endpoints provide the feature for customers or shoppers to independently manage their details in the storefront.
# Update address - customer context
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/update-address--customer-context
customers.openapi put /customers/self/customer-address/{addressId}
Using this endpoint, a customer can update their own address through the storefront UI based on `addressId`.
# Update customer details - customer context
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/update-customer-details--customer-context
customers.openapi put /customers/self
Using this endpoint, customers can update their own details through the storefront UI.
# View address - customer context
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/view-address--customer-context
customers.openapi get /customers/self/customer-address/{addressId}
Using this endpoint, a customer can view their own address through the storefront UI based on the `addressId`.
# View addresses - customer context
Source: https://developer.fabric.inc/v3/platform/api-reference/customers/customer-self/view-addresses--customer-context
customers.openapi get /customers/self/customer-address
Using this endpoint, a customer can view their own addresses through the storefront UI.
# Customers Roles
Source: https://developer.fabric.inc/v3/platform/settings/rbac/role-based-access-control-customers-roles
User roles have predefined permissions in fabric. This page covers the roles as they relate to the Customers application and their unique capabilities within each Customers menu:
* **Admin:** Creates and manages customer information, addresses, organizations, groups and organization users.
* **Editor:** Creates and manages customer information, addresses, organizations, groups and organization users.
* **Viewer:** Browses customer information in Customers. Viewers can't make changes to customer information.
## Related Topics
* [Role-Based Access Control Overview](/v3/platform/settings/rbac/role-based-access-control)
* [Products Roles](/v3/platform/settings/rbac/role-based-access-control-products-roles)
* [Experiences Roles](/v3/platform/settings/rbac/role-based-access-control-experiences-roles)
* [Offers Roles](/v3/platform/settings/rbac/role-based-access-control-offers-roles)
* [Orders and Inventory Roles](/v3/platform/settings/rbac/role-based-access-control-orders-roles)
# Offers Roles
Source: https://developer.fabric.inc/v3/platform/settings/rbac/role-based-access-control-offers-roles
User roles have predefined permissions in fabric. This page covers the roles as they relate to the Offers application and their unique capabilities within each Offers menu:
* **Admin:** Creates and manages price lists, promotions, and coupons.
* **Editor:** Creates and manages price lists, promotions, and coupons.
* **Viewer:** Views content in Offers. Viewers can't make changes to content or manage other users.
## Pricing
**Admins** and **Editors** can add bulk prices or add/edit individual prices. **Viewers** can browse and search pricing.
## Promotions
**Admins** and **Editors** can add new or update existing promotions. **Viewers** can view promotions.
## Coupons
**Admins** and **Editors** can add new or update existing coupons. **Viewers** can view coupons.
## Settings
**Admins** and **Editors** can set price lists, manage exclusion lists, and manage customer segments. **Viewers** can view settings.
## Related Topics
For more information about role-based access control within fabric’s individual products, see the following sections:
* [Role-Based Access Control Overview](/v3/platform/settings/rbac/role-based-access-control)
* [Products Roles](/v3/platform/settings/rbac/role-based-access-control-products-roles)
* [Experiences Roles](/v3/platform/settings/rbac/role-based-access-control-experiences-roles)
* [Orders and Inventory Roles](/v3/platform/settings/rbac/role-based-access-control-orders-roles)
* [Customers Roles](/v3/platform/settings/rbac/role-based-access-control-customers-roles)
# Orders and Inventory Roles
Source: https://developer.fabric.inc/v3/platform/settings/rbac/role-based-access-control-orders-roles
User roles have predefined permissions in fabric. This page covers the roles as they relate to the Orders and Inventory applications and their unique capabilities within each application’s menu:
* **Admin:** Creates and manages content in Orders and Inventory.
* **Editor:** Creates and manages content in Orders and Inventory.
* **Viewer:** Views content in Orders and Inventory. Viewers can't make changes to content or manage other users.
## Orders
Admins and editors\*\* can create new orders, refund orders, cancel orders, and update orders. Viewers can only view order details.
## Networks
Admins and editors can create new networks and edit existing ones. Viewers can view network details.
## Locations
Admins and editors can create new locations and edit existing ones. Viewers can view location details.
## Settings
### Attributes
Admins and editors can create new SKU attributes. Viewers can only view SKU attributes.
### Shipment Methods
Admins and editors can create new shipping and carrier information. Viewers can view shipment method details.
## Inventory
Admins and editors can import inventory. Viewers can view shipment method details.
## Related Topics
For more information about role-based access control within fabric’s individual products, see the following sections:
* [Role-Based Access Control Overview](/v3/platform/settings/rbac/role-based-access-control)
* [Products Roles](/v3/platform/settings/rbac/role-based-access-control-products-roles)
* [Experiences Roles](/v3/platform/settings/rbac/role-based-access-control-experiences-roles)
* [Offers Roles](/v3/platform/settings/rbac/role-based-access-control-offers-roles)
* [Customers Roles](/v3/platform/settings/rbac/role-based-access-control-customers-roles)
# Adding a Webhook
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/adding-a-webhook
## Overview
Webhooks are real-time notifications that enable communication between different software systems and trigger automated processes. For example, for your online store, you can set up a webhook to alert you whenever a new product is added.
Using fabric Copilot's webhook functionality, you can create event subscriptions to monitor operations between fabric apps and external systems, such as a Customer Relationship Management (CRM) or Content Management Systems (CMS).
You can create webhooks for the following applications in fabric:
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
## Prerequisites
Before creating a webhook, ensure that:
* You have **Developer Admin** privileges to create a new webhook. For more information on privileges, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control) topic.
* You have set up the destination server or subscriber endpoint for successful implementation.
## Procedure
1. In the left menu, click **Settings > Developer Tools**.
2. Click **Webhooks**.\
The Webhooks page is displayed.
3. Click **Add Webhook**.\
The **Add webhook** page is displayed.
4. Enter a name for the webhook.
5. In the **Webhook endpoint** field, enter the subscriber URL for the webhook’s endpoint to listen to the event.
6. (Optional) In the **Webhook description** field, enter a description for the webhook.\
Use this field for internal notes about the webhook's purpose.
7. In the **API key header** field, leave the request header set to *x-api-key*.
8. In the **API key credentials** field, enter your API key value.
* This value comes from the system you are sending the webhook data to.
9. To create a webhook for a fabric application, in the **Events** section, do one or more of the following as required:
* To create a webhook for the Product Catalog application, click the **Product Catalog** tab and do one of the following:
* To subscribe to all events in Product Catalog, check the **Select all events in Product Catalog** checkbox.
* To subscribe to all events in a specific Product Catalog service, check the checkbox next to the service name.
* To subscribe to specific events within a Product Catalog service, expand each service menu and check the checkbox next to individual events, as required.\
For a complete list of events available to Product Catalog, see the [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events) topic.
* To create a webhook for the Offers application, click the **Offers** tab and do one of the following:
* To subscribe to all events in Offers, check the **Select all events in Offers** checkbox.
* To subscribe to all events in a specific Offers service, check the checkbox next to the service name.
* To subscribe to specific events within an Offers service, expand each service menu and check the checkbox next to individual events, as required.\
For a complete list of events available to Offers, see the [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events) topic.
* To create a webhook for the Orders application, click the **Orders** tab and do one of the following:
* To subscribe to all events in Orders, check the **Select all events in Orders** checkbox.
* To subscribe to all events in a specific Orders service, check the checkbox next to the service name.
* To subscribe to specific events within an Orders service, expand each service menu and check the checkbox next to individual events, as required.\
For a complete list of events available to Orders, see the [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events) topic.
* To create a webhook for the Inventory application, click the **Inventory** tab and do one of the following:
* To subscribe to all events in Inventory, check the **Select all events in Inventory** checkbox.
* To subscribe to all events in a specific Inventory service, check the checkbox next to the service name.
* To subscribe to specific events within an Inventory service, expand each service menu and check the checkbox next to individual events, as required.\
For a complete list of events available to Inventory, see the [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events) topic.
* To create a webhook for the Cart & Checkout application, click the **Cart & Checkout** tab and do one of the following:
* To subscribe to all events in Cart & Checkout, check the **Select all events in Cart & Checkout** checkbox.
* To subscribe to all events in a specific Cart & Checkout service, check the checkbox next to the service name.
* To subscribe to specific events within a Cart & Checkout service, expand each service menu and check the checkbox next to individual events, as required.
10. At the top of the page, click **Save**.
The webhook is saved and the **Test webhook** button is displayed.
fabric recommends testing the webhook to ensure it's successful. To learn more, see [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook).
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# Deleting a Webhook
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/deleting-a-webhook
## Prerequisites
Before deleting a webhook, ensure that you have **Developer Admin** privileges. See [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control) for more information.
## Procedure
1. In the left menu, click **Settings > Developer Tools**.
2. Click **Webhooks**.\
The Webhooks page is displayed.
3. Hover over the name of the webhook that you want to delete.
4. On the far right of the row, click the **Delete** icon.\
A message to confirm the action is prompted. Note that after deleting a webhook, you can no longer receive events to that endpoint.
5. Click **Yes, delete**.\
You can no longer receive events to this point.
Alternatively, you can also click the name of the webhook that you want to delete, and then click the Delete Webhook icon at the top right to delete the webhook.
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# Editing a Webhook
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/editing-a-webhook
## Prerequisites
Before editing a webhook, ensure that you have **Developer Admin** privileges. See [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control) for more information.
## Procedure
1. In the left menu, click **Settings > Developer Tools**.
2. Click **Webhooks**.\
The Webhooks page is displayed.
3. To edit the setting of a webhook, click the name of the webhook.\
A page with the details of the webhook is displayed.
4. Update the details as required.\
For more information about the different options, see the [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook) section.
5. Click **Save**.
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# List of Inventory Events
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/list-of-inventory-events
The following tables list all the available events for fabric Inventory.
If a failure to deliver an event occurs, fabric automatically retries up to 3 times to deliver the failed event.
## Export
| Event Type | Description |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EXPORT\_AGGREGATED\_NETWORK\_COMPLETED | Event triggered once the export process is completed, and the aggregated network exported file is ready to be downloaded. |
| EXPORT\_AGGREGATED\_NETWORK\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_AGGREGATED\_NETWORK\_INITIATED | Event triggered once the export request is received by the fabric export service to export aggregated network based on various filters. |
| EXPORT\_INVENTORY\_COMPLETED | Event triggered once the export process is completed, and the inventory exported file is ready to be downloaded. |
| EXPORT\_INVENTORY\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_INVENTORY\_INITIATED | Event triggered once the export request is received by the fabric export service to export inventory based on various filters. |
| EXPORT\_LOCATION\_COMPLETED | Event triggered once the export process is completed, and the location exported file is ready to be downloaded. |
| EXPORT\_LOCATION\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_LOCATION\_INITIATED | Event triggered once the export request is received by the fabric export service to export location based on various filters. |
| EXPORT\_NETWORK\_COMPLETED | Event triggered once the export process is completed, and the network exported file is ready to be downloaded. |
| EXPORT\_NETWORK\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_NETWORK\_INITIATED | Event triggered once the export request is received by the fabric export service to export inventory based on various filters. |
## Inventory
| Event Type | Description |
| :------------------------------ | :----------------------------------------------------------- |
| INVENTORY\_BULK | Event triggered when an inventory file is imported. |
| INVENTORY\_CREATE | Event triggered when an inventory is created. |
| INVENTORY\_NETWORK\_AGGREGATION | Event triggered when a network aggregation job is completed. |
| INVENTORY\_NETWORK\_UPDATED | Event triggered when the inventory network is updated. |
| INVENTORY\_UPDATE | Event triggered when a inventory is updated. |
## Transfer
| Event Type | Description |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| TRANSER\_CREATED | Event triggered when a transfer is created. |
| TRANSFER\_DELIVERED | Event triggered when a transfer is delivered. |
| TRANSFER\_DRAFT | Event triggered when a transfer is in draft state. |
| TRANSFER\_ERROR | Event triggered when a transfer has an error. |
| TRANSFER\_HOLD\_CSR | Event triggered when a transfer is in hold CSR state, such as an invalid SKU. |
| TRANSER\_HOLD\_REVALIDATION | Event triggered when there is a server error from Product Catalog. |
| TRANSFER\_PACKED | Event triggered when a transfer is packed; for example, when items are loaded in cartons. |
| TRANSFER\_PARTIALLY\_PACKED | Event triggered when a transfer is partially packed. |
| TRANSFER\_PARTIALLY\_PICKED\_UP | Event triggered when a transfer is partially picked up. |
| TRANSFER\_PARITALLY\_REJECTED | Event triggered when a transfer is partially rejected. |
| TRANSFER\_PARTIALLY\_STOCKCED | Event triggered when a transfer is partially stocked; for example, when it's ready to sell at the destination store. |
| TRANSFER\_PICKCED\_UP | Event triggered when a transfer is picked up. |
| TRANSFER\_RECEIVED | Event triggered when a transfer is received. |
| TRANSFER\_REJECTED | Event triggered when a transfer is rejected. |
| TRANSFER\_SHIPPED | Event triggered when a transfer is shipped. |
| TRANSFER\_STOCKED | Event triggered when a transfer is stocked and ready to sell at the destination store. |
| TRANSFER\_SUBMITTED | Event triggered when a transfer is submitted from `DRAFT` or `CREATED`. |
## Shipment
| Event Type | Description |
| ----------------------------- | ------------------------------------------------------------------------------ |
| TRANSFER\_SHIPMENT\_CANCELLED | Event triggered when a transfer shipment is cancelled. |
| TRANSFER\_SHIPMENT\_CREATED | Event triggered when a transfer shipment is created. |
| TRANSFER\_SHIPMENT\_DELIVERED | Event triggered when a transfer shipment is delivered. |
| TRANSFER\_SHIPMENT\_DRAFT | Event triggered when a transfer shipment is in draft state. |
| TRANSFER\_SHIPMENT\_ERROR | Event triggered when a transfer shipment has errors. |
| TRANSFER\_SHIPMENT\_PACKED | Event triggered when a transfer shipment is packed. |
| TRANSFER\_SHIPMENT\_RECEIVED | Event triggered when a transfer shipment is received at the destination store. |
| TRANSFER\_SHIPMENT\_STOCKED | Event triggered when a transfer shipment is stocked. |
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
# List of Offers Events
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/list-of-offers-events
The following tables list all the available events for fabric Offers.
If a failure to deliver an event occurs, fabric automatically retries up to 3 times to deliver the failed event.
## Jobs
| Event Type | Description |
| --------------------------- | ------------------------------------------------- |
| offers:bulkUpload:completed | Event triggered when bulk upload job is complete. |
## Coupons
| Event Type | Description |
| -------------------------------- | ------------------------------------------------------- |
| offers:coupon:activated | Event triggered when a scheduled coupon is activated. |
| offers:coupon:created | Event triggered when a coupon is created. |
| offers:coupon:deactivated | Event triggered when a scheduled coupon is deactivated. |
| offers:coupon:deleted | Event triggered when a coupon is deleted. |
| offers:coupon:disabled | Event triggered when a coupon is disabled. |
| offers:coupon:enabled | Event triggered when a coupon is enabled. |
| offers:coupon:updated | Event triggered when a coupon is updated. |
| offers:couponCode:created | Event triggered when a coupon code is created. |
| offers:couponCode:updated | Event triggered when a coupon code is updated. |
| offers:redemption:coupon:created | Event triggered when a coupon redeem is created. |
| offers:redemption:coupon:deleted | Event triggered when a coupon redeem is deleted. |
| offers:redemption:coupon:updated | Event triggered when a coupon redeem is updated. |
## Global Exclusions
| Event Type | Description |
| ------------------------------ | -------------------------------------------------------- |
| offers:globalExclusion:created | Event triggered when a global exclusion list is created. |
| offers:globalExclusion:deleted | Event triggered when a global exclusion list is deleted. |
| offers:globalExclusion:updated | Event triggered when a global exclusion list is updated. |
## Prices
| Event Type | Description |
| ------------------------ | -------------------------------------------- |
| offers:price:activated | Event triggered when a price becomes active. |
| offers:price:created | Event triggered when a price is created. |
| offers:price:deactivated | Event triggered when a price is deactivated. |
| offers:price:deleted | Event triggered when a price is deleted. |
## Price Lists
| Event Type | Description |
| ------------------------ | --------------------------------------------- |
| offers:priceList:created | Event triggered when a price list is created. |
| offers:priceList:deleted | Event triggered when a price list is deleted. |
| offers:priceList:updated | Event triggered when a price list is updated. |
## Promotions
| Event Type | Description |
| ------------------------------- | ---------------------------------------------------------- |
| offers:promo:activated | Event triggered when a scheduled promotion is activated. |
| offers:promo:created | Event triggered when a promotion is created. |
| offers:promo:deactivated | Event triggered when a scheduled promotion is deactivated. |
| offers:promo:deleted | Event triggered when a promotion is deleted. |
| offers:promo:updated | Event triggered when a promotion is updated. |
| offers:redemption:promo:created | Event triggered when a promotion redeem is created. |
| offers:redemption:promo:deleted | Event triggered when a promotion redeem is deleted. |
| offers:redemption:promo:updated | Event triggered when a promotion redeem is updated. |
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# List of Orders Events
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/list-of-orders-events
The following tables list all the available events for fabric Orders.
If a failure to deliver an event occurs, fabric automatically retries up to 3 times to deliver the failed event.
## Allocation
| Event Type | Description |
| ---------------------------- | ------------------------------------------------------------------------------------------------------- |
| ALLOCATION\_CREATE\_BOPIS | Event triggered when an allocation document is created for a Buy online pickup in store (BOPIS) item. |
| ALLOCATION\_CREATE\_GIFTCARD | Event triggered when an allocation document is created for a gift card. |
| ALLOCATION\_CREATE\_SDD | Event triggered when an allocation document is created for a same-day delivery item. |
| ALLOCATION\_CREATE\_SHIP | Event triggered when an allocation document is created for a web ship item. |
| ALLOCATION\_DC | Event triggered when an allocation document is created for a DC item. |
| ALLOCATION\_RETURN\_LPN | Event triggered when an allocation document is created for a returned item with return type `RECEIVED`. |
## Notification
| Event Type | Description |
| ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| APPEASEMENT\_NOTIFICATION\_EMAIL | Event triggered when an appeasement is applied to the order. |
| BACKORDER\_30\_DAYS\_CONSENT\_TO\_DELAY\_EMAIL | Event triggered when an order is created on the first day of the month, but backorder items aren't in `ALLOCATED` state on the 30th day to get the customer's consent. |
| BACKORDER\_53\_DAYS\_CONSENT\_TO\_DELAY\_EMAIL | Event triggered when an order is created on the first day of the month, but backorder items aren't in `ALLOCATED` state on the 53rd day to get the customer's consent. |
| BACKORDER\_AUTH\_DECLINE\_EMAIL | Event triggered when an order's backorder authorization was declined by the customer. |
| BACKORDER\_CANCEL\_EMAIL | Event triggered when an order is cancelled because its items are backordered. |
| BACKORDER\_NOTIFICATION\_EMAIL | Event triggered when an order is backordered. |
| BOPIS\_ORDER\_COMPLETED | Event triggered when an order is created and picked up by the customer. |
| BOPIS\_ORDER\_CONFIRMATION\_EMAIL | Event triggered when a pickup order is created that contains multiple items. |
| BOPIS\_ORDER\_READY\_FOR\_PICKUP | Event triggered when a pickup order is fulfilled. |
| BOPIS\_REMINDER\_EMAIL | Event triggered when a pickup order is created and fulfilled, but the customer has not picked it up. |
| EXCHANGE\_NOTIFICATION\_EMAIL | Event triggered when an exchange for an order is updated. |
| MULTI\_ITEM\_ORDER\_CONFIRMATION\_EMAIL | Event triggered when a web ship order is created that contains multiple items. |
| ORDER\_CANCELLATION\_EMAIL\_LOCATE\_ORDER\_ITEM\_CANCEL | Event triggered when an order is cancelled because an item in the order couldn't be located. |
| ORDER\_CANCELLATION\_EMAIL\_WEBCSC\_ORDER\_CANCEL | Event triggered when an order is fully canceled. |
| ORDER\_CANCELLATION\_EMAIL\_WEBCSC\_ORDER\_ITEM\_CANCEL | Event triggered when an order is partially canceled. |
| REFUND\_NOTIFICATION\_EMAIL | Event triggered when an order is refunded. |
| RETURN\_NOTIFICATION\_EMAIL | Event triggered when an order is fully returned with return type `RECEIVED` and the refund is successful. |
| SHIPPING\_CONFIRMATION\_EMAIL | Event triggered when a web ship order is created and its shipment is also created. |
| SINGLE\_ITEM\_ORDER\_CONFIRMATION\_EMAIL | Event triggered when a web ship order is created that contains a single item. |
## Cross Border
| Event Type | Description |
| ------------------------- | ------------------------------------------------------------------------------------------------ |
| CROSS\_BORDER\_VALIDATION | Event triggered when the cross border service completes validation for the order. |
| ORDER\_HOLD\_CROSSBORDER | Event triggered when an order is placed on hold while cross border service processes validation. |
## Exchange
| Event Type | Description |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| EXCHANGE\_PENDING | Event triggered when an item is exchanged with return type `PENDING` and exchange flag `TRUE`. |
| EXCHANGE\_TO\_SHIPMENT | Event triggered when an item is exchanged with return type `RECEIVED`, exchange flag `TRUE`, and initiate re-shipment is `TRUE`. |
## Export
| Event Type | Description |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EXPORT\_AGGREGATED\_NETWORK\_COMPLETED | Event triggered once the export process is completed, and the aggregated network exported file is ready to be downloaded. |
| EXPORT\_AGGREGATED\_NETWORK\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_AGGREGATED\_NETWORK\_INITIATED | Event triggered once the export request is received by the fabric export service to export aggregated network based on various filters. |
| EXPORT\_ALLOCATION\_COMPLETED | Event triggered once the export process is completed, and the allocation exported file is ready to be downloaded. |
| EXPORT\_ALLOCATION\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_ALLOCATION\_INITIATED | Event triggered once the export request is received by the fabric export service to export allocation based on various filters. |
| EXPORT\_INVENTORY\_COMPLETED | Event triggered once the export process is completed, and the inventory exported file is ready to be downloaded. |
| EXPORT\_INVENTORY\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_INVENTORY\_INITIATED | Event triggered once the export request is received by the fabric export service to export inventory based on various filters. |
| EXPORT\_INVOICE\_COMPLETED | Event triggered once the export process is completed, and the invoice exported file is ready to be downloaded. |
| EXPORT\_INVOICE\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_INVOICE\_INITIATED | Event triggered once the export request is received by the fabric export service to export invoice based on various filters. |
| EXPORT\_LOCATION\_COMPLETED | Event triggered once the export process is completed, and the location exported file is ready to be downloaded. |
| EXPORT\_LOCATION\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_LOCATION\_INITIATED | Event triggered once the export request is received by the fabric export service to export location based on various filters. |
| EXPORT\_NETWORK\_COMPLETED | Event triggered once the export process is completed, and the network exported file is ready to be downloaded. |
| EXPORT\_NETWORK\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_NETWORK\_INITIATED | Event triggered once the export request is received by the fabric export service to export inventory based on various filters. |
| EXPORT\_ORDER\_COMPLETED | Event triggered once the export process is completed, and the orders exported file is ready to be downloaded. |
| EXPORT\_ORDER\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_ORDER\_INITIATED | Event triggered once the export request is received by the fabric export service to export orders based on various filters. |
| EXPORT\_SHIPMENT\_COMPLETED | Event triggered once the export process is completed, and the shipment exported file is ready to be downloaded. |
| EXPORT\_SHIPMENT\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_SHIPMENT\_INITIATED | Event triggered once the export request is received by the fabric export service to export orders based on various filters. |
| EXPORT\_SHIPPING\_METHODS\_COMPLETED | Event triggered once the export process is completed, and the shipping methods exported file is ready to be downloaded. |
| EXPORT\_SHIPPING\_METHODS\_ERROR | Event triggered in case of export failures. This might happen due to an internal error, and must be reported to the fabric support team to solve the issue. |
| EXPORT\_SHIPPING\_METHODS\_INITIATED | Event triggered once the export request is received by the fabric export service to export shipping methods based on various filters. |
## Fraud
| Event Type | Description |
| ---------------------- | ------------------------------------------------------------------------------------------ |
| FRAUD\_CANCEL | Event triggered when an order has been canceled due to failed fraud checks. |
| FRAUD\_RELEASE | Event triggered when an order has been passed fraud checks and is released for processing. |
| FRAUD\_STATUS\_PENDING | Event triggered when fraud status is pending. |
## Shipment
| Event Type | Description |
| ----------------------------- | -------------------------------------------------------------------------------------------------- |
| GIFTCARD\_ACTIVATE | Event triggered when a shipment document is created for a gift card and is activated. |
| PICKUP\_COMPLETED | Event triggered when a buy online pickup in store (BOPIS) item is picked up by the customer. |
| PICKUP\_CREATED | Event triggered when a shipment document is created for a buy online pickup in store (BOPIS) item. |
| SHIPMENT\_CANCELLED | Event triggered when a shipment document is canceled for an item. |
| SHIPMENT\_CREATED | Event triggered when a shipment document is created for an item. |
| SHIPMENT\_UPDATE | Event triggered when a shipment document is updated for an item. |
| TRANSFER\_SHIPMENT\_CANCELLED | Event triggered when a transfer shipment is cancelled. |
| TRANSFER\_SHIPMENT\_CREATED | Event triggered when a transfer shipment is created. |
| TRANSFER\_SHIPMENT\_DELIVERED | Event triggered when a transfer shipment is delivered. |
| TRANSFER\_SHIPMENT\_DRAFT | Event triggered when a transfer shipment is in draft state. |
| TRANSFER\_SHIPMENT\_ERROR | Event triggered when a transfer shipment has errors. |
| TRANSFER\_SHIPMENT\_PACKED | Event triggered when a transfer shipment is packed. |
| TRANSFER\_SHIPMENT\_RECEIVED | Event triggered when a transfer shipment is received at the destination store. |
| TRANSFER\_SHIPMENT\_STOCKED | Event triggered when a transfer shipment is stocked. |
## Alerts
| Event Type | Description |
| ---------------------------------- | ---------------------------------------------------------- |
| HIGH\_ALERT\_NOTIFICATION\_EMAIL | Event triggered when a high severity alert is triggered. |
| LOW\_ALERT\_NOTIFICATION\_EMAIL | Event triggered when a low severity alert is triggered. |
| MEDIUM\_ALERT\_NOTIFICATION\_EMAIL | Event triggered when a medium severity alert is triggered. |
## Inventory
| Event Type | Description |
| :------------------------------ | :----------------------------------------------------------- |
| INVENTORY\_BULK | Event triggered when an inventory file is imported. |
| INVENTORY\_CREATE | Event triggered when an inventory is created. |
| INVENTORY\_NETWORK\_AGGREGATION | Event triggered when a network aggregation job is completed. |
| INVENTORY\_NETWORK\_UPDATED | Event triggered when the inventory network is updated. |
| INVENTORY\_UPDATE | Event triggered when a inventory is updated. |
## Invoice
| Event Type | Description |
| ---------------- | -------------------------------------------------------------- |
| INVOICE\_POSTING | Event triggered when an Invoice is created for a shipped item. |
## Order
| Event Type | Description |
| ------------------------------------- | -------------------------------------------------------------------- |
| ORDER\_ALLOCATED | Event triggered when an order is allocated. |
| ORDER\_CANCELLATION\_COUPON\_REVERSAL | Event triggered when an order is cancelled and a coupon is reversed. |
| ORDER\_CANCELLED | Event triggered when an order is cancelled. |
| ORDER\_CONFIRMED | Event triggered when order enrichment is successful. |
| ORDER\_CREATE | Event triggered when an order is created. |
| ORDER\_DELIVERED | Event triggered when an order is delivered. |
| ORDER\_ERROR | Event triggered when an order update has an error. |
| ORDER\_HOLD | Event triggered when an order is on hold. |
| ORDER\_HOLD\_CSR | Event triggered when an order has invalid data. |
| ORDER\_HOLD\_FRAUD | Event triggered when an order's fraud verification fails. |
| ORDER\_HOLD\_REVALIDATION | Event triggered when an order is on hold and revalidated. |
| ORDER\_PARTIALLY\_CANCELLED | Event triggered when an order is partially cancelled. |
| ORDER\_PARTIALLY\_DELIVERED | Event triggered when an order is partially delivered. |
| ORDER\_PARTIALLY\_SHIPPED | Event triggered when an order is partially shipped. |
| ORDER\_SHIPPED | Event triggered when an order is shipped. |
## Package
| Event Type | Description |
| ---------------------------- | ------------------------------------------------------ |
| ORDER\_CANCELLED\_IN\_PTS | Event triggered when an order is cancelled in Orders. |
| ORDER\_CREATE\_IN\_PTS | Event triggered when an order is created in Orders. |
| SHIPMENT\_CANCELLED\_IN\_PTS | Event triggered when a shipment is canceled in Orders. |
| SHIPMENT\_CREATE\_IN\_PTS | Event triggered when a shipment is created in Orders. |
## Returns
| Event Type | Description |
| -------------------------- | -------------------------------------------------------------------------------- |
| ORDER\_PARTIALLY\_RETURNED | Event triggered when an order is partially returned with return type `RECEIVED`. |
| ORDER\_RETURNED | Event triggered when an order is fully returned with return type `RECEIVED`. |
| RETURN\_PENDING | Event triggered when an order is returned with return type `PENDING`. |
| RETURN\_PROCESSING | Event triggered when an order is returned with return type `PROCESSING`. |
| RETURN\_REJECTED | Event triggered when an order is returned with return type `REJECTED`. |
## Transfer
| Event Type | Description |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| TRANSER\_CREATED | Event triggered when a transfer is created. |
| TRANSER\_HOLD\_REVALIDATION | Event triggered when there is a server error from Product Catalog. |
| TRANSFER\_DELIVERED | Event triggered when a transfer is delivered. |
| TRANSFER\_DRAFT | Event triggered when a transfer is in draft state. |
| TRANSFER\_ERROR | Event triggered when a transfer has an error. |
| TRANSFER\_HOLD\_CSR | Event triggered when a transfer is in hold CSR state, such as an invalid SKU. |
| TRANSFER\_PACKED | Event triggered when a transfer is packed; for example, when items are loaded in cartons. |
| TRANSFER\_PARITALLY\_REJECTED | Event triggered when a transfer is partially rejected. |
| TRANSFER\_PARTIALLY\_PACKED | Event triggered when a transfer is partially packed. |
| TRANSFER\_PARTIALLY\_PICKED\_UP | Event triggered when a transfer is partially picked up. |
| TRANSFER\_PARTIALLY\_STOCKCED | Event triggered when a transfer is partially stocked; for example, when it's ready to sell at the destination store. |
| TRANSFER\_PICKCED\_UP | Event triggered when a transfer is picked up. |
| TRANSFER\_RECEIVED | Event triggered when a transfer is received. |
| TRANSFER\_REJECTED | Event triggered when a transfer is rejected. |
| TRANSFER\_SHIPPED | Event triggered when a transfer is shipped. |
| TRANSFER\_STOCKED | Event triggered when a transfer is stocked and ready to sell at the destination store. |
| TRANSFER\_SUBMITTED | Event triggered when a transfer is submitted from `DRAFT` or `CREATED`. |
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# List of Product Catalog Events
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/list-of-products-events
The following tables list all the available events for Product Catalog.
If a failure to deliver an event occurs, fabric automatically retries up to 3 times to deliver the failed event.
## Attribute Events
| Event Type | Description |
| --------------------- | --------------------------------------------- |
| pim:attribute:created | Event triggered when an attribute is created. |
| pim:attribute:deleted | Event triggered when an attribute is deleted. |
| pim:attribute:updated | Event triggered when an attribute is updated. |
## Category Events
| Event Type | Description |
| ------------------------------------------- | -------------------------------------------------------------------------- |
| pim:node.category:category-attribute:add | Event triggered when a category attribute is added to a category node. |
| pim:node.category:category-attribute:delete | Event triggered when a category attribute is removed from a category node. |
| pim:node.category:created | Event triggered when a category is created. |
| pim:node.category:deleted | Event triggered when a category is deleted. |
| pim:node.category:item-attribute:add | Event triggered when an item attribute is added to a category node. |
| pim:node.category:item-attribute:delete | Event triggered when an item attribute is removed from a category node. |
| pim:node.category:updated | Event triggered when a category is updated. |
## Collection Events
| Event Type | Description |
| --------------------------- | -------------------------------------------------- |
| pim:node.collection:created | Event triggered when a collection node is created. |
| pim:node.collection:deleted | Event triggered when a collection node is deleted. |
| pim:node.collection:updated | Event triggered when a collection node is updated. |
## Jobs Events
| Event Type | Description |
| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| pim:attribute.export:created | Event triggered when a user requests attribute export. |
| pim:bundle.export:created | Event triggered when a bundle export is initiated. |
| pim:product.export:created | Event triggered when a product export is initiated. |
| pim:jobs.collectionUpdate.productEvaluation:completed | Event triggered when a collection update job is completed successfully. This job evaluates all collection rules and indexes products against it. |
| pim:jobs.productUpdate.collectionEvaluation:completed | Event triggered when a product update job is completed successfully. When a product is updated, this job evaluates all collections to identify which collection the product should be part of. |
| pim:jobs.productUpdate.collectionEvaluation:failed | Event triggered when a product update job fails. When a product is updated, this job evaluates all collections to identify which collection the product should be part of. |
## Product Events
| Event Type | Description |
| --------------------------- | ------------------------------------------------------------------- |
| pim:product.bundle:created | Event triggered when a product bundle is created. |
| pim:product.bundle:deleted | Event triggered when a product bundle is deleted. |
| pim:product.bundle:updated | Event triggered when a product bundle is updated. |
| pim:product.item:created | Event triggered when an item is created. |
| pim:product.item:deleted | Event triggered when an item is deleted. |
| pim:product.item:updated | Event triggered when an item is updated. |
| pim:product.variant:created | Event triggered when a product variant is created for a live item. |
| pim:product.variant:deleted | Event triggered when a product variant is deleted from a live item. |
| pim:product.variant:updated | Event triggered when a product variant is updated for a live item. |
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# Managing Events and Logs
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/managing-events-and-logs
## Overview
The logs provide you with a comprehensive overview of events with the details, such as event date, type, subscriptions name, log type, status, and endpoint.
The detailed view of an event log provides more information, such as the status code of the event, its name, the name of the subscription it's linked to, the endpoint URL, the number of attempts made, the version of the event and when it got triggered, the time it was delivered, the details of the request, and the response details. You can use these information to track and troubleshoot issues during event operations over the last seven days.
You can search for a specific event and filter events based on date, event type, status code, or subscription name. You can also sort the logs by clicking a specific field in the top menu or selecting a particular option within that field.
## Prerequisites
Ensure that you have **Developer Admin** or **Developer Viewer** privileges. For more information, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control) topic.
## Viewing Logs
1. In the left menu, click **Settings** > **Developer Tools**.
2. Click **Webhooks**.\
The **Webhooks** page is displayed.
3. Click the **All logs** tab.\
The logs of all event are displayed.
4. To view the log details of an event, hover over the row of the event.
5. On the far right of the row, click the **Event Details** icon.\
The **Event information** page displays the following information:
* **Status Code**
* \*\*Name of the event \*\*
* **Subscription name**
* **URL endpoint**
* **Attempts**
* **Event version**
* **Triggered at**
* **Delivered at**
* **Request Details**
* **Response details**\
If you want to resend the event, you can click the **Resend** button.
6. To close the detailed view, click **Close**.
## Replaying Events
You can use the replay feature to resend all events for a specific subscription within a designated date range to diagnose any event failures during that period. For example, if you want to investigate the delivery failure of one or more events from a specific period, you can replay all events recorded during that time frame. Note that, you can only replay events recorded during the last seven days.
### Procedure
1. In the left menu, click **Settings** > **Developer Tools**.
2. Click **Webhooks**.\
The **Webhooks** page is displayed.
3. Click the **All logs** tab.\
The logs of all event are displayed.
4. To replay the events of a subscription, click the **Replay events** button at the top right.\
The **Replay events** tab is displayed.
5. In the **Subscription name** field, select the name of the subscription.
6. In the **Select dates** field, select the date range.
7. In the **Select time** field, select the time range.
8. Click **Replay events**.\
Note that this action replays all of the events for the selected subscription.
9. Refresh the page and check the log to see the status.
## Resending Events
If a failure to deliver an event occurs, fabric automatically retries up to 3 times to deliver the failed event.
1. In the left menu, click **Settings** > **Developer Tools**.
2. Click **Webhooks**.\
The **Webhooks** page is displayed.
3. Click the **All logs** tab.\
The logs of all event are displayed.
4. Do one of the following:
* To resend an event, select the check box next to the name of the event, and then click **Resend events**.
* To resend more than one event, select the check box next to the name of the events, and then click **Resend Events**.
* To resend all events, select the checkbox in the top menu, next to the **Status code** field, and then click **Resend events**.\
A message to confirm the action is prompted. Note that resending events can impact your data and downstream processes.
5. Click **Yes, Resend Event**.\
The selected events are queued to resend and a message to refresh the page to view the status is displayed.
6. Click **Refresh**.\
The all logs page is refreshed and the status is updated.
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# Webhooks
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/overview
## Overview
Webhooks are real-time notifications that enable communication between different software systems and trigger automated processes. For example, for your online store, you can set up a webhook to alert you whenever a new product is added. Using fabric Copilot's webhook functionality, you can create event subscriptions to monitor operations between fabric apps and external systems, such as a Customer Relationship Management (CRM) or Content Management Systems (CMS).
These real-time notifications can be configured for specific events, such as product updates, order creation, or abandoned carts, and directed to a designated HTTP endpoint.
Webhooks aren't enabled by default. To enable webhooks, contact [fabric support](https://support.fabric.inc/hc/en-us/requests/new).
Most webhooks actions require **Developer Admin** privileges. Users with **Developer Viewer** privileges can view webhooks. For more information, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control) topic.
## Related Topics
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Testing a Webhook](/v3/platform/settings/webhooks/testing-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# Testing a Webhook
Source: https://developer.fabric.inc/v3/platform/settings/webhooks/testing-a-webhook
## Overview
We recommend testing your webhook after creating them to ensure the proper functioning and integration of your subscriptions. This topic provides instruction to test the webhook URL with example data.
## Prerequisites
Before creating a webhook, ensure that you have **Developer Admin** privileges to test webhooks. For more information on privileges, see the [Role-Based Access Control](/v3/platform/settings/rbac/role-based-access-control.mdx) topic.
## Procedure
1. In the left menu, click **Settings > Developer Tools**.
2. Click **Webhooks**.\
The **Webhooks** page is displayed.
3. Click the name of the webhook.\
The webhook details page is displayed.
4. Click **Test webhook**.\
The **Test** page is displayed.
5. In the **Event to test** dropdown, select an event to test.\
If no dropdown is available, skip to the next step.
6. Click **Run Test**.
Depending on the webhook configuration, one of the following response with the result of the test is returned, indicating whether the test was successful or not:
* **200 Ok**
* **400 Bad request**
* **401 Unauthorized**
* **404 Subscription/Event type not found**
* **500 Internal Server Error**
The following provides a list of possible reasons webhooks can fail.
| Troubleshooting step | Verification |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Reception confirmation | Confirm whether the webhook is successfully received at your endpoint, for example, by inspecting the request object. |
| Source validation | Confirm that the incoming request originates from the expected source. |
| Payload content check | Make sure that the webhook contains the expected alerts. |
| Data type validation | Validate the data types of the received information. In some instances, data may be formatted differently from what your server expects. For example, a boolean value sent as a string could lead to unintended issues. If necessary, transform the data to match your server's expectations. |
| Event verification | Ensure that the webhook corresponds to the anticipated event and the endpoint isn't associated with the wrong event type. |
| Response evaluation | Assess how your API responds to the webhook. Make sure that the webhook is processed correctly, and that the appropriate status codes are returned as required by your application. |
| Authentication validation | Webhooks might fail if you don't fulfill their authentication criteria. Ensure that you adhere to the authentication protocols as set up in the **Authorization** field of the **Add Webhook** page in Copilot. |
## Related Topics
* [Webhooks Overview](/v3/platform/settings/webhooks/overview)
* [Adding a Webhook](/v3/platform/settings/webhooks/adding-a-webhook)
* [Managing Events and Logs](/v3/platform/settings/webhooks/managing-events-and-logs)
* [Editing a Webhook](/v3/platform/settings/webhooks/editing-a-webhook)
* [Deleting a Webhook](/v3/platform/settings/webhooks/deleting-a-webhook)
* [List of Product Catalog Events](/v3/platform/settings/webhooks/list-of-products-events)
* [List of Offers Events](/v3/platform/settings/webhooks/list-of-offers-events)
* [List of Orders Events](/v3/platform/settings/webhooks/list-of-orders-events)
* [List of Inventory Events](/v3/platform/settings/webhooks/list-of-inventory-events)
# Feedback and Contact
Source: https://developer.fabric.inc/v3/release-notes/feedback-contact
We value your feedback and suggestions. For any feedback, questions, or support, reach out to our [support team](https://support.fabric.inc/hc/en-us/requests/new).
# Commerce Platform
Source: https://developer.fabric.inc/v3/release-notes/july2024/commerce-platform
## New Features
### Operational alerts subscription management (Admin Feature)
Copilot Admins can subscribe or unsubscribe users to an alert, view the subscribers to an alert, and manage their alert subscription status.
[fabric Alerts guide](/v3/guides/home/alerts/alerts-overview)
### User Management: Bulk add roles to users (Admin Feature)
Copilot Admins can add new roles to users in bulk. In previous releases, the Copilot Admin could only replace a users roles.
[fabric User Management guide](/v3/guides/settings/user-management/user-management)
# Dropship
Source: https://developer.fabric.inc/v3/release-notes/july2024/dropship
## New Features
### Enhanced compatibility check error handling
* **Ruleset Error Report:** Each proposal's compatibility check returns an error report file. This report includes all SKUs and an itemized list of errors corresponding to them.
* **Ruleset Failure Report:** A separate file is generated for items that encountered errors during the compatibility check. You can address these specific items and re-import them without re-processing the entire proposal.
### Improved import error handling
* **A List of SKUs:** For every import with one or more errors, an error report file is generated. This report includes all SKUs and provides an itemized list of errors corresponding to each SKU.
* **A Template with Only Errored Items:** A separate file is generated that includes only the items with one or more errors. This allows users to fix these specific items and re-import them without needing to handle the entire original file again.
### fabric Integration
If you are a merchant using Dropship with other fabric products such as Catalog or Orders, you can set up integration workflow and configurations on the UI. This enables you to create and update multiple templates for publishing products to fabric Catalog.
* [Dropship fabric integration guide](/v3/guides/dropship-retailers/fabric-integration)
### Template Cloning
Templates can now be cloned with a single-click action on the template details screen, making it easier to duplicate existing templates.
* [Dropship templates guide](/v3/guides/dropship-retailers/settings/templates)
### Shopify Integration
* **Fraud Order Protection:** Retailers can now specify whether they want to import orders flagged as High or Medium risk by Shopify.
* **Variant-Level Metafields:** Retailers can now publish Metafields and their values at the variant level. Previously, only products could include Metafields.
* **Additional Metafield Types:** Added support for additional Metafield types such as `multi_line_text_field`, `boolean`, `URL`, and `date_time`.
* **Customizable Order Notes:** Order notes can now be customized to include the “Fulfill By” date.
* **Data Override on Publish:** Any publish to Shopify actions by retailers now override the data for products and variants in Shopify with the data in Dropship. Empty attributes aren't sent.
* [Shopify integration guide](/v3/guides/dropship-retailers/shopify-integration)
### Address fields
All countries and their provinces are now available to be added in all address fields across the platform.
### Order Bulk Utility Tool
The new bulk order utility tool allows suppliers to manage orders using a CSV import. You can cancel orders for the following use cases:
* Cancel entire orders by PO Number
* Cancel specific order lines by SKU
* Cancel all order lines of specific SKU
### Retailer Assets
Retailers can now make their playbook and other assets available to all supplier partners through the portal. They need to share the assets with the fabric team, which can upload them on their account and suppliers will be able to access them on the connection details page.
* [Retailer information guide](/v3/guides/dropship-suppliers/retailer-information)
# Fulfillment
Source: https://developer.fabric.inc/v3/release-notes/july2024/fulfillment
## New Features
### Order fulfillment logic rulesets
The order fulfillment feature enables you to create fulfillment rule sets. Fulfillment rule sets are used to direct orders to different fulfillment locations based on characteristics such as geo-location, warehouse location, item price, order attribute type, and more. For more information, see the [Order Fulfillment Logic Guide](/v3/guides/orders/order-fulfillment-logic/order-fulfillment-logic).
### Location capacity limits
* You can now set location specific allocation capacity limits.
* Added support for bulk uploads for special location allocation capacity planning to adjust capacity limits based on upcoming events or seasonal fluctuations. For more information, see the [Location Setup Guide](/v3/guides/inventory/locations#location-setup).
### Location Import & Export
* You can now bulk import a list of multiple locations using the import CSV file feature.
* You can now export location data, scheduled outages, and temporary capacity plans.
For more information, see the [Importing Locations Guide](/v3/guides/inventory/locations#importing-locations).
# Offers
Source: https://developer.fabric.inc/v3/release-notes/july2024/offers
# New Features
## Independent Price Bulk Upload
You can now import new products to Product Catalog and prices to Offers in parallel. If a new product is imported to Product Catalog at the same time as its associated pricing file is imported to Offers, fabric automatically queues the prices that don't have an associated SKU yet created in Product Catalog and retries the SKU lookup until the product is successfully created in Product Catalog. No more file sequencing between Product Catalog and Offers.
## Calculated Price Export
Ability to export the calculated price for 1 or more products, including eligible sale and promotion discounts. The exported file will include:
* SKU
* Price list ID
* Cost
* Sale price
* Base price
* Price Start Date
* Price End Date
* Calculated price
* Promotion IDs
* Promotion message: PDP
* Promotion message: PLP
Products can be queried by:
* `calculationTime`
**Price Filters:**
* **Price list:** Users should be able to specify the price list for which the price belongs and export the calculated price accordingly.
* **PriceType:** Users should be able to specify the `priceType` with base or sale and only export the calculated price for those accordingly.
[Calculated Price Export](https://developer.fabric.inc/v3/api-reference/offers/exports/initiate-export-request)
# Orders
Source: https://developer.fabric.inc/v3/release-notes/july2024/orders
## New Features
### Exchanges
You can now exchange items for the same item in a different size or color, exchange one of two items for a different item, and exchange an item for a different item. The difference in cost is automatically calculated. For more information, see the [Exchange Orders Guide](/v3/guides/orders/order-management/exchange-orders).
### Order Appeasements
By creating an appeasement refund, you can issue discretionary refunds. The appeasement option for an order is enabled only after the payment process is initiated for the order. Orders with the Fraud status can't be appeased. For more information, see the [Order Management Appeasements Guide](/v3/guides/orders/order-management/appeasements).
### Order Details
* Added return metrics to the order total summary to represent the total refund amount.
* Updated the progress steps for item groups and split shipments to display shipping groups separately.
* Added the ability to preview an item's individual attributes.
For more information, see the [Viewing Details of an Order - Basic Details](/v3/guides/orders/order-management/viewing-details-of-an-order/basic-details) section.
### Order Details Shipments Tab
Added an additional order details shipment tab to display item details such as shipped quantities.
For more information, see the [Viewing Details of an Order - Shipment Details](/v3/guides/orders/order-management/viewing-details-of-an-order/shipment-details) section.
### Order Details Activity Log
Added an additional order details activity log tab to display the history of changes for an order.
For more information, see the [Viewing Details of an Order - Viewing Activity Log](/v3/guides/orders/order-management/viewing-details-of-an-order/viewing-activity-log) section.
## Copilot Enhancements
### Policies
Added the ability to mark return, exchange, and cancellation policies as default. Additionally, added the ability to apply a policy to all your configured channels.
For more information, see the [Policies Guide](/v3/guides/orders/settings/policies).
### Error Handling
Added additional error handling banners. When an order has errors such as missing customer details, an error banner appears. Clicking the banner opens a window with the error details and how to fix the errors.
### New Order Searching & Filtering
The Manage Orders page displays a list that includes every order. This list can be filtered by Order Status, Order Date, Order Total, and Channel so that the list only displays orders that match the filter parameters. Additional search and filter parameters down to the attribute level have been added.
For more information, see the [Filtering Orders Guide](/v3/guides/orders/order-management/filtering-orders).
### Added Additional Order Line Statuses
Two new order line statuses were added: `PENDING_ALLOCATION` and `PENDING_REALLOCATION`.
### Inventory Activity Log
The Inventory Activity Log can now be sorted and filtered.
# Product Catalog
Source: https://developer.fabric.inc/v3/release-notes/july2024/product-catalog
## New Features
### Cancellation of Product Import Jobs
Cancel product import jobs that are scheduled or in progress. For more information, see the following documentation pages:
* [Managing Background Jobs](https://developer.fabric.inc/v3/guides/product-catalog/background-jobs/managing-background-jobs)
* [Cancel Background Jobs](https://developer.fabric.inc/v3/api-reference/product-catalog/jobs/cancel-background-jobs)
## Copilot Enhancement
### Redesigned Collections Management
We’ve done a complete overhaul of the collection management experience and it's now much easier and faster to manage your collections. For more information, see the [Collections Overview](https://developer.fabric.inc/v3/guides/product-catalog/collections/collections) section.
### Collection Node Sorting
Ability to sort collection nodes by name in Copilot. For more information, see the [Sorting Collections](https://developer.fabric.inc/v3/guides/product-catalog/collections/managing-collections#sorting-collections) section.
### Product Search Using Comma Separated Values
Ability to search for multiple products in the Product Item List Page search bar using a comma as the value separator. or more information, see the [Searching, Filtering, Sorting Items](https://developer.fabric.inc/v3/guides/product-catalog/list/items/searching-filtering-sorting-items) section.
# API Changes
## New Endpoints
* **Bulk Product Search Using “Comma” Separator**: Search for multiple products using a comma separator. For more information, see the following sections:
* [Search Products by ID](https://developer.fabric.inc/v3/api-reference/product-catalog/product-operations-by-id/get-product-by-id)
* [Search Products by SKU](https://developer.fabric.inc/v3/api-reference/product-catalog/product-operations-by-sku/get-product-by-sku)
# Release Summary
Source: https://developer.fabric.inc/v3/release-notes/july2024/release-summary
**Release Date**: July 2024
We are thrilled to introduce the latest features and enhancements designed to elevate your order management, data handling, and collection management experiences. This release brings powerful new tools and improvements aimed at optimizing your workflows, enhancing operational efficiency, and providing a more intuitive user experience:
* Order Orchestration with real time inventory and location management
* Improvements for data imports and exports
* Redesigned Collections experience with enhanced features
# Dropship
Source: https://developer.fabric.inc/v3/release-notes/oct2024/dropship
## Feature Enhancements
### Inventory Management
Negative inventory values are now skipped and not sent to external systems, including fabric OMS. When inventory is negative a zero value is sent.
### Invoice Improvements
* Invoice numbers now support up to 128 characters.
* The Invoice Export spreadsheet includes SKU information for each invoice line.
### File Transfer Protocol System Expansion (Suppliers only)\*\*
The File Transfer Protocol (FTP) system for Shipments and Inventory now supports Invoices.
### Packing Slips
Packing Slips now use attribute values from the retailer’s scope rather than the supplier’s original values.
### Compliance Scorecard
Retailers can now export the monthly compliance reports for their suppliers.
### Order Line Consolidation Options (Supplier & Retailer on EDI)
* Suppliers can now specify and receive separate order lines for the same item if a retailer opts to skip order line consolidation.
* **EDI Mapping:**
* **EDI 850:** SLN (Sub-line number) is used to store this information.
* **EDI 856:** LIN10 (Line number 10) is used to store this information.
### ShipStation Integration (Supplier only)
A link to the packing slip is now included in the notes sent to ShipStation.
### Loop Integration
Carrier information is now being fetched along with the tracking number for returns.
### fabric Products Integration
* Retailers can now create and manage templates for fabric Products directly from the UI.
* Any items published from Dropship now have attributes `“Dropship?” = TRUE` and `Vendor ID` populated by default.
### fabric Orders Integrations
Discounted Shipping cost is now being captured and passed on to suppliers if a retailer is using discounts for shipping costs in their Order Management.
## Shopify integration enhancements
### Variant Management (Retailer only)
Retailers can now edit or remove any duplicate variants in the system.
### Order Syncronization\*\*
fabric now runs a background job that audits Orders and reruns them every 24 hours to sync any missed orders.
### API Migration to GraphQL
Ahead of Shopify's deprecation of REST APIs for Products (Feb 2025), fabric product endpoints have migrated to use GraphQL. This migration supports:
* Product and collection synchronization
* Inventory syncing
* Fulfillment workflows
* Syncronization of Shopify Variant IDs
## Copilot Enhancements
### Proposal Details Page
* **Products Tab:**
* **New Sidebar View:** Displays product attributes, variants, comments, and issues.
* **Product Actions:** New "Approve/Remove" options added for each product.
* **Commenting on Products:** You can now add comments on individual products, with support for replies and reactions.
* **Issues Management:** Products can now be directly added to issues from the sidebar.
* **Items & Pricing Tab:**
* **Sidebar for Variant Attributes:** The sidebar replaces the previous window for displaying variant attributes.
* **Action Removal:** Actions have been removed; variants can no longer be added to issues or approved/removed individually or in bulk.
* **Issues:**
* **Sidebar for Products and Notes:** The sidebar now replaces the window for displaying products and notes associated with issues.
* **Comments Section:**
* **Proposal-Level Comments:** You can add comments at the proposal level, including reply and tagging capabilities.
* **Reactions:** Reactions have been added to enhance engagement on comments.
* [Dropship Proposals section](/v3/guides/dropship-retailers/proposals)
### Integrations
* Integrations for Shopify and fabric platforms are now available to be setup from the settings UI.
* [Shopify integration](/v3/guides/dropship-retailers/shopify-integration)
* [fabric integration](/v3/guides/dropship-retailers/fabric-integration)
### Templates
* Support added for internal and external platform templates for Shopify and fabric Products.
* [Templates section](/v3/guides/dropship-retailers/settings/templates)
# Fulfillment
Source: https://developer.fabric.inc/v3/release-notes/oct2024/fulfillment
## Feature Enhancements
* **Refresh Rate**: Increased the refresh cache default configuration from 3 hours to 24 hours. This helps to reduce failure during the allocation processing due to unready allocation.
* **Pending and Reallocation handling**: Allocation service now considers pending allocations when updating the allocation lines status. Additionally, reallocation now supersedes the cancel SLA process.
# Offers
Source: https://developer.fabric.inc/v3/release-notes/oct2024/offers
## New Features
### Redesigned promotions management
Promotion management is easier than ever with the redesigned fabric promotions manager. Create a promotion in 4 steps with a simple guided screen. For more information, see the [Promotions Overview](/v3/guides/offers/Promotions/overview) section.
### Promotion Stacking for Exclusive and Type Exclusive
You can now select stacking priority for all types of promotions, giving marketing managers more control over margin and how promotions interact with one another. For more infomation, see the [Promotion Stacking](/v3/guides/offers/Promotions/overview#stacking-and-additional-settings) section.
# Orders
Source: https://developer.fabric.inc/v3/release-notes/oct2024/orders
## Feature Enhancements
### Invoices and Returns
Order service now registers the original invoice shipment number for returned items.
# Product Catalog
Source: https://developer.fabric.inc/v3/release-notes/oct2024/product-catalog
## New Features
### Update and publish all product action
Operators now have the ability to select all products in their catalog and either update common attribute values or publish/unpublish them.There was previously a limit of 25 products for bulk updates in Copilot.
For more information, see the [Bulk Publishing](/v3/guides/product-catalog/list/items/bulk-operations-items#publishing) section.
## Copilot Enhancement
### OR condition on Collections
Users can now set more complex rules for merchandising collections using up to 5 OR conditions between attributes rules.
For more information, see the [Collections Rules and Conditions](/v3/guides/product-catalog/collections/collections#rules-and-conditions) section.
# Release Summary
Source: https://developer.fabric.inc/v3/release-notes/oct2024/release-summary
**Release Date**: October 2024
We are excited to share the latest updates designed to streamline inventory management, supplier collaboration, and product data workflows. This release introduces key enhancements to improve operational efficiency and deliver a seamless user experience:
* Unified inventory management with enhanced data synchronization across systems
* Supplier onboarding improvements with new collaboration features
* Redesigned promotions management with stackable promotions for added flexibility
* Expanded bulk operations for product catalogs to update and publish at scale
# November 2023
Source: https://developer.fabric.inc/v3/release-notes/sample
## November 3, 2023
**Release Stage: Public Preview**
Today, we are releasing fabric Store Fulfillment to Public Preview to help retailers manage their store fulfillment operations more efficiently. With the iOS and Web Apps, retailers can offer convenient and flexible fulfillment options with pick-up in store and ship from store, increase revenue & sell-through by selling inventory from stores, and control order splitting and routing rules between stores and warehouses with fabric Order Fulfillment Logic.
### New Features
| Interface | Feature | Description |
| --------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Login | SSO Integration | The ability for a merchant to log into the app with their preferred SSO provider |
| Home | User Profile | The ability for the user to see their name, store name or location, and associate ID |
| Home | L1 Navigation | The ability for the user to see and select different logistics operation modes: Fulfillments, Pickups |
| Fulfillments | Fulfillments List Page | The ability for the user to see orders queues sorted and grouped by Service Level. |
| Pick | Pickup Shipping Method | Ability to manage Pick Up (Click and Collect or BOPIS). |
| Pick | Item Tiles | See details of each SKU during the picking process. |
| Pick | Device Camera Scan (Pick Scan) | Pick items across the store or shelves via camera scan of the barcode or any integrated hardware scanner |
| Pick | Manual Pick with SKU entry | Type barcode manually in case a barcode scan fails |
| Pick | Reject with Reason Codes (Scratch Items) | Enter different reason codes if the item isn't available. |
| Pack | Select Packaging | Display a drop-down option to select a box from a list of available boxes. |
| Pack | Device Camera Scan (Pack Scan) | Perform a secondary barcode scan at the packing station, as a validation mechanism ensuring that the right items are put in the box. |
| Pack | Gifting and Value Added Services | Ability to perform Value Added Service actions (such as Gift Wrapping or Personalized Messages). |
| Pick | Packing Slip | Ability on the app the print packing slips. |
| Ship | Shipping Label Generation and Printing | Auto-select a shipping label per order based on the Service Level of the order and supported carriers for the user. Allows for re-printing of labels. |
| Ship | Pickup label printing | Print another label type for BOPIS/Curbside orders based on the order type with a QR code (PX labels) Allows for re-printing of labels Also, prints packing slip per order at the same time (to be added to the box) |
| Order Lookup (Search) | Packing Slip Scan | Scan a barcode on packing slips to pull order details. |
| Order Lookup (Search) | Customer Order Search | Ability to search by name and order number. |
| Handoffs | Pickup signature | Confirm that the proof of identity was verified |
# Completing Store Fulfillments
Source: https://developer.fabric.inc/v3/store-fulfillment/completing-store-fulfillments
The store fulfillment feature is used to streamline the order fulfillment process within a retail store. fabric integrates with your online website and directs fulfillment requests to your physical store locations based on characteristics, such as geolocation, store inventory levels, and more. Unlike store transfers and adjustments, store associates can't create a store fulfillment.
Currently, there are no role restrictions for who can complete fulfillments.
## Completing a Fulfillment
1. You can [view fulfillments](/v3/guides/store-fulfillment/viewing-fulfillments) by clicking **Fulfillments** in the left menu.
Only your selected store's fulfillments are displayed.
2. Click **Pending Orders** from the left menu.
The [Pending Orders](/v3/guides/store-fulfillment/viewing-fulfillments#pending-fulfillments) page is displayed. Store associates should prioritize completing fulfillments in the following order: **Next Day**, **Expedited**, **Pickup**, **Standard**.
3. Click any order.
The fulfillment order page is displayed. This page provides the following action options for completing the transfer:
* [Pick](#pick)
* [Pack](#pack)
* [Ship](#ship)
### Pick
The pick step is used to confirm the contents of the fulfillment. You can confirm an item by scanning its barcode or through manual entry.
1. Scan the barcode of the first item.
The item is added to a list. You can scan multiple items.
2. (Optional) If the item doesn't scan, do the following to manually add a SKU:
1. Click the ellipsis button (**⋮**).
2. In the dropdown menu, select **Manually add items**.
The manual input window is displayed.
3. Manually enter the barcode.
4. Click **Done**.
3. Confirm that the scanned item is correct.
Some items can have an incorrect barcode or variations. We recommend that you double-check to make sure the correct item is displayed to avoid any such errors.
4. In the **Quantity** field, enter the quantity.
By default, quantity is set to one when you scan an item.
5. Click **Pack**.
### Pack
The packing stage is where you confirm the size of the parcel and physically add items to the parcel. You will see the items that were picked and their quantity above the *Package* section.
Each company has a default bag or box size for packing. Confirm the bag or box is the correct size.
A company can optionally set a weight limit for a package to prevent it from being damaged during transit.
When the shipping label is printed, the shipping carrier checks the size of each carton or parcel to allocate space in the shipping truck.
You can change the size of a parcel anytime during packing if you need more space.
1. (Optional) If you want to change the size of the parcel, click the ellipsis (**⋮**) and select the **Change package type/size** option.
The **Parcel Size** window appears.
1. Select a new size for the parcel.
2. Click **Select**.
2. Click the ellipsis (**⋮**) and select the **Scan into parcel** option.
3. Click **Click on scan to add items**.
4. Scan the barcode of each item.
You must match the number of items scanned to the quantity that's provided in the *Pick* step.
5. (Optional) If the item doesn't scan, do the following to manually add a SKU:
1. Click the ellipsis button (**⋮**).
2. In the dropdown that appears, select **Manually add items**.
The manual input window is displayed.
3. To add items, click the **+** icon.
4. Click **Done**.
6. Click **Done**.
### Ship
The ship option is enabled only after completing the packaging step.
1. Click **Select Shipping Carrier**.
The **Pick shipping method** window is displayed.
Two different types of shipping methods are available:
* *Selecting a carrier*: Select a preferred carrier method, such as FedEx or UPS, as the shipping method.
* **BOPIS**: The customer will pick up the order at the store.
1. Click **Select shipping method**.
The shipping method that you selected is displayed in the **Shipping Carrier** section.
2. Click **Print Label**.
3. Click the print icon next to both **Print shipping labels** and **Print packing slips**.
4. Put the printed packing slips in the parcel.
5. Tape and seal the box.
6. Attach the printed shipping labels to the parcel.
7. Click **Done**.
The transfers status is updated to `SHIPPED` or `PICKED UP`. With this status update, your store inventory levels are adjusted. Once the order is delivered or picked up by the customer, the status changes to `COMPELTED`.
# Transferring Store Inventory
Source: https://developer.fabric.inc/v3/store-fulfillment/creating-transfers
With fabric's storefront app, you can transfer and balance store inventory levels and send items to another store or to a Distribution center (DC). Once a shipping label is created and printed for a store transfer, your store inventory levels are adjusted.
You can view transfers by clicking **Transfers** in the left menu. Only your selected store's transfers are displayed.
Currently, there are no role restrictions for managing pick, pack, and shipping an item to transfer inventory.
## Creating an Inventory Transfer
1. In the left menu, click **Transfers**.
2. To create a new transfer, click **Create New Transfer**.
The **Create New Transfer** window is displayed. The sending store location is automatically set to your store or DC’s location.
3. In the **Receiving Store** field, select a store.
A green checkmark appears to confirm the sending and receiving stores are selected.
4. Click **Create Transfer**.
The transfer page is displayed with a message confirming the transfer # was successfully created.
The transfer page displays the **Sending Store**, **Receiving Location**, [transfer type](/v3/guides/store-fulfillment/viewing-transfers#transfers-table), and provides action options for managing the transfer:
* [Pick](#pick)
* [Pack](#pack)
* [Ship](#ship)
### Pick
The pick step is used to determine the contents of the transfer. You can add items by scanning the items barcode or manually entering the barcode.
1. Scan the barcode of the first item.
The item is added to a list. You can scan multiple items.
2. (Optional) If the item doesn't scan, do the following to manually add a SKU:
1. Click the ellipsis button (**⋮**).
2. In the dropdown menu, select **Manually add items**.
The manual input window is displayed.
3. Click **Done**.
3. Confirm that the scanned item is correct.
Some items can have an incorrect barcode or variations and result in inconsistencies at the receiving location. We recommend you to double check that the correct item is displayed to avoid any such errors.
4. In the **Quantity** field, enter the quantity.
By default, quantity is set to one when you scan an item.
5. Click **Pack**.
### Pack
The packing stage is where you confirm the size of the parcel and physically add items to the parcel. You will see the items that were picked and their quantity above the *Package* section.
Each company has a default bag or box size for packing. Confirm the bag or box is the correct size.
Each package type has a set weight limit to prevent it from being damaged during the transit.
When the shipping label is printed, the shipping carrier checks the size of each carton or parcel to allocate space in the shipping truck.
You can change the size of a parcel if you need more space anytime during packing.
1. (Optional) If you want to change the size of the parcel, click the ellipsis (**⋮**) and select the **Change package type/size** option.
The **Parcel Size** window appears.
1. Select a new size for the parcel.
2. Click **Select**.
2. Click the ellipsis (**⋮**) and select the **Scan into parcel** option.
3. Scan the barcodes for each item.
You must match the number of items scanned to the quantity that's provided in the *Pick* step.
4. (Optional) If the item doesn't scan, do the following to manually add a SKU:
1. Click the ellipsis button (**⋮**).
2. In the dropdown that appears, select **Manually add items**.
The manual input window is displayed.
3. To add items, click the **+** icon.
4. Click **Done**.
5. Click **Done**.
### Ship
The Ship option is enabled only after completing the packaging step.
1. Click **Select Shipping Carrier**.
The **Pick shipping method** window is displayed.
Two different types of shipping methods are available:
* *Selecting a carrier*: Select a preferred carrier method, such as FedEx or UPS, as the shipping method.
* **Hand Carry Transfer**: An employee or manager will be responsible for delivering the transfer. Use this option to save money on shipping costs.
1. Click **Select shipping method**.
The shipping method that you selected is displayed in the **Shipping Carrier** section.
2. Click **Print Label**.
3. Click the print icon next to both **Print shipping labels** and **Print packing slips**.
4. Put the printed packing slips in the parcel.
5. Tape and seal the box.
6. Attach the printed shipping labels to the parcel.
7. Click **Done**.
The transfers status is updated to `TRANSFER SHIPPED`. With this status update, your store inventory levels are adjusted.
### Reprinting packing labels and slips
1. To reprint a damaged label or missing slip, from the **Transfers** menu, select the transfer.
A preview menu is opened for the transfer.
2. Click the ellipsis (**⋮**) and select one of the following options as required:
* **Print Packing slip**
* **Reprint Shipping labels**
# Editing Store Fulfillments
Source: https://developer.fabric.inc/v3/store-fulfillment/editing-store-fulfillments
The store fulfillment feature is used to streamline the order fulfillment process within a retail store. fabric integrates with your online website and directs fulfillment requests to your physical store locations based on characteristics, such as geolocation, store inventory levels, and more.
You can choose from five options based on the current status of the pending fulfillment:
* [Print Packing Slip](#printing-a-new-store-fulfillment-packing-slip): Use this option to print a new packing slip for the store fulfillment.
* [Add Package](#adding-an-additional-package-to-an-existing-store-fulfillment): Use this option when the fulfillment exceeds the default package size or additional packages are needed to complete the fulfillment.
* [Start over](#restarting-a-store-fulfillment): Use this option to restart the fulfillment. This resets the fulfillment back to the packing step.
* [Reprint shipping labels](#reprinting-store-fulfillment-shipping-labels): Use this option to reprint the shipping labels for the store fulfillment.
* [Cancel Entire Order](#canceling-a-store-fulfillment-order): Use this option to cancel the fulfillment. You must select a reason code for the cancelation.
## Printing a New Store Fulfillment Packing Slip
1. In the left menu, click **Fulfillments**.
2. Click **All Orders**.
3. To reprint a damaged or missing packing slip, click the fulfillment from the **Fulfillments** table.
A preview menu is opened for the fulfillment.
4. Click the ellipsis (**⋮**).
5. Click **Print Packing Slip**.
6. Put the new packing slip inside the parcel.
## Adding an Additional Package to an Existing Store Fulfillment
1. In the left menu, click **Fulfillments**.
2. Click **All Orders**.
3. Click the fulfillment from the **Fulfillments** table.
A preview menu is opened for the fulfillment.
4. Click the ellipsis (**⋮**).
5. Click **Add Package**.
The **Packages** section for the fulfillment is updated with the additional package.
6. (Optional) To change the package size, click the ellipsis (**⋮**) next to the package.
The **Package Size** widow is displayed
1. Select a new package size.
2. Click **Select**.
The package size is updated.
## Restarting a Store Fulfillment
You can't start over for a store fulfillment that already has a shipping label.
1. In the left menu, click **Fulfillments**.
2. Click **Pending Orders**.
3. Click the fulfillment from the **Fulfillments** table.
A preview menu is opened for the fulfillment.
4. Click the ellipsis (**⋮**).
5. Click **Start over**.
A confirmation window is displayed.
6. Click **Yes, delete all & start over**.
## Reprinting Store Fulfillment Shipping labels
Only store fulfillment orders that have finished packing and have the `SHIPPED` status can access this option.
1. In the left menu, click **Fulfillments**.
2. Click **Pending Orders**.
3. Click the fulfillment from the **Fulfillments** table.
A preview menu is opened for the fulfillment.
4. Click the ellipsis (**⋮**).
5. Click **Reprint shipping labels**.
6. Attach the new shipping label to the parcel.
## Canceling a Store Fulfillment Order
You can't cancel a fulfillment after the shipping label is created.
1. In the left menu, click **Fulfillments**.
2. Click **Pending Orders**.
3. Click the fulfillment from the **Fulfillments** table.
A preview menu is opened for the fulfillment.
4. Click the ellipsis (**⋮**).
5. Click **Cancel Entire Order**.
The **Cancel Entire Order** window is displayed.
6. In the **Reason Code** field, select a reason code.
7. Click **Done**.
To cancel a single item instead of the entire order, go to the section for [canceling a single item](#cancel-a-single-item).
## Item Options
Each fulfillment starts at the pick phase where you search for the requested items. **Item Options** can be used to manually scan items, look up product info to help find items in the store, and cancel a specific item without canceling the entire order.
1. Click an item in a fulfillment to display the **Item Options** window with the following options:
* [Manually pick](#manually-pick-an-item)
* [Product info](#lookup-product-info-for-an-item)
* [Cancel item](#canceling-a-single-item)
* [Gifting](#gifting-options)
* [Unpick item](#unpicking-an-item)
### Manually pick an item
The **Manual Pick** option allows you to change the quantity of items expected for a fulfillment.
This shouldn't be used to cancel items but adjust errors in the fulfillment itself.
1. Click the item.
The **Item Options** window is displayed.
2. Click **Manually Pick**.
The **Manually Pick** window is displayed.
3. Click the quantity icon to open the **Manual Pick** window.
4. To add items, click the **+** icon.
5. Click **Done**.
### Lookup product info for an item
You can lookup product info such as the **SKU**, **Style Number**, **Size**, **Color**, and other important attributes for any product in a fulfillment. The number of available attributes can vary and depends on a product's available information.
1. Click the item.
The **Item Options** window is displayed.
2. Click **Product Info**.
The **Product Info** window is displayed.
### Canceling a single item
You can cancel one item at a time without canceling the entire order. To do this, a reason code is required such as, **Damaged**, **Out of Stock**, or **Customer Request**. Ensure that the correct order is being updated before canceling items.
Store inventory counters are updated based on the selected reason code. A damaged item is temporarily marked as unsellable until confirmed by a store manager.
1. Click the item.
The **Item Options** window is displayed.
2. Click **Cancel Item**.
The **Reason Codes** window is displayed.
3. To select a reason code, click the **+** icon.
The number of reason codes you can select is based on the pick quantity for an item.
4. Click **Done**.
### Gifting options
Items with the gifting tag require gift wrapping.
1. To mark and item as giftwrapped, click the item.
The **Item Options** window is displayed.
2. Click the gift icon.
The **Gifting** window is displayed.
3. Select the **Gift wrap** option.
4. Click **Proceed to Pack**
The items gift status is updated.
### Unpicking an item
While changing shifts or completing fulfillments that carried over to another day, sometimes items can be misplaced. If you notice a discrepancy in picking, you can unpick an item while you search for it. This isn't the same as canceling an item. Unpick allows you to reset the instance of a single item without starting the entire fulfillment over. Only once you have confirmed the item isn't available should it be canceled.
For example, let's assume an order has 4 pants, 5 shirts, a backpack, and 3 pairs of socks. Employee A says they picked all the items and hands it over to employee B during a shift change. Employee A accidentally sold one of the pairs of socks they had picked for the order just before the shift change. When employee B counts the socks they notice that only 2 are picked, not 3. A line of customers has formed and they can't look for the missing socks at this moment. To prevent another employee from packing or completing the order, they unpick the socks as a reminder to find all 3 pairs before packing and shipping the fulfillment.
1. To unpick an item, click the item.
The **Item Options** window is displayed.
2. Click **Unpick Item**.
The **Do you want to unpick this item?** confirmation window is displayed.
3. Click **Yes**.
The items pick quantity is reset to 0 for that item.
# Editing Store Inventory Transfers
Source: https://developer.fabric.inc/v3/store-fulfillment/editing-transfers
With fabric's storefront app, you can transfer and balance store inventory levels and send items to another store or to a Distribution center (DC). Once a shipping label is created and printed for a store transfer, your store inventory levels are adjusted.
You can choose from five options based on the current status of the inventory transfer:
* [Print packing slip](#printing-a-new-packing-slip): Use this option to print a new packing slip for a store transfer.
* [Reprint shipping labels](#reprinting-shipping-labels): Use this option to reprint the shipping labels for a store transfer.
* [Start over](restarting-a-store-transfer): Use this option to delete all parcels, remove all items, and start the store transfer over.
* [Manually add items](manually-adding-items-to-store-transfers): Use this option to enter a SKU manually for transfering inventory to another store.
* [Reject transfer](canceling-a-store-transfer): Use this option to cancel transfering inventory to another store.
## Printing a New Packing Slip
Only the items that have finished packing for transfers and have the `TRANSFER SHIPPED` status can access this option.
1. In the left menu, click **Transfers**.
2. To reprint a damaged or missing packing slip, select the transfer from the **Transfers** menu.
A preview menu is opened for the transfer.
3. Click the ellipsis (**⋮**).
4. Click **Print packing slip**.
5. Put the new packing slip inside the parcel.
## Reprinting Shipping Labels
Only transfers that have finished packing and have the `TRANSFER SHIPPED` status can access this option.
1. In the left menu, click **Transfers**.
2. To reprint a damaged or missing shipping label, in the **Transfers** menu, select the transfer.
A preview menu is opened for the transfer.
3. Click the ellipsis (**⋮**).
4. Click **Reprint Shipping Labels**.
5. Attach the new shipping label to the parcel.
## Restarting a Store Transfer
You can't start over for a transfer that already has a shipping label.
1. In the left menu, click **Transfers**.
2. To start a transfer over, select the transfer from the **Transfers** menu.
A preview menu is opened for the transfer.
3. Click the ellipsis (**⋮**).
4. Click **Start over**.
A confirmation window is displayed.
5. Click **Yes**.
All parcels and items are removed, and the transfer is reset.
## Manually Adding Items to Store Transfers
1. In the left menu, click **Transfers**.
2. To manually add items, select the transfer from the **Transfers** menu.
A preview menu is opened for the transfer.
3. Click the ellipsis (**⋮**).
4. Click **Manually add items**.
The **Manual Input** window is displayed.
5. In the **Enter SKU** field, enter the items SKU.
6. Click **Done**.
The item is added to the transfer.
## Canceling a Store Transfer
You can't cancel transfering an item to a store after the shipping label is created for the transfer.
1. In the left menu, click **Transfers**.
2. To cancel a transfer, select the transfer from the **Transfers** menu.
A preview menu is opened for the transfer.
3. Click the ellipsis (**⋮**).
4. Click **Reject Transfer**.
The **Reject Transfer** window is displayed.
5. In the **Reason Code** field, select a reason code.
6. Click **Done**.
The transfer is canceled.
# Order Lookup
Source: https://developer.fabric.inc/v3/store-fulfillment/order-lookup
The order lookup feature is used to search for orders associated with your selected store location. fabric integrates with inventory and order management systems to display order information, such as the tracking number, order date, and status.
Only orders from your selected store location are displayed.
## Searching for an Order
1. To view the **Order Lookup** page, in the left menu, click **Order Lookup** .
2. In the default search fields, enter required information, such as the **Order #** or **Customer Phone #**.
* **Order #**: The unique order identifier assigned to an order during checkout.
* **Customer First Name**: The customer's first name.
* **Customer Last Name**: The customer's last name.
* **Customer Phone #**: The customer's primary phone number.
* **Customer Email Address**: The customer's primary email address.
* **Loyalty #**: The customer's loyalty number.
* **Zip Code**: The customer's zip code.
3. Click **Search Order**.
The [order lookup table](#order-lookup-result-table) is displayed with a list of results.
## Order Lookup Result Table
A successful search displays a table containing any orders that meet the search criteria. For example, searching by a customer's phone number displays all orders associated with that phone number for your store location. The results are sorted by the most recent order date.
| Column | Description |
| ----------------- | ------------------------------------------------------------------------------------------------------------- |
| **Customer Name** | The first and last name of the customer. |
| **Order #** | The unique order identifier assigned to an order during checkout. |
| **Status** | The current status of the order. |
| **Total Units** | The number of items the order contains. |
| **Order Type** | The origin of the order, such as Point of Sale (POS), Web (Online), or Customer Service Representative (CSR). |
| **Order Date** | The date the order was placed in the month/day/year format. |
Orders can contain hundreds of attributes and some sensitive information. To view more information on an order, you must log in to **Orders** in Copilot.
### Filtering results
The Order Lookup results table allows you to add additional filters for three categories:
* **Customer Details**
* **Date**
* **Zip Code**.
1. To add additional filters, click the filter icon.
The **Filters** window is displayed.
2. To display the available filters, select one of the following categories:
* **Customer Details**: Filters by customer details, such as first name, last name, phone number, email, or loyalty number.
* **Date**: Filters by the time when an order was created, such as within the last 30 days or 60 days.
* **Zip Code**: Filters by the customer's zip code.
3. Enter additional details for the selected filter.
4. Click **Apply Filter**.
# Completing Customer Handoffs
Source: https://developer.fabric.inc/v3/store-fulfillment/picking-up-orders
The Handoffs feature filters store pickup orders, enabling store associates to update orders by changing the status from **Awaiting Pickup** to **Picked Up**, or **Canceled**. A handoff order displays in the [customer pickup table](#customer-pickup-table) after a fulfillment for a Buy Online Pickup in Store(BOPIS ) order is marked as completed.
## Picking up the Entire Order
1. You can [view handoffs](/v3/guides/store-fulfillment/viewing-customer-pickups) by clicking **Handoffs** in the left menu.
Only the selected store's handoff orders are displayed.
2. Click any order.
The pickup menu for the order is displayed.
3. Before continuing with the pickup, confirm with the customer that the correct order is selected.
fabric recommends using a phone number or email since names can be similar.
4. In the pickup menu, click **Pickup Entire Order**.
The customer signature window is displayed.
5. Get a signature from the customer to acknowledge the pickup.
6. Click **Accept & Continue to Label**.
The **Print or Email Labels** window is displayed.
7. (Optional) To print or email labels at the customers request, click one of the following options:
* **Send Email**: The shipping label and packing slips are sent to the customer's primary email address.
* **Print shipping label**: A printed copy of the shipping label is sent to the store printer for printing.
* **Print packing slips**: Printed copies of the packing slips is sent to the store printer for printing.
8. Click **Complete**.
The order is complete and the order status is updated to **Picked Up**.
## Picking up a Partial Order
1. To [view all handoffs](/v3/guides/store-fulfillment/viewing-customer-pickups), in the left menu, click **Handoffs**.
Only the selected store's handoffs are displayed.
2. Click any order.
The pickup menu for the order is displayed.
3. Before continuing with the pickup, confirm with the customer that the correct order is selected.
fabric recommends using a phone number or email since names can be similar.
4. In the pickup menu, click **Pickup Partial Order**.
The **Select Items for Pickup** menu is displayed.
5. To update the quantity of a selected item, click the **+** icon.
Always double-check that the items and quantity are correct.
6. Click **Continue to Signature**.
The customer signature window is displayed.
7. Get a signature from the customer to acknowledge the pickup.
8. Click, **Accept & Continue to Label**.
The **Print or Email Labels** window is displayed.
9. (Optional) To print or email labels at the customers request, click one of the following options:
* **Send Email**: The shipping label and packing slips are sent to the customers primary email address.
* **Print shipping label**: A printed copy of the shipping label is sent to the store printer for printing.
* **Print packing slips**: Printed copies of the packing slips is sent to the store printer for printing.
10. Click **Complete**.
### Skipping items
Orders can be damaged during transit or a customer can change their mind while in store. If this happens, an item can be skipped for pickup by providing a reason code such as *Damaged* during the pickup process.
1. Follow [picking up a partial order](#picking-up-a-partial-order) to step 5.
2. On the **Select Items for Pickup** window, clear the checkbox field next to the item that needs to be skipped.
The **Select Reason** field is displayed below the item.
3. Click the **Select Reason** field.
All available reason codes are displayed.
4. To add a reason code, click the **+** icon.
You can add multiple reason codes based on the quantity of an item in an order. For example, if three of the same pair of shoes exists in an order, you can select up to three reason codes if all three pairs are damaged or missing.
5. Click **Continue to Signature**.
The customer signature window is displayed.
6. Get a signature from the customer to acknowledge the pickup.
7. Click, **Accept & Continue to Label**.
The **Print or Email Labels** window is displayed.
8. (Optional) To print or email labels at the customers request, click one of the following options:
* **Send Email**: The shipping label and packing slips are sent to the customers primary email address.
* **Print shipping label**: A printed copy of the shipping label is sent to the store printer for printing.
* **Print packing slips**: Printed copies of the packing slips is sent to the store printer for printing.
9. Click **Complete**.
# Store Inventory Lookup
Source: https://developer.fabric.inc/v3/store-fulfillment/store-inventory-lookup
The store inventory lookup feature is used to view inventory levels for a particular SKU across different store locations. fabric provides a real-time view of inventory by integrating with inventory and order management systems, showing the quantities available for immediate purchase and those eligible for backorder across store locations.
## Searching for Inventory
1. To view the **Inventory Lookup** page, in the left menu, click **Inventory**.
2. (Optional) If you want to use additional filters for your search, click **More**
The **Filters** window is displayed. The available filters depend on your company's inventory attributes.
3. In the default search fields, enter the required information, such as the SKU or store.
* **SKU #**: A unique item identifier, for example, *WEH34T2*.
* **Store #**: Filters inventory by store number. For example, if you enter *90012*, only inventory for that store is displayed for the search result. Multiple store numbers can be entered.
* **City**: Filters inventory based on the city entered, for example, *Maine*.
* **State**: Filters inventory based on the state or province entered, for example, *Washington*.
* **Item Size**: Filters inventory based on the size, for example, *Large* or *10 x 14 x 8* inches.
* **Item Style**: Filters inventory based on the style number. This can be used to filter for variants such as *style B* or *style 2* of a specific SKU.
4. Click **Search Inventory**.
The [inventory lookup table](#inventory-lookup-table) is displayed with a list of results.
## Inventory Lookup Table
After searching for inventory, a search results table is displayed with a list of the filters you applied.
To view an items details, click the item.
The items details window is displayed.
| Column | Description |
| -------------------------- | ----------------------------------------------------------------------- |
| **SKU** | A unique item identifier. For example, *WEH34T2*. |
| **Style #** | The style number used to differentiate item variants with the same SKU. |
| **Address** | The city and state where the inventory is located. |
| **Distance (Miles)** | The distance from your store location. |
| **Available to Purchase** | The total number of an item at a store location. |
| **Available to Backorder** | The total number of item eligible for backorder across store locations. |
# Changing the Store Location
Source: https://developer.fabric.inc/v3/store-fulfillment/updating-store-location
Store associates are assigned to specific locations within the system. If an associate works at multiple locations, they can switch seamlessly between them.
The Store Fulfillment Application provides real-time inventory tracking for each store location. This enables:
* **Visibility into store operations**: Each location displays its pending, in-progress, and completed transfers for receivings, adjustments, and fulfillments.
* **Flexibility for dynamic operations:** You can create temporary pop-up stores and redirect orders to accommodate events or seasonal demands.
## Changing the Store Location
1. Inn the top-right of the page, click the **Profile** icon .
The **Profile** window is displayed.
2. In the **Location** field, click the location.
The **Change Store** window is displayed. Your selected store location is indicated with the `CURRENT` tag.
3. Select a store from the list that's displayed.
4. Click **Update Store**.
The store location is updated.
# Viewing Store Adjustments
Source: https://developer.fabric.inc/v3/store-fulfillment/viewing-adjustments
Adjustments are used to streamline store-level inventory management by automatically adjusting stock levels based on real-time sales and fulfillment activities. By integrating with Point-Of-Sale (POS) systems and Warehouse Management Systems (WMS), fabric ensures accurate inventory counts and prevents stockouts or overstocks.
You can view adjustments by clicking **Adjustments** in the left menu.
Currently, anyone can approve or cancel an adjustment.
## Filtering Adjustments
You can search for a specific adjustment by entering the **Adjustment #** in the search bar.
Adjustments can be filtered by [status](#adjustment-statuses) or by [reason codes](#reason-codes). You can also select multiple filters. After you select a filter, the adjustment table is automatically updated.
Selecting the refresh button refreshes the adjustment table and clears all filters.
## Adjustments Table
The adjustments table displays all the adjustments for a particular store. By default, this table displays the most recently created adjustments.
The table only displays the adjustments for the store in the last 30 days. Older adjustments must be filtered using the **Adjustment #** in the search field.
| Column | Description |
| ---------------- | ------------------------------------------------------------------------------------------- |
| **Adjustment #** | A unique adjustment identifier assigned for an adjustment by the system when you create it. |
| **Reason Code** | The [reason code](#reason-codes) given to the adjustment when it was created. |
| **Created By** | Displays who created the adjustment. |
| **Created Date** | Displays the month and year the adjustment was made. |
| **Status** | Displays the current adjustment [status](#adjustment-statuses). |
### Adjustment statuses
Adjustment statuses track the progress of an adjustment.
| Status | Description |
| ----------- | -------------------------------------------------------------------- |
| `REQUESTED` | Indicates that the adjustment is pending approval. |
| `COMPLETED` | Indicates that the adjustment is approved and inventory was updated. |
| `CANCELED` | Indicates that the adjustment isn't approved and was canceled. |
### Reason codes
Reason codes are used to categorize and explain the reason for an adjustment to the inventory. These codes provide context for the adjustment and help track trends or identify issues.
Reason codes are separated into two categories:
* Adding inventory
* Removing inventory
The following codes are suggested reason codes. These can be customized as needed.
#### Add units
Codes that increase a stores inventory.
| Reason Code | Description |
| --------------------------------- | ------------------------------------------------------------------------------------------------ |
| `MANUAL_ADJUSTMENT` | Indicates that inventory was found and other reason codes don't apply. |
| `MARKETING` | Indicates the item is no longer being used for marketing purposes. |
| `WRONG ITEM SHIPPED TO CUSTOMER` | Indicates the item was returned to the store by a customer who received the wrong item. |
| `MISSING UNITS SHIPMENT/TRANSFER` | Indicates the item was included in a shipment or transfer but excluded from the receivings list. |
#### Remove units
Codes that reduce a store's inventory.
| Reason Code | Description |
| --------------------------------- | -------------------------------------------------------------------------------------------- |
| `DAMAGED` | Indicates the item is damaged. |
| `INSURANCE CLAIM` | Indicates the item is damaged and covered under warranty. |
| `DESTROY AT STORE` | Indicates the item was destroyed at the store. |
| `ITEM NOT FOUND` | Indicates the item was displaying *in stock* but an associate was unable to locate the item. |
| `SHOPLIFTING INCIDENT` | Indicates the items are no longer available due to shoplifting. |
| `MARKETING` | Indicates the item is being used for marketing purposes and no longer available. |
| `MISSING UNITS SHIPMENT/TRANSFER` | Indicates the item was supposed to be a part of a shipment or transfer but wasn't received. |
# Viewing Customer Handoffs
Source: https://developer.fabric.inc/v3/store-fulfillment/viewing-customer-pickups
The **Handoffs** feature filters store pickup orders enabling store associates to find and change orders with the **Awaiting Pickup** status to **Picked Up** or **Canceled**. A handoff order displays in the [customer pickup table](#customer-pickup-table) after a fulfillment for a Buy Online Pickup in Store(BOPIS ) order is marked as completed.
## Filtering Customer Pickups
You can search for a specific pickup order by entering the **Order #** in the search bar.
Customer pickups can be filtered by [pickup status](#customer-pickup-statuses). After you select a filter, the customer pickup table is automatically updated.
To clear all filters, click the **Refresh** button. The customer pickup table is updated and all filters are cleared.
## Customer Pickup Table
The customer pickup table displays all the handoff orders for a particular store. By default, this table displays the most recently created orders with the **Awaiting Pickup** status.
The table only displays the handoff orders for the store in the last 30 days. Older handoff orders must be filtered using the **Order #** in the search field.
| Column | Description |
| ----------------- | --------------------------------------------------------------------------------------------------------- |
| **Order #** | A unique order identifier assigned to an order during checkout. |
| **Status** | The current [pickup status](#customer-pickup-statuses) for an order. |
| **Tags** | An optional tag assigned to the order, such as gift wrapping. |
| **Order Date** | The date the order was placed in the month/day/year format. |
| **Customer Name** | The first and last name of the customer. |
| **Pickup By** | The last day for order pickup to avoid cancellation, as specified in your company's terms and conditions. |
### Customer pickup statuses
| Status | Description |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Awaiting Pickup** | The order is ready to pickup and the customer is notified. |
| **Picked Up** | The customer picked up the order. When an orders status is changed from **Awaiting Pickup** to **Picked Up**, a timestamp is added indicating the pickup date in month/day/year format. |
| **Canceled** | The order was canceled at the request of the customer or it exceeded your policy pickup window. |
### Viewing pickup details
Clicking an order displays the pickup menu with details, such as the customer's name, phone number, email, items, and a list of packages. You can expand item details by clicking the arrow next to the item.
| Field | Description |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Name** | The customer's first and last name. |
| **Phone** | The customer's primary phone number. |
| **Email** | The customer's primary email address. |
| **Items** | The **Items** field displays a list of items containing the item name, quantity, image, SKU, and tags associated with the item. Expanding an item displays a larger image of the item with its **SKU**, **Size**, and **Color**. |
| **Packages** | The **Packages** field displays all the packages in the order and their sizes. Expanding a package displays the items in it. |
# Viewing Store Fulfillments
Source: https://developer.fabric.inc/v3/store-fulfillment/viewing-fulfillments
The store fulfillment feature is used to streamline the order fulfillment process within a retail store. fabric integrates with your online website and directs fulfillment requests to your physical store locations based on characteristics, such as geolocation, store inventory levels, and more. The store fulfillments feature provides store associates a user-friendly interface to efficiently pick, pack, and ship online customer orders.
You can view fulfillments by clicking **Fulfillments** in the left menu.
Currently, there are no role restrictions for who can complete fulfillments.
## Filtering Store Fulfillments
You can search for a specific fulfillment by entering the **Order #** in the search bar.
Fulfillments can be filtered by **Service Levels**, **Ownership**, [Status](#fulfillment-statuses), and **Special Handling**. You can also select multiple filters. After you select a filter, the fulfillment table is automatically updated.
To clear all filters, click the **Refresh** button. The fulfillment table is updated and all filters are cleared.
## Store Fulfillments Table
Fulfillments are categorized in the following tables in the left menu:
* **Pending**: A table with all pending fulfillments for your store location.
* **Completed**: A table with all completed fulfillments for your store location.
* **All**: A table with all fulfillments for your store location.
Fulfillment tables display all the categorized fulfillments for a particular store in the last 30 days. You can access the older fulfillments by searching with the **Order #** of the fulfillment.
| Column | Description |
| ------------------ | --------------------------------------------------------------------------- |
| **Order #** | A unique order identifier assigned to an order during checkout. |
| **Status** | The current [fulfillment status](#store-fulfillment-statuses) for an order. |
| **Tags** | An optional tag assigned to the order such as gift wrapping. |
| **Order Date** | The date the order was placed in the Month/Day/Year format. |
| **Customer Name** | The first and last name of the customer. |
| **Associate Name** | The name of the associate who last updated the order status. |
### Pending fulfillments
Pending fulfillments can be categorized into four main types:
* **Pickup**: Online orders with the pick up in-store option selected at checkout.
* **Next Day**: Orders with next day overnight shipping selected at checkout. These orders must be processed the same day.
* **Standard**: Orders with standard shipping selected at checkout.
* **Expedited**: Orders with expedited shipping selected at checkout. These orders must be processed the same day.
### Store fulfillment statuses
| Status | Description |
| ------------- | ----------------------------------------------------------- |
| **New** | A new fulfillment order is assigned to your store location. |
| **Pick** | The fulfillment items are being located in the store. |
| **Pack** | The fulfillment is being packaged. |
| **Shipped** | The fulfillment shipping method is selected and shipped. |
| **Canceled** | The fulfillment was canceled by a store associate. |
| **Completed** | The fulfillment is complete. |
| **Picked Up** | The fulfillment was picked up by the customer. |
# Viewing Store Receivings
Source: https://developer.fabric.inc/v3/store-fulfillment/viewing-receivings
Receivings are shipments coming from other stores, store to store, or Distribution Centres (DC). These shipments give you the details on what items are expected and their estimated arrival date. Once a store associate verifies the items in the shipment, the inventory system is updated to show the new stock levels.
You can view receivings by clicking **Receivings** in the left menu.
Currently, anyone can approve or cancel a receiving.
## Receiving Types
Receivings are categorized into two possible types each containing a [receiving table](#receivings-table).
| Type | Description |
| ------------------ | ------------------------------------------------------------------------------------------------ |
| **Store to Store** | Displays the total transfers occurring between store locations. |
| **Store to DC** | Displays the total transfers that are being sent from a store location to a distribution center. |
## Filtering Receivings
You can search for a specific receiving by entering the **Tracking #** in the search bar.
Receivings can be filtered by **Transferred at**. Once a filter is selected, the receivings table is automatically updated.
Selecting the refresh button refreshes the receivings table and clears all filters.
## Receivings Table
The receivings table displays all receivings for a selected type. By default, this table displays receivings in the order of the arrival date.
Clicking a receiving opens the details displaying the sending location, receiving location, items, and current status.
The table only displays the receivings for the store in the last 30 days. Older receivings must be filtered using the **Tracking #** in the search field.
| Column | Description |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| **Tracking #** | A unique tracking identifier assigned by the system when creating a transfer or provided by a shipping carrier for DC receivings. |
| **Carton #** | A unique carton number assigned to a box of items. |
| **Status** | Displays the current receiving [status](#receiving-statuses). |
| **Sending Location** | Displays the store number, name, and city for the receiving location of a carton. |
| **Arrival Date** | Displays the expected arrival date for the receiving using the Month/Day/Year format. |
### Receiving statuses
Receiving statuses track the progress of a receiving.
| Status | Description |
| ----------- | ----------------------------------------------------------------------------------------------- |
| `Shipped` | Indicates that the receiving is created and in transit to the **Sending Location** destination. |
| `Delivered` | Indicates the carton arrived at the **Sending Location**. |
| `Received` | Indicates that the a store associate checked the items and marked the carton as received. |
# Viewing Store Transfers
Source: https://developer.fabric.inc/v3/store-fulfillment/viewing-transfers
Transfers are used to balance store inventory levels and allow you to send items to another store or to a Distribution center (DC). When you set the status for a transfer to *Pack*, the inventory levels for the store are automatically adjusted.
You can view transfers by clicking **Transfers** in the left menu. Only your selected store's transfers are displayed.
Currently, anyone can create, pick, and pack a transfer.
## Transfer types
Transfers are categorized into three possible types each containing a [transfer table](#transfers-table).
| Type | Description |
| ------------------ | ------------------------------------------------------------------------------------------------------------- |
| **Store to Store** | Displays transfers occurring between store locations. |
| **Store to DC** | Displays transfers that are being sent from a store location to a distribution center. |
| **DC to Store** | Lists transfers being sent to store locations. However, this type is available only for distribution centers. |
## Filtering Transfers
You can search for a specific transfer by entering the **Transfer #** in the search bar.
Transfers can be filtered by [Status](#transfer-statuses) or by [Type](#type-codes). Multiple filters can be selected. Once a filter is selected, the transfer table is automatically updated.
Selecting the refresh button refreshes the transfers table and clears all filters.
## Transfers Table
The transfer table displays all the transfers for a selected store and provides a brief summary of how many transfers are in the **Pick**, **Pack**, and **Shipped** status. By default, this table displays the most recently created transfers with the **Pack** status.
The table only displays the transfers for the store in the last 30 days. Older transfers must be filtered using the **Carton #** in the search field.
| Column | Description |
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Carton #** | Specifies the unique carton identifier assigned by the system for a new transfer when you create it. |
| **Tracking #** | Specifies the tracking numbers. Tracking numbers are provided by the shipping carrier. To receive tracking numbers automatically, you must integrate fabric store fulfillment with a carrier's third-party API. |
| **Status** | Displays the current transfer [status](#transfer-statuses). |
| **Total Units** | Displays the total quantity of items in a transfer. |
| **Created By** | Displays who created the transfer. |
| **Created Date** | Displays the day the transfer is made in the month/day/year format. |
### Transfer statuses
Transfer statuses track the progress of a transfer.
| Status | Description |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Shipped** | Indicates the carrier is selected and shipping labels created. At this point the selected shipping carrier is responsible for pickup. This status doesn't change regardless of shipping carrier statuses such as in transit, awaiting pickup, and out for delivery. |
| **Pick** | Indicates that items are being selected for the transfer. |
| **Pack** | Indicates that the *Parcel Size* is selected and that item packing and quantity confirmation has started. |