Get Started
How Knack Works
Design Your Database
Manage Your Records
Build Your Live Application
View and Share Your App
Do More With Knack
Learn More
Workflow
Connect Related Data
Users & Access
Calculations & Logic
Emails & Notifications
Search & Queries
Reporting & Dashboards
E-Commerce & Payments
Builder Guide
Builder Basics
Tables & Connections
Plan Your Connections: Complex Example
Working With Tables
About Connections
Plan Your Connections: Simple Example
Connection Types
Plan Your Tables
Use Connections in Your App
Connecting Records Together
Special Tables
Connections: Troubleshooting & FAQs
Fields
Numeric Equation Functions
Field Types
Validation Rules
Date Equation Settings
Numeric Equation Settings
Formulas
Equations
Conditional Rules
Text Formulas
About Fields
Text Formula Functions
Records
CSV Format Guide for Importing
Delete Records
Import Records
Export Records
Importing Connections
Working with Records
Batch Updates
Pages
Page Menu
User Pages
Deleting a Page That's Being Linked to
Working with Pages
Navigating the Page Preview
Printing Pages & PDFs
Page Rules
Views
Grid Column Settings
Maps
Source: Which Records Will the View Display
Calendars
Grid Settings
Details
Menus
Using Action Links
Reports
Lists
Rich Text
Combining Fields from Connected Records in Views
Using Record Rules
Forms
Using Display Rules
About Views
Using Submit Rules
Searches
Grids
Users & Logins
Users and the Page Menu
Manage Roles & Permissions
Single Sign-On with Google, Facebook, Twitter, and Custom
Manage User Records
Logins and Registrations
About Users
Live App Security Settings: HIPAA Plans
Live App Security Settings
Tasks & Emails
E-Commerce
App Customization
FAQ
Support
Accounts
How do I cancel my Knack account?
I'm over the storage limit for my account. How do I add more storage or get under the limit?
Need account access or to transfer account access because account owner or colleague left the company
I'm over the record limit for my account. How do I add more records or get under the limit?
Is there an option to pay via invoice, check, wire transfer, or something other than a credit card?
How do I freeze or pause my Knack account?
Where can I find a copy of my receipt or invoice?
How do I add more API calls to my account?
Managing Apps
How do I change the favicon for my app?
How do I backup or export my apps and data?
How can I track what users are doing in my app?
How do I remove the "Powered by Knack" logo at the bottom of my app?
How do I give Builder access to a colleague or developer for one of my apps?
How do I white label my app?
How do I copy an app from my account to another account?
App Building
How do I show multiple dates on a calendar?
How do I add a logo to my app?
How do I find the most recent date from a connected table?
How do I create a field that always shows today's date?
Can I share or connect data between apps?
How do I create an "If, Then" or conditional equation?
How do I merge my apps, or copy pages, tables, or other app elements between my apps?
The menu isn't showing for my app on mobile devices. How do I fix that?
Is there a way to have new users be automatically logged-in after they register?
How do I bulk upload or import multiple files?
How do I move or copy fields or data from one table to another?
How can I show a customer's payment history if I'm collecting payments through my Knack app and through cash or check?
Is there a way to add a display rule to multiple columns at one time instead of having to update each column individually?
Do I need a separate user role table for my Vendors, Customers, Employees, Contacts, etc.?
How can I set up my app so users see only their own data?
Can I combine two date fields into a single date field? For example, combining a start and end date into a single field?
Does Knack offer a service for building apps or have developers I can hire?
How do I bulk upload or import multiple images?
How can I change the color of something in my app?
Is it possible to display more than 100 records at a time on a grid, list, or search view?
Can I?
Can I migrate or transfer data from Zoho, Quickbase, or TrackVia?
Can I add chat or messaging to my app?
Can I sell my Knack apps?
Can I use Knack on mobile devices?
Do you have a sandbox or developer environment?
Can I send SMS or text messages using Knack?
Can I integrate Knack with other data, products, and services?
Can I create invoices and accept payments?
Can I have an app in a language besides English?
Can I email PDFs or other attachments to users with Knack?
Can I add Google Analytics to my Knack app?
Can I migrate my Access, Filemaker, SQL, or other databases?
Can I prototype for others?
Can I customize the look and feel of my Knack pages?
Can I use a barcode or credit card scanner with Knack?
Other
How secure is Knack?
Does the signature captured through a signature field constitute a legally binding signature?
Does Knack offer a partner program?
How does Knack work on mobile devices? Is it mobile-friendly? Can users download my apps?
Is Knack GDPR compliant?
Storing sensitive data (credit cards, social security numbers, etc.)
Will Knack sign an NDA (Non-Disclosure Agreement)?
Which browsers do you support?
How do I batch download all of the images and files In my app?
Imports
I'm seeing an odd character when importing data. How can I get rid of it?
How do I update existing data using an import?
My import is failing or getting stuck. What do I do?
Can I undo or reverse an import?
I'm having trouble importing into a specific type of field. What can I do?
Some of my fields aren't importing correctly. How can I fix that?
I'm having trouble importing into a connection field. What can I do?
Can I import something other than data? Like tables, pages, views, etc?
My import is taking a long time. Can you take a look?
I'm getting an error when importing. What do I do?
Do the validation rules on fields trigger when importing data?
Can I schedule or automate imports?
Can my users import data from the live app, instead of going through the builder/back-end?
I am importing data for the first time. How do I do that?
Can I import data into more than one table at the same time?
How To Guides
Add Functionality to Your Live App
How To Create Discount Codes
Create an Add To Favorites Feature
How to Access Private Records Without a Login
Accept Payments in a Live App
Manage Your Records
Use an Edit Form to Create Records If They Don't Exist
Track Which User Last Updated a Record
Copy a Record Using Record Rules
Track When Records are Created and Updated
Create a Version History for Records
Use Zapier to Insert Connected Records
Work with Connected Records
How to Show Multiple Fields in Your Connection Drop-Down
Showing Parent-Child Records in the Live App
Forms
How to Create Dynamic Dropdowns in Forms
Add Read-Only Fields to a Form
How to Change the Layout of Forms
Create a Multi-Part Form
How to Allow Users to Add New Options in Forms
How to Add Instructions to a Form
How to Customize the Text on a Submit Button
How to Automatically Capture a User’s Location on a Form
How to Use URL Variables to Pre-Populate a Form
Customize Views
How to Add a Map to a Details View
How to Add Connection Links to Views
How to Add Inline Editing to a Grid
Create a Print-Friendly Invoice Page
How to Click on an Image to Go to Another Page
How to Add Groupings to a Grid
Users & Logins
Force Users to Reset Their Passwords
Save a User's Payment Method
Create a Single Login Page for Multiple User Roles
Add Read-Only Access For Users
Show Records Connected To The Logged-in User's Company Or Other Group
Show Records Connected to the Logged-in User
Create an Admin User Role to View All Records
Workflow & Automations
Add a Pipeline to Your App
Create a Registration Form with Limited Availability
Add Stages to Your App
Store Multiple Images or Files for Individual Records
Use Multiple Image Sources for a Single Image Field
Create a Button or Link that Updates a Field to a Custom Value
Notify a User That an Item is Ready for Review
Add Assignments to Your App
Using Mailchimp
Approve New Records Before Displaying Them
Workflow Tools
Add Notification & Reminder Emails to Your App
Add Status Indicators to Your App
Logic, Equations & Formulas
Start an Auto Increment Field from Any Number
Display a Message When a Deadline is Approaching
Generate Simple Numeric Barcodes Automatically
How to Set a Random ID
Calculate Age in Years from a Birthday
How To Number Line Items
Show Upcoming Birthdays
How to Extract the Start and End Dates from a Date Field
How to Display Multiple Date Formats Using a Single Date Field
Reports, Queries, and Summaries
App Walkthroughs
Build an Inventory Manager App
Build a Quiz App
Build a Warehouse Manager App
Build a Member Directory
Build an Orders App
Build a Map Directory or Store Locator App
Images & Files
Manage Your Account
Manage Your Account
About Knack Accounts
Account Plans and Billing
Managing Your Apps
Managing Your Account Settings
Sharing Apps with Shared Builders
App Settings: Map Provider
Script Attack Protection: Whitelisted Custom Code Elements and Attributes
Script Attack Protection: Protected Areas
Security & Infrastructure
Security Best Practices
Knack Status
Data Locations
Builder Security Settings for All Knack Plans
Builder Two-Factor Authentication
Performance
Table of Contents
- All Categories
- Builder Guide
- Tables & Connections
- Special Tables
Special Tables
Updated
by Lesley
In the following sections, we’ll cover common workflows and functionality you will need to consider as you group your data into tables.
The special tables covered in this guide are:
- Category Tables: the records in this table represent categories used in other tables
- Attachment Tables: attach multiple files to a project or assign multiple contacts to a company
- Connector Tables: associate different tables with contextual data, like the quantity of a product in an order’s line item
- Movement Tables: track the movement or transfer of people or goods, like employees being transferred to a different office
- Transitional Tables: these tables are not static, as an order moves through the ordering workflow it shifts from a quote to an order
This is a companion article to our How to Plan Your Tables guide.
Category Tables
Category tables will allow you to create a more dynamic “multiple choice” type field in one table by connecting it to another table. The records from that connected table become your dropdown options. When you add the connection field, the records of the category table appear as the choices.
Category tables are used when you want to:
- Create dynamic dropdowns in forms (ex. when preparing a construction estimate, narrow down the product selection by first selecting a product type - lumber, fasteners, paint, etc)
- “Drill down” into different subsets of data (ex. Students can click on different programs to see the classes offered)
- Use the same set of options across multiple tables (ex. the department category is used for both employees and managers user roles)
- Give users the option to edit the categories (Live App users cannot edit multiple choice field options, but they would be able to edit category options. Ex. when you want your admin to be able to add new product categories)
- Perform exportable calculations on the categories (ex. calculate the number of orders at each stage - quote, in production, delivered, invoice)
- Enable group-based access levels or multi-tenancy (ex. location managers can only see and edit the inventory at their location)
Our Product Catalog demo app is a good example of when you’ll need a category table to allow your users to “drill down” through the categories in the Live App.
On the first page, your user can view the categories of products. In this case, it’s pet products.Then, your user selects a category to see the products in that category. If you select the Toys category, you will see our toy products - a chew toy, a rope toy, a frisbee, and so on.
In Knack, these categories are split into their own separate table.
In the Product Catalog demo app, we have tables for Products and Categories. The Category table has only one short text field: Category Name. Each category record represents a category, so in this app our category records are: Toys, Grooming, Food & Treats, etc.
When your Products table connects to your Category table, you’ll have a connection field from which you can select a category for each product in your catalog.
The connection field functions just like a multiple choice drop-down. Whenever you add or edit a product record, you can select a category from the drop down. That is what controls which products show up when your user selects a category in your Live App.

