← Al Davies, 250 High Street

Moving estimates and booked jobs in one SharePoint tracker

Keep each quote in an Estimates list, then book accepted quotes in a Jobs list linked to the quote and to a Trucks list. A view grouped by date and truck shows double bookings, and a unique BookingKey column can block them.

The three lists are "Trucks" (one row per truck), "Estimates" (each quote you gave) and "Jobs" (each booked move, with a lookup to the estimate, a lookup to the truck, a date and a crew size). Exact names may differ on your screen.

Why estimates and jobs drift apart

A moving company can keep the estimate in one place, the booked job in another and the crew schedule in a third. The estimate is a file or an email. The job is a line on a calendar or a whiteboard. When a customer changes the date, one place gets updated and the others do not.

Problems this causes:

Linked lists help with the first, second and fourth. The "Truck by day" view below helps with the third.

What you are building

You will build three SharePoint lists on one site:

Staff pick the estimate and the truck from a list instead of typing them. That keeps spelling the same on every row, and it keeps the job joined to its quote.

If you are new to lists, see "Replace a spreadsheet tracker with a SharePoint list". For a similar tracker that follows work from request to done, see "A work order tracker in SharePoint, without a spreadsheet". This guide does not repeat those steps.

Plan the privacy side first

A moving tracker holds customer names, addresses and phone numbers. Decide what you really need before you build.

  1. Collect the least you can. One way to start is a first name and a job code, with the full address kept in the place you already store it.
  2. A view is not security. Microsoft says grouping "only changes how the data is displayed". Switching views is open to anyone who has the list, so a hidden column is still one click away. Who may open the list at all is a permissions question for your admin.
  3. Decide when to delete old rows, and ask your attorney if you are not sure how long records must be kept. This guide states no rule on that.

Step 1. Create the "Trucks" list

Create a blank list. Microsoft's help page on creating a list says to "Choose to start a list from scratch." Name the list "Trucks". Add these columns:

  1. Title (Single line of text). Rename the Title column to "Truck". Type a short name, such as "Truck 1" or "26 ft box".
  2. Capacity note (Single line of text). Optional. For example "3 rooms". Keep it short.

Add one row for each truck. You can add a row for a truck you rent, too.

Step 2. Create the "Estimates" list

Create a second blank list named "Estimates". Add these columns:

  1. Title (Single line of text). Rename it to "Estimate". Type a short code with a first name, such as "Sam 1021". Add a full last name only if you must.
  2. Move date asked for (Date and Time, date only). The date the customer wants.
  3. Quote amount (Number). The price you gave, as a plain number. Use Number, not Currency: Microsoft lists Currency as unsupported for lookups, and you will show this amount in Jobs.
  4. Status (Choice). Number the choices: 1 Sent, 2 Accepted, 3 Declined, 4 Expired.
  5. Crew size needed (Number). How many movers the quote assumed.
  6. Estimate type (Choice): 1 Binding, 2 Non-binding. Record which kind you gave. Ask your attorney which rules apply to written moving estimates where you work.
  7. Crew hours, Hourly rate, Truck charge and Materials (Number columns), then Estimated total (Calculated) with the formula =[Crew hours]*[Hourly rate]+[Truck charge]+[Materials]. Our advice, not a Microsoft rule: check it against your own price sheet. A sample quote: 24 crew hours at 40, plus 150 for the truck, plus 60 for materials, gives 1,170. Microsoft lists Calculated as unsupported for lookups, so type the price you agree into Quote amount; that is the figure Jobs shows.

Every time you send a quote, add a row. When the customer says yes, change Status to "2 Accepted". Do not delete the declined ones. They show you how many quotes become jobs.

Create a third blank list named "Jobs". Add these columns:

  1. Title (Single line of text). Rename it to "Job". Type a short code, such as "J-1021".
  2. Estimate (Lookup). Open the list, select "Add column", then "Lookup". Pick "Estimates" as the source list and "Estimate" as the column to show. Under more options, you can also show other columns from Estimates, such as Quote amount.
  3. Truck (Lookup). Do the same, with "Trucks" as the source and "Truck" as the column.
  4. Move date (Date and Time, date only).
  5. Time slot (Choice). Number the choices: 1 Morning, 2 Afternoon, 3 Full day.
  6. Crew size (Number).
  7. Job status (Choice): 1 Booked, 2 Done, 3 Cancelled.

Microsoft's lookup page lists the column types a lookup can read from: Single line of text, Number, Date and Time, and Lookup (single value). It also says: "Lookup columns should be created and used within the same site." So build all three lists on the same site. Because Choice is not on that list, do not plan to pull the Status column of Estimates into Jobs as a lookup. If a lookup column does not show what you expect, see "SharePoint lookup column not showing".

