Customizing a Knack Web App: Building a Client Portal

In the second part of our Knack Beginner's Guide, we'll show you how to customize your no-code app with a Client Portal.

Written by
Tom Nassr
and
Matt Jasinski

April 22, 2025

In Part 1 of our beginner’s guide, we introduced Knack and walked through the basics of setting up your first app. Now it's time to take your Knack skills to the next level by building something more complex: a client portal that connects your internal team with external partners.

Client portals are valuable tools for any business that collaborates closely with customers, vendors, or partners. They provide a convenient organized space where clients can submit requests, view project status, and access shared information—all while keeping your internal data protected from unauthorized edits. 

Let's dive into how you can build a powerful client portal using Knack's no-code interface. 

Planning your client portal structure

Before making any changes to your app, take a moment to consider what functionality your client portal needs. For our example, we'll extend the project management template from the previous tutorial by adding:

• A new user role for clients

• A table for storing client requests

• Pages where clients can view projects and submit requests

• Pages where your team can view and respond to client requests

This approach creates a natural workflow: clients can submit requests, which your team then reviews and potentially converts into projects or tasks.

Creating a new user role for clients

The first step in building a client portal is creating a dedicated user role for your external users. 

User roles are foundational to your app's security model, allowing you to precisely control what information different people can access. 

By creating a specific role for clients, you'll ensure they can only see their own data and the features designed for them.

To create a new user role in Knack, navigate to the Users section in your app builder, and click on “+ Role”.

Project Manager Page with the "Role" being clicked

Give your new user role a name—we'll use "Clients" for clarity–and click “Save”. 

Create New User Role pop up with "Clients" as the role name

This immediately adds Clients to your list of account types alongside the existing Project Managers and Team Members roles from your template.

Controlling access with user roles

The power of role-based access becomes apparent when you start designing the client experience. Every page and element in your Knack app can be configured with specific permissions, so you can build a tailored interface for each type of user. 

This means project managers, team members and clients can all view different pages with content that’s appropriate for them to access. 

Adding a new user in Knack

Having a test client account allows you to switch between different user perspectives as you build, ensuring the experience works as intended for everyone who will use your system.

To make it easier to build and test out the portal, it’s best to add a test client account right away. Click on "Add User." 

The Clients table with "Add User" being clicked

Then, fill out the required fields including name, email, and password. 

Clients Table with a new "Matt Jay" user information filled out and checked

Note: by default, Knack has specific password requirements for security—at least eight characters long with a capital letter, a number, and a special character. If you’d like, you can change these requirements in your app’s settings. 

Once you’ve configured your new user, click the checkmark to save their information. 

Setting up a new table for client requests

Next, we need to create a table where client requests will be stored. This table serves as the foundation for your entire client request system and establishes the structure for how information flows between clients and your team.

Creating a new table

In your Knack builder, go to Tables and click "Add a Table." 

The tasks "Table" open with "Add a Table" being clicked

While you could import data or start from a template, we’ll choose "Blank Table" to start from scratch and add fields one by one.

"Blank Table" button being clicked in Knack

Give your table a name. We’ll call ours “Client requests”. 

A new Blank Table popup opened to create a Table named "Client Requests"

Then, you’ll see a new table with no records. When you click on the “Fields” tab, you’ll see the only field currently in the table –  “Name”.

The newly created "Client requests" table

Customizing a table in Knack

You can edit the default “name” field, and add any fields you’d like to your table in Knack. We’ll begin by renaming the “Name” field. 

To edit a field in a Knack table, just click on it. Then, you can reconfigure it however you’d like. 

Name Settings popup with "Request summary" as the name with "Save" highlighted

In our example, we’ll change the field’s name to “Request summary”. Click save to commit your changes. 

To add a new field, click on “Add field”. 

Client requests table with "Add Field" clicked

Then, give your field a name and choose a field type. We’ll add a Rich Text field called "Request Details" where clients can explain their needs in depth. 

