Skip to main content

Turning a search into a page with Form Builder

Publish a saved search as a page your colleagues can open, with the filters and permissions you choose

C
Written by CiviPlus Helpdesk

A saved search lives in the back office, where only administrators can reach it. Form Builder is how you turn one into a page of its own — with a proper title, a web address, a place in the menu, and filters your colleagues can use without ever seeing Search Kit.

This page picks up where Building a custom search with Search Kit left off: a saved search called Outstanding invoices with a table display. It is written for administrators.

What this needs: a saved search with at least one display, and administrator rights. If you don't have the search yet, start with Building a custom search with Search Kit.

Form Builder makes two very different things. This page covers forms that show the results of a search — reports and lists. Form Builder can also build forms that collect and save data, such as an application or a contact-update form; those work differently and are not covered here.

What can I do in CiviPlus?

  • Publish a saved search as a page with its own web address, so colleagues can bookmark it.

  • Add it to the CiviPlus menu, a dashboard, or a tab on the contact record.

  • Give readers filters they can change themselves, and lay the page out with headings and groups.

  • Control who can open it, with a permission you choose.

Step 1 — Start the form from the right place

  1. Open your saved search: Search > SearchKit, then click its name.

  2. Click the forms button at the top right — it is labelled with the number of forms the search already has, so 0 FORMS the first time.

  3. Choose Create form for your display name — for the example, Create form for Outstanding invoices Table 1.

Not the other one. The same menu offers Create form for search results table. That builds a page from the raw search, ignoring the columns, headers and links you set up on your display — so the page arrives looking nothing like the table you designed. Always pick the option named after your display.

Form Builder opens in a new tab with two panels: the settings on the left, and a preview of the page on the right.

Step 2 — Title, description and permission

On the Form Settings tab:

  1. Title — what readers see at the top of the page, and what appears in the menu. Ours is Outstanding invoices.

  2. Description — a note to your future self about what the page is for. It is not shown to readers.

  3. Permission — who is allowed to open the page. It starts at CiviCRM: access CiviCRM backend and API, which means any staff member with a CiviPlus login.

Permission is the one setting on this page that can leak data. The list includes public options. Choose one of those and the report — every row and column of it — is readable by anyone who finds the address, without logging in. If the page contains names, emails or amounts, keep it on a staff permission.

Two colleagues, two different row counts. The permission decides who can open the page; your CiviPlus access rules still decide which records each person sees once they are in. Two people can legitimately open the same report and see different numbers of rows. That is working as intended, not a broken report.

Step 3 — Give it an address and a place in the menu

Under Placement:

  1. Page Route — the page's web address. The box already contains civicrm/, so type only the rest: outstanding-invoices gives you civicrm/outstanding-invoices. Use words, not spaces or capitals, and keep it stable — change it later and any link or bookmark to the old address stops working.

  2. Tick Add to Navigation Menu. This stays greyed out until the page has a route. Once ticked you can set the menu label, choose a parent menu instead of Top Level, set the Order, and pick an icon.

  3. Expose To — where else the page can appear, such as a tab on the contact record or a block on the dashboard.

Which placement to use:

  • Its own page plus a menu item — for reports people go looking for. This is the usual choice.

  • A dashboard block — for a number somebody should see without going looking.

  • A tab or block on the contact record — for a report that is about the record being viewed. See the note on filters you set for the reader in step 4.

Click SAVE. The page exists from this moment: the menu item appears, and the address works.

Step 4 — Add the filters your readers need

Switch to the tab named after your display. It has two ways of filtering, and they do quite different jobs.

Filters readers can change

Drag a field from the Add: list on the left onto the page preview on the right. It becomes a filter box your readers can use. Dropping it above the table is usually what you want.

  1. Type part of the field name into the Add: box to find it — for the example, Financial Type under Contribution Fields.

  2. Drag it onto the preview, just above the table.

  3. Click SAVE.

Under Options, Remember Filters makes each reader's filter choices stick between visits — helpful on a report someone works through weekly.

Filters you set for them

The Filters: box in the top left sets a filter the reader never sees. Choose the field, then how it gets its value:

  • Fixed value — always the same. Use it to publish one slice of a broader search.

  • Url variable — the value comes from the page address, so you can link colleagues straight into a pre-filtered view.

This is also how a report placed on a contact tab shows only that contact's records — the filter is set to the record being viewed rather than to a value you type. Without it, everyone opening any contact would see the whole organisation's data on that tab.

Step 5 — Lay the page out

The Add: list also has layout pieces under Elements:

  • Rich content — a paragraph of explanation above the table. A sentence saying what the report counts and when it updates saves a surprising number of questions.

  • Container — a box to group things in. Its settings cog switches it between stacking its contents and laying them out side by side, and turns it into a collapsible section — useful for putting three filters on one row instead of three.

  • Text box and Reset Button — a free-text search box, and a button that clears the filters.

Step 6 — Test it as a real user

You are an administrator, so the page will always work for you. That tells you nothing about the colleague it was built for.

  1. Open the page as a normal staff user — either log in as a test account with the same role, or use the masquerade option on their user record.

  2. Check the menu item is actually there for them.

  3. Check the row count is what you expect, and that the filters behave.

  4. Open the ACTION menu and look at what it offers them.

Look at that ACTION menu properly. On our demo site an ordinary finance user opening this report was offered twelve bulk tasks, Delete Contacts among them. The menu comes from the table's display settings, so specify those there: Search > SearchKit > your search > the display > Settings > Actions Menu, and untick everything this audience should not be doing.

Changing it later

  • Find your forms under Administer > Customise Data and Screens > FormBuilder.

  • Changing the columns, headers or links means editing the display back in Search Kit — the form shows whatever the display says.

  • Changing the page route breaks existing links and bookmarks to the old address.

  • Deleting a form removes its page and its menu item; the search and display behind it are untouched.

Building on a test site? Searches, displays and forms do not travel between sites on their own — building it on a test site and expecting it to appear on your live one will disappoint. Either rebuild it on the live site once you are happy, or ask your account manager to move it across.

Checking it worked

That's it — your report is a page. Open the address you chose, or find the item in the menu, and you should see your table with its filters above it. The real test is the one in step 6: it works when it works for the colleague it was built for, signed in as themselves.

Related articles

Did this answer your question?