Step 4. Book a job from an accepted estimate

When a customer accepts a quote:

  1. Open "Jobs" and select "New".
  2. Type the job code.
  3. Pick the estimate, pick the truck, and enter the move date, the time slot and the crew size.
  4. Save.

Now the job carries the estimate with it. Anyone who opens the job can see which quote it came from and what was quoted.

Then open the estimate in "Estimates" and set Status to "2 Accepted", if you have not already. SharePoint does not do this for you. The lists are linked by the lookup, but a lookup shows data. It does not change the other list. A flow in Power Automate can do the update for you. That is optional, and this guide does not set it up.

Step 5. A view that shows truck conflicts

The question is: is this truck already booked that day? A view cannot stop a booking, but it can put two bookings next to each other.

  1. Open "Jobs". Open the view menu, then choose "Edit current view" to open the classic view editor. Microsoft's help page on grouping says: "When you create or edit a view, you can specify grouping on one or two columns."
  2. Create a new view named "Truck by day".
  3. Expand "Group By". Group first by Move date, then by Truck.
  4. Show the columns Job, Time slot, Crew size and Job status. Save the view.

Each group shows a truck on a day. A group that holds two rows for the same truck on the same day is a possible conflict. If both rows say "1 Morning", it is a real one. If one says "1 Morning" and the other "2 Afternoon", the truck may do both, and you decide.

To keep the screen short, add a filter in the classic view editor. Under "Filters", choose "Show items only when the following is true". Pick Move date, then "is greater than or equal to", and type [Today]. Microsoft's help page on filtering a view says: "You must use the classic view editor to filter columns using these keywords." The keywords it names are [Today] and [Me]. Microsoft's page also says that you cannot use them when filtering from a column header.

Step 6. Make SharePoint refuse a double booking (optional)

A view only shows. If you want the list to refuse the second booking, you need one column that is unique. Microsoft says: "When you create a column, you can specify that the column must contain unique values." It also says that "A unique column must also have an index" and that the index is created when you select OK.

Microsoft lists the column types that can be unique, and Calculated is not one of them. So a Calculated column that joins the truck, the date and the slot cannot be the unique one.

Here is one way to start. This is our advice, not a Microsoft rule:

  1. Add a Single line of text column named "BookingKey" to "Jobs".
  2. Decide the format and write it in the column description, for example T1-2026-11-05-AM. That means truck 1, that date, morning.
  3. Have staff type the key when they book. For a full-day job, one way to start is to book it as two keys, or to use a rule such as "FULL" that your team agrees on.
  4. Turn on the unique setting for BookingKey, as Microsoft describes.

Now a second row with the same key will not save. Microsoft says: "Uniqueness is not case-sensitive." So t1-2026-11-05-am counts as a repeat of T1-2026-11-05-AM. The weak point is typing. If someone writes the date in another format, the check passes. Test it with real examples before you tell the team, and use the "Truck by day" view as a second check. For more on unique columns, see "Stop duplicate entries in a SharePoint list".

Step 7. A weekly look-ahead

Once a week, the person who books jobs opens "Truck by day" and scans the next two weeks. They look for groups with two rows, and for days with no truck booked. Then they check that each job has an accepted estimate behind it. A job with no estimate is a booking nobody priced.

What to avoid

Honest limits

A list records what someone typed. It does not know your trucks' real schedules, drive times or crew availability. The conflict check is only as good as the keys and dates staff enter. A lookup shows data from another list. It does not update that list, so you must set the estimate to accepted yourself or build a flow to do it.

Microsoft says the default List View Lookup Threshold is twelve lookup columns, and this tracker uses two in one list, so you are well under it. The view and the unique key above are workarounds for a truck check, not a built-in truck feature.

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Can SharePoint stop me from booking the same truck twice?

A list has no truck-specific setting. You can group a view by Move date and Truck to see overlaps, or make a BookingKey text column unique so a repeated key will not save.

Is there a moving estimate template I can download?

Not as a file. Step 2 is the template: seven columns, from the estimate code to the cost inputs, that you add to a blank list.

What should a moving quote template include?

One row per quote with a short code, the date the customer asked for, the amount, the crew size assumed, whether it was binding or non-binding, and a status that shows if it became a job.

Why can't I look up the Status column from Estimates?

Microsoft's lookup page lists Choice as an unsupported source type. Keep Status in Estimates and open the estimate from the job to see it.

How do I work out what to quote for a move?

Our advice, not a Microsoft rule: add crew hours times hourly rate, then the truck charge, then materials. A Calculated column can do the sum from Number columns.

Sources