Skip to content

Customers, jobs and quotes

This page is for the owner or office manager evaluating HaulApp, and for the salesperson who will use it every day. It explains what HaulApp stores about a customer, how a job and a job quote divide the work, how a price is built, and how priced work reaches dispatch. For the whole flow from quote to paid invoice, read How HaulApp works first.

Sales works with five kinds of record. Each one is defined below and in the glossary.

RecordWhat it isWhere you find it
CustomerA company that buys hauling, material, disposal, or a mix.Customers
SiteA physical place a truck loads at, delivers to, or parks at.Settings → Sites
MaterialA hauled commodity, such as a stone size or fill.Settings → Materials
JobA customer’s engagement. It can stay open for years.Jobs, or the customer’s Jobs tab
Job quotePriced scope under a job: one material, from one site, to one site, at agreed rates.The job’s Quotes tab
flowchart LR
  C[Customer] --> J[Job]
  J --> Q1[Job quote 01]
  J --> Q2[Job quote 02]
  C --> O[Order]
  O --> L[Order item]
  L --> CF[Confirmed with the customer]
  CF --> R[Release: a quantity on a day]
  R --> D[Dispatch board]
  Q1 -. priced from .-> L

A job quote is the price; an order item is one thing the customer ordered at that price. One job quote serves every order the customer places on the job, for as long as the price stands. A different price is a new job quote that replaces the old one, and items already ordered keep the price they were taken at.

A customer record holds:

  • Customer name and Status: Active, Hold or Inactive.
  • City, so the desk can tell apart two customers with similar names.
  • Phone: the account’s main number.
  • Terms: what was agreed about paying, in your own words, such as “Net 30” or “COD”.
  • Billing email.
  • QuickBooks ref: the customer’s name or reference in QuickBooks.

The record also holds a business address, a billing address and named contacts. Invoices and the QuickBooks sync use the billing address. Today these arrive with your data import; the customer form does not edit them.

Open a customer from Customers. The page shows the contact facts at the top, then these tabs:

TabWhat it shows
OverviewInvoiced all time, invoiced in the last 12 months, last invoiced date, unbilled tickets, active and total jobs, open orders, and charts of invoiced revenue by month, by job and by material.
JobsEvery job for this customer. New job opens a job for them.
OrdersThe customer’s orders.
InvoicesThe customer’s invoices.
TicketsTickets hauled for the customer’s jobs.
PricingThe prices this customer has agreed, past and upcoming. See Customer prices.

Revenue counts issued and posted invoices at their current revision, less issued credit memos. A voided invoice billed nothing, and a draft is not billed yet.

A site is a reusable place. Each site has one type:

Site typeMeaning
SourceA pit or quarry where material is bought and loaded.
PlantA plant that produces or sells material.
JobsiteWhere the customer’s work is.
DisposalA dump or disposal cell.
YardYour own yard.

A source or plant can belong to a supplier, the company that owns the pit. A site also stores an address, coordinates, access hours, instructions and whether it is still in use.

A material has a name, a code, a default unit and an optional hazard class. A material is either Hauled or Retired. The units HaulApp prices in are ton, cubic yard, load and hour.

A job is the customer’s engagement, for example “Riverside Lot fill” for Test Customer One. Every quote, ticket, order and invoice for that engagement hangs under it.

To open a job:

  1. Go to Jobs and select New job, or open the customer and select New job on the Jobs tab.
  2. Choose the Customer and type the Job name.
  3. Leave Number blank to take the next number in sequence, or type the number your desk already uses. HaulApp refuses a number another job already holds.
  4. Optionally fill Started on, Jobsite, General contractor, Contact name, Contact phone, Contact cell, Customer reference and Notes.
  5. Save. HaulApp opens the new job’s page.

Automatic numbers are six digits and continue past the highest number on file. A company that migrates at job 170562 continues at 170563.

StatusMeaning
ActiveOpen for new quotes. New jobs start here.
ClosedThe engagement is over. You cannot add quotes. Work already under it continues. Reopen job makes it active again.
DeletedHidden from every list. HaulApp only allows this while no quote under the job has an order, a ticket, a release or an invoice. Restore job brings it back.

You can change a job’s customer only while it has no quotes.

The job page shows the customer, site, general contractor, contact, start date and customer reference. A summary strip shows invoiced total, unbilled tickets, first and last invoiced dates, and the last ticket date. The tabs are Quotes, Orders, Invoices and Tickets.

A job quote is priced scope under a job. It names one material, a from-site, a to-site, a unit and the rates the customer agreed. A job can hold many quotes, for example one for stone and one for fill. Quotes under a job are numbered 01, 02 and onward.

Both records exist because they last different lengths of time. The job lasts as long as the customer relationship. A quote’s price is fixed once work starts, so new pricing for the same job is a new quote, not an edit.

