Guide · Estimate & Sold & Production stages

Jobber integrations, from quote to first visit.

Set up Jobber quote follow-ups, work an old quote backlog, and trace approval through job setup and the first visit, with a worked reporting example.

  1. Lead
  2. Estimate
  3. Sold
  4. Production
  5. Paid
Updated September 28, 2026

Imagine looking at a report of approved landscaping quotes and seeing a healthy pipeline. Now ask a different question: which of those customers has a first visit on the calendar?

The total can change because approval and scheduling are different steps. A report that counts approved quotes as booked work may look reassuring while an office task is still waiting. Adding another app only helps if it preserves that distinction.

Use that gap as your test case. Ask an app provider or builder to show one approved quote with no scheduled visit, then show what happens when a visit is added. A concrete answer is worth more than a long list of integrations.

THE SHORT ANSWER

Keep approval and scheduling separate.

Try native Jobber features and existing apps first. For a custom report, insist that approved quotes, created jobs and scheduled visits stay separate. Otherwise the report may answer a different question from the one your office is asking.

  1. Existing feature or app does the job? Verify its fields, direction and support first.
  2. Private custom integration? Confirm eligibility with Jobber; the five-account limit is not blanket permission.
  3. External reporting? Preserve client, property, quote, job and visit references separately.
01

Set up customer quote follow-ups before adding another app

For unanswered estimates, Jobber’s native quote follow-ups can send up to two customer reminders on Connect and higher plans. They apply to quotes awaiting response. They differ from the staff reminders on your schedule, which do not contact customers.

Use a message that asks a useful question about the actual scope. Our contractor estimate follow-up templates cover new quotes, delayed projects and older estimates. Assign someone to handle the answers before you enable the reminders.

A custom connection earns its place when the office needs a behavior the native setup cannot demonstrate. Define that gap precisely: coordinated stop rules across systems, a business-specific exception queue, or a report that separates approved work from a scheduled visit.

  1. Go to Settings from the gear menu, then Automations. Open a quote follow-up card.
  2. Name it for its purpose and choose the delay after the original quote was sent.
  3. Edit the message for your scope and reply owner. Save the automation when you are ready for it to run.
  4. Check the original recipient’s communication settings: outstanding quote follow-ups must be enabled.
  5. Inspect the original quote channel. Follow-ups use that method and the original local send time.
  6. Review both follow-up cards alongside any external sequence so the same quote does not receive overlapping messages.

Fictional landscaping quote: choose the follow-up before the send

Avery receives Q-204 by email for a seasonal cleanup. The office chooses a first follow-up after three days and another after seven days. Those intervals are illustrative. The first message asks whether Avery needs clarification on the cleanup scope; the second asks whether the work is still being considered. Neither claims a crew has been reserved.

If Avery replies “I want to compare the planting option,” the salesperson should handle that question and inspect pending reminders. Do not assume an email reply automatically stops a separate tool’s sequence. Verify the current quote state and the actual pause behavior you intend to rely on.

02

Use staff quote reminders when the next step is a phone call

A quote reminder can mean two different things in Jobber. The Work Settings instructions describe a schedule reminder for a team member. It does not send the customer an email or text. The reminder is assigned to the quote creator and is visible on the Jobber.com schedule rather than the mobile app.

To configure it, open Settings → Work Settings → Quotes, enable the reminder and choose the number of days after sending the quote. Then make the manual contact owner clear in your office process. The quote creator may be an administrator even when a different salesperson should make the call.

For a larger or more complicated scope, an owned phone task can be more useful than another generic email. Ask the caller to record the customer’s question, requested date and outcome against the correct project. If staff reminders and customer messages are both enabled, define how the office prevents a callback and a generic reminder from colliding.

03

A new automation does not work through your old quote backlog

Jobber’s Custom Automation Builder explicitly says new rules do not apply to past items retroactively. A time threshold is a moment when the rule becomes eligible, not an instruction to contact every quote older than that threshold.

