A custom SharePoint search page is an ordinary SharePoint page with search web parts on it, scoped to one set of content, such as a single list, and given filters made from your own columns. The search box and results take minutes to set up. The filters need each column’s crawled property mapped to a refinable managed property in the search schema first.
The example in the video came from a question a newsletter subscriber sent me. My demo uses a Finance topics list with a Topic choice column, a Date column and an Owner column. The list’s own search box finds text, and views can filter it, but neither lets someone type “revolving” and then tick two topics at once. I recorded it in January 2024 using PnP Modern Search for the web parts. The search schema steps below match the current Microsoft documentation.
What are crawled and managed properties?
Search only finds what’s in the search index, and only shows each person results they have permission to see. Getting your columns into that index happens in two steps.
| Crawled property | Managed property | |
|---|---|---|
| What it is | Content and metadata extracted from an item when search crawls it | A property kept in the search index, with settings that control how it can be used |
| Where it comes from | Created automatically from your columns and file metadata | Built in (Title, Author, RefinableString00), auto-generated for site columns, or mapped by you |
| Can you search or filter on it | No, not on its own | Yes, depending on its settings |
| Example from my demo | ows_Topic, from the Topic column | RefinableString00, aliased as Topic |
Metadata is information about an item: a policy might have an expiry date, a policy type and an owner. When you add a column to a list and fill it in, the next crawl turns it into a crawled property. Only managed properties go into the index, so a crawled property is invisible to search pages until something maps it to one. What metadata columns are and how to add them covers the column side.
Each managed property carries settings. Searchable puts its content in the full-text index, so a plain search for “Smith” finds it. Queryable lets you search on that property alone, like author:Smith. Retrievable lets results display it. Refinable lets it be used as a filter. Sortable lets results be sorted by it.
The type of column matters too. A site column gets an auto-generated managed property when its list is crawled, but that property can’t be used as a filter. A list column, like the Topic column in my demo, only becomes a crawled property. Either way, to filter on it you need a refinable managed property.
Why you map to RefinableString00 instead of creating your own
In SharePoint Online a managed property you create yourself can only be Text or Yes/No, and it can’t be refinable or sortable. Microsoft provides a stock of empty built-in properties for exactly this job: RefinableString00 to RefinableString219 for text, plus RefinableDate, RefinableInt, RefinableDecimal and RefinableDouble ranges. They’re already queryable, retrievable, refinable and sortable. You map your crawled property to an unused one and give it an Alias so it has a readable name.
- On the site, select Settings, then Site information, then View all site settings. Under Site Collection Administration, select Search Schema.
- On Managed Properties, find a refinable property with nothing in the Mapped Crawled Properties column. I used RefinableString00.
- Select it, choose Edit/Map property, and enter an alias, such as Topic.
- Under Mappings to crawled properties, select Add a mapping, search for your column (mine was ows_Topic) and select OK, then OK again.
- Reindex. For one list, go to List settings, Advanced settings and select Reindex List. For the whole site, go to site settings, Search and offline availability and select Reindex site.
The reindex marks the content for the next scheduled crawl, so the property won’t show in your search page until that’s run. Make all your mapping changes first and reindex once, because Microsoft warns that reindexing a whole site puts a heavy load on search.
You can also map several crawled properties to one managed property. In the follow-up video I point out where that helps: if three departments each have a Department, Business area or Functional area column with similar values, mapping all three to one property gives you a single filter across all their lists.
How the search page uses the managed property
The page in my demo uses the free, community-built PnP Modern Search web parts, which a SharePoint admin adds to the tenant app catalogue first. I walk through that install in building a SharePoint employee directory. With the app on the site, the page needs three web parts: Search Box across the top, Search Filters in a narrow left column and Search Results on the right.
- Scope the results. In Search Results, the Query template starts as
{searchTerms}. AddPath:followed by the list’s URL to limit results to that list. My results immediately showed the Finance topics items. - Return the property. Add RefinableString00 under Selected properties. The dropdown doesn’t always list refinable properties, so type the name and press Enter. The Debug layout shows exactly which properties come back with each result.
- Build the filter. In Search Filters, use the data from Search Results, set the display name to Topic and the filter field to RefinableString00, and choose the Checkbox template. Turn on multi-value selection and pick OR or AND between values.
Ticking Budgeting took my list from seven results to three. Searching “revolving” found the one item with that word in its title, and the text search and the filter worked together. With multi-value on and OR selected, Budgeting and Debt returned the items from both topics.
In the follow-up I mapped a new Functional area column to RefinableString01 and added it as a second filter. With AND between the filters, Budgeting plus Finance narrowed three results to two.
Start with list views, and build a search page when the combinations multiply
A list view is still the first thing I reach for. Group by Topic, filter to Budgeting, save it as a Budgeting view, add a second filter for Adele as owner. For a list with a handful of combinations, that’s quicker to set up and nobody has to touch the search schema. Views get hard to manage once people want every combination of three or four columns, because each combination is another view to create and name.
I’d build a search page when the content is spread across several lists or sites, or when people want free text and filters together. Mapping is also the only way to get one filter across columns with different names. A search page keeps working as the list grows, because the filtering runs in the search index rather than the list.
Before installing anything, check whether Microsoft Search’s own site-level options cover the need. Under Site settings, Microsoft Search, Configure search settings, a site owner can add custom verticals (tabs on the site’s search results page) and filters built on refinable managed properties. It’s less flexible than PnP Modern Search, but it’s Microsoft-supported and needs no app catalogue.
I’d also be deliberate about where the mapping lives. My demo maps at the site collection level, because many people who build these pages are site owners without tenant admin access. Microsoft recommends mapping built-in properties like RefinableString00 at the tenant level for consistency and performance, and a property mapped at the site collection level only applies to that site collection. Once more than one site is using them, I keep a simple register of which RefinableString holds which column, so two teams don’t map different columns to the same property.
The same columns feed views and Copilot as well as search. Turning SharePoint into a Copilot knowledge base with metadata covers the Copilot side, and why Copilot can’t find your SharePoint documents covers what happens when the metadata is missing.
What to watch for
- No crawled property yet. A new column only becomes a crawled property after it has values and the list has been crawled. In the follow-up, my Functional area column took a crawl to appear.
- Aliases can clash. Don’t give an alias the same name as an existing managed property. Microsoft warns that aliased properties take precedence and can break Microsoft 365 experiences that rely on the original.
- Leave built-in mappings alone. Change mappings only on the unused refinable properties or ones you created, never on properties like Title or Author.
Frequently asked questions
Why doesn’t my SharePoint column appear as a crawled property? The column needs at least one value and the list needs to have been crawled since you added it. Request a reindex from the list’s Advanced settings and wait for the next scheduled crawl. List columns usually appear with an ows_ prefix, like ows_Topic.
Can I create my own refinable managed property in SharePoint Online? No. New managed properties you create can only be Text or Yes/No and can’t be refinable or sortable. Use one of the built-in refinable properties, such as RefinableString00, RefinableDate00 or RefinableInt00, and rename it with an alias.
Do I need to be a SharePoint admin to map managed properties? Not for one site. A site collection admin can edit the site collection’s search schema under Site settings, Search Schema. Mapping at the tenant level needs SharePoint admin access through More features, Search in the SharePoint admin centre.
Will a custom search page show people items they can’t open? No. Every SharePoint search experience, including PnP Modern Search pages, is security trimmed, so people only see results they already have permission to view. If an item shows up for the wrong people, change the item’s permissions; hiding it from the search page won’t stop them finding it elsewhere.