To price a quote:

  1. Open the job and select New quote on the Quotes tab.
  2. Choose the Material.
  3. Choose From, the site where it loads.
  4. Choose To. It defaults to the job’s site.
  5. Choose the Unit.
  6. Type the Transport rate and, if you sell the material, the Material rate.
  7. Optionally open Carrier pay and type the Carrier gross rate.
  8. Optionally fill Quantity, PO number, Deliver from, Deliver by and Notes. Leave Quantity blank for no set amount.
  9. Select Quote it.

The line under the rates shows what the customer pays per unit, for example “$9.50 haul + $14.00 material = $23.50 / ton”.

ComponentField in the appRule
HaulTransport rateRequired. Greater than zero. Per unit.
MaterialMaterial rateOptional. Blank when the customer supplies the material. Zero or more.
Customer priceShown, not typedTransport rate plus material rate, rounded to the cent.
Truck payCarrier gross rateOptional. What the truck is paid per unit, before deductions. It never appears on the customer’s invoice.

All rates are per unit: per ton, per cubic yard, per load or per hour. Rates accept up to four decimal places.

You can correct a quote’s rates, delivery dates and notes with the pencil on its row. HaulApp records who made each correction and what changed.

A quote freezes once something has been bought at it: an order item draws on it, or a ticket was hauled against it. The row then shows Frozen, and HaulApp refuses price changes with the message “This quote has gone to dispatch; its price is frozen. Quote it again.” To change the price, create a new quote. The new quote replaces the old one: the old version stays readable, can no longer be ordered, and every order already taken at it keeps its price.

These are reference prices. An order item takes its price from its job quote, not from them. They come from two places:

  • Site base prices, under Settings → Price lists: what a source site charges for a material from a given date. For example, North Pit sells #57 stone at $15.25 per ton.
  • Customer prices, on the customer’s Pricing tab: what this customer agreed for a material. A customer price is either a negotiated price per unit or a percent on top of the site’s base price. It can apply to one source site or to every site.

HaulApp picks the price in this order:

  1. The customer’s negotiated price per unit.
  2. Otherwise, the site’s base price plus the customer’s percent.
  3. Otherwise, the site’s base price alone.
  4. Otherwise, no price.

A rule for one site beats the customer’s rule for every site. Every price has an effective date and a reason. Agreeing a new price adds a new row; the old row stays readable.

The customer calls; the Orders desk takes the order:

  1. On Orders, select New order and choose the customer.
  2. Add an item: pick the job, then the job quote. The quote sets the material, the from-site, the to-site and the unit. Give a quantity or no set amount, the delivery window the customer gave, and their PO if they have one. The item’s price is the quote’s material plus hauling rate, frozen on the item; to charge something else, type the price and give a reason.
  3. Call the customer to check they can still take the material, then select Mark confirmed. HaulApp records who confirmed and when. An item is confirmed once.
  4. Select Pick days and give each day a quantity. Each day is a release: a quantity of one item made available to dispatch on one date.

Releases on an item can total up to 110% of the requested quantity. Anything over 100% needs a reason. An item with no set amount has no ceiling. Tickets count against the item they were hauled for. When the customer has enough, the dispatcher closes the order and it is invoiced.

The Orders list shows each order’s lifecycle:

StatusMeaning
Not confirmedAt least one item still needs a call to the customer.
ConfirmedEvery item is confirmed and nothing has been delivered yet.
In progressSome quantity has been delivered.
CompleteEverything requested has been delivered, or the order is closed.
CancelledThe order was cancelled.

What happens next is on Dispatch and drivers.

A salesperson or broker can earn commission on a quote. HaulApp records this as commission terms on that one quote, agreed before work starts.

  1. Go to Payables and select Agree commission terms.
  2. Choose the quote and the recipient.
  3. Enter the rate, the unit (ton, cubic yard, load or hour), the component the rate applies to (haul, material, disposal or hourly) and the currency (USD or CAD).
  4. Save.

The rules:

  • The recipient must be an active outside party with the role commission recipient.
  • Only an owner or admin, or a billing reviewer, can agree terms.
  • A quote carries one set of terms. They cannot be edited afterwards.
  • Terms must be agreed before any load is started or any charge exists on the quote.
  • Imported quotes cannot take new commission terms.

The commission is earned when the customer’s invoice is issued. See Commissions and payables.

  • Forming an order from job quotes priced on the job page. Until then, a job quote priced on the job page cannot be confirmed or released; HaulApp answers “This quote has not been formed into an order yet.” Work for dispatch goes through the Orders desk.
  • Editing a customer’s addresses and contacts in the app.
  • Proposing a price from customer prices while pricing a job quote. Job quote rates are typed by sales.
  • Lump-sum (flat-price) lines. Every job quote and order item is priced per ton, cubic yard, load or hour. Lump-sum lines imported from your previous system show their unit as Unknown.