For example, the office enables a 14-day rule on a Monday. A quote sent 40 days earlier is already beyond that point. Treat the future rule and the existing backlog as two separate pieces of work. Inspect the actual behavior in your account; switching on a rule is not evidence that older quotes have been reviewed or contacted.

A practical backlog review starts with current records. Find in-scope unsold work, read the latest customer conversation, and check whether a job or visit already exists. Then assign an action. Keep the real sent and approval dates; changing history to force a trigger can make reporting and later decisions misleading.

Fictional backlog review before any customer contact
QuoteCurrent evidenceNext action
Q-201 · 40 days oldStill considering cleanup; no new conversation or job foundOwner reviews scope and chooses an appropriate manual follow-up.
Q-202 · 25 days oldCustomer requested a call next monthKeep the requested date; do not add an immediate reminder.
Q-203 · 18 days oldCustomer accepted; office has not created a jobResolve job setup instead of asking whether the quote was received.
Q-205 · 60 days oldCustomer says another contractor was hiredRecord the lost outcome and end this sales follow-up.
Q-206 · 33 days oldLatest conversation or eligibility cannot be establishedHold for review with a named owner.

If you also build a custom native rule

The documented builder is reached through Settings → Automations → New Automation. You choose a trigger, conditions and an available action; saving activates it. One documented example archives quotes still awaiting response after 30 days. That example demonstrates future pipeline housekeeping, not a completed reactivation campaign.

Choose an archive policy only if it matches your sales process. A homeowner who explicitly asked to reconnect in six weeks should not disappear from staff follow-up merely because a generic age threshold elapsed. A client tag also describes the client; assess the effect when that client has several quotes before treating it as a project-specific exclusion.

04

Try the existing app before commissioning a new one

A landscaping company wants to see which approved quotes still need a first visit. Before commissioning software, check the existing Jobber workflow and reporting experience. If an app already provides the needed view, test it with one real approved quote and one unscheduled job. Ask what “scheduled” means in that app.

Custom work becomes useful when the destination needs a business-specific rule, a combined report or a handoff an existing app does not cover. The first specification should be narrow: “Show approved landscaping work without a scheduled first visit, with a link to the correct job and a named office owner.” It should not simply say “sync Jobber.”

The Jobber API overview describes GraphQL, OAuth authorization, scoped access and date-versioned requests. These are implementation mechanisms, not evidence that a particular app exposes every field or workflow. Ask the builder to demonstrate the chosen schema and permissions.

App evaluation questions for the same landscaping handoff
QuestionAcceptable evidenceWarning sign
Does it identify unscheduled work?Example with approved quote, job and no visitIt counts every approved quote as booked.
What data moves?Field map, direction and stable identifiers“Two-way sync” with no ownership rule.
What happens after an edit?Revised job or visit reflected in the reportOnly the original create event is handled.
Who fixes a broken connection?Named support owner and visible failure stateThe office discovers missing rows by accident.
Can we disconnect cleanly?Access stops and reporting shows stale/inactiveOld data continues to appear current.
05

Can your account use a custom integration?

Jobber’s Custom Integrations guidance says custom integrations are possible for specific approved customers and developers. It also explains that draft apps are blocked above five paying accounts unless approval is granted. An eligible custom integration staying within that limit can remain draft without requesting marketplace app review.

Those statements answer different questions. Eligibility to build a private integration is one question; the number of connected accounts and need for marketplace review are others. Do not turn “no app review required below the limit” into a promise that every customer or developer can launch any private integration.

Confirm the intended distribution before development. A tool for one landscaping company, an agency tool for multiple clients and a marketplace product have different operating responsibilities. Record the access decision alongside the scope so a successful pilot is not later sold as an approved multi-client product.

06

Follow the quote all the way to the visit

Illustrative example: Avery approves Q-204 for a seasonal yard cleanup at property P-88. The office creates J-309, then schedules V-410. The report should show each state as it becomes true, rather than labeling the entire chain complete on quote approval.

