Complete reference for every feature in NexJob. Click any section in the sidebar to jump to it. New to NexJob? Start with the How-To Guide (/how-to) for step-by-step setup.
Your dashboard is the command center for your business. It shows real-time metrics including revenue (week-to-date, month-to-date, year-to-date), outstanding invoices, overdue amounts, jobs today, and open quotes.
AI Impact Card — Shows how many actions NexJob's AI took this week: emails sent, SMS messages, quotes generated, and items pending your review.
Today's Jobs — Lists scheduled and in-progress jobs with customer name, time, and city. Click any job to open its detail page.
Quick Actions — One-click buttons to create a new job, invoice, customer, quote, or access dispatch.
Job Costing — Monthly breakdown of revenue vs. labor + material costs. Flags low-margin jobs so you can adjust pricing.
Agent Action Feed — Live log of AI actions taken on your behalf (emails sent, reminders scheduled, reviews requested).
The dashboard is fully customizable — click Customize to drag cards, reorder them, or hide sections you don't need.
Jobs are the core of NexJob. A job represents a service call, repair, installation, or any work performed for a customer.
Creating a Job — Click + New Job and fill in the title, customer, description, scheduled date, and status. Assign it to a technician from your team.
Job Statuses — Unscheduled, Scheduled, In Progress, On the Way, Completed, Cancelled. Status changes trigger automated actions (SMS notifications, calendar updates, review requests).
Job Detail Page — Shows full job info, customer contact, line items, and photos. From here you can:
• Upload job site photos (before/after)
• Track insurance claims (adjuster info, approved amounts, supplements)
• Reassign to a different technician
• View the job checklist (AI-generated based on service type)
• See job costing (labor hours × hourly rate + materials)
• Record voice notes that AI transcribes to text
• Generate an observation report (for roof/inspection work)
Filters — Filter by status or by insurance claims. Sort by title, customer, status, or scheduled date.
Import/Export — Import jobs from CSV or export your job list to a spreadsheet.
Quotes let you send professional estimates to customers before starting work.
Creating a Quote — Click + New Quote, select a customer, add a title, and build your line items from your service catalog. Set an expiration date (default 30 days).
AI Quote Advisor — Click the AI Advisor button when creating a quote. It analyzes the customer's history and suggests appropriate services and pricing.
AI Estimate — Upload a job site photo and AI will analyze it to suggest line items and pricing based on what it sees.
Sending Quotes — Click Send to email the quote to your customer. They receive a professional PDF with your branding.
Customer Acceptance & Self-Scheduling — Customers can accept or decline quotes via email link. When they accept:
• They sign their name (with optional signature pad)
• If Card on File is enabled, they’re prompted to save a credit card via Stripe
• A calendar appears showing your available time slots for the next 14 days
• They pick a date and time — a job is automatically created and set to “Scheduled”
• They receive a confirmation SMS and email with their appointment details
• If Agentic Scheduling is enabled in Settings → Automations, a technician is automatically assigned based on skill match, distance, and workload. If no tech is available, your admins are notified to assign one manually.
Card on File — When a customer accepts a quote, they are prompted to save a credit card on file via Stripe. This card can be automatically charged when the job is completed. Card details are securely handled by Stripe and never stored on NexJob servers. You can require a card before quote acceptance in Settings → Invoicing.
Converting Quotes — Click Invoice on an accepted quote to automatically create an invoice with all the line items transferred. The invoice retains a link to the originating quote, so you can always trace it back.
From Site Inspections — Site inspection reports can generate quotes automatically. When that quote converts to an invoice, the full chain is preserved: Inspection → Quote → Invoice. View the source inspection from any invoice created this way.
Statuses — Draft, Sent, Accepted, Declined, Expired.
Multi-Option Quotes with Add-ons — Mark individual line items as Optional and assign them to Option Groups (Good / Better / Best). When the customer views the quote in the portal, they can toggle add-ons on or off and see the total update in real time before accepting. This lets you present tiered pricing without creating separate quotes.
Invoices are how you get paid. NexJob auto-generates invoice numbers and calculates totals from line items.
Creating an Invoice — Click + New Invoice, select a customer, optionally link a job, set a due date, and add line items.
Sending Invoices — Click Send Invoice to email it to the customer. NexJob automatically:
• Creates a Stripe payment link so customers can pay online
• Sends a text-to-pay SMS if the customer has opted in
• Syncs to QuickBooks if connected
Getting Paid — When a customer pays via the Stripe link, the invoice is automatically marked as paid. You can also manually mark invoices as paid for cash/check payments.
Auto-Charge on Completion — If a customer saved a card on file when accepting their quote and opted in to auto-charge, the invoice is automatically charged when the job is marked complete. No payment link needed — the customer's card is charged instantly and they receive a receipt. This requires the Auto-Charge Card on File automation to be approved in Settings → Automations.
Follow-Ups — NexJob's AI automatically sends polite follow-up emails for unpaid invoices. The tone escalates based on how overdue the invoice is.
Statuses — Draft, Sent, Viewed, Paid, Overdue, Void.
Voiding — Made a mistake? Void an invoice instead of deleting it to maintain your records.
Status Protections — NexJob enforces valid invoice transitions. You cannot skip from Draft directly to Paid (must go through Sent first). Paid invoices cannot be voided, and void invoices cannot be marked as paid. When Stripe processes a payment automatically, the invoice transitions correctly even if it was still in Draft.
ACH Bank Payments — Customers see an ACH / bank transfer option alongside credit cards on the checkout page. No additional setup needed — if Stripe is connected, ACH is available automatically with lower processing fees.
Tap to Pay — Accept contactless payments in the field using your iPhone. Go to the Terminal page, tap Set Up Tap to Pay, install the Stripe Terminal SDK, and use the connection token from NexJob. Tap a card or phone to your device to collect payment instantly.
Instant Payouts — From the Billing page, click Instant Payout to transfer funds to your bank account within minutes instead of the standard 2-day wait. Requires Stripe Connect and an eligible bank account.
Your customer database stores everyone you do business with.
Customer Profile — Each customer has contact info (name, email, phone, address), job history, invoice history, and notes. You can also track properties and equipment for each customer.
Properties — A customer can have multiple properties (home, rental unit, commercial building). Each property stores the address, building type, square footage, roof details, and inspection history.
Equipment — Track equipment at customer locations (water heaters, HVAC units, sump pumps). Set warranty dates and maintenance intervals so NexJob can remind you when service is due.
SMS Consent — Track whether customers have opted in to receive text messages. NexJob respects SMS consent for all automated messages.
Search — Search by name, email, phone, or city.
Import — Bulk import customers from CSV, XLSX, or directly from Jobber/Housecall Pro exports.
Bulk Import — Use the Import CSV button to upload multiple customers at once. Each row is validated individually — successful rows import while errors are reported per-row so you can fix and re-upload. Leads also support bulk CSV import.
NexJob makes it easy to import your existing data from spreadsheets or other platforms. Go to Settings → Import Data (or click the Import button from any list page).
Supported File Formats — CSV (.csv), Excel (.xlsx, .xls), and Google Sheets URLs (the sheet must be shared publicly or via link).
What You Can Import:
• Customers — Name, email, phone, address, notes. Required: First Name and Last Name.
• Services — Service name, description, price, taxable status. Required: Name and Price.
• Inventory / Parts — Item name, SKU, quantity, unit cost, reorder point. Required: Name and Quantity.
• Equipment — Equipment name, serial number, make, model, install date. Required: Name.
• Jobs — Title, customer name, address, scheduled date, status. Required: Title and Customer Name.
Import Order — Import customers first, then jobs. Jobs link to customers by name or email, so customers must exist before job import.
AI Column Mapping — NexJob's AI automatically matches your spreadsheet columns to the right fields. Upload your file, review the suggested mapping, adjust if needed, then confirm.
Download Templates — On the Import page, click the CSV Formatting Guide section to download a template for each data type. Templates include headers and one example row so you can see the expected format.
Formatting Tips:
• First row must be column headers (Name, Phone, Email, etc.)
• Dates should be YYYY-MM-DD (e.g. 2025-06-15) or MM/DD/YYYY
• Dollar amounts as numbers without $ sign (e.g. 149.00, not $149)
• Phone numbers can include dashes, spaces, or parentheses
• Leave optional columns blank if you don't have the data
• Wrap values containing commas in double quotes
Coming from Jobber or Housecall Pro? — Use the Platform Import option on the Import page. Export your data from your current platform as CSV, upload it to NexJob, and the system auto-detects the platform and maps columns automatically. Supports customers, jobs, and invoices.
Maximum File Size — 10 MB per file, up to 5,000 rows per import.
Duplicate Detection — Customers are matched by email or phone. Existing records are updated, not duplicated. Services and inventory match by name.
Leads track potential customers who haven't booked yet.
Lead Sources — Leads come from your booking widget, SMS receptionist, website forms, referrals, or manual entry.
AI Scoring — Each lead gets an AI score (0-100) based on urgency, service type, and estimated value. High-scoring leads are flagged for immediate follow-up.
Lead Statuses — New Lead, Contacted, Quoted, Scheduled, Won, Converted, Lost.
Pipeline View — The Pipeline page shows a Kanban board where you can drag leads between stages. See total pipeline value per stage at a glance.
Converting Leads — Click Quote on any lead to automatically create a quote with the customer's info pre-filled.
AI Summary — Each lead includes an AI-generated summary describing the opportunity and estimated job value.
Track your team's hours and mileage for accurate payroll and job costing.
Clock In/Out — Technicians tap Clock In when they start work and Clock Out when done. Optionally assign time to a specific job.
GPS Verification — If geofencing is enabled, NexJob verifies the technician is within the configured radius of the job site when clocking in.
Break Tracking — Break minutes are recorded at clock-out and deducted from total hours.
Mileage — Log miles driven between jobs with start/end locations. NexJob calculates IRS reimbursement automatically ($0.67/mile for 2026).
Manager View — Managers can see all team members' time entries, edit entries, and generate payroll reports.
Job Costing — Time entries feed into job costing — hours × hourly rate = labor cost per job.
Manage your crew from the Team page.
Adding Members — Click + Add Member, enter their email, and assign a role. They'll receive an invitation email.
Roles — Technician (field work only), Manager (create jobs/invoices), Admin (everything except billing), Owner (full access).
Hourly Rates — Set each team member's hourly rate for accurate job costing and payroll calculations.
Twilio Numbers — Assign individual Twilio phone numbers to technicians so customers see the tech's number on SMS messages.
Deactivating — Deactivate team members when they leave — their job history is preserved.
Schedule (All Plans) — Calendar view showing all scheduled jobs by day or week. Color-coded by status and priority.
Dispatch Board (Scale) — Kanban-style dispatch board with columns for Unscheduled, Scheduled, In Progress, and Completed. Drag and drop jobs between columns to update status.
Live Fleet Map (Scale) — Real-time GPS view of all technicians and active jobs on a map. See who's closest to an emergency call.
On-My-Way SMS — When a tech marks a job as "On the Way," the customer automatically receives a text with a live tracking link. The SMS is queued by NexJob the instant the status changes — no separate button to press.
Appointment Reminders — Customers get automatic SMS reminders 24 hours and 1 hour before their appointment.
Tech Reassignment — When a job is reassigned to a different technician, the new tech receives an SMS and in-app notification with job details. The old tech receives an in-app notification that they've been unassigned. All changes broadcast instantly to the dispatch board via real-time updates.
Optimize Route (manager+) — Filter the dispatch board to a single technician, then click "Optimize Route" to ask Google Maps for the shortest drive order across that tech's geocoded jobs for today. NexJob shows a preview with the new order and total drive time — click "Apply New Order" to spread the jobs across the same time window in the optimized sequence, or Cancel to leave them as-is.
Continuous Route Re-optimization (Ops+, manager+) — When enabled, NexJob watches your dispatch board all day. Any time a job is added, moved, or reassigned, the engine runs a fresh optimization in the background. If it can save you meaningful drive time, a toast appears: "Re-opt saves 24 min — apply?" One click applies the new order; ignoring the toast for 10 seconds dismisses it. Toggle in Settings → Automations.
AI Route Explainability (Ops+) — Every optimization includes a plain-English explanation of why this order beats the alternative ("Tech is closer to job A in the morning; clustering B-C-D after lunch saves a 12-mile detour"). Shown as a tooltip under the Apply button.
Map View — Click the Map toggle on the Dispatch page to see all jobs plotted on a Google Map. Click any pin for job details, customer info, and assigned tech. Filter by technician to show only one tech’s jobs at a time.
List View — Click the List toggle to see jobs in a sortable table. Click column headers to sort by customer, time, status, or tech. Change a job’s status directly from the inline dropdown without leaving the page.
Track parts, materials, and supplies.
Inventory Items — Add items with name, SKU, quantity, reorder point, and unit cost. NexJob shows low-stock warnings when quantities drop below the reorder point.
Parts Used on Jobs — On every job detail page you'll find a "Parts Used" section. Tap "+ Log Parts" to select a part from your inventory, enter the quantity, and add optional notes. Inventory is automatically decremented when you log usage, and the cost feeds directly into job costing for accurate profitability tracking.
AI Auto-Ordering — When NexJob's AI books a job, the Auto Parts Ordering system checks your inventory for related materials. If stock is low, it automatically creates a Purchase Order and emails your supplier — before the tech even arrives on site. Enable this in Settings → Automations.
Predictive Inventory — AI analyzes your usage patterns and predicts when you'll run out of each item. Suggests reorder quantities and timing.
Purchase Orders — Create POs for your suppliers, add line items, and send them via email. When parts arrive, mark the PO as received to automatically update inventory.
Suppliers — Store supplier contact info, account numbers, and preferred status.
Track business expenses for job costing and tax reporting.
Categories — Materials, Fuel, Tools, Subcontractor, Meals, Permits, Parking, Other.
Receipt OCR — Upload a photo of a receipt and AI extracts the vendor, amount, and date automatically.
Job Linking — Associate expenses with specific jobs to see true job profitability.
Approval Workflow — Managers can approve or reject expense submissions.
Reimbursement — Track which expenses are reimbursable and mark them as reimbursed.
NexJob's AI agents work in the background to handle routine tasks. Every automation must be explicitly turned on by you in Settings → Automations before it will run. Nothing runs automatically until you enable it.
How It Works — Go to Settings → Automations to see all available automations. Each one shows a description, risk level, and which plan it requires. Toggle them on or off individually.
Complete Automation List (all must be manually enabled):
• On-My-Way SMS (`send_omw_texts`, Solo) — Texts customer when tech marks “On the Way” with a live tracking link. Fires automatically the moment a job's status moves to On the Way — no extra button to press.
• Appointment Reminders (`send_appointment_reminders`, Solo) — 24h and 1h SMS reminders before appointments.
• Job Scheduled SMS (`send_job_scheduled_sms`, Solo) — Confirms appointment date, time, and tech via text.
• Job Completed SMS (`send_job_completed_sms`, Solo) — Texts customer when job is done with payment link.
• Job Assigned SMS (`send_job_assigned_sms`, Solo) — Notifies tech via text when assigned to a job.
• Review Requests (`send_review_requests` + `send_sms_review_requests`, Solo) — Asks customers for a review after job completion via email and/or SMS. The moment a job is marked Completed, NexJob queues a sentiment-aware review request that goes out about 2 hours later — unless your recent texts with the customer suggest they're unhappy, in which case the request is skipped.
• Quote Follow-Up Sequence (`quote_followup`, Solo) — Two-step follow-up on sent quotes: a friendly reminder at +2 days and an urgency nudge at +5 days. Runs weekdays at 9:30 AM. Each stage sends at most once per quote.
• Text-to-Pay SMS (`send_text_to_pay_sms`, Solo) — Sends Stripe payment link via text when invoice is sent.
• Receipt SMS (`send_receipt_sms`, Solo) — Texts payment confirmation when customer pays.
• Google Calendar Sync (`google_calendar_sync`, Solo) — Auto-syncs jobs to Google Calendar.
• QuickBooks Sync (`quickbooks_sync`, Crew) — Auto-pushes invoices to QuickBooks.
• Email Campaigns (`email_campaigns`, Crew) — Required for bulk marketing campaigns.
• Receipt OCR (`receipt_ocr`, Ops) — AI extracts vendor, amount, date from receipt photos.
• Auto Checklist (`auto_checklist_generation`, Ops) — AI generates service checklists for new jobs.
• Supplier Reorder (`supplier_reorder`, Ops) — Auto-emails supplier when inventory is low.
• Auto Parts Ordering (`autonomous_parts_ordering`, Ops) — AI creates POs for upcoming job parts.
• Agentic Scheduling (`agentic_scheduling`, Ops) — Auto-assigns best tech when customer self-schedules.
• SMS-to-Booking (`ai_sms_to_booking`, Scale) — AI processes inbound texts into leads/bookings.
• AI Booking Assist (`ai_booking_assist`, Scale) — AI receptionist answers calls and books appointments.
• Auto SMS Responses (`send_auto_responses`, Scale) — AI replies to customer texts.
• Ghost Dispatch (`ghost_dispatch`, Scale) — AI auto-dispatches techs to new jobs.
• AI Photo-to-Quote (`ai_photo_to_quote`, Scale) — AI generates quote from customer’s texted photo.
• Bulk Messaging (`bulk_messaging`, Ops) — Required for broadcast messages to team.
• Voice Call Logging (`voice_log`, Solo) — Records and transcribes inbound calls.
AI Review Queue — Some AI actions require your approval before executing. Check the Agent Action Log.
Risk Levels — Low (safe to enable), Medium (review recommended), High (auto-sends, auto-charges, auto-orders).
AI Copilot gives you instant, actionable insights about your customers and business directly from the Dashboard.
Customer Insights — Select any customer from the AI Copilot panel to see an AI-generated summary of their service history, spending patterns, and outstanding items.
Recommendations — AI suggests upsell opportunities, maintenance reminders, and follow-up actions based on each customer’s profile and job history.
Draft Responses — Generate ready-to-send email or SMS drafts tailored to the customer’s context. Review, edit if needed, and send with one click.
Availability — AI Copilot is available on Ops and Scale plans. The panel appears on the Dashboard when enabled.
NexJob uses two AI providers (Google Gemini as primary, Anthropic Claude as fallback) so that an outage of one provider automatically fails over to the other. You will rarely see the system in a degraded state. When it happens, here is exactly what you will see and what to do.
The in-app banner — A colored stripe across the top of every page shows the live AI status:
• No banner = both providers healthy (the normal state).
• Orange banner = one provider is degraded, the backup is covering. Responses may be slightly slower than usual. No action required.
• Red banner = both providers are temporarily unavailable. AI-generated features (Copilot suggestions, AI Notes, draft responses) will show error messages with a Retry button.
What stays working when AI is down
• Jobs, customers, invoices, quotes, scheduling, payments, reports — all unaffected.
• Customer-facing automated messages (payment reminders, quote follow-ups, job completion summaries, review responses) continue to ship using NexJob’s deterministic fallback templates. They may read a little less polished than the AI-generated versions, but your customers still get the essential information.
The SMS alert (for company owners) — When both providers are down, NexJob sends a brief SMS to your owner and admin phone numbers so you know to manually review any high-stakes customer messages until service restores. The alert is deduped to one per day per company. To opt out, see Settings → Company.
What to do during an outage
• If a customer-facing message looks rough, edit it before sending — the in-app banner tells you it’s a fallback.
• If you have a high-value quote you would have run through AI Quote Advisor, just price it manually — you have the data.
• Wait it out. Provider outages typically resolve in minutes; the banner will disappear automatically when normal service returns.
Every AI call NexJob makes on your behalf is logged with its cost, the feature that triggered it, and the model used. This page is the operator view — it tells you which AI features are costing the most and gives you knobs to cap spend per tenant.
The cost dashboard — Visit `/admin/ai_costs` (manager+ access required). The page shows:
• Today’s AI spend in cents, with your daily limit alongside.
• Total calls today and how many failed.
• Rollups by feature (e.g. `quote_advisor`, `review_response_draft`, `observation_report_vision`) for the last 7 days. This is the fastest way to see which feature is driving cost.
• Rollups by model and provider.
• Live circuit-breaker state for Gemini + Claude.
Setting a daily AI budget cap — You can cap your account’s daily AI spend so no single bad day blows past your expected cost. The system enforces in this order: per-company override → platform default. To set yours, your administrator can set `Company.ai_daily_budget_cents` via the Rails console or wait for the upcoming Settings UI toggle. Over-budget calls return nothing and write a denial row visible on the cost dashboard.
Concurrency protection — NexJob caps each account at a small number of simultaneous AI calls (default 5) so one of your operations cannot starve the others. If you trigger a burst (e.g. 20 observation reports back-to-back), the first 5 will run immediately and the rest return nothing with a `concurrency_cap_exceeded` row in the dashboard. Just retry them after a few seconds. Most operations also auto-retry on transient rate limits with exponential backoff (1s, 2s, 4s) before counting as a failure, so most bursts succeed without intervention.
Observation reports specifically — Roofing observation reports are AI-heavy (one vision call per photo plus one summary call). Each report shows up on the cost dashboard with the `observation_report_vision` and `observation_report_summary` feature labels so you can see exactly what they cost you per month. If reports become a significant share of your AI bill, raise it with NexJob support — a separate per-report pricing model is under consideration but not yet implemented.
This section explains the major end-to-end workflows and which settings must be enabled for each.
Workflow 1: Quote → Card → Self-Schedule → Auto-Assign → Confirmation
• 1. You send a quote to a customer
• 2. Customer opens quote link, clicks Accept, signs name
• 3. Customer saves credit card on file (Stripe)
• 4. Calendar appears — customer picks date + time
• 5. Job auto-created as “Scheduled” with line items from quote
• 6. Tech auto-assigned (if agentic_scheduling enabled)
• 7. Customer gets SMS + email confirmation with appointment details + tech name
Enable: Card on File (Settings → Invoicing), Business Hours + Timezone (Settings → Business), Agentic Scheduling (Automations), Stripe + Twilio connected
Workflow 2: Booking → AI Diagnosis → Lead → Quote → Job
• 1. Customer uses booking widget on your site, describes problem
• 2. AI diagnoses urgency + materials needed
• 3. Lead created with AI score, you click Quote
• 4. Customer accepts → Workflow 1 runs
Enable: Booking Widget embed (Settings → Booking Widget)
Workflow 3: Job Complete → Invoice → Auto-Charge → Review
• 1. Tech marks job Completed → customer gets SMS
• 2. Card on file auto-charged (if consented) → receipt sent
• 3. Review request sent after delay
Enable: `send_job_completed_sms`, `send_receipt_sms`, `send_review_requests`, Auto-Charge Card on File (Settings → Invoicing)
Workflow 4: Tech Assignment & Reassignment
• New assignment: tech gets SMS with job details
• Reassignment: new tech gets SMS + notification, old tech gets unassigned notification
• All changes broadcast to dispatch board in real-time
Enable: `send_job_assigned_sms`
Workflow 5: On-My-Way → Live Tracking
• Tech taps On My Way (or dispatcher drags the job to the On the Way column) → NexJob immediately enqueues `JobOnTheWaySmsJob`
• Customer gets SMS with a fresh 2-hour tracking link → sees tech on a live map
Enable: `send_omw_texts`, Twilio connected, customer SMS opt-in
Workflow 6: Auto Review-Request after Job Completion
• Tech marks job Completed (or dispatcher drags the job to Completed) → NexJob enqueues `JobCompletedAutomationsJob`
• Job-completed SMS goes out (with payment link if invoice is open)
• `SmartReviewRequestService` analyzes recent texts from this customer; if sentiment is negative the review request is suppressed, otherwise it's queued to send about 2 hours later (or next morning if the job finishes after 8 PM)
• Hourly `ReviewRequestSchedulerJob` is a backstop that catches any completed jobs the realtime callback missed
Enable: `send_job_completed_sms`, `send_review_requests` (and/or `review_generation`), Twilio + Resend
Workflow 7: Route Optimization on the Dispatch Board
• Manager filters dispatch board to a single tech
• Click "Optimize Route" → NexJob asks Google Maps for the shortest drive order across that tech's geocoded jobs for today
• Preview modal shows the new order and total drive time → click "Apply New Order" to redistribute the jobs across the original time window in the optimized sequence
Enable: Google Maps API key in env, geocoded job addresses (NexJob auto-geocodes when a customer/job address is saved)
Workflow 8: Two-way QuickBooks Sync
• Manual: Settings → QuickBooks → "Pull Customers" / "Pull Payments" / "Full Two-Way Sync"
• Pull Customers — imports any QB customers not already in NexJob; refreshes email/phone/address on existing matches
• Pull Payments — for any QB-recorded payment linked to an invoice NexJob is tracking, marks the invoice Paid (without re-pushing the payment back to QB)
• Push side continues to work automatically when `quickbooks_sync` is enabled
Enable: QuickBooks Online connected (Settings → QuickBooks)
Workflow 9: Inventory Auto-Reorder
• Tech logs parts → inventory decrements → PO auto-created + emailed to supplier
Enable: `supplier_reorder` and/or `autonomous_parts_ordering`, supplier email on file
Workflow 10: Quote Add-on Selection Flow
• 1. You create a quote and mark some line items as Optional with Option Groups (Good/Better/Best)
• 2. Customer opens quote link, sees base price plus toggleable add-ons
• 3. Customer enables/disables add-ons — total updates in real time
• 4. Customer accepts, signs, saves card, and self-schedules as usual
Enable: No special settings — add-on support is built into the quote editor and portal
Workflow 11: Instant Payout Flow
• 1. Go to Billing page and click Instant Payout
• 2. Enter the amount to transfer
• 3. Stripe moves funds to your bank account within minutes
• 4. Payout confirmation appears on the Billing page
Enable: Stripe Connect onboarded, eligible bank account linked
Your customers get their own self-service portal at your custom URL.
Magic Link Login — Customers enter their email and receive a login link. No passwords to remember.
Portal Dashboard — Shows account balance, open invoices, and upcoming jobs.
View Invoices — Customers can view all invoices, download PDFs, and pay online via Stripe.
View Quotes — Customers can review quotes and accept or decline them directly.
View Jobs — Customers see their scheduled and completed jobs with status updates.
Service Requests — Customers can submit new service requests through the portal, which creates a lead in your system.
Card on File — Customers can view and manage their saved card from the portal. They can add a new card or remove an existing one. The portal shows the card brand and last 4 digits for easy identification.
Let customers book appointments directly from your website.
Booking Widget — Go to Settings → Booking Widget to get an embed code for your website. The widget shows your available services, time slots, and collects customer information. You can customize the button text, color, and screen position directly from this page.
WordPress Plugin — If your website runs on WordPress, install the official NexJob Online Booking plugin from the WordPress.org directory. Go to your WordPress admin → Plugins → Add New, search for "NexJob Online Booking" (by sguilkey6), click Install Now and then Activate. Once activated, go to Settings → NexJob Booking, enter your company slug (found in NexJob under Settings → Booking Widget), choose your button color and position, and save. The booking button appears on every page automatically — no code editing required. Full guide: nex-job.com/help/wordpress-plugin
Other Websites — For Wix, Squarespace, Shopify, GoDaddy, or any other platform, the Booking Widget page includes step-by-step installation guides specific to each platform. Copy the embed script, follow the guide for your platform, and the booking button will appear on your site.
Testing Your Widget — After installing, use the Test Widget section on the Booking Widget page to verify it loads correctly. The test opens a preview of the booking flow so you can confirm services, dates, and the form all work before customers see it.
AI Diagnosis — Before booking, the customer can describe their problem and AI provides a pre-diagnosis with estimated time, materials needed, and urgency level.
Per-Service Intake Questions — In Settings → Services, each service has its own "Booking intake questions" builder. Add as many questions as you want (text, number, select, radio, checkbox), mark each one required or optional, and reorder them. When a customer picks that service in the booking widget, the questions appear right after the AI diagnosis step. NexJob blocks the Next button until every required answer is filled in. Answers are saved on the resulting lead under `intake_responses` and printed back into the lead description for the office to see at a glance.
Automatic Lead Creation — Every booking request creates a lead in your CRM with all the customer details, preferred date, AI diagnosis, and any intake answers attached.
Available Slots — The widget checks your existing schedule and only shows open time slots to avoid double-booking.
90-Day Window — Customers can only book up to 90 days in advance. Past dates are automatically rejected. Time slots use your company's configured timezone to display correctly for your service area.
Connect NexJob to the tools you already use.
Stripe (All Plans) — Accept credit card payments online. Customers pay through secure Stripe checkout links embedded in invoices.
Google Calendar (Solo) — Jobs automatically sync to Google Calendar when created, updated, or cancelled.
Microsoft Outlook (Solo) — Calendar sync and single sign-on with Microsoft 365.
QuickBooks (Crew) — Two-way sync with QuickBooks Online. Push: invoices and customers automatically push to QuickBooks when created or updated. Pull: from the QuickBooks page click "Pull Customers" to import any QB customers you don't already have, or "Pull Payments" to import payments recorded directly in QB so the matching NexJob invoice is automatically marked Paid. "Full Two-Way Sync" runs both directions in one click.
Twilio (Solo) — Send and receive SMS from your business phone number. Required for On-My-Way texts, appointment reminders, and the SMS AI agent.
Dedicated Business Number — In Settings, search available phone numbers by area code, pick one, and provision it with a single click. All outbound texts route through this number so customers always see your business line.
Aircall / OpenPhone (Ops+) — BYO VOIP integrations. Paste your provider credentials in Settings → VOIP. Inbound calls trigger a customer-match popup for everyone logged in (with deep-link to the customer record or auto-created Lead). The unified `/voip` call log shows calls across both providers with All / Missed / Inbound / Outbound filters and customer-name resolution. Click-to-Call buttons throughout the app dial through whichever provider you've configured.
TaxJar (Crew+) — Auto-calculate sales tax on quotes and invoices using the customer's ship-to address. Paste your TaxJar API key in Settings → Sales Tax.
WordPress (All Plans) — Install the free NexJob Booking plugin on any WordPress site. One-click setup — enter your company slug and the booking widget appears on every page. Download from Settings → Booking Widget.
Webhooks (Scale) — Send real-time events to external services when jobs, invoices, or customers change.
Setup — Each integration is configured in Settings. Most require an API key or OAuth connection.
NexJob integrates with Aircall and OpenPhone via a BYO (bring your own) model — connect your existing account, NexJob never stores account credentials in plain text.
Setup — Settings → VOIP. Paste your Aircall API ID + token or your OpenPhone API key. Either or both can be connected at the same time.
Inbound popup — When an inbound call rings, every user logged in to your company gets a toast in the bottom-right corner showing the caller's name (if matched to a customer) or the raw number. One click jumps to the customer record. If the caller is unknown and you've opted into the auto-Lead automation, the toast says 'Lead created in pipeline' and links to the new Lead.
Call log — The `/voip` page shows recent calls merged across providers. Filter tabs: All, Missed, Inbound, Outbound. Missed calls are highlighted red. Known callers render as clickable names linking to the customer record.
Dashboard widget — The dashboard shows your 5 most recent calls with a 'N missed' badge, sitting between AI Status and Location Rollup.
Customer detail — Each customer's detail page shows a 'Recent Calls' panel filtered to that customer's phone (last-10 digit match), so you have call history at a glance when reviewing the customer.
Click-to-Call — Every customer / lead / job detail page has a Click-to-Call button next to the phone field. Personal click-to-call IDs (per technician) live in /me/profile.
Daily Missed-Call Digest — Opt in via Settings → Automations. Every morning at 7:30 AM ET the company owner gets an email summary of yesterday's unanswered inbound calls, broken down by known customer vs. unknown number. Skipped on zero-call days.
Auto-Lead from unknown caller — Opt in via Settings → Automations (Ops+, default OFF). When an inbound call rings from a number that doesn't match any customer, NexJob drops it into your pipeline as a Lead with source 'Inbound call.' 7-day dedup so a repeat caller doesn't spam the pipeline.
If you operate from more than one branch / office, NexJob supports it natively — no need for separate company accounts. Each location is a proper permission boundary, which makes NexJob safe to roll out to franchise networks where each location is independently operated.
Setup — Go to /locations and create your second location (name + address). Your existing data is automatically backfilled to your default location, so nothing breaks.
Location switcher — The header has a dropdown showing the active location. Switching filters every list view (customers, jobs, invoices, quotes, leads) to just that location's records.
Data isolation by default — A user assigned to Branch B cannot see Branch A's customers, jobs, invoices, or quotes — not even by typing a known record URL directly. Cross-location URL access returns a 404. This is the franchise-grade guarantee: one franchisee's records stay private from another's.
Manager bypass (View all locations) — Owners and managers can toggle 'View all locations' on their profile (or via the switcher dropdown). With it on, they see everything across every branch: list views aggregate, dashboards roll up, direct-URL access works for any record. With it off, they're scoped just like a tech.
New records auto-assign to your active location — When a Branch B user creates a customer, job, invoice, or quote without picking a location, the record is assigned to Branch B automatically. No more accidentally creating records under the wrong branch.
Manager override on create — If you do want to create a record in another branch (managers with 'View all locations' on), the create form accepts an explicit location_id and that wins over the default.
Per-location reports — The `/reports/locations` page shows a customers / jobs / completed / invoices-paid / revenue table for each location, with adjustable date windows (7d / 30d / 90d / 1y).
Per-user defaults — Each user's default location lives in /me/profile. Their active location follows that default unless they switch.
Tier gating — Multi-location is a Scale-tier feature. Lower tiers see a single implicit location and none of this scoping applies.
If you send outbound SMS to US customers, carriers (AT&T, T-Mobile, Verizon) require A2P 10DLC registration — both for your brand (your business identity) and for each campaign (use case).
Where to register — /sms/compliance. Fill in your brand details (legal name, EIN or DUNS, address, contact) and submit. NexJob handles the Twilio API plumbing.
Campaign use cases — Most field-service shops register a 'Customer Care' campaign covering OMW texts, appointment reminders, payment links, and review requests.
Status flow — PENDING → IN_REVIEW → APPROVED. Allow 1–3 business days for review. The Twilio webhook updates the status automatically when it changes.
What works without 10DLC — SMS still sends in Twilio's trial mode (limited deliverability, no business identity verification). Full carrier deliverability requires APPROVED status.
Cost — Brand registration is one-time (~$4); campaign registration is ~$10/month. NexJob passes these costs through transparently.
The Reports page gives you a high-level view of business performance with filterable KPI cards, charts, and export options.
Quote Win Rate — Percentage of sent quotes that converted to Accepted status. Tracks trends over time so you can see if your close rate is improving.
Projected Income — Pipeline breakdown showing expected revenue from open quotes and scheduled jobs, grouped by stage. Helps you forecast cash flow.
Revenue & Job Metrics — Week-to-date, month-to-date, and year-to-date revenue cards alongside job count, average ticket, and outstanding balance.
Period Selector — Filter all reports by custom date ranges. Export any view to CSV for use in spreadsheets or accounting software.
Manage your NexJob subscription from the Billing page.
Plans — Solo ($39/mo), Crew ($69/mo), Ops ($149/mo), Scale ($249/mo). Annual billing saves 20%.
Trial — 14-day free trial with all features. No credit card required. You'll get a reminder 3 days before it ends.
Upgrading — Click Upgrade on any plan to start a Stripe checkout. Your new features unlock immediately.
Downgrading — You keep access until the current billing period ends, then features adjust to the new plan level.
Cancellation — Click Cancel Subscription at the bottom of the Billing page. You'll keep access until the period ends. Your data is never deleted.
Billing Portal — Click Manage Subscription to access Stripe's billing portal where you can update payment methods, view past invoices, and download tax receipts.
Configure everything about your NexJob account.
Company — Name, address, phone, email, logo, brand color.
Business — Timezone, business hours, geofence radius for GPS clock-in.
Invoicing — Default due days, invoice notes template, tax rate, currency. Card on File settings: enable/disable card capture on quotes, require card before acceptance, and auto-charge on job completion.
Notifications — Toggle SMS and email notifications on/off. Includes the AI Outage SMS Alert toggle (default ON): when both AI providers are down, NexJob texts your owner/admin phones so you know to manually review high-stakes customer messages until service restores. See “When AI Is Degraded” above.
Email Templates — Customize the emails NexJob sends for invoices, quotes, and follow-ups.
Automations — Enable/disable AI automations individually. Each automation lists its AI dependency and approximate per-call cost tier.
Audit Log — View every change made to your data — who changed what, when, and the before/after values.
Webhooks (Scale) — Configure external webhook endpoints for real-time event streaming.
NexJob ships in two mobile flavors: a Progressive Web App (PWA) that works in any browser, and a native iOS + Android app built with React Native (Expo). Pick whichever fits your workflow — the data, jobs, photos, and offline behavior are identical across both.
PWA install — Open nex-job.com in your phone's browser, tap the share icon, and select "Add to Home Screen." It launches full-screen like a native app and updates automatically when we ship new code (you'll see a small "Update available" toast in the corner; tap Reload to apply).
Native iOS + Android — Download from the App Store / Play Store (TestFlight beta link in Settings → Mobile during pre-launch). Same login as the web app; sessions sync.
Offline Support — Both PWA and native cache your dashboard, jobs, customers, and recent pages so you can view them with zero signal. Any actions you take (status changes, photo uploads, signatures, time entries) queue locally and sync when you reconnect. See "Offline Mode" below for the full picture.
Photo Upload — Every photo area offers two options: tap Library to choose from your photo gallery, or tap Camera to take a new photo. Photos are stored locally first and uploaded in the background when you have signal.
GPS Clock-In — Clock in with GPS verification to confirm you're at the job site.
Voice Notes — Record voice notes that AI transcribes into job documentation.
Mobile Navigation — The bottom navigation bar gives quick access to Home, Jobs, Messages, and Invoices. Tap the hamburger menu (☰) for the full sidebar with all features.
Quick Actions — The dashboard includes one-tap buttons for New Job, Invoice, Customer, Quote, Dispatch, and AI Assist — all optimized for mobile tap targets.
Parts Logging — Log parts used on any job directly from the mobile job detail page. Inventory updates in real time.
Mobile Page Builder — Build a custom mobile landing page for your business at Settings → Mobile Page. Customers can view your services, book appointments, and contact you from their phone.
Offline Mode is the difference between a tech who can complete a job in a basement, on a job site with no cell coverage, or driving through a dead zone — and one who can't. NexJob ships full offline support across BOTH the web app (PWA) AND the native mobile app. (Jobber's offline mode is mobile-only; this is a deliberate parity-and-then-some choice.)
How it works under the hood — Every action you take (clocking in, marking a job complete, capturing a signature, uploading a photo, sending an invoice) is recorded as an operation in a local outbox. The outbox lives in IndexedDB on web and SQLite on mobile. When you reconnect, the engine drains the queue against the server in the order you took the actions.
The sync banner — A pill in the header shows your live sync state. Green = synced. Orange = pending operations queued, syncing now. Red = something failed (rare; usually a conflict the server needed your help to resolve). Click the pill to jump to the conflict resolution page.
Conflict resolution — If you and another user edit the same record while you were offline, the server flags it as a conflict instead of silently overwriting. The conflict resolution page at `/sync/conflicts` shows you what changed on each side and lets you pick which version wins or merge them. Most days you'll never see this page.
Parked operations — If an operation fails repeatedly (network is back but the server keeps rejecting), the engine "parks" it after exponential backoff (1s, 2s, 4s, 8s, 16s). Parked operations appear in the conflict resolution page with a Retry button and a Discard button. The retry loop never silently drops your work.
Photos and large files — Photos upload last, in the background, using resumable multipart uploads. If you take 12 photos on a job and lose signal mid-upload, the engine picks up where it left off when you reconnect. You can keep working in the meantime — the upload doesn't block anything.
Force-quit safe — Even if you close the app or the OS kills it while you're offline, your queued operations survive in IndexedDB/SQLite. Reopen the app and they'll start syncing again the moment you have signal.
What you'll notice — Almost nothing, by design. The whole point is that offline feels exactly like online. The only visible affordance is the sync banner, which most days stays green. The system is engineered to be invisible until you need it, then bulletproof when you do.
Tier gating — Offline mode is a Scale-tier feature. Lower tiers see read-only caching (you can view recent data while offline but actions require a live connection).
NexJob exposes a public REST API and outbound webhooks so partners, automation tools, and your own internal systems can read, write, and react to NexJob data without screen-scraping or polling.
Public documentation — Visit /developers (no login required) for the canonical reference: auth, pagination, all endpoints with curl examples, the full webhook event catalog, error codes, and rate limits. The page mirrors the same visual design as the rest of NexJob so partners evaluating us see one consistent brand.
Generating an API key — Owner / admin accounts can mint keys at Settings → API Keys. Click "Create key," pick a scope (read or read/write), and the plaintext token appears exactly once on screen with a Copy button. Save it somewhere safe — we never show it again (we only store a SHA256 digest server-side). Keys start with the `nxj_live_` prefix.
Using the API — Every request needs `Authorization: Bearer nxj_live_<token>`. Endpoints live under `/v1/...` — today that's customers and jobs with full CRUD (GET / POST / PATCH / DELETE). Index routes are cursor-paginated via `?after=<id>` with page size 50. Status codes: 200 read, 201 create, 200 update, 204 destroy, 401 unauthenticated, 403 scope-mismatch, 404 cross-company, 422 validation. Responses are JSON.
Outbound webhooks — Register an HTTPS endpoint at Settings → Webhooks. Pick which events to subscribe to from the curated catalog: `customer.created`, `customer.updated`, `job.created`, `job.updated`, `job.completed`, `job.cancelled`, `invoice.created`, `invoice.updated`, `invoice.sent`, `invoice.paid`. Each delivery is a POST with JSON body `{event, data, timestamp}` plus two headers: `X-NexJob-Event` (the event name) and `X-NexJob-Signature` (HMAC SHA256 of the body using your endpoint secret). Verify the signature server-side before trusting the payload.
Delivery semantics — Webhooks are at-least-once. Retries use exponential backoff (5 attempts total: ~1s, 5s, 25s, 2m, 10m). Every attempt is recorded in the deliveries log so you can debug failures from the dashboard. Status-gated events (e.g. `job.completed`) only fire on the actual transition — not on subsequent saves of an already-completed job.
Rate limits — 300 requests/minute and 3,000 requests/hour per API key (keyed by SHA256 of the token so the plaintext never enters our cache). Exceeding either returns 429 with a `Retry-After` header. Unauthenticated requests are throttled at 30/minute per IP to stop probing.
Revoking a key — Settings → API Keys → click "Revoke" on any key. The next request using that token returns 401. Revocation is soft — the key row stays for audit, but `revoked_at` is stamped and the auth check fails.
Tier gating — Read-only API is available on Solo. Full read/write API + outbound webhooks + developer documentation are Ops-tier features. (Doorkeeper OAuth 2.0 — for third-party apps that install on customer accounts — is in the roadmap and gated on partner demand.)
When imports or migrations create duplicate customer records (especially “em-dash stub” customers where the last name is just a placeholder), you can merge the duplicate into the canonical record without losing any related data.
Where to find it — Open the duplicate customer’s detail page. If it qualifies for merging (last name = "—"), a "Merge into…" button appears in the header.
How it works — Click "Merge into…," search for the canonical customer, and confirm. In a single transaction NexJob reassigns every related record — jobs, quotes, invoices, leads, properties, equipment, documents, recurring invoices, service agreements, review requests, predictive quotes, maintenance suggestions, campaign deliveries, SMS conversations, SMS consent, and inbound emails (17 tables total) — from the duplicate to the canonical customer. The duplicate is then destroyed.
Audit trail — Every merge writes an `AuditLog` row with the snapshot of the duplicate (name, contact info, FK counts) so you can always trace what was merged when, and by whom.
Safety — Cross-company merges are blocked (returns 404). Merging a customer into itself is rejected (422). The entire reassignment runs in a database transaction — if any single step fails, the whole merge rolls back and no data is touched.
Tier gating — Manager-level permission required. Available on Ops and Scale.