Leads, Quotations & Job Conversions — the main screen
drop a screenshot at assets/screenshots/guides/leads-quotation-project-conversions.png to replace this
1. LEADS -- STEP BY STEP
Turned on independently in Settings > Sales ("Leads (Sales Pipeline)"), default off. Appears in the nav as its own item, directly above Templates/Quotations/Jobs, inside the same "Services" section (which itself is gated by its own separate Settings > Sales toggle -- see section 8).
- Leads > Add Lead captures: company name, contact name/email/ phone, an optional address (Address Line/City/State/Zip/Country -- see section 1c), lead source (Website/Referral/Cold Call/ Trade Show/Advertisement/Other), estimated value, Assigned To (section 2a), next follow-up date, and remarks.
- Work the pipeline: New -> Contacted -> Qualified. Every stage change is timestamped and kept in a full status-history log, and free-text notes can be added at any point to build an activity timeline for the prospect. A Lead doesn't have to reach Qualified before converting -- Convert to Quotation/Job/Invoice is available from New, Contacted, or Qualified alike, so a deal that's already agreed doesn't need to sit through pipeline stages that don't apply to it.
- Convert to Quotation, Convert to Job, or Convert to Invoice (see "Skipping stages" above) each resolve-or-create the customer's contact record from the lead's own name/email/phone (same auto-create-if-missing convention Sales Order already uses when a typed customer name doesn't match an existing contact). If the Lead has no Requested Service attached, the new Quotation or Job lands empty except for the customer -- items are added on the normal edit screen right after landing there. If it does have one, real priced line items land with it automatically (see section 1a). Convert to Invoice always requires a Requested Service already attached, since an Invoice can't be created with nothing on it.
- Alternatively, mark a lead Unqualified/Lost from any of New/ Contacted/Qualified (with an optional lost-reason note). A Lost lead can be Reopened back to New at any time -- nothing about a lost lead is deleted or made permanently dead.
Convert to Quotation/Job/Invoice are all available two extra ways beyond the Lead's own detail page -- inline on each row of the Leads list, and as a bulk action across every Lead you've checked -- see section 6.
1a. REQUESTED SERVICES -- GIVING A LEAD REAL PRICED CONTENT EARLY
A Lead can have one Requested Service attached, picked with a type-ahead search against your Service-type catalog items, with its own quantity. This is entirely optional and purely informational until the Lead converts -- nothing about it is billed or committed while the Lead is still a Lead.
The moment the Lead converts (to a Quotation, a Job, or an Invoice), the Requested Service becomes real, priced content on the new document instead of the Lead landing empty:
- If the requested catalog item is the target of one of your active Service & Job Templates (see that guide), the template's whole default combination -- every line item, every Cost Line, every tax -- copies across, scaled by the Lead's requested quantity (request 3x of a service, every line and Cost Line in its template triples).
- Otherwise, a single line is synthesized directly from the item's own price, unit, and tax settings. An item that's been deleted or deactivated since it was requested is skipped gracefully at conversion time (named in a confirmation message) rather than blocking the conversion -- the request itself stays visible on the Lead's own record either way, as a record of what was actually asked for.
1b. LIFECYCLE -- SEEING WHAT A LEAD ACTUALLY BECAME
Once a Lead converts, its detail page grows a Lifecycle section that shows the full downstream chain it produced, live -- whichever Quotation, Job, Order, Invoice, or Work Order came out of it, each with its own current status and total, and each one a direct link to open that record. This updates automatically every time you reopen the Lead's page, so "what actually happened with this deal" is always one click away instead of a manual cross-check across three or four different lists.
1c. ADDRESS -- WHERE THE WORK HAPPENS
A Lead carries its own Address (Address Line/City/State/Zip/Country), independent of any linked customer's own address on file -- a collapsible "Address" section on the Lead form, the same field set and layout customers.php's own Contact Address uses. This is purely optional and never required to save a Lead.
The "Existing Customer" picker on the Lead form does double duty: pick an existing customer (or create a new one inline via "Add New Customer") and the Lead's own Contact Name, Company Name, Email, Phone, and Address fields are all filled in automatically from that customer's record in one step, instead of retyping information that already exists on file. Every field stays independently editable afterward -- the auto-fill is a starting point, not a lock, so a Lead can still describe a different site or contact than the linked customer's own default if the deal actually calls for it.
2. QUOTATION COST LINES
The Cost Lines section on a Quotation (vendor/supplier landed cost -- distinct from the BOM material/labor cost breakdown, which stays reference-only and never billed) saves for real: each row resolves-or-creates the named vendor contact, and rows marked "Invoiceable" add their amount into the quotation's grand total, shown as its own line in the totals panel. Rows marked "Billable" still only record intent (mirrors Sales Order's own Cost Lines) -- actually generating a vendor Bill from a quotation's cost lines is not part of this build.
2a. ASSIGNED TO -- WHO OWNS THIS RECORD
Every stage in this pipeline can optionally be Assigned To one Employee: Leads, Quotations, Jobs, and (see the Subscriptions guide) Subscriptions all share the exact same Assigned To picker and the same meaning -- who on your team owns this record. The picker lists your active Employees (Employees, not login accounts -- someone doesn't need a system login to be assignable, and being assignable doesn't grant them one), and is entirely optional: leave it as Unassigned and nothing else about the record changes.
Assigning is purely informational and filterable -- it doesn't gate who can edit a record (that's the separate User Permissions grid, section 8) and it doesn't change the record's own pipeline. Its main payoffs:
- The Job Schedule board's Assigned To filter and the Lead Conversion report's assigned-rep breakdown both read directly from this same field.
- A Quotation, Job, or Subscription started from another one (a template, a Lead conversion, a Job handing off into a Subscription) can carry its Assigned To forward automatically, the same way Location already does, so ownership doesn't need to be re-set at every hop.
- Reassigning later (a rep leaves, work gets redistributed) is a single field edit on the record itself, at any stage its own status still allows editing.
A Job additionally has a second, distinct field beyond Assigned To -- Scheduling Resource -- for dispatching the actual work to a Team, Technician, or Unit and putting it on the Job Schedule Calendar; see the Job Schedule & Dispatch guide for the full detail on how the two are different and when to use each.
3. DIRECT CONVERSIONS -- ORDER / INVOICE / FULFILLED
Available from any Accepted Quotation, and from any Draft/Started/On Hold Job (Job -> Invoice already existed; Job -> Order and Job -> Fulfilled are new). Each opens a modal listing every priced line with its remaining convertible quantity, pre-filled to the full remainder -- reduce any line to convert only part of it.
- Convert to Order: creates a real, ordinary Sales Order (Pending) from the selected quantities and hands off entirely to the normal Sales Order screen from there -- approve, issue, deliver, invoice, pay, exactly as any other order.
- Convert to Invoice: creates a real Invoice directly for the selected quantities, with the same GL posting and COGS lookup every other invoice gets. No Order is created.
- Convert to Fulfilled: creates a Sales Order (auto-approved) for the selected quantities, then immediately issues, delivers, and invoices it in the same action -- the quotation/job's own modal handles the partial-quantity selection, then hands off to the exact same one-click fulfillment Sales Order already offers for a full order. Items requiring batch/serial picking are rejected here (a clear message explains to use Convert to Order and fulfill those manually instead) -- same restriction the existing one-click Sales Order fulfillment already has.
On success, each of these shows a clickable confirmation (e.g. "Converted to Sales Order SO-1042 — click to view it") instead of force-navigating you away -- you stay on the Quotation/Job you were working, which quietly refreshes its own remaining-quantity a moment later, and the confirmation itself is the fastest way to jump to the new record if you want it.
Converting never changes the Quotation's or Job's own status -- "Converted" stays reserved specifically for the original Quotation -> Job action. Progress toward being fully ordered/invoiced is shown as a derived remaining-quantity figure per line, the same way Sales Order tracks its own delivery/invoice progress separately from its main status.
PARTIAL QUANTITY, EXPLAINED
A source line's remaining-convertible quantity is: the original quantity, minus whatever has already gone out via a Sales Order (from either Convert to Order or Convert to Fulfilled) or been invoiced directly (from Convert to Invoice). Converting some of a line to an Order does not block later invoicing the rest directly, and vice versa -- the two are tracked separately and added together to get what's left.
4. THE STATUS PIPELINES, IN FULL
Quotation: Draft -> Sent -> Negotiating -> Accepted -> Converted (side exits: Rejected, Expired, or Cancelled -- Rejected/Expired only from Sent/Negotiating, Cancelled from Draft/Sent/Negotiating) Job: Draft -> Started -> On Hold -> Finished (side exit: Cancelled from Draft/Started/On Hold) Lead: New -> Contacted -> Qualified -> Converted (side exit: Unqualified/Lost from New/Contacted/Qualified; Converted is reached via any of the three destinations in "Skipping stages" above, not just Quotation)
Lead status
Side exits: Unqualified / Lost
Job status
Side exits: Cancelled
stateDiagram-v2 [*] --> Draft Draft --> Sent Sent --> Negotiating Negotiating --> Accepted Accepted --> Converted Converted --> [*] Sent --> Rejected Sent --> Expired Negotiating --> Rejected Negotiating --> Expired Draft --> Cancelled Sent --> Cancelled Negotiating --> Cancelled Rejected --> Draft: Reopen Expired --> Draft: Reopen Cancelled --> Draft: Reopen
Only an Accepted Quotation can run Convert to Order/Invoice/Fulfilled or the original Convert to Job; only a Draft/Started/On Hold Job can run its own Convert to Order/Invoice/Fulfilled. Finished and Cancelled are terminal for conversion purposes -- both pipelines are enforced server-side on every conversion endpoint, not just hidden in the UI, so a stale page can't be used to convert a quotation that has since moved on.
Every side exit (Rejected/Expired/Cancelled on a Quotation, Cancelled on a Job, Unqualified/Lost on a Lead) can be Reopened back to the pipeline's starting point -- see section 5. Converted is the one status that can never be reopened on any of the three, since it already produced a real downstream record (a Quotation, a Job, or an Order/Invoice) that continues to exist regardless.
5. STATUS MANAGEMENT -- REASON CAPTURE, REOPEN, COMMUNICATIONS
All three stages (Lead/Quotation/Job) share the same enterprise status-management pattern, not just a status dropdown:
- Reason capture on the way out. Marking a Quotation Rejected/ Expired/Cancelled, a Job Cancelled/On Hold, or a Lead Unqualified/Lost prompts for an optional free-text reason. If entered, it's saved as a timestamped note on the record's own Communications timeline (not just logged silently) -- so six months later, "why did this fall through" has an actual answer on the record itself, not just in someone's memory or a separate support ticket.
- Reopen from any "didn't work out" state. A Rejected/Expired/ Cancelled Quotation, a Cancelled Job, or an Unqualified/Lost Lead can be Reopened back to Draft/Draft/New respectively at any time, for a fresh attempt if circumstances change -- nothing about a lost deal is a dead end unless it already converted into something else downstream.
- Communications timeline. Every Lead/Quotation/Job detail page has its own Communications section: a merged, chronological feed of every status change (auto-logged) and every manual note (free text, added on demand) for that record. A quotation's Send/ Accept/Reject actions also log their own email/SMS delivery attempts here (sent successfully, or failed with the reason), so "did the customer actually get this" is answered on the record instead of by checking a mail server log.
- Send to Customer, with a real self-service portal. Both a Quotation and a Job have a Send to Customer button that emails (and/or texts, depending on the business's notification-channel settings) the customer a secure link to a portal page for that document. On a Quotation, the portal is interactive: the customer can Accept or Reject it themselves, which applies the exact same status change as if a staff member had done it in-app -- sending a Quotation for the first time also flips it from Draft to Sent. On a Job, the portal is read-only (a Job's status is driven from your side of the business, not by a customer decision), so sending one is purely informational and never changes its status.
6. LIST-PAGE ACTIONS -- INLINE & BULK
Every status change described above (and the equivalent Start/Hold/ Finish actions on a Job), and every conversion described in this guide -- Convert to Quotation, Convert to Job, Convert to Invoice, at every stage they're available from (Lead, Quotation, and Job) -- can be made two ways, both from the Leads / Quotations / Jobs list screens without opening each record individually:
- Inline, per row. Each list row's Actions column shows only the status buttons that are actually valid for that row's current status (e.g. a Draft Quotation shows only Cancel; a Sent or Negotiating one additionally shows Accept/Reject/Expire; a Rejected/Expired/Cancelled one shows only Reopen) -- so there's never a button to click that would just fail with "not eligible." Send stays a detail-page-only action, both inline and in bulk (see below) -- it fires a real email/SMS to the customer, which isn't appropriate as a quick list-row click.
- Bulk, across a whole selection. Check the boxes on multiple rows (a header checkbox selects every row on the current page) and a sticky action bar appears at the bottom of the screen with one button per possible action. Each button is only enabled if at least one selected row is actually eligible for it -- so a doomed-to-fail bulk click never round-trips to the server. Mixed- eligibility batches partially succeed: e.g. "10 of 12 quotations updated" with the 2 ineligible ones listed by name and reason, rather than the whole batch failing because of two rows. Each record is processed independently (its own transaction), so one failure never rolls back the rest of the batch.
Any reason-capture action (Reject/Expire/Cancel/etc.) prompts for one shared reason applied to every selected record in that bulk action, same as the inline version.
Convert to Quotation/Job/Invoice (from a Lead, a Quotation, or a Job, wherever each is available) are whole-document conversions -- nothing to weigh per record -- so all of them work inline and in bulk too, the same as a status change: click Convert on one row, or check several and use the bulk bar's Convert button, and each eligible record produces its own new document, named back to you in the confirmation ("LD-104 -> QT-2031", etc.). A bulk conversion that partially fails behaves the same way a bulk status change does -- whatever's eligible converts, whatever isn't is listed with a reason, nothing rolls back the whole batch. Convert to Invoice specifically skips any Lead with no Requested Service attached, listed with that reason, same as at the individual level.
The one exception is the Order/Invoice/Fulfilled conversion MODALS from a Quotation or Job (section 3) -- those need a per-line quantity decision when you want a partial conversion, so they stay detail-page-only. Used from the list instead, Convert to Invoice on a Quotation or Job converts the FULL remaining balance of every line -- the same zero-config default the modal uses when you don't touch any quantity field. Send (email/SMS to the customer) also stays detail-page-only for the same reason it isn't a bulk action for Reject/Cancel-style changes -- it fires a real message per customer, which isn't appropriate as a quick list click.
Every Leads/Quotations/Jobs list also has a Columns button that opens a show/hide checklist for every column on that table -- turn off whatever isn't useful for how you work (e.g. hide Est. Value on Leads if your team doesn't estimate deal size) and the list remembers your choice on that device the next time you visit, without changing what anyone else on the team sees.
7. CONTACTS -- QUOTATIONS & JOBS ON THE CUSTOMER PROFILE
A customer's profile page has Quotations and Jobs tabs alongside its existing Orders/Invoices/Payments tabs (shown only when Services is turned on), listing that customer's quotations and jobs with status and totals, filterable by date range -- so a rep can see a customer's entire sales history, pre-sale and post-sale, in one place instead of jumping between modules. A Subscriptions tab sits alongside them (shown only when Subscriptions & Recurring Billing is turned on -- see the Subscriptions & Recurring Billing guide) listing that customer's recurring plans the same way.
8. SETTINGS & PERMISSIONS
Settings > Sales has one Services section grouping every toggle for this whole pipeline together, since they're one connected flow rather than unrelated settings:
- Leads (Sales Pipeline) -- on/off, default off.
- Subscriptions & Recurring Billing -- on/off, default off, independent of the toggle below (see the Subscriptions & Recurring Billing guide for its own defaults: billing cadence, revenue recognition, invoice lead days, proration, and dunning grace period).
- Services (Quotations & Jobs) -- on/off, default off (pre-existing; Leads and Subscriptions are each independent of this).
- Job Schedule view, and Scheduling Resources (Teams/Technicians/ Units) -- see the Job Schedule & Dispatch guide.
All are opt-in per business and safe to turn on/off at any time -- turning one off just hides the relevant nav/tabs, existing records are untouched.
Per-user access is controlled independently for each stage on the User Permissions grid (Settings > Users > [a user] > Permissions), each with its own View/Add/Edit/Delete columns:
- Leads
- Templates (see the Service & Job Templates guide)
- Sales Quotation
- Job
- Subscriptions (see the Subscriptions & Recurring Billing guide)
A user can, for example, be given full rights on Leads and Quotations but view-only on Jobs -- letting a business separate "who qualifies and quotes" from "who runs delivery" without an all-or- nothing sales role. Each row's grant covers both the list screen and its own record-detail screen (e.g. the "Sales Quotation" row governs both the Quotations list and an individual quotation), so there is only one row per stage to set, not one for the list and a separate one for the detail page. The status buttons described in sections 5 and 6 respect these same grants -- e.g. Cancel specifically requires Delete rights (it's the one status action that behaves like removing a record from the active pipeline), every other status button requires Edit rights, both inline and in bulk. Assigned To (section 2a) is not part of this grid -- assigning a record to an Employee only requires the same Edit rights as any other field on it.
9. PRINTING
Quotations and Jobs can be printed using the same Print configurator every other transactional document (Sales Order, Invoice, Purchase Order, etc.) already uses -- see the Sales Orders guide for the full configurator walkthrough:
- Print button on the detail page (once the record has been saved at least once), and a Print icon on each list-page row -- print directly from the list without opening the record first.
- Full configurator on open: choose Modern or Classic layout, a theme color, paper size (A4/Letter/Legal), font size and page padding, whether costs show as their own table rows or a summary, which columns show (Rate/Qty/Tax/Discount), and whether a signature block is included. Settings are saved per document type and reloaded automatically next time.
- Print Document (browser print/PDF) or Download PDF directly from the configurator, with a QR code and amount-in-words on the printed document.
- The status stamp on the printed document reflects the record's real status (Draft/Sent/Negotiating/Accepted/Rejected/Expired/ Converted/Cancelled for a Quotation; Draft/Started/On Hold/ Finished/Cancelled for a Job) with matching color-coding, not a generic "Approved" -- a Rejected quotation prints looking rejected, not approved.
Send (email/SMS to the customer) and the Order/Invoice/Fulfilled conversion MODALS stay detail-page-only (see section 6) -- Print is available both from the detail page and directly from the list, for a quick "let me print this" without a full page load.
10. HOW IT CONNECTS TO THE REST OF THE SYSTEM
- Sales Orders, Material Issue, Delivery & Invoicing -- every conversion path hands off into these existing, already-hardened pipelines rather than duplicating their logic; a converted Order or Invoice behaves identically to one created directly.
- Job Schedule & Dispatch -- once a Job exists, it's ready to be Assigned To an Employee (section 2a), dispatched to a Scheduling Resource (a Team/Technician/Unit), and put on the Job Schedule Calendar -- see that guide for the full detail.
- Products & Inventory -- a Service or Non-Inventory line (see the Item Type guide) converts and invoices normally through this whole chain but never reserves or deducts stock, since there's nothing to reserve.
- Service & Job Templates -- a brand-new Quotation or Job can be started from a saved template instead of built line-by-line, then immediately fed into this same conversion pipeline once accepted/started.
- Bill of Materials -- a manufactured item's BOM cost is shown as a reference-only hint while building a Quotation/Job line, never billed automatically.
- Contacts (Customers) -- every Lead, Quotation, and Job is tied to a resolved customer contact record, and shows up on that customer's own profile page. Linking a Lead to an existing customer also auto-fills its Contact Name/Company Name/Email/Phone/Address from that customer's record (section 1c).
- Printing -- the same shared Print configurator used across every other transactional document in the system (see section 9).
- Subscriptions & Recurring Billing -- a separate, parallel path out of the same "Services" area for ongoing recurring work rather than a one-time sale; a Job can hand off into starting a Subscription the same way it can hand off into a saved template -- see the Subscriptions & Recurring Billing guide.
- Reports Hub -- Lead Conversion and Quotation Pipeline & Win Rate reports read from this same pipeline data (see the Reports Hub guide).
11. WHY IT SCALES FROM SMB TO ENTERPRISE
Small business
Skip Leads and Jobs entirely and use Quotations -> Sales Order the same way it always worked -- nothing here is mandatory.
Growing sales team
Turn on Leads to stop losing track of prospects in someone's inbox, and use Convert to Invoice/Fulfilled to skip ceremony on simple, fast-turnaround sales.
Job-based business (services, installers, contractors)
Use Jobs as the real unit of work, converting to Orders/Invoices in stages as work is completed and partial deliveries are made, and dispatch each one to the right Team/Technician/Unit on the Job Schedule board (see that guide).
Enterprise / multi-rep teams
Per-stage permissions (View/Add/Edit/ Delete independently on Leads/Templates/Quotations/Jobs/ Subscriptions) let a sales org's role structure -- SDRs qualifying leads, AEs quoting, delivery/PM staff running jobs -- be enforced by the system instead of by policy alone. Assigned To gives every record a real owner across all four stages for reporting and handoffs. Bulk status actions let a manager clear a backlog of stale quotations or close out a batch of finished jobs in one action instead of one-by-one, and every reason/reopen/ communications feature works identically whether a change is made one record at a time or across a whole selection.
Quick Reference
Leads list / add a lead ................. Services > Leads
Quotations list ........................... Services > Quotations
Jobs list .............................. Services > Jobs
Request a service on a Lead ....... Open a Lead > Requested Services
Lead address / auto-fill from an
existing customer ................................ Lead detail page >
Existing Customer picker,
or the Address section
Assigned To (Lead/Quotation/
Job/Subscription) ......................... Any of those record's own
detail pages
Convert to Quotation/Job/
Invoice (Lead) .............................. Lead detail page, inline on
the Leads list, or the bulk bar
Convert to Job/Invoice
(Quotation) ..................................... Quotation detail page,
inline on the Quotations list,
or the bulk bar
Convert to Invoice (Job) ...... Job detail page, inline on the
Jobs list, or the bulk bar
Convert to Order/Invoice/Fulfilled
(partial-quantity modal) ............. Open an Accepted Quotation or a
Draft/Started/On Hold Job
Inline status/convert actions .... Actions column on any list row
Bulk status/convert actions ...... Check row(s) on any list -> sticky
action bar at the bottom
Show/hide list columns ................ Columns button above any list
Reopen a Rejected/Expired/Cancelled/
Unqualified record ......................... Reopen button (detail page,
list row, or bulk bar)
Lifecycle (what a Lead became) ... Open a converted Lead > Lifecycle
section
Send to Customer (Quotation/
Job) ............................................ Detail page > Send
to Customer button
Communications timeline ................... Open any Lead/Quotation/
Job > Communications section
Print a record ............................. Print button on the detail
page, or the Print icon on any
list row
Turn Leads on/off ......................... Settings > Sales > Services
> Leads (Sales Pipeline)
Turn Quotations/Jobs on/off ... Settings > Sales > Services
Turn Subscriptions on/off, and its
billing defaults ................................ Settings > Sales >
Services >
Subscriptions (see the
Subscriptions & Recurring
Billing guide)
Job Schedule, Scheduling
Resources ........................................... See the Job
Schedule & Dispatch guide
Per-user access ............................ Settings > Users > [user] >
Permissions (Leads / Templates /
Sales Quotation / Job /
Subscriptions rows)