Marketplace
Display any SharePoint list as a searchable, filterable catalog with grid or list layouts.
Get Marketplace Working in 3 Steps
Prerequisites
- Bonzai 2 package installed on your site
- A SharePoint list with items to display
Add the web part to your page
Edit the page, click the + button, and search for "Marketplace" in the Bonzai category.
Select your list
Open the property pane, select your SharePoint list from the dropdown picker.
Configure columns and publish
Toggle which columns to display, set layout options, and publish your page.
Dynamic Schema Discovery
Unlike traditional web parts that require specific list schemas, Marketplace automatically discovers columns from any SharePoint list. Just point it at your list and toggle which fields to display.
When to Use This Web Part
Use this when you need to...
- Display IT service catalog or help desk offerings
- Create an internal product or equipment inventory
- Build a knowledge base or FAQ directory
- Show office supplies or asset catalog
- Display any structured list data with search and filtering
Best page locations
- Service catalogs — IT services, HR resources, facilities
- Inventory pages — equipment, supplies, assets
- Directory listings — vendors, partners, resources
- Knowledge bases — FAQs, policies, procedures
Consider alternatives when...
- • Document libraries — use Documents Rollup instead
- • News articles — use News Rollup instead
- • People/employees — use Employee Directory instead
- • Events with dates — use Events Rollup instead
Related web parts:
Layout Templates
Marketplace supports two display layouts:
Key Features
Search
Filter items by title with debounced search
Category Filtering
Auto-discovered from Choice columns
Sorting
Sort by any sortable column, ascending or descending
Create New
Button opens SharePoint new item form
Step-by-Step Configuration
Create or identify your SharePoint list
Add a Choice column for categories — Marketplace will auto-discover it for filtering.
Edit your SharePoint page
Add the Marketplace web part
Open the property pane
Set the title (optional)
Select your list
To use a list from a different site, enter the Site URL first, then pick the list — changing Site URL clears the current list selection.
Choose your layout
Configure column visibility
Toggles are generated dynamically from your list schema after a list is picked, and the group shows an "X of Y columns selected" summary.
Enable/disable features
Set pagination
Save and publish
Common Configurations
Copy these ready-to-use configurations for common scenarios:
IT Service Catalog
Searchable IT services with categories
| Title | IT Services |
| Layout | Grid (3 columns) |
| Items Per Page | 12 |
| Enable Search | Yes |
| Enable Category Filter | Yes |
| Show Create Button | No |
Office Supplies Catalog
Orderable supplies with create option
| Title | Office Supplies |
| Layout | Grid (4 columns) |
| Items Per Page | 24 |
| Enable Search | Yes |
| Enable Sorting | Yes |
| Show Create Button | Yes |
Equipment Inventory
Asset tracking with list view
| Title | Equipment Inventory |
| Layout | List |
| Items Per Page | 20 |
| Enable Search | Yes |
| Enable Sorting | Yes |
| Enable Category Filter | Yes |
Knowledge Base
FAQ or policy directory
| Title | Knowledge Base |
| Layout | List |
| Items Per Page | 15 |
| Enable Search | Yes |
| Enable Category Filter | Yes |
| Show Create Button | No |
Best Practices
Add a Choice column for categories
Use meaningful column names
Configure columns for your use case
Pagination handles large lists
User/Person fields show display names
Author and Editor, are expanded via $expand in the same items request to show display names. If the expansion fails (e.g. the field was deferred or permissions are missing), the value falls back to User #123 using the numeric user ID.Modified date and author are always visible
Reference
Technical details for developers and advanced users.
Property Pane Configuration
The property pane is organized into four groups: Data Source,Display Settings, Features, andColumn Configuration. Column toggles in the last group are generated dynamically from the selected list's schema.
| Property | Group | Control | Description & Default |
|---|---|---|---|
title | Data Source | Text field | Web part title displayed above the content. Default: Marketplace. |
siteUrl | Data Source | Text field | Site URL for cross-site queries. Leave empty for the current site. Changing this clears the selected list. |
listName | Data Source | List Picker | SharePoint list to display. Uses PropertyFieldListPicker filtered to BaseTemplate=100 (generic lists), hidden lists excluded. Stored as an object with id, title, and url. |
layoutType | Display Settings | Dropdown | grid (Tiles) or list (Rows). Default: grid. |
itemsPerRow | Display Settings | Dropdown (2-5) | Columns per row for grid layout. Default: 3. Automatically disabled when layoutType is list. |
itemsPerPage | Display Settings | Slider | Items per page. Min 6, max 50, step 6. Default: 12. |
enableSearch | Features | Toggle | Shows a search box (Title-only, 300 ms debounce). Default: On. |
enableSorting | Features | Toggle | Shows sort dropdown and direction button (ascending/descending). Default: On. |
enableCategoryFilter | Features | Toggle | Shows one dropdown per Choice column auto-discovered from the schema. Default: On. |
showCreateButton | Features | Toggle | Shows "Create New" button that opens the list's NewForm in a new tab. Default: On. |
displayColumns | Column Configuration | Dynamic Toggles | Comma-separated list of column internal names to display. Populated automatically by toggling each field Visible/Hidden. A summary "X of Y columns selected" is shown below the toggles. |
Reserved property: viewName
viewName property exists in IMarketplaceWebPartProps and the manifest defaults but is currently not exposed in the property pane UI and not consumed by the query. It is reserved for future view-based filtering and can be safely ignored today.List Requirements
Marketplace works with any SharePoint list (BaseTemplate 100). The only required column is the default Title field, which is used for item names and search.
Minimum Columns
| Column | Type | Required | Notes |
|---|---|---|---|
| Title | Single line of text | Yes | Used for item name and search filtering |
| Created | Date/Time | No | Available for sorting and display |
| Modified | Date/Time | No | Default sort field when no custom sort is set |
| Author | Person | No | Expanded to show display name when present |
Recommended Columns (Optional)
| Column | Type | Purpose |
|---|---|---|
| Title | Single line of text | Item name (always displayed) |
| Description | Multiple lines of text | Item details |
| Category | Choice | Enables category filtering dropdown |
| Status | Choice | Item status (Active, Inactive, etc.) |
| Owner | Person | Responsible person (displays name) |
Features Checklist
- Dynamic schema discovery (works with any generic list,
BaseTemplate=100) - Grid and List layout options
- Configurable columns per row (2-5) for grid layout
- Title-only search with 300 ms debounce (uses OData
substringof) - Category filtering (auto-discovered from Choice columns with defined choices)
- Sorting by any sortable field (ascending/descending), default Modified desc
- Pagination with SharePoint paging tokens (
@odata.nextLink), with previous/next history - Clear Filters button (appears only when a search text or category filter is active)
- Create New button (opens the list's NewForm in a new tab)
- Click-to-view (opens the item's DispForm in a new tab)
- Always-visible Modified date and Author display name on each item
- User/Person field expansion via
$expandfor selected user fields plus Author/Editor - Cross-site data source support via
siteUrl - Responsive grid (CSS
grid-template-columns) - Theme Manager integration (
loadBonzaiTheme) and Fluent UI controls - Resilient query fallbacks (retries with
Modified descsort, then with simplified select/expand)
Data Source
Marketplace queries SharePoint lists through the /_api/web/lists REST endpoint using SPHttpClient. It fetches the list schema (fields, form URLs,ItemCount) and then uses targeted $select plus$expand for User fields. Pagination is handled with SharePoint's@odata.nextLink token; a local history of tokens is kept so the previous button also works. The schema is cached per siteUrl|listName and cleared when either property changes.
Total counts come from the list's ItemCount when no filters are applied. When a search or category filter is active, the exact filtered count is not available, so the pagination label shows an estimate using the + suffix (for example, 1-12 of 12+).
Migration from Classic Bonzai
The Marketplace web part in Bonzai 2 provides similar functionality to the Classic Bonzai Marketplace, with modernized architecture using React and SPFx. Key improvements include dynamic schema discovery, SharePoint paging tokens for large lists, and automatic User field expansion.