Learn More:
- Creating Dynamic Dropdowns in Forms
- Show Records Connected to Logged-In User’s Company or Other Group
Attachment Tables
There are some scenarios where you want to give your users flexibility in how much data they can append to a given record.
For example, our Real Estate Listings demo app has the flexibility to accommodate a custom number of photos for each Listing. One Listing may only have one or two photos. Another may have 20 photos.

You don’t want to add 1, or 2, or 20 image fields to your Listings table. If you do that, some Listings will have many empty fields and others may not have enough fields for all their images.
Instead, you create a separate table called Images and connect it to your Listings table, allowing you to have only as many photos as you need per product.
Some other examples of when you may want to add one, or multiple, data types to a record:
- A job applicant has many previous jobs
- A project has many files
- A company has many contacts
In these scenarios, we need two tables:
- Applicants and Employment History
- Projects and Files
- Companies and Contacts
You can perform calculations on aggregate data using attachment tables. For example, use a count formula in the Real Estate Listings table to count up the number of photos for each listing.
Learn More:
Connector Tables
Some tables exist to connect two different types of data while providing additional contextual data.
For example, in an ordering app you add products to an order. If you connect Products and Orders directly, you have no way to specify how much of each product you want. So we will add another table in between - Line Items. With that table, you gain a lot of flexibility. You can:
- Specify the quantity of each product that you are adding to each order
- Calculate subtotals for each product that you add to an order
- Perform order-level calculations such as order total and number of products per order
You can see what it looks like to use connector tables in our Quotes and Invoices demo app:

