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.
- Go to Settings from the gear menu, then Automations. Open a quote follow-up card.
- Name it for its purpose and choose the delay after the original quote was sent.
- Edit the message for your scope and reply owner. Save the automation when you are ready for it to run.
- Check the original recipient’s communication settings: outstanding quote follow-ups must be enabled.
- Inspect the original quote channel. Follow-ups use that method and the original local send time.
- 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.
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.
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.
| Quote | Current evidence | Next action |
|---|---|---|
| Q-201 · 40 days old | Still considering cleanup; no new conversation or job found | Owner reviews scope and chooses an appropriate manual follow-up. |
| Q-202 · 25 days old | Customer requested a call next month | Keep the requested date; do not add an immediate reminder. |
| Q-203 · 18 days old | Customer accepted; office has not created a job | Resolve job setup instead of asking whether the quote was received. |
| Q-205 · 60 days old | Customer says another contractor was hired | Record the lost outcome and end this sales follow-up. |
| Q-206 · 33 days old | Latest conversation or eligibility cannot be established | Hold 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.
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.
| Question | Acceptable evidence | Warning sign |
|---|---|---|
| Does it identify unscheduled work? | Example with approved quote, job and no visit | It 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 report | Only the original create event is handled. |
| Who fixes a broken connection? | Named support owner and visible failure state | The office discovers missing rows by accident. |
| Can we disconnect cleanly? | Access stops and reporting shows stale/inactive | Old data continues to appear current. |
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.
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.
| Stage | Known references | Report wording |
|---|---|---|
| Quote approved | Client C-77, property P-88, quote Q-204 | Approved; job setup not yet verified |
| Job created | Add job J-309 | Job exists; first visit not yet verified |
| Visit scheduled | Add visit V-410 and saved start/end | Scheduled for the confirmed window |
| Second job from same quote | Add J-310, preserving Q-204 | Separate job; do not overwrite J-309 |
| Quote revised after conversion | Q-204 changed; inspect J-309 | Scope reconciliation required; do not assume propagation |
- Open the accepted quote and use Convert to Job; it is the primary action for an approved quote, or available through More Actions.
- On the job creation page, complete timing, the assigned team and invoicing setup.
- Save and inspect the job and its visit details. Your office review should confirm the intended property and scheduled window.
- If work is split into another job, preserve the original quote relationship and the separate job reference.
- 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.
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.
| Column | Purpose | Owner or rule |
|---|---|---|
| Account + quote/job ID | Identify the same object on every refresh | Integration preserves identity; names are display context. |
| Client and property | Show which person and location require attention | Read from the current Jobber record. |
| Accepted scope reference | Trace what the customer approved | Sales owns scope review after changes. |
| Job state and first visit | Separate saved work from confirmed timing | Dispatcher owns the actual schedule. |
| Exception reason | No job, no first visit, scope mismatch or failed refresh | Derived from verified reads under the agreed rules. |
| Next action, owner and due date | Make the queue usable by the office | Office-owned fields; do not overwrite from every event. |
| Last successful refresh | Show whether the view is current enough to use | Integration records success separately from an attempted refresh. |
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.
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.
| Test | Pass condition |
|---|---|
| Approved quote with no job | Not reported as scheduled. |
| Job exists with no first visit | Appears in the office exception queue. |
| Two jobs converted from one quote | Both represented without overwriting each other. |
| Same webhook delivered twice | One report record for the same account/object. |
| Visit changed after initial sync | New saved window replaces the old display. |
| Account disconnected | Sync stops; connection is inactive and freshness is visible. |
| Authentication succeeds but query returns errors | No false success; errors and destination state are inspected. |
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.
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.
- Jobber: Native Quote Follow-Up AutomationsQuote reminder availability, limit, method and recipient settings.
- Jobber: Work Settings and Staff Quote RemindersSchedule reminders do not contact the client; setup, quote-creator assignment and web visibility.
- Jobber: Custom Automation BuilderTrigger/condition/action setup, activation on save and the explicit nonretroactive boundary.
- Jobber: API OverviewGraphQL, OAuth, scopes, API versioning and record identifiers.
- Jobber: Custom IntegrationsSpecific approved users/developers, draft-account limit and marketplace-review distinction.
- Jobber: Converting a Quote to a JobSeparate job setup, one quote to multiple jobs, and lack of automatic later quote propagation.
- Jobber: Setting Up WebhooksPayload identity, scopes, signature, prompt acknowledgment and repeated deliveries.
- Jobber: App AuthorizationToken refresh, account association, invalidation and disconnect handling.
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.