Add Field menu popped up with the Data Type dropdown open and "Rich Text" highlightedg

A critical field to include is a Multiple Choice field for "Request Status." This becomes the central tracking mechanism for where each request stands in your workflow. 

The Add Field menu opened and the Multiple Choice data selections filled out and ready to be saved.

Include statuses that reflect your process: "Pending Review" for new submissions, "Approved" for requests you've accepted, "In Progress" for active work, "Completed" for finished requests, and "Declined" for those you can't accommodate. You can customize these options to match your specific workflow.

Creating connections in Knack tables

One of the most powerful features of Knack tables comes from creating connections between your data. These relationships transform separate lists of information into a cohesive system. For our client portal, we’re going to set up two crucial connections–one to Clients, and one to Projects. 

To add a connection to a Knack table, add a new field and choose “Connection” as the field type. 

Client field pop up open connecting "Client requests" with "Clients"

Choose the table (or user role) you want to connect to, and set the relationship type. We want each client request to connect to only one client, and we want each client to be able to connect to several requests. 

You can set up “one-to-one”, “one-to-many”, or “many-to-many” relationships in any configuration that works for your data. 

Once your field is all set, click Save to add it to your table.

Client requests fields being displayed

Connecting the Projects table to Clients

Our data is nearly ready to go. We just need to make one more change before building the frontend interface. 

Open up the Projects table, and add a connection to Clients. 

The Client field menu open connecting it to "Clients" and "Projects"

With these fields and connections in place, our Client Requests table is ready to store all the data we need. This carefully structured table will serve as the central hub connecting your clients to your internal project management system.

Build Knack apps and automations with XRay.Tech

Need help building automated systems for your company but don't have the time to do it yourself? XRay specializes in creating custom solutions with Knack and dozens of other no-code platforms. 

We've helped businesses of all sizes build powerful tools that save thousands of hours of manual work.

Schedule a free 15-minute consultation to get started. We'll discuss your specific challenges, and determine your best options for automating and optimizing your company’s workflows. 

Building a client-facing interface in Knack

Now that we have our backend structure in place, let's create pages where clients can log in, view their projects, and submit new requests. The interface design is crucial for client adoption—it needs to be intuitive, focused, and professionally presented.

Requests overview menu open

Creating a page in Knack

First, let's create a page where clients can log in, view their projects and related requests, and submit new ones.

Go to Pages and click "Add Page." Name it something like "Requests Overview". 

Enable "Protect Page" to restrict access, then select only the "Clients" user role to have permission to view this page. 

Add Page menu open named "Requests overview" accessible by "Clients" roles

With all your settings in place, click “Add page”. 

One of Knack's convenient features is that when you create a new protected page, it automatically generates a login screen, so you don't need to build that separately.

Requests overview Login page editor open

Adding elements to the page

The client requests interface should provide immediate access to the most important information. To that end, we'll add two main elements to this page that together give clients a complete picture of their relationship with your company–a table with all of the client’s projects, and a table with their requests. 

First, we'll add a table showing projects associated with the logged-in client. Click the "+" button to add an element to your page.

New Section element in "Requests overview" with "Element" button clicked

Then, choose your element type. For this example, we’ll select "Table" under Record elements. 

"Add an Element" menu with "Table" selected

Choose the Projects table as your data source.

Source Table popup menu open with the "Projects" table selected

The magic happens in the display settings—under "Display Records," select "Only show records linked to the logged-in client." 

Select Records menu to display what the element will show with "Projects connected to the logged-in Client" selected

This crucial setting ensures data privacy, showing clients only their own projects without requiring any coding or complex filtering logic. 

After selecting the records to display, Knack will show you a summary of the element you’ve configured. Review the settings, and click “Add Element” to finalize. 

Confirm the addition of the element

Adding an action: view record details

To make this Projects table interactive, we need to add an action that allows clients to drill down into details. With the projects table selected, click on Actions. 

The new element added to the table with the "Actions" settings on the right being selected