Our Warehouse Manager demo app also shows a good example of a connector table. In this app, we have tables for Warehouses and Products. We want to know how many products exist at each location. However, that data doesn’t actually identify either Warehouses or Products. Remember - each table only contains identifying data. A location is not defined by the number of products stored there, and a single product type can exist in multiple locations.
We need an table that tells us how much of each product exists at each location. Here enters Warehouse Inventory. This table connects Locations and Products by telling us how much of a given product is at a given location at the current time.

Warehouse Inventory tells us exactly how much of each Product exists in each Warehouse.
It also allows us to store additional data relevant to that relationship, such as the Product’s exact location within the Warehouse . How it does that is via a movement table - Stock Transfers. See the next section to learn more.
Learn More:
- Quotes and Invoices Demo App
- How to Build an Orders App
- Warehouse Management Demo App
- How to Build a Warehouse Manager App
- How to Plan Your Connections: Complex Example
Movement Tables
Some tables represent the movement of something, like products between warehouses. In this scenario, not only do we want to track the current location of the product, but we want to keep a history of that products’s movement.
Movement tables are similar to connector tables, in that you can track additional data like the product and quantity. The difference is that movement tables have an origin and a destination.
For example, your company owns multiple warehouses and you want to track the movement of your products through different warehouses. In this case, you will need a Stock Transfer table. This table allows us to track the key data points of the movement:
- Origin
- Destination
- The product being moved
- The quantity of the product being moved
By using this table to track movement, we can use formulas and equations to calculate the current stock of each location in real-time. We would not be able to do this kind of tracking without a movement table.
Other examples of movement:
- An employee being transferred to another team or office
- A truck being moved from one construction site to another
- Whether a book or piece of equipment may be in stock
Learn More:
- Warehouse Management Demo App
- How to Build a Warehouse Manager App
- Equipment Tracker Demo App
- How to Plan Your Connections: Complex Example
Transitional Tables
Sometimes you have data that may seem like it should be split in different tables, but carrying over connected data becomes a challenge.
For example, in an ordering app you may think of creating tables for Orders and Invoices. But they share a lot of connected data - the Line Items. The Line Items are the products added when a quote is generated. It’s important to associate a Quotes’s line items with the ensuing invoice.
In Knack, there’s no way to automatically transfer a Quotes’s line items to the invoice that follows. So, in this case, it’s easier to use just a single Quotes table here.
This Quotes table has a multiple choice field for status - Quote, Invoice, Paid.
When a new order is created, it is in the quote stage. Line items are added, and you just need to change the stage to invoice when the customer accepts the quote.
Using the data source of your views, you can create different views that display the Quotes records that fall into each of the three stages: Quote, Invoice, and Paid.

Another scenario where you can use a transitional table is with an applicant portal. Let’s say you want prospective students to submit applications with essays or other supporting documentation. You want that supporting documentation to carry over to the student’s account when they are accepted and enrolled.
You can create a Students user role with a status field for their stages - Applicant, Rejected, Accepted, Enrolled.
Learn More:
- Quotes and Invoices Demo App
- How to Build an Orders App
- Source: Which Records Will the View Display
- How to Add Stages to Your App
- How to Add Pipelines to Your App