Blog

Track Meeting Rounds per Sales Rep in Quickbase with Connected Records

Several reps working the same requirement, each with their own series of meetings? Add an Engagements table between Requirements and Meetings, count the meetings, and let an Add Meeting button fill in the next round automatically.

Requirements, Engagements and Meetings: tracking meeting rounds in Quickbase

A question came up in the Quickbase community about tracking sales meetings (original thread here). Each requirement gets several meetings per sales rep, more than one rep can work the same requirement, and right now the team types the meeting "round" by hand and pastes links to earlier meetings into the new one.

That works until it doesn't. Someone forgets a round, the links go stale, and nobody can tell which rep's Round 2 they're looking at. The fix is one extra table in the middle. I built this in a sandbox app to check every step, and the field IDs and formulas below come from that build.

Three connected tables: Requirements, Engagements and Meetings, with example records

The idea: put an Engagement between Requirement and Meeting

The instinct is to hang Meetings straight off Requirements. The trouble is that a requirement is shared by several reps, so "Round 3 of Warehouse barcode scanners" doesn't mean anything until you also know whose Round 3 it is.

So add a table for the pairing:

  • Requirements: what the customer needs (one record per requirement).
  • Engagements: one sales rep working one requirement. Warehouse barcode scanners + Sarah Lee is one Engagement. Warehouse barcode scanners + Mike Chen is another.
  • Meetings: each meeting belongs to exactly one Engagement and has its own agenda, attendees, meeting link, outcome and round number.

Now "Round 3" always means "the third meeting in Sarah's engagement on the scanners requirement", and Quickbase can count the rounds for you.

Step 1: Create the three tables

In my demo the tables are called Requirements, Engagements and Meetings. Use whatever names fit your app. Here are the fields I used:

Requirements

  • Requirement Name (Text)
  • Due Date (Date)

Engagements

  • Sales Rep (Text in the demo; in a real app use a User field, or a relationship to a Sales Reps table if you have one)
  • Engagement Status (Text or multiple choice)

Meetings

  • Meeting Date (Date)
  • Round (Numeric)
  • Agenda (Multi-line text)
  • Attendees (Text)
  • Meeting Link (URL)
  • Outcome (Multi-line text)

Step 2: Connect them

Both relationships are ordinary one-to-many relationships. Go to the child table's settings, open Table-to-table relationships, and add a relationship to the parent.

  1. Requirements → Engagements. One requirement has many engagements. Quickbase adds a Related Requirement field to Engagements. I added Requirement Name as a lookup so it shows on the Engagement.
  2. Engagements → Meetings. One engagement has many meetings. Quickbase adds a Related Engagement field to Meetings. I added lookups for Sales Rep and Requirement Name, so every meeting record shows whose it is and what it's for without anyone typing it.

A small extra that helps: add a formula-text field on Engagements called Engagement Name:

[Requirement Name] & " - " & [Sales Rep]

Then, in the Engagements → Meetings relationship, set it as the proxy field for Related Engagement, so the drop-down on a Meeting shows "Warehouse barcode scanners - Sarah Lee" and not a bare record number.

Step 3: Count the meetings with a summary field

On the Engagements → Meetings relationship, add a summary field:

  • # of Meetings: Count of Meetings.

In my sandbox the three engagements came out exactly as expected:

Engagement# of Meetings
Warehouse barcode scanners - Sarah Lee3
Warehouse barcode scanners - Mike Chen1
Fleet GPS tracking - Sarah Lee2

Step 4: Make "Add Meeting" fill in the next round

This is where the manual round-tracking goes away.

When you create the Engagements → Meetings relationship, Quickbase already adds an "Add Meeting" formula-URL field to Engagements. You don't need to build a new button from scratch. Open that field and you'll see something like:

URLRoot() & "db/" & [_DBID_BLOG_DEMO___MEETINGS] & "?a=API_GenAddRecordForm&_fid_11=" & URLEncode ([Record ID#])& "&z=" & Rurl()

That already pre-fills the Related Engagement (field 11 in my app). Change it to also pre-fill Round with the count plus one:

URLRoot() & "db/" & [_DBID_BLOG_DEMO___MEETINGS] & "?a=API_GenAddRecordForm"
& "&_fid_11=" & URLEncode([Record ID#])
& "&_fid_14=" & URLEncode(ToText([# of Meetings] + 1))
& "&z=" & Rurl()

In my demo, field 11 is Related Engagement and field 14 is Round. Yours will almost certainly be different, so check them under the Meetings table's Fields list (turn on the field ID column, or open each field and look at its properties).

The formula saved without errors, and on Sarah's scanners engagement (3 meetings so far) it produced:

https://webapp.quickbase.com/db/bwf76irf7?a=API_GenAddRecordForm&_fid_11=1&_fid_14=4&z=...

So clicking Add Meeting opens a new Meeting form that's already linked to the right engagement and set to Round 4. Mike's engagement opens at Round 2, and a brand-new engagement with no meetings opens at Round 1 (the count is 0, plus one). It works the same whether an engagement has 1 meeting or 10.

A few notes from testing:

  • Keep the &z= & Rurl() part. Quickbase includes it in the generated field so that saving the new meeting takes the user back to the Engagement they came from.
  • Wrap values in URLEncode(). It isn't strictly needed for numbers, but it's a good habit, and it saves you trouble if you later pre-fill a text field.
  • Count vs. highest round. Count + 1 is fine as long as meetings don't get deleted. If someone deletes Round 2 out of 3, the count drops to 2 and the next new meeting comes up as Round 3 again. If that might happen in your app, add a second summary field, Highest Round (Maximum of Round), and use [Highest Round] + 1 instead. I tested both in the sandbox and they give the same numbers when nothing has been deleted.
  • People can still change the Round on the form if they need to. The button only sets the starting value.

Finding your table alias (the DBID part)

The [_DBID_BLOG_DEMO___MEETINGS] bit is the table's alias. Quickbase builds it from the table name: upper-case, with spaces and punctuation turned into underscores. My table was named "Blog Demo - Meetings", so the alias became _DBID_BLOG_DEMO___MEETINGS (three underscores, from the space-dash-space). A table called just "Meetings" would usually be _DBID_MEETINGS.

Don't guess yours. Two easy ways to look it up:

  • Open the Meetings table's settings and go to Advanced settings. The table alias is listed there.
  • Or open the auto-generated Add Meeting field on Engagements. Quickbase has already written the correct alias into its formula.

Using the alias, and not the raw table ID, means the button keeps working if you copy the app.

Step 5: Show the meetings in order on the Engagement form

The last piece replaces the copy-and-paste links to earlier meetings.

  1. In the Meetings table, create a report called something like Meetings by Round. Columns: Round, Meeting Date, Agenda, Attendees, Meeting Link, Outcome. Sort by Round, ascending.
  2. Open the Engagement form in the form builder. Quickbase usually adds the Meetings report link (it shows up as "Meeting records") when you create the relationship. Set it to display as an embedded report, and point it at your Meetings by Round report.
  3. Put the Add Meeting button right above or next to the embedded report.

Now when Sarah opens her scanners engagement she sees Round 1, 2 and 3 in order, each with its agenda, attendees, outcome and a working meeting link, plus a button that starts Round 4. Nobody has to paste anything.

If you also want an overview per requirement, add a summary on Requirements → Engagements (for example, a count of engagements, or a total of # of Meetings) and embed the Engagements report on the Requirement form.

Quick checklist

  • Three tables: Requirements → Engagements → Meetings.
  • An Engagement is one rep plus one requirement.
  • Summary field on Engagements: # of Meetings (or Highest Round).
  • Edit the auto-created Add Meeting formula so it pre-fills Round with [# of Meetings] + 1, using your field IDs and table alias.
  • Embedded "Meetings by Round" report on the Engagement form.

That's the whole build. The data model does the round-tracking, and the team just clicks Add Meeting.