Build one sheet with one row per case, a short list of fixed stages chosen from a dropdown, a due date calculated from the product, and a rule that sends the dentist an email or text when the stage changes to certain values. AI drafts the message wording and the exception notes; the sheet does the triggering.
Printable log templates record that a case exists. They don't tell a dentist where their crown is, and they never say anything unprompted. The design below treats the sheet as the source of truth that moves information out to dentists, so fewer "where's my case?" calls reach the bench.
The columns a case row needs
Every extra column is something a technician has to fill in during a busy day, so each one here has a job. The first eight are filled by the front bench at intake; the rest change as the case moves.
| Column | Purpose | Example entry |
|---|---|---|
| Case ID | Unique number, printed on the tray label | LAB-2417 |
| Dentist account | Links to the contact table | Account 112 |
| Patient reference | The dentist's own reference or initials, not a full name | R.T. / ref 8841 |
| Product | Chosen from a dropdown that matches your price list | Zirconia crown |
| Units | Number of units in the case | 1 |
| Received date | Date the case arrived or the scan landed | Mon 3 Nov |
| Due date | Calculated: received plus the product's turnaround days | Thu 13 Nov |
| Stage | Dropdown of the fixed stage list | Design |
| Stage changed | Timestamp set automatically | 5 Nov, 14:10 |
| Hold reason | Free text, only when on hold | Margin unclear on scan |
| Rush | Yes or No, triggers a shorter turnaround | No |
| Update sent | Records the last message sent and when | Received, 3 Nov |
| Flag | Formula result: OVERDUE, DUE TOMORROW or blank | (blank) |
Keep patient names out of the sheet if you can. A dentist's reference or initials is enough to match a tray, and it keeps health-related details out of emails, text messages and any AI prompt. Rules on health data differ between markets, so check what applies to your lab and limit who can open the file.
Define each stage so two people would pick the same one
Most tracking sheets fail because "in progress" means different things to different technicians. A stage list works when each stage has a clear entry test: you can look at the bench and say yes or no. Here is a nine-stage list for a lab making crowns, bridges and dentures. Adapt it to your own work.
- Received: the case is logged, labelled and the paperwork or scan has been opened.
- Checked: the impression, scan and prescription have been checked and nothing is missing.
- On hold: a question is open with the dentist. The clock does not stop, but the reason is mandatory.
- Design or modelling: the model is poured or the design file is started.
- Production: milling, casting, pressing or processing is under way.
- Finishing: staining, glazing, polishing and fitting on the model.
- Quality check: the second person has inspected against the prescription.
- Shipped: packed, labelled and handed to the courier or ready for collection.
- Closed: delivered and invoiced, or closed as a remake.
Print the list and pin it above the bench. If the team keeps debating which stage a case is in, the definitions are too vague; reword the entry test rather than adding stages.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowDecide which stages message the dentist
A message at every stage creates noise. Most dentists want three things: confirmation that the case arrived, a prompt if something is wrong, and a note when it ships. So only some stage values trigger anything.
| Stage or event | Message? | What it says |
|---|---|---|
| Received | Yes, automatic | Case ID, product, due date |
| Checked | No | Visible on the dashboard only |
| On hold | Yes, reviewed first | The exact question and what you need back |
| Design, Production, Finishing | No | Optional daily digest |
| Quality check failed (remake) | Yes, reviewed first | New due date and short reason |
| Shipped | Yes, automatic | Case ID, courier or collection time |
| Overdue flag | Yes, to the lab manager first | Internal alert before any dentist message |
"Reviewed first" matters. Anything that carries bad news or a question goes to a person to approve or edit before it leaves. Routine messages can run automatically because they only repeat facts from the row.
Make the sheet work out due dates and overdue flags
A second sheet, called Turnaround, holds one row per product with its normal working days and rush working days. For illustration: zirconia crown 8 working days, rush 4; full denture 10, rush 6; implant abutment 7, rush 4. Replace these with your own times.
In the case sheet, the due date uses a lookup into that table and a working-day function. In Google Sheets or Excel, a formula along these lines does it (adjust the cell references to your layout):
=WORKDAY(F2, IF(K2="Yes", VLOOKUP(D2, Turnaround!A:C, 3, FALSE), VLOOKUP(D2, Turnaround!A:C, 2, FALSE)))
The overdue flag reads the due date and the stage:
=IF(OR(H2="Shipped", H2="Closed"), "", IF(TODAY() > G2, "OVERDUE", IF(TODAY() = WORKDAY(G2, -1), "DUE TOMORROW", "")))
Both Google Sheets and Excel accept an optional third argument for holidays. Point it at a short list of your lab's closure dates, such as the days between two holidays, and every due date skips them as well as weekends; without it, a case received the week before a closure comes out due on a day nobody is at the bench.
Add conditional formatting so OVERDUE shows red and DUE TOMORROW shows amber, and sort the sheet by due date each morning. If you would like help writing or fixing formulas like these, the older tutorial on Google Sheets AI prompts has prompts that suit it. Always test the formulas on three real cases, including one that crosses a weekend, before you trust them.
Send the message when the stage changes
There are three ways to turn a stage change into an email or text, from simplest to most capable.
Option 1: a script inside the sheet
A short script attached to the sheet can watch for edits to the Stage column and send an email when the new value is one of your notify stages. In Google Sheets this is an Apps Script with an installable edit trigger. A simple trigger (the plain onEdit function) won't do: Google's documentation says simple triggers can't use services that need authorisation, and sending email is its own example. Three more details from the same documentation shape the build. An installable trigger runs under the account of the person who created it, so the emails go out from that account; create it while signed in to the lab's shared mailbox, not a technician's personal login. It fires only when a person edits the sheet, so changes written by another script or an automation tool don't set it off. And the edit event only carries the new value when a single cell changes, which is why the skeleton below reads the stage from each edited row instead.
function onStageEdit(e) {
var sheet = e.range.getSheet();
if (sheet.getName() !== "Cases" || e.range.getColumn() !== 8) return;
var notify = ["Received", "Shipped"];
for (var r = e.range.getRow(); r <= e.range.getLastRow(); r++) {
var row = sheet.getRange(r, 1, 1, 13).getValues()[0];
var stage = row[7]; // column H, Stage
sheet.getRange(r, 9).setValue(new Date()); // column I, Stage changed
if (notify.indexOf(stage) === -1) continue;
var email = lookupDentistEmail(row[1]); // reads your Dentists sheet
var subject = "Case " + row[0] + ": " + stage;
var body = buildMessage(stage, row); // fills your approved template
MailApp.sendEmail(email, subject, body);
sheet.getRange(r, 12).setValue(stage + ", " + new Date());
}
}
This is a skeleton, not a finished product. An assistant can fill in the two helper functions if you paste your column layout, and you should test it with your own email address as the recipient before any dentist's address goes in. Then add the trigger in the script editor: click Triggers on the left, then Add Trigger, pick onStageEdit and set it to run when the spreadsheet is edited.
Scripts also have a daily email allowance. Google's quota page lists 100 email recipients a day for a consumer account (such as a gmail.com address) and 1,500 for a Google Workspace account, with lower limits on trial accounts, and it says the figures can change without notice. Each address counts, so copying a practice manager on every message doubles the count. MailApp.getRemainingDailyQuota() returns how many recipients the script has left today; log it on your busiest day to see how close you run.
Option 2: an automation platform
Tools such as Zapier or Make can watch a sheet for a changed row and send an email or text through a connected account. Zapier's Google Sheets triggers include "Updated Spreadsheet Row" (existing rows only) and "New or Updated Spreadsheet Row". Make's equivalent, Watch Changes, needs Make's Google Sheets add-on, or a short script it supplies, installed in the spreadsheet first.
Zapier's pricing page, checked in November 2026, gives the Free plan 100 tasks a month and two-step Zaps only, and its help centre says polling triggers on Free check for new data every 15 minutes. The catch for this job is filtering. Filter steps are a paid-plan feature, so a Free Zap cannot limit messages to Received and Shipped: it would email the dentist on every change to the row, including a technician moving a case from Design to Production. Sending only on the notify stages needs a paid plan, and the volume sum further down shows how quickly a busy lab passes 100 tasks anyway. Where the trigger polls, a dentist may see the update some minutes after the change, which is fine for status messages.
Option 3: lab management software
Dedicated lab software usually sends status messages itself and ties them to invoices and delivery. If you outgrow the sheet, the stage list and the notify rules above are the specification to take to a vendor. Ask each one whether stage messages can be edited, whether dentists can reply, and whether data can be exported if you leave.
The Dentists sheet: who gets what, and how
The triggers need somewhere to look up contact details. A second tab, Dentists, holds one row per account: account number, practice name, the person who should receive case messages, email address, mobile number if they want texts, and a preferences column with values such as "email only", "text on shipped" or "daily digest". Ask each dentist once, on a short form, instead of guessing. Some dentists want every message copied to a practice manager, so add a second email column.
The preferences column is what stops the system annoying people. A dentist who prefers one digest at 8 a.m. gets a single email listing every open case, with stages and due dates, instead of separate messages. A short prompt does the digest formatting: paste the day's rows for that account, ask for a plain list sorted by due date with overdue cases at the top, and read the result before the first live run. Once the layout is right, a script or automation fills the same shape every morning.
How the sheet differs for a denture lab and a digital lab
A removable-denture lab has long, multi-visit cases, so its stage list needs entries like "Wax try-in sent" and "Waiting for try-in return", and its due date moves each time the dentist takes the case back for a fitting. A digital lab receiving scans has no physical intake at all, so "Received" means the file has downloaded and opened without errors, and "Checked" matters more because a bad scan costs a day at once. The columns above hold in both; what changes is the stage list and the turnaround table. Write the list for the work you really do before you copy anyone else's template.
A quick sum on message volume helps you pick between the three routes. Suppose a lab ships 55 cases a week. Received and Shipped messages alone come to 110 a week: about 22 a working day, or roughly 475 a month. Add a reviewed hold message on one case in ten, about 24 a month, and the total is close to 500. That sits comfortably inside a Workspace account's 1,500 recipients a day for the script route, but it is five times Zapier's Free allowance of 100 tasks a month, before any filter step. The sum is illustrative; run it with your own weekly case count and the stages you chose to notify.
Let AI draft the wording, then freeze it
The messages should sound like your lab, so draft them once with an assistant, edit them, and store the final text as templates. The automation fills in the case details; nobody rewrites the wording case by case. Here is a prompt to produce the set.
I run a small dental laboratory. Write four short email templates to dentists, using placeholders in square brackets for case details. Plain, courteous, no sales language, no promises about fit or results.
1. Case received: confirm [case ID], [product], [units], and the due date [due date].
2. Case shipped: confirm [case ID], [courier or collection time], and who to call if it does not arrive by [expected delivery].
3. Case on hold: explain the question in [hold reason], say what we need back, and note the due date moves by one working day for each working day we wait.
4. Remake: say [case ID] is being remade, give the new due date [new due date] and a one-sentence reason from [remake reason]. Do not blame the dentist or the technician.
Each under 90 words. Subject lines included.
An illustrative output for template 3: "Subject: Case [case ID] on hold: one question. Hello Dr [surname], we've paused [case ID] because [hold reason]. Could you reply with a clear photo or a new scan of the area, or call us on [number]? We will restart as soon as we hear from you. Please note the due date moves a working day for each working day we wait." What to fix: the model often adds "we apologise for any inconvenience" to every template. Delete that unless you truly want it in every hold message, because it signals fault where there may be none.
One zirconia crown case from intake to shipping
Say a six-technician lab receives a zirconia crown case on Monday 3 November. At intake the technician fills the row: LAB-2417, account 112, ref 8841, zirconia crown, one unit, rush No. The due date formula adds eight working days and returns Thursday 13 November. Setting the stage to Received sends the dentist this message, filled from the template: "Hello Dr [surname], we've received case LAB-2417, one zirconia crown, due Thursday 13 November."
On Wednesday the technician checking the scan sees an unclear margin and sets the stage to On hold with the reason "Margin unclear on distal of the prepared tooth". Because hold messages are reviewed first, the lab manager gets a draft, trims it to one clear question, and sends it. The dentist replies with a rescan the next morning, the technician moves the case back to Design, and the lab adds one working day to the due date, which becomes Friday 14 November. The sheet records the hold duration, which is useful later.
Production finishes on the 12th, quality check passes on the 13th, and on the morning of the 14th the case becomes Shipped. The automatic message goes out with the courier details. The dentist knew three things: it arrived, there was one query, it left. None of them needed a phone call.
To judge whether this is working, count status calls for a month before and after. Suppose the lab logged 18 "where is my case?" calls a week at about four minutes each, which is 72 minutes a week. If calls fall to 8 a week, you have recovered 40 minutes a week. Those numbers are illustrative, but the method is real: log calls for four weeks first, so you have a baseline.
Exception alerts that reach the right person
The overdue flag is useless if nobody sees it. Send an internal alert each morning at a fixed time listing every case flagged OVERDUE or DUE TOMORROW, sorted by dentist, to the lab manager. Only after the manager decides should a dentist message go out. A morning digest could be built by a script or by an automation step that filters the sheet and sends one email.
A good exception message says what changed, the new date and what you are doing about it, in that order. Here is a before and after. Before: "Your case is delayed." After: "Case LAB-2431 is running a day behind because the glaze firing failed. It is back in the furnace today and now due Wednesday 19 November. I will message you the moment it ships." The second version gives a date and a commitment, so the dentist can tell the patient something real. Draft these with the assistant from the row's hold or delay reason, and keep a person in the loop.
Where case sheets break: bulk edits, typos and stale rows
Bulk edits. If someone selects 30 rows and sets them all to Shipped after the last bench closes, a script that relies on the edit event's single value sends nothing at all, because that value is empty when more than one cell changes. A script that loops over the rows, like the skeleton above, sends 30 emails at once, some to the same dentist. Fix it by grouping messages per dentist, or by making Shipped a once-an-hour batch run from a time-driven trigger.
Typos in the stage. A free-text stage like "shiped" fails every rule. Use a dropdown with data validation so only the nine stage names can be entered.
Stale rows. Cases that are never closed clutter the sheet and slow it down. Archive Closed cases monthly to a second sheet.
Missing contact details. A dentist without an email address in the contact table gets no message and nobody notices. Add a column on the case sheet that shows "No email" in red when the lookup fails.
Plan this as a small project: one week to agree the stages, one to build the sheet and templates, two weeks running it alongside the old log, then switch. For the other end of the workflow, the quality control checklist and remake log feeds the same stage list, and the invoice template with statements and chasers bills from the same case numbers. For comparison, printing companies' proof approvals and job status updates solve a similar problem with the same idea.
Check it works after the first fortnight
- Pick 10 cases at random and compare the sheet's stage with where the tray physically is. More than one mismatch means the stage definitions or habits need work.
- Confirm that every Received and Shipped message was sent and went to the right dentist by checking the Update sent column against your sent-mail folder.
- Count messages sent per dentist per week. If any dentist gets more than about six, you are over-notifying.
- Read three hold messages aloud. If any could be taken as blaming the dentist, rewrite the template.
- Ask two dentists whether the messages helped. Their answer matters more than the sheet's statistics.
If you'd rather map your own stages and tools with someone, that is what my AI implementation consultation covers: checking which of these steps your current software can already do, and handing over something your team can run.
Questions from lab owners about case tracking
Do I need dedicated lab software, or will a spreadsheet do?
A spreadsheet is a fair start for a small lab with a few dozen cases a week. Move to dedicated lab software when you need barcode scanning, invoicing tied to cases, or several people editing at once without clashes. The stage definitions you write now carry across.
How many stages should a case have?
Six to nine. Fewer and the status tells the dentist nothing; more and technicians stop updating it. Each stage should be a point where the case physically moves or changes hands, and each should be easy to confirm by looking at the bench.
Should every stage change send the dentist a message?
No. Notify on received, on hold, shipped and any exception. Messages at every internal stage teach dentists to ignore you. Keep the others visible in a link or a daily digest for dentists who want more.
Is it safe to put patient names in the sheet?
Prefer a case number and the dentist's own reference or initials, and keep names out of messages and AI prompts. Rules on health data differ by market, so check what applies to you and restrict who can open the sheet.
What if a dentist replies to the automatic message with a question?
Send the update from a monitored address, not a no-reply one, and name one person who reads replies. Add a line saying replies are read during opening hours. An automatic message that goes into a void damages trust.
Further reads
- Dental Lab Marketing: AI-Assisted Outreach to Local Dentists — Reliable updates become a selling point with new dentists.
- Dental Lab Price List Template: Tiers, Rush Fees and AI Fee Notes — Turnaround days per product can come from your price list.
- How Garages Use AI to Send Repair Updates Customers Appreciate — A repair-shop take on the same update routine.
- Customer Support AI Tools for Phone Repair Shops: Repair Status Updates — Repair status messages for another job-based business.
- How Small Law Firms Use AI to Answer Client Status Questions — Another case-based business answering status questions.
- Associate Dentist Contract Checklist for Practice Owners: AI First Pass — A clause-by-clause checklist for practice owners: pay basis, lab fees, notice and covenants, with an AI first-pass prompt before the solicitor.
- Dental Equipment Maintenance Log: Service Dates and AI Reminders — A spreadsheet register for dental equipment with service dates, warranty flags and calendar reminders, plus AI that turns invoices and reports into rows.
- Can Dentists Use ChatGPT? Seven Admin Jobs With No Patient Data — Seven dental practice admin jobs ChatGPT can do without any patient information, with prompts, filled-in examples and the data rules to follow.
- Dental Lab Communication: AI Replies on Turnaround and Remakes — Draft status, turnaround and remake replies from your case data and policy sheet, with hand-off rules and tracking links for a dental lab.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Google Apps Script documentation (simple and installable triggers, edit event object, MailApp and quotas), the Google Sheets and Excel WORKDAY help pages, Zapier's pricing page and help centre (Free plan, polling intervals, filter availability), and the Zapier and Make Google Sheets app pages, all checked November 2026. Case figures are illustrative.