Then choose “View Record Details” as the action.

Requests overview "Projects table selected with "View record details" highlighted

This creates a linked page where clients can see more information about each project. To view this page, save your changes, then click on the “Project details” column in the table element.

Requests overview with "Project Details" selected

Then, click on the link under “linked to”.

Adding a form to create new records

On the linked project details page, we'll create a useful enhancement—a form element that allows clients to submit requests related to specific projects. 

Add a new element by clicking on the plus (+) button at the bottom of the page. 

Choose “Form” as the type. 

Set the form to create new records, and select the table that it should connect to – “Client requests”. 

"Add a Form" menu open connecting "Client reqeusts"

In the “Select Records” window, we can make sure that the newly created requests are attached to the client that owns the currently selected project. 

Confirm your settings and add the element to your page. You should now see a form on the page like this: 

"Project Details" element selected with Form Settings panel open on the right

Adding another table: client requests

Now, let's add the second major element—a table displaying the client's active requests. 

Back on the main Requests Overview page, add another table element, select the Client Requests table as the data source, and again choose to only show records linked to the logged-in client. 

Selected Records menu with "Client requests connected to the logged-in Client" as the selected records

Filtering records in a table

To make this table more useful, add a filter under "Fields and Display Rules" so it only shows active requests: "Status is not Completed." This keeps the interface focused on what still needs attention rather than cluttering it with completed items.

With the table element selected, click on “Source Filters”. 

The "Client requests" table element selected in "Requests overview" with the "Fields and Display Rules" open

Add a new source filter.

Source Filters popup open with the Source Filters button clicked

Set the filter to only show records where the “Request status” field is not “Closed”. Click “Apply” to save your filter, then save your changes. 

Source Filters popup open showing records for "Request status" not "Closed"

Testing the client portal

To test the client portal and make sure everything is laid out as designed, go over to “Tables” to prepare some test records. 

Ensure that you have at least one project connected to your test client we created earlier.

Projects records open with "Matt Jay" client selected

In the “Client Requests” table, add a new request connected to the same client and project. 

Client requests table open to "Matt Jay"'s record

Open your live app and log in as a client. You should see both tables: one showing a project, and the other showing requests. Click “view” to see the project details. 

"Requests overview" open with "Project Details" view button highlighted

Try submitting a new request through the form.

An overview of the Project Requests to be submitted

You should see your new request in the table. 

A "Requests overview" of the Projects with "Projects" and "Client Requests" visible

Creating an internal interface for client requests

Your team will need a way to view and manage client requests efficiently, so we’ll also create a page for Project Managers to view client requests. This page will be very similar to the one we just built, so we’ll just go over the steps briefly.

1. Add a new page. We’ll call ours “View Requests - Project Managers”. Restrict the page to the “Project Managers” user role.

Add Page box popped up to create a "View Requests - Project Managers" allowing "Project Managers" with "Add Page" highlighted

2. Add a table element to display Client Requests. Only show requests connected to the logged-in Project Manager’s projects. 

Select Records menu to connect "Client requests connected to the same Project connected to the logged in Project Manager"

3. Add actions to view and edit record details. 

"Client requests" table selected in the "View Requests - Project Managers" page

When you’re all set, save your changes and open up the live page to check it out. 

View Requests- Project Managers page filter page opened

Creating an automation-ready client portal

Building a client portal in Knack demonstrates the platform's versatility. Without writing a single line of code, you've created a system that provides clients with self-service access to submit requests and view project information, while also giving your team a structured way to manage client interactions. 

In the third and final post in this series, we’ll show you how to add automated alerts to your Knack app with Knack’s built-in automation tools. 

This is the second in our series of Knack tutorials. In our next post, we'll explore how to leverage Knack's automation and integration capabilities to connect your app with your broader software ecosystem. Check it out here.

Need help building custom Knack solutions for your business? Schedule a free consultation call with our team of no-code experts.

By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts. View our Privacy Policy for more information.