Jobber’s quote-to-job instructions explain that conversion takes the user to job setup, including timing, team and invoicing. They also note that later quote edits do not automatically update the converted job and that one quote can produce multiple jobs. A report keyed only by quote ID can therefore collapse legitimate work.

Use the business’s reporting grain: one row per job for an unscheduled-work queue, or one row per visit for crew reporting. The customer and property remain context, not substitutes for a job/visit key. Preserve the quote link so the office can trace the approved scope.

Fictional state model, not Jobber schema field names
StageKnown referencesReport wording
Quote approvedClient C-77, property P-88, quote Q-204Approved; job setup not yet verified
Job createdAdd job J-309Job exists; first visit not yet verified
Visit scheduledAdd visit V-410 and saved start/endScheduled for the confirmed window
Second job from same quoteAdd J-310, preserving Q-204Separate job; do not overwrite J-309
Quote revised after conversionQ-204 changed; inspect J-309Scope reconciliation required; do not assume propagation
  1. Open the accepted quote and use Convert to Job; it is the primary action for an approved quote, or available through More Actions.
  2. On the job creation page, complete timing, the assigned team and invoicing setup.
  3. Save and inspect the job and its visit details. Your office review should confirm the intended property and scheduled window.
  4. If work is split into another job, preserve the original quote relationship and the separate job reference.
  5. After a later scope change, inspect the job as well as the quote. Conversion does not keep subsequent quote edits synchronized.

Fictional record history: the second job is still unscheduled

Monday 8:40 a.m.: Avery approves Q-204 for cleanup and planting at P-88. At 9:10, the office creates J-309 for cleanup. At 10:00, it saves V-410 for Thursday 9–11 a.m. The cleanup can leave the unscheduled queue after that saved window is verified.

The office also creates J-310 for planting, with no visit yet. A report keyed only to Q-204 might see V-410 and mark all the quoted work scheduled. One row per job keeps J-310 visible as planting awaiting scheduling while J-309 shows the confirmed cleanup window.

On Tuesday, Avery changes the planting choice. The approved scope and the planting job must be reconciled before scheduling. Updating Q-204 alone does not establish that J-310 changed. The report needs a scope-review flag and an owner for the discrepancy, not an assumption that the newest quote automatically governs the existing job.

07

Specify what the office exception report should actually show

There are two queues to distinguish: accepted quotes without a verified job, and created jobs without a verified first visit. Use a quote reference for the first and a job reference for the second. Creating a made-up job ID for an approved quote would conceal the very gap you are trying to find.

For the proposed report, an unresolved item remains visible until the office can verify the missing step, close the opportunity or record a deliberate hold. Include the source link and next owner so staff can act from the queue. The report is a view of work to resolve; the dispatcher still owns scheduling in Jobber.

A failed read is not proof that a visit is absent. Use a separate “needs refresh” state when the query did not finish or the necessary permissions are missing. Otherwise a brief outage can flood the unscheduled queue with jobs that are already booked.

Proposed report columns, not literal Jobber API field names
ColumnPurposeOwner or rule
Account + quote/job IDIdentify the same object on every refreshIntegration preserves identity; names are display context.
Client and propertyShow which person and location require attentionRead from the current Jobber record.
Accepted scope referenceTrace what the customer approvedSales owns scope review after changes.
Job state and first visitSeparate saved work from confirmed timingDispatcher owns the actual schedule.
Exception reasonNo job, no first visit, scope mismatch or failed refreshDerived from verified reads under the agreed rules.
Next action, owner and due dateMake the queue usable by the officeOffice-owned fields; do not overwrite from every event.
Last successful refreshShow whether the view is current enough to useIntegration records success separately from an attempted refresh.
08

A webhook tells you what changed—not the whole record

Jobber’s webhook setup document describes a payload with account and item identifiers rather than the complete object. It calls for the appropriate read scope, signature verification and prompt acknowledgment; it also documents at-least-once delivery and possible repeated events from one user action.

For our proposed report, authenticate the event, preserve it durably, then retrieve the relevant current record in background processing. Match by account plus object ID. Update the existing report entry from the current authoritative state. Do not treat each delivery as a new job to append.

Avoid a permanent “ignore this item ID forever” rule. It would suppress legitimate later changes. Duplicate delivery and a new modification to the same job are different cases. A state-based update can be repeatable while still accepting a changed visit time.

Also plan a reconciliation check appropriate to the business: for example, periodically compare the in-scope open jobs with the report. Label that cadence as your operating choice, not a promise of instantaneous or lossless synchronization. A webhook-only dashboard should not quietly claim completeness after an outage.

One repeated event and one real later change

In the fictional report, two deliveries announce a change to V-410. Both should retrieve the current visit and update the same account/visit record. They should not create two cleanup jobs or two report rows.

The following day, the office moves V-410 to Friday. That is a legitimate later change involving the same item ID. A rule that permanently ignores an ID after its first event would miss the new window. Fetching current state and updating the matched record can accommodate both cases.

After a connection outage, show the last confirmed window with a stale marker until a reconciliation read succeeds. Then compare the relevant open jobs and visits with the report. Keep unresolved read errors visible instead of claiming the view is complete just because events have resumed.

09

A stale report should not look current

The authorization guide describes expiring access tokens, refresh tokens, account association and disconnect handling. A disconnected account is not just another temporary network error. Stop work for that connection and require the appropriate authorization flow before resuming.

For a reporting-first project, request the minimum scopes and keep tokens on the server. If a later phase adds writes, review the scope change and authorization implications. Do not store credentials in the reporting sheet or ship them to the browser.

A healthy-looking chart can be misleading after access is revoked. Include “last successful refresh” and connection state. A stale report should remain available for context but visibly disclose that it is not a current operating view. Test this with the office user who will rely on it, not only the developer.

Acceptance tests for the proposed Jobber report
TestPass condition
Approved quote with no jobNot reported as scheduled.
Job exists with no first visitAppears in the office exception queue.
Two jobs converted from one quoteBoth represented without overwriting each other.
Same webhook delivered twiceOne report record for the same account/object.
Visit changed after initial syncNew saved window replaces the old display.
Account disconnectedSync stops; connection is inactive and freshness is visible.
Authentication succeeds but query returns errorsNo false success; errors and destination state are inspected.
10

Price the report and its upkeep separately

The build scope should include account eligibility, field mapping, event handling, reconciliation, visible freshness and reconnect instructions. API-version maintenance and monitoring are ongoing responsibilities. A one-time dashboard fee without an operating owner does not describe the full project.

Use the CRM and spreadsheet ownership guide before allowing the external view to write dates back. If you are comparing platforms, the contractor CRM guide addresses broader fit. For a status-driven production handoff, the JobNimbus native-rule example provides a useful contrast.

Keep the first release read-only if the value is visibility. Add operational writes only when the office can show why they are needed, who approves them and what evidence proves the change reached the correct record.

Use the workflow automation cost guide to compare subscription, usage and maintenance without treating a simple app connection as equivalent to a stateful reporting system.

Before funding a custom report, time the manual check it would replace. An illustrative 30 checks each week at four minutes each totals two hours; it does not prove two hours will be saved. Compare that work with native reporting, an existing app, the custom build and its upkeep. Track unresolved scheduling items and office response time as well as booked work, so the report’s value can be assessed without attributing every approved quote to the integration.

SOURCES & METHODOLOGY

Supporting documentation

Official documents were checked for the latest update to this guide. Examples and operating recommendations are GoodHandoff’s analysis; they are not claims of live customer results or vendor certification. We have not tested these integrations in your account. Access, pricing and API behavior can change.

GoodHandoff sells custom workflow services. We recommend built-in configuration when it meets the requirement. No ranking payment or vendor partnership is implied by inclusion.

Keep reading

Next step

Find out what Jobber can handle on its own.

Book a free 20-minute call with one approved quote that never got scheduled. We will trace where it stopped.