--- title: "Configure a subtable" slug: "courier-subtable-configurator-configure" updated: 2026-10-09T18:19:11Z published: 2026-10-09T18:19:11Z canonical: "help.quickbase.com/courier-subtable-configurator-configure" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.quickbase.com/llms.txt > Use this file to discover all available pages before exploring further. # Configure a subtable This article walks through every settings tab in the Courier Subtable Configurator, in the order they appear: **Table**, **Filter**, **Fields**, **Column Order**, **Totaling**, **Sorting and Grouping**, and **Formatting**. It ends with a worked example that builds an order line-items table for a shipping email. To open the configurator, see [Courier Subtable Configurator overview](https://help.quickbase.com/quickbase-extensions/docs/en/courier-subtable-configurator-overview). *Available to: all roles with the QB Courier extension.* ## Recommended order of work 1. On the **Table** tab, enter a name, pick the table, and select **Save**. The first save creates the subtable. 2. Check the **Filter** tab. The configurator builds a default filter for you; adjust it if you need to, then **Save**. 3. On the **Fields** tab, select your columns and **Save**. The **Column Order** and **Totaling** tabs only list fields that are *saved* as selected, so save the Fields tab before you go to them. 4. Set up the remaining tabs, saving each before you leave it. 5. Preview with **Simulate Subtable**, then send a Courier test email. See [Simulate and history](https://help.quickbase.com/quickbase-extensions/docs/en/courier-subtable-configurator-simulate-history). You can't leave a tab with unsaved changes: select **Save** or **Cancel** first. **Save** (or **Ctrl+S**) saves every tab at once. ## Table tab Under the heading **Subtable Selection**, you name the subtable and choose which table its rows come from. | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Master Table** | The parent table: the master table of the Courier configuration the subtable is attached to. Each email is about one record in this table. Shown in italics; you can't change it here. | Read-only | | **Configuration Name** | The subtable's name. This is the name you see when you add the subtable to an email, so make it descriptive (for example, *Order line items*). | Text. Required. | | **Selected Subtable** | The table whose records become the rows of the table, usually a child of the master table. | Starts at **Select a Table**. Lists every table in the app, including the master table. Required. | When you pick a **Selected Subtable**, the configurator immediately: - Loads that table's fields for the other tabs. - Builds a **default filter**: *the child table's reference field to the master table* is equal to *the master table's key field (parent)*. That keeps each email to its own record's children. If the two tables aren't related, the filter starts empty and you need to build one. - Clears any sort, group, column order, and totals you had set for a previous table. ## Filter tab Under the heading **Build a Filter**, you choose which records from the selected table appear in the email. A filter is required. ### The query builder The builder works like a Quickbase report filter: - Each **set** of conditions starts with a dropdown, **all** or **any**, followed by **of these conditions are true**. Between conditions, the builder shows **and** (for **all**) or **or** (for **any**). - Each **condition** has four parts: a field (search box with the placeholder **Select a field**), an operator, what to compare against, and a value or field. - Small icon buttons next to each condition add or remove a condition, and insert or remove a nested set of conditions. You can nest sets up to 3 levels deep. - Removing a whole set asks you to confirm: the window **Delete entire set?** says *Are you sure you want to delete this entire set of filters?* Select **Delete** to remove it, or **Cancel** (or the **X**) to keep it. ### Operators The operators you can pick depend on the field's type: | **Field type** | **Operators** | | --- | --- | | Text, multi-line text, multiple choice, rich text | **contains**, **does not contain**, **is equal to**, **is not equal to**, **starts with**, **does not start with**, **wildcard match**, **does not wildcard match**, **is less than**, **is less than or equal**, **is greater than**, **is greater than or equal** | | Multi-select text | **includes**, **does not include**, **is equal to**, **is not equal to** | | Numeric, Record ID#, currency, percent, rating, duration | Equal / not equal, less than (or equal), greater than (or equal), then contains, starts with, and wildcard pairs | | Date, date/time | **is equal to**, **is not equal to**, **is after**, **is on or after**, **is before**, **is on or before**, **is during**, **is not during** | | Checkbox | **is equal to**, **is not equal to** | | Time of day, phone, email, URL, predecessor | Contains, equal, starts with, wildcard, after, before, less than, greater than | | Address | Contains, equal, wildcard | | User | **is equal to**, **is not equal to**, contains, starts with, wildcard | | List-user | **contains**, **is equal to**, **is not equal to**, **includes**, **does not include**, wildcard | | File attachment | **filename contains**, **filename does not contain**, **filename is equal to**, **filename is not equal to**, **filename starts with**, **filename does not start with** | ### What to compare against | **Option** | **What it compares with** | | --- | --- | | **the value** | A fixed value you type, for example *Shipped*. | | **the value in the field** | Another field on the same child record. | | **the value in the field (parent)** | A field on the **master** record the email is about. When Courier sends, it replaces this with the value from the record being emailed. This is what ties the table to each email, for example *Related Order* **is equal to** **the value in the field (parent)** *Record ID#*. | | Date options | **the date**, **day(s) in the past**, **yesterday**, **today**, **tomorrow**, **day(s) in the future**, **the date in the field**, **the date in the field (parent)**. | | With **is during** / **is not during** | **the previous**, **the current**, or **the next**, then **day**, **week**, **month**, **quarter**, **fiscal quarter**, **year**, or **fiscal year**. | | Checkbox options | **checked**, or **the value in the field**. | > [!NOTE] > Note > > Courier matches a **(parent)** field by its **name**, exactly as written, including capital letters and spaces. If you use the subtable in another Courier configuration, that configuration's master table needs a field with exactly the same name. Don't use commas (`,`) or tildes (`~`) in typed filter values. ### Record options Below the query builder are three options that limit which matching records are included: | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Skip Records** | Leaves out this many records from the start of the (sorted) results. | Whole number, 0 or more. Blank = skip none. | | **Max Records** | Includes at most this many records. Combine with sorting for "top 5" or "latest 10" lists. | Whole number, 1 or more. Blank = no limit. | | **Only New Records** | Includes only records Quickbase marks as new or updated. | Checkbox. Off by default. | Courier applies these when it sends the email. ## Fields tab Under the heading **Select Fields for the Table**, a grid lists every field in the selected table. Each selected field becomes a column. At least one field is required. | **Column** | **What it does** | **Values** | | --- | --- | --- | | **Selected** | Check to include the field as a column. Checking a field sets its width to 10 and moves it to the top with the other selected fields. Unchecking clears its width. | Checkbox | | **Field ID** | The field's ID in Quickbase. | Read-only | | **Field Name** | The field's name in Quickbase. This is the column header unless you override it. | Read-only | | **Type** | Controls totals only. Only **Number**, **Currency**, and **Number with Decimal** columns can be totaled; Currency totals are shown as dollars and cents (for example, $1,250.00). Type doesn't change how values look in the email: every value appears as Quickbase returns it for the field, whatever Type you pick. For example, **Image** doesn't show the picture, and **HTML** has no effect on how a value is displayed. | **Number**, **Text**, **Currency**, **Date**, **Percent**, **Number with Decimal**, **Checkbox**, **Image**, **HTML**. Defaults from the Quickbase field type: numeric and Record ID# → Number; text → Text; currency → Currency; date and date/time → Date; percent → Percent; checkbox → Checkbox; rich text → HTML; anything else → Text. | | **Width** | The column's width as a **percentage** of the table's width. | Number, 1 or more. Default 10. The configurator doesn't check that widths add up to 100. | | **Advanced Settings** | Opens **Column Header Properties** for the field (see below). | Button | Only selected rows can be edited; **Type**, **Width**, and **Advanced Settings** do nothing on an unselected row. Click column headings to sort the grid; it starts sorted by **Selected**, then **Field Name** A to Z. ### Column Header Properties Select **Advanced Settings** on a selected row to open the **Column Header Properties** window: | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Override Column Label** | Check it to show a text box, and type the header you want instead of the field name (for example, *Qty* instead of *Quantity Ordered*). | Checkbox + text. Don't use `:` `.` `,` or `~` in the label. | | **Data Justification** | Aligns the values in the column. | **Left** (default), **Center**, **Right** | | **Header Justification** | Aligns the column's header. | **Left**, **Center** (default), **Right** | Select **Apply** to keep the changes, or **Cancel** (or press **Esc**) to close without them. Then **Save** the tab. ## Column Order tab Under the heading **Table Column Ordering**, a list shows your saved selected fields in the order they appear left to right. Select a field and use the Move Up and Move Down buttons, or drag it, to reorder. A field you selected but haven't saved yet appears here after you save the Fields tab. Under **Column Header Options**, set colors for the whole header row: | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Color Background** | Check it to show **Background Color**, the header row's fill color. | Checkbox + color picker (hex color) | | **Color Font** | Check it to show **Font Color**, the header text color. | Checkbox + color picker (hex color) | ## Totaling tab Under the heading **Totaling**, choose which columns get a total. The list on the left shows your saved selected fields; use the arrow buttons between the lists to move fields to the list on the right to total them, or back to stop totaling them. - Courier adds one **grand total row** at the bottom of the table, with no label. There are no subtotals per group. - Only columns whose **Type** is **Number**, **Currency**, or **Number with Decimal** are summed. Totals for other types stay blank. ## Sorting and Grouping tab ### Sorting Options Two lists: - **Available Fields** lists every field in the table twice, as * (Asc)* (ascending) and * (Desc)* (descending). A sort field doesn't have to be a displayed column. - **Sort Fields** is the sort order: the first field is the primary sort, the next breaks ties, and so on. Move fields between the lists with the arrow buttons, and reorder with Move Up, Move Down, or drag. You can't add a field in both directions; you'll see *You cannot sort by the same field twice.* ### Grouping Options Grouping splits the rows into groups by one field's value. Each time the value changes, Courier adds a full-width group row showing the value, then the records in that group. Courier sorts by the group field first, then by your **Sort Fields**. | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Field to Group By** | The field to group on. One group field per subtable. Pick a field that is also one of your columns (selected on the **Fields** tab). The settings below appear once you pick one. | **Select a Field** (no grouping, default) or any field | | **Attributes** | Text style of the group rows. | Any of **Bold**, **Italic**, **Underline** | | **Align** | Alignment of the group value in its row. | **Left** (default), **Center**, **Right** | | **Group Order** | Order of the groups. | **Ascending** (default), **Descending** | | **Color Background?** | Check it to show **Background Color** for the group rows. | Checkbox + color picker | | **Color Font?** | Check it to show **Font Color** for the group rows. | Checkbox + color picker | ## Formatting tab ### Subtable Formatting Options | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Table Alignment** | Where the table sits across the email. | **Left** (default), **Center**, **Right** | | **Width (%)** | The table's width as a percentage of the email body. Column widths on the Fields tab are percentages of this. | 0.1 to 100. Blank = no set width. | Tables are always laid out horizontally: one row per record, one column per field. ### Table Border Options | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Hide Table Border** | Shows the table with no borders at all. Checking it unchecks and turns off **Display Table Outline**. | Checkbox. Off by default (the table has a simple thin border). | | **Display Table Outline** | Gives the table a custom outline. Check it to show the three settings below. | Checkbox. Off unless you've saved an outline color. | | **Outline Color** | The outline's color. | Color picker | | **Outline Style** | The outline's line style. | **Solid** (default), **Dotted**, **Dashed**, **Double**, **Groove**, **Ridge**, **Inset**, **Outset** | | **Outline Width** | The outline's thickness. | Whole number, 1 or more | ### Row Shading Options | **Setting** | **What it does** | **Values** | | --- | --- | --- | | **Alternate Row Shading** | Shades every other record row light gray to make the table easier to read. The shade is a fixed light gray; it can't be changed. Group rows aren't shaded. | Checkbox. Off by default. | ## Limits - An email table shows at most **15 columns**. If more fields are selected, only the first 15 in **Column Order** appear, and the configurator doesn't warn you. Select 15 fields or fewer. - One group field, and one grand total row (no group subtotals). Group only by a field that is also a column. - If no records match the filter, the email shows a single row reading *Detail Records not found*, unless the Courier configuration is set not to display the table when there's no data. - Values appear as Quickbase returns them for the field. ## Worked example: order line items in a shipping email Goal: each shipping-confirmation email lists the items in that order, sorted by item name, with quantity, price, and a total. Setup in Quickbase: an **Orders** table (master table of a Courier configuration named *Shipping confirmation*) and an **Order Line Items** table with a **Related Order** reference field and the fields **Item**, **Quantity**, **Unit Price**, **Line Total**, and **Status**. 1. Open **Email Message SubTables** from the QB Courier extension page and select **Create Email Subtable**. In **Select a Courier Configuration**, pick *Shipping confirmation* and select **Continue**. 2. **Table** tab: **Master Table** shows *Orders*. Enter **Configuration Name** *Order line items*, set **Selected Subtable** to *Order Line Items*, and select **Save**. 3. **Filter** tab: the default filter already reads **all** **of these conditions are true**, *Related Order* **is equal to** **the value in the field (parent)** *Record ID#*. Add a second condition to leave out cancelled lines: *Status* **is not equal to** **the value** *Cancelled*. Select **Save**. 4. **Fields** tab: select *Item* (Text, width 40), *Quantity* (Number, width 15), *Unit Price* (Currency, width 20), and *Line Total* (Currency, width 25). Use **Advanced Settings** to set **Data Justification** to **Right** for the three number columns, and to override *Quantity*'s label to *Qty*. Select **Save**. 5. **Column Order** tab: arrange *Item*, *Quantity*, *Unit Price*, *Line Total*. Check **Color Background** and pick a dark blue; check **Color Font** and pick white. Select **Save**. 6. **Totaling** tab: move *Line Total* to the list on the right. Select **Save**. 7. **Sorting and Grouping** tab: move *Item (Asc)* to **Sort Fields**. Leave **Field to Group By** at **Select a Field**. Select **Save**. 8. **Formatting** tab: set **Width (%)** to *80* and check **Alternate Row Shading**. Select **Save**. 9. Select the Simulate icon to check the layout, then add the subtable to the *Shipping confirmation* email and send a test. See [Add a subtable to a Courier email](https://help.quickbase.com/quickbase-extensions/docs/en/courier-subtable-configurator-add-to-email). Each email now shows a four-column table (*Item*, *Qty*, *Unit Price*, *Line Total*) with a blue header, shaded alternate rows, and the order's total under *Line Total*. If something goes wrong, see [Courier Subtable Configurator messages and troubleshooting](https://help.quickbase.com/quickbase-extensions/docs/en/courier-subtable-configurator-messages). Need help? Submit a [technical support case](https://help.quickbase.com/docs/get-help-from-quickbase-technical-support).