MobileRVProApp MobileRVProApp About the app

Setup & Features Guide

MobileRVProApp is the all-in-one business app for mobile RV repair techs — customers, jobs, quotes, invoices, card payments, inventory and a built-in repair guide library, all from your phone in the field. This is the same guide that is built into the app, so you can read exactly what it does before you install anything. Tap any question to open it.

Too many features you'll never use, or something you'd like to see added? Email support@mobilervproapp.com and we can do that for you. Sections you don't need can be switched off for your account alone — nothing is deleted, and they come back whenever you want them.

Getting Started

You need an account — here's why
MobileRVProApp runs on an account (Settings → Cloud Sync). Without one, everything would live on this one device only — a dropped or replaced phone would take the whole business with it, there'd be no way onto a second device, and none of it could be moved to a newer version of the app. Everything you enter still saves instantly on the device and still works with no signal — the account is what makes it survive. It's also what powers online payments, the Team plan, and the server-side backups that run every 24 hours without you doing anything.
Your 30-day free trial
Creating an account (Settings → Cloud Sync → Create Account) starts a 30-day free trial automatically — no card required to sign up. If this device already had customers, jobs or invoices on it, all of that uploads to your new account by itself the moment you create it; you don't have to re-enter anything or import anything. You can see exactly when the trial ends any time in Settings → Billing, and subscribe from that same section whenever you're ready, before or after it ends. You also get an email a week out, so the end of the trial isn't a surprise on a morning you're already under a rig.

The free 30 days is once per person, not once per account. If you close an account and open a new one on the same email address later, you're welcome to — everything works and everything you put in it is yours — but it starts on the subscribe screen rather than with another free 30 days. Small variations on an address are treated as the same address, so larry.smith+rv@gmail.com and larrysmith@gmail.com are the same person as far as the trial goes.
If you were given a code (schools and training programs)
Some training programs hand their students a code that opens a longer free run than the standard 30 days — commonly 90 days. There's a Code box on the Create Account screen: type it in before you tap Create Account and the app tells you straight away how many days you've been given. Leave the box empty if you weren't given one; it's optional and the ordinary 30-day trial works exactly as it always has. If the code is refused — the wrong spelling, a class that's already full, or a code that's past its date — the app says so rather than quietly signing you up for 30 days, and you can clear the box and create the account normally. Capitals, spaces and dashes don't matter. Once you're in, your free run is yours: it doesn't get shortened later even when the code itself stops working for new students. Nothing you enter is lost when it ends — the app goes read-only until you subscribe, and everything comes straight back.
What happens if your subscription lapses
The app switches to read-only — a red banner appears at the top and stays there. Nothing is deleted and nothing is hidden: every customer, job, quote and invoice is still there to open and read. You can still send invoices and quotes, chase payment, take a card payment, capture a signature, clock in and out of a job that's already on the books, mark an invoice paid, and download a full backup. What stops is starting anything new — adding or editing customers, jobs, parts, expenses, invoices and quotes is paused until the subscription is current again. Subscribe from Settings → Billing and everything unlocks straight away. If the app simply can't reach the server (no signal for a while), it does not lock you out — it keeps working normally for a good while and only ever changes state once the server actually answers.
Signing out, and what it does to this device
Settings → Cloud Sync → Sign Out. If your subscription is active, signing out uploads anything still waiting, then clears this device — because your account is the real copy and leaving a second, editable copy behind on a phone that might get sold or handed to someone else is how records go missing. Signing back in brings all of it straight back; nothing is removed from your account. If something on this device hasn't reached your account yet, the app refuses to sign out and tells you so — get a signal, tap 🔄 Sync Now, then try again.

Once in a while a change can't go up no matter how many times you try — usually one made to a record that was deleted on another phone before this one could upload it. The app won't hold you hostage over it: it shows you what the change was and what the server said, saves a full backup of this device to your downloads on the spot, and then lets you sign out anyway if that's what you want. The change itself lives on in that backup file, and Settings → Cloud Sync has Try Again and Discard Stuck Changes if you'd rather deal with it before you go. Either way you'll need to sign in again to reopen the app, so if you want a copy outside the app, use Download Backup first.
Signing out everywhere — for a lost, stolen or handed-on phone
Ordinary Sign Out only clears the phone you're holding. That's no help at all when the problem is the phone you aren't holding — one left on a job site, lifted out of a truck, sold, or handed back by a tech who's moved on. That phone is still signed in, and it stays signed in for up to a month.

So Settings → Cloud Sync now has Sign Out Everywhere. Tap it and every phone, tablet and computer signed in to your account is signed out at once — including the one in your hand. Everyone has to sign back in with your email and password afterward, you included. Nothing is deleted: every customer, job, invoice and photo is still sitting in your account waiting for you.

Two things worth knowing before you tap it. It asks you to confirm first, and if anything on this device hasn't reached your account yet it'll say so and stop, the same way ordinary Sign Out does — get a signal, tap 🔄 Sync Now, then try again. And if the connection drops partway through, nothing happens at all: it tells you plainly that every device is still signed in rather than pretending it worked. Try again when you've got bars.

If you think somebody knows your password, use Change Password just below it instead — that does the same thing to your other devices and keeps you signed in here, so you're not locked out of your own app in the middle of a job.
Changing your password
Settings → Cloud Sync → Change Password. Type your current password, then the new one twice. It has to be at least 8 characters, and the app tells you straight away if the two copies don't match or if you've typed the same password you're already using — no waiting on a round trip to find out.

Changing it also signs out every other device on your account. That's on purpose: a password change that leaves the person you're changing it because of still signed in on their phone hasn't achieved anything. This device stays signed in, so you can carry on working. Your other phone or tablet will just ask for the new password next time you pick it up.

Forgotten the current one entirely? You can't use this form — sign out and use Forgot password? on the sign-in screen instead, which emails you a reset link.
Changing the email address you sign in with
Settings → Cloud Sync → Change Email. Type the new address and your password. This is the address you sign in with, and it's where password resets and receipts go, so a typo in it at sign-up time is worth fixing rather than living with.

Nothing in your account moves and nothing is lost — same customers, same jobs, same invoices, same subscription. Anything still waiting to upload from this device comes across with you rather than being stranded under the old address. Your other phones and tablets are signed out and will ask for the new address next time they're opened, the same as a password change does. A note goes to the old address as well, so if it wasn't you doing it, you find out.

If the new address already belongs to another MobileRVProApp account, the app says so and nothing changes.
Signing in on a device that already has data
If your account is empty and this device has records on it, they upload automatically — no questions asked. If the upload only partly succeeds, the app stops and tells you exactly how many didn't make it, and nothing is removed from the device; tap 🔄 Sync Now once you have a solid connection and the rest goes up. If your account already has records and this device has its own separate ones, you get a warning first, because continuing replaces what's on the device with your account's copy. Tap Cancel and use Settings → Download Backup if you're not sure.
Solo vs Team plans
Solo is one person, one login. Team adds up to 5 employee seats, each with their own login and their own assigned vehicle — see "Adding employees" below. You can switch between plans any time from Settings → Billing.
The bottom nav, and what's under "More"
Dashboard, Customers, Schedule, Invoices, and Settings get their own tab along the bottom since they're what you're in and out of every day. Quotes, Inventory, Expenses, Repair Guides, Vehicles, and Warranty are one tap deeper, under the ☰ More tab — nothing was removed, they just moved to keep the row from being crowded with icons. A small badge shows up on More's Quotes and Inventory rows (e.g. "2 new" or "3 low stock") whenever one of those needs a look, so you're not stuck checking each one just in case.

Any of those six can be switched off for your account. If you never do warranty work, don't keep parts on a van, or have your own repair reference, tell us which ones you'd rather not see and we'll take those rows out of your More menu. It only affects your account, nothing is deleted, everything you have already entered carries on counting on the Business Report, and any of them can come back whenever you want. The six tabs along the bottom stay put — they're how the app works.

Dashboard

The KPI tiles
Total Income is paid invoices in the selected period (All Time / This Year / This Month, via the pills at the top). Outstanding is everything not yet marked paid — including drafts, not just sent invoices. Total Revenue is income plus outstanding. Customers shows your total customer count and how many jobs are upcoming.
"Needs attention" cards
A rotating set of cards only shows up when there's something to act on: overdue or upcoming Service Reminders (from a customer's Next Service Due date), Vehicle Maintenance due or overdue, Overdue Invoices, Low Stock parts (needs a Reorder Point set on the part), Appointment Reminders for jobs in the next 3 days (one-tap Email/Text if you have the customer's contact info), and Estimate Follow-ups for quotes sent 5+ days ago with no answer yet. A brand-new account will look sparse here until there's real data to react to — that's normal.
"Can't reach the server right now"
An amber bar across the top of every screen, saying the app can't get through to your account at the moment. It appears in a dead zone, and it appears if the hosting provider is having a bad day — from the phone those look identical, and in both cases the answer is the same.

Keep working. That's the whole point of the message. Jobs, invoices, customers, photos, clock-ins — everything saves onto the phone exactly as normal, and uploads by itself the moment the connection comes back. Nothing is lost and there is nothing you need to do. If you've already made changes while it's been out, the bar tells you how many are waiting.

Once it's been going more than a minute the bar says how long — "12 minutes so far." That's there because thirty seconds in a dead zone and an hour of something bigger feel the same on a phone but mean very different things. An hour is worth a text to whoever runs the app; thirty seconds isn't worth looking up from the job.

Try Again checks straight away rather than waiting for the next automatic attempt. If it's still out it says so plainly; if it's back, everything waiting goes up right then.

The bar clears itself the instant the server answers — including if it answers with an error, because that still proves the connection is working.
Backup reminder banner
If it's been 2+ weeks since your last backup download (or you've never done one), a banner appears at the top with a shortcut to Settings and a "Remind Me Later" snooze. See Backup & Restore below.

Schedule & Jobs

Creating and editing a job
+ New Job needs at least a Customer — everything else (Title, Date, Time, Location, Description) is optional at first. Location is free text, so an RV park name works just as well as a street address. A 🧭 Directions button next to it opens Google Maps even before you save. The customer's phone number shows right under the Customer picker (tap to call or text) as soon as you pick one.
"Date Entered" vs the appointment Date
Every job has two separate dates: Date Entered (right under the job title) is when the job was put into the system — it defaults to today but you can backdate or change it. The Date/Time row further down is the actual appointment — when the work is scheduled to happen. They're independent, so rescheduling an appointment never changes when it was originally entered.
Job status, including Research Parts / Parts On Order
Status options are, in order: Scheduled → Research Parts → Parts On Order → In Progress → Completed → Cancelled. The two parts statuses are there for jobs that are stuck waiting on you rather than the customer — use them to track "still figuring out what's needed" vs. "know what's needed, waiting on it to arrive" before flipping to In Progress once you're back on-site.
List view vs Calendar view
List view is a filterable table with a Quote button and an Invoice button right on each row — tap Invoice again later and it reopens the same linked invoice instead of creating a duplicate. Above the table, the Upcoming/Past/All pills filter by appointment date, then a 🔎 search box — the same one the Customers page has — and below it a filter bar for Status and a Date Entered range (handy for "show me everything entered last week," regardless of when it's scheduled). A Clear Filters button appears whenever any of those is in use, and it clears the search box too.

The search box matches the customer's name, the job title, the location, the job description, and the customer's phone numbers, so typing an RV park name, a part you noted in the description, or the number someone is calling you from all land on the right job. Phone numbers are matched on the digits alone — type 5551234 and it finds (555) 123-4567 — and it searches whatever the pills and filters have already narrowed the list to, so if a job you expect isn't showing, check whether you're on Upcoming when the job is in the past.

The Status button opens a tick list rather than a one-at-a-time dropdown, so you can pick more than one at once — tick Research Parts and Parts On Order together and you get one list of everything you're waiting on parts for, without scrolling past completed and cancelled work. The button itself tells you what's on: "All Statuses" when nothing is ticked, the status name when it's just one, or "2 selected" when it's more. Show All clears the ticks and puts every job back. Ticking nothing means everything, so you can never end up staring at an empty screen wondering where your jobs went. Your ticks reset when you close and reopen the app. Calendar view is a month grid with up to 2 jobs shown per day; tap a day's job to open it.
Time tracking (arrival & completion)
Once a job is saved, a 📍 I've Arrived button stamps the current time and bumps status to In Progress; ✅ Mark Complete stamps the finish time and marks it Completed. That elapsed time automatically fills the Labor line's hours when you create an invoice from the job (rounded per Settings → Invoice Defaults, with a 1-hour minimum) — you can still edit it by hand afterward, or fix either timestamp directly via "✎ Fix times by hand" if you forgot to tap in real time.
Letting a customer know you're on the way
Before tapping I've Arrived, a 📱 On My Way button (shown whenever the customer has a phone number on file) opens your phone's own texting app with a friendly heads-up message already typed in — you just review and hit Send. It's a real text from your own number, not an automated message the app sends on its own, so there's nothing to configure and nothing to pay for.
Assigning a job to a tech (Team plan)
On the Team plan, the job form includes an Assigned To picker (owner only) listing your employees — set it right when you create the job, or change it later by editing the job. An employee's own jobs are always assigned to them automatically and they never see this picker themselves. Leave it on Unassigned and any employee's schedule simply won't show it.
Repeating jobs
Set Repeats (Weekly, Every 2 weeks, Monthly, etc.) on a job and marking it Completed automatically creates the next occurrence on schedule, carrying over the same customer, title, location, and repeat setting — no need to re-enter a recurring service each time.
Route Today's Jobs
The 🗺️ button on the Schedule page chains every job scheduled for today that has a location into one multi-stop Google Maps route, in scheduled-time order. It's just a shortcut into Maps (no route optimization) — you can still drag stops to reorder once Maps opens.
If the app closes before you hit Save
While you're typing in a Job or Customer form, your changes are quietly saved on the device every few seconds. If the app gets closed before you tap Save — a phone call comes in, the app gets backgrounded and killed, whatever — reopening that same job or customer shows a banner offering to Restore what you had typed, or Discard it. Nothing is ever applied automatically without you tapping Restore.

Customers

What gets stored
Contact info (phone, email, address), where the rig is parked (RV Park / Resort, Site # and Key location — see the next question), RV details (year/make/model, VIN, and an RV Type dropdown — Class A, Class B, Class C, Travel Trailer, 5th Wheel, Truck Camper, Van, or Bus), free-form notes, and a Next Service Due date + note — the thing that feeds the Dashboard's Service Reminders card. Tap-to-call, tap-to-text, and a Directions link to their address are right on the customer page. A Date Entered field (defaults to today, editable) tracks when the customer was added.
RV park, site number, and where the key is
If most of your work is at parks and resorts rather than driveways, three boxes on the customer form are worth filling in: RV Park / Resort, Site #, and Key location. All three are optional — leave them empty and the customer form looks exactly as it did before.

The park list builds itself. Type "Pine Haven RV Resort" into the park box on the first customer you have there, and from then on it's a choice in the dropdown on that box for every customer after. There's no separate list to create and nothing to maintain — the app just remembers every park you've typed and offers them back, spelled the way you first spelled them. Most people are working out of a handful of parks, so after the first week you're picking rather than typing.

Site # takes whatever you actually write. "42", "C-14", "Lot 7", "#3" — it's shown back the way you typed it, and it won't say "Site Site 42" if you typed the word yourself.

Where it shows up. On the customer's row in the Customers list, on their own page, and — the part that matters at 8am — right under the customer's name on the job, next to their phone number, so you're not backing out of a job to find a site number while you're pulling through the gate. Starting a new job for someone with a park on file also fills the job's Location box in for you. It only ever does that when the box is empty, so it can never overwrite a location you typed.

Searching by park. The Customers search box matches the park name, so typing "Pine Haven" gives you everyone you've got there. That's the one worth remembering: while you're already parked at a resort for one job, it answers "who else is here that I could knock out today."

Notes goes back to being notes. The reason these are separate boxes is so the site number isn't buried in the same paragraph as "prepay only" or "take a left at the dirt road." Facts in fields, judgment calls in Notes.

About the key. Key location is the most sensitive thing the app holds, so it's handled accordingly: it shows on the customer's page and on the job, and it appears nowhere a customer ever sees — not on invoices, not on estimates, not in any email or text the app sends, and it's never given to the AI receptionist, which only ever gets a caller's name and number. It's in your backups like the rest of your data. On a Team plan an employee sees it only for customers they can already see.
A second phone number for the same customer
Under the first phone number on the customer form there's a Second Phone box and a short Whose Number Is It? box beside it — type "wife", "shop", "work cell", whatever helps you remember. Both are optional; leave them empty and nothing about that customer changes.

A second number on file behaves like a real number everywhere it matters. The customer's page shows it under the first with its own 📞 Call and 💬 Text buttons labeled with whatever you typed in the label box, the customer list search finds people by it, and the 📞 Look Up Caller box finds them by it too. On a job, both numbers show under the customer with their own call and text links.

The first number stays the primary one. It's what the "On My Way" text, overdue invoice reminders and review requests use, and it's the number printed on invoices and estimates, so nothing your customers receive changes. Reach the second number by tapping it on the customer's page or on the job.
Adding a customer and booking them in one go
The customer form has two save buttons. Save Customer saves and closes, the way it does when you're just writing someone's details down. Save & Create Job saves them and goes straight on to a new job with that customer already filled in and their phone showing — which is what you usually want, since most of the time you're entering somebody new because you're about to book them.

For a customer already on file, the bottom of their page has a + Create Job button that does the same thing without the form. (The Jobs list further up their page has its own "+ New Job" shortcut too — same result, whichever your eye lands on first.)

If you're out of signal, the customer saves on the device and uploads later; the job screen still opens normally in the meantime.
Finding a caller by their number
The 📞 button at the top of the app opens Look Up Caller — for when the phone rings and you want to know who it is before you answer, or you've got a missed call to place.

It starts looking as soon as you've typed three digits, and the last four digits of a number are enough on their own, so you rarely need the whole thing. Dashes, spaces, brackets and a leading 1 are ignored on both sides — a number saved as "(555) 123-4567" is found by typing 555, 5551234, or 4567. Both numbers on a customer's record are searched, and when it's the second one that matched, the line under their name says so.

Whoever you most likely meant is put on top: a whole number you typed out first, then people whose number ends with what you typed, then people it turns up inside. Only the first few are shown, with a quiet line underneath counting how many more there are — type another digit or two and the list narrows. If nothing matches once you've stopped typing, an + Add as New Customer button appears and carries the number across.

Tap View on the person you were after and you're on their page. From there, the 🧰 Jobs button at the top takes you straight to their job history, newest first — worth knowing, because the whole reason you looked them up is usually the job you're about to be asked about.
Lead source
The optional "How did they hear about you?" field feeds the Business Report's new-customer-by-source breakdown — handy for judging whether ad spend is bringing in customers.
Jobs, Invoices, and Estimates on one page
Every customer's page shows their full history in three lists side by side, each with its own "+ New" shortcut already pre-filled with that customer. Deleting a customer leaves their past jobs/invoices intact (shown as unassigned) rather than deleting that history too. A dropdown on the Jobs list (All / Current / Past / Future) lets you narrow it down to just what matters right now instead of scrolling their whole history — Current means today, based on the job's appointment date.

At the top of the customer's page, next to Call and Text, is a 🧰 Jobs button with their lifetime job count on it. Tap it and you land straight on their Jobs list, newest job first and oldest last, without scrolling past the totals and the RV details — which is the point when you've just looked someone up because they're on the phone. It always shows you All, even if you'd left that dropdown on Past or Future earlier, so you never get an empty-looking list for a customer who has plenty of history. Tapping any job in the list opens that job, the same as tapping an invoice or an estimate does.
Contact Log
A timestamped log of calls, texts, and notes on the customer page, below their other info — separate from the single freeform Notes field, which gets overwritten every time it's edited. Pick a type (Call/Text/Email/In Person/Note), type what happened, and hit Add — it stamps the date and time automatically. Entries can be deleted but not edited, so it stays an honest record of what actually happened and when.

Vehicles & Mileage

Vehicle info & odometer
Add a vehicle with a Name/Nickname, year/make/model, VIN/Plate, and a Starting Odometer. After that, the odometer shown everywhere is automatically the highest "end odometer" from the Mileage Log below — it's not something you edit by hand once trips are logged, so it can't drift out of sync.
Mileage Log & the tax-deduction estimate
+ Log Mileage needs a Start and End odometer reading and an optional Purpose note. A "Business mileage" checkbox is on by default — uncheck it for a personal trip to exclude it from mileage totals everywhere (vehicle page and Business Report) without deleting the entry. Set a $/mile rate in Settings → Vehicle Mileage to see an estimated tax deduction alongside your logged miles — it's just multiplication, not tax advice, so confirm the current rate with your accountant (the IRS publishes one per mile, the CRA one per kilometre).
Maintenance Schedule
Add items like "Oil Change" with an interval in miles and/or days (whichever comes first triggers the reminder). Mark Done resets the clock from right now/the current odometer. Overdue or due-soon items show a colored badge here and on the Dashboard.

Invoices

Building an invoice
Every new invoice starts with three line items — Labor, Trip Fee, and a blank Part line — each editable in Type, Description, Qty, and Rate. Tax applies to Part lines only unless you set it to cover labor too — see Sales tax under Settings.
Parts draw down real inventory stock
Set a line's Type to Part and pick a real item from the dropdown (instead of typing something custom) and saving the invoice actually subtracts that quantity from Qty on Hand in Inventory — this is real stock tracking, not cosmetic. Editing a saved invoice's part quantities corrects the stock automatically; deleting the invoice puts the stock back.
Job Profitability
Every invoice's own page shows a Job Profitability card (owner-only, never printed or shown to the customer) with Revenue, Parts Cost, and Profit for that job. It only counts cost for Part lines picked from the Inventory dropdown — a freeform/typed part has no cost on file, so it's flagged with a note and left out of the number rather than guessed at. This is parts cost only, not a full picture (no fuel, tools, or your time factored in) — for that, see the Business Report, which also totals this up across every paid invoice in a date range.
Getting paid — Pay Now buttons
Add a PayPal.me or Venmo username in Settings → PayPal and Venmo Buttons and every invoice automatically gets a matching "Pay Now" button for its exact total — no per-invoice setup. Already using Square, GoDaddy Payments, or Stripe Payment Links for cards? Paste that invoice's payment link into its Card Payment Link field for a "Pay by Card" button.
Accepting cards directly (optional, via Stripe)
Settings → Accept Card Payments walks you through connecting your own Stripe account (money goes straight to your bank, MobileRVProApp never touches the card number and doesn't take a cut). Once set up, invoices get a Get Payment Link button that generates a real one-time card-payment link you can text or email. A payment link works for 4 months from the day it was sent, and the clock starts over every time you send or re-send that invoice, so a bill you're still chasing always has a working link. If a customer opens one after that they're told to ask you for a new one — tap ✉️ Send to Customer (or Get Payment Link) again and they'll have a fresh one in seconds. Nothing happens to the invoice itself.
When a customer pays part of a bill
A payment doesn't have to cover the whole invoice. A deposit up front, half on the day and the rest when the part comes in, two hundred in cash now — however you've agreed it, the app keeps track of what's left.

Money lands on an invoice two ways. A card payment through your Stripe link can come in short, and it's recorded as whatever actually arrived. Anything you're handed in person goes on with 💵 Record a Payment, the button next to ✓ Mark Paid on the invoice. It asks how much (already filled in with the balance, so type it down if they only paid part), the date, and how it was paid — cash, check, a card you ran on another reader, a bank transfer or Zelle, or other — plus an optional check number and a note. Nothing about it needs a signal, so it works at the customer's site and uploads later.

Once any money is in, the invoice's own page gets a Payments taken card listing every payment, with Paid so far and Still owed at the bottom, and the totals box shows a green Paid so far line above the Balance Owed figure. That balance is the number used everywhere else: the invoice list and the Dashboard's overdue card total up balances rather than full invoice amounts, so what customers owe you is what they actually owe you.

Send that invoice again and the Pay Now button, the emailed payment link and the ✉️/🔔 messages all charge the balance, not the original total — so a customer who's already paid $450 of a $500 bill is asked for $50. Recording a payment also switches off any card link you'd already sent for the old amount, so nobody can tap a link from last week and pay the whole thing a second time; send the invoice again and they get a fresh link for what's left. The emailed invoice, the printed copy and the reminder all spell out Total, Paid so far and Balance Due, and a copied or texted summary says PART PAID with both figures.

The invoice keeps its normal status while there's a balance — part paid isn't "paid". It marks itself Paid on its own the moment the payments add up to the total, and switches its online payment link off at the same time. A tip never counts toward the bill: it's the customer's own money on top of the work, so it doesn't reduce what's owed.

Typed a payment in wrong, or had a check bounce? Each one has a Remove button. Removing it puts the amount back on what the customer owes, and if the invoice had marked itself paid it goes back to unpaid. It stays listed, struck through and marked "removed", rather than disappearing — three weeks later when somebody asks what happened to that check, the invoice can answer.

If you have techs on the account, two phones can record different payments on the same invoice without either one wiping the other's out. They both end up on the invoice.
Photos & signature
Attach before/after or damage photos directly to an invoice — they show only in the app itself, never in the printed/PDF version or in an emailed/copied summary. The signature pad lets a customer sign right on your phone; a saved signature does appear in Print/PDF, just not in the plain-text email/copy version (images can't ride along in plain text).

The small ✕ on the corner of a photo deletes it, and it asks you first. That's on purpose: the ✕ sits close to the photo itself, a thumb on a phone screen is wider than the button, and the shot of a cracked fitting taken before you fixed it is very often the only copy anywhere. The question tells you it will come off every device and can't be brought back, and says so plainly when it's the last photo on that record.
Overdue invoice reminders
An invoice past its due date gets a 🔔 Send Reminder button right on its view page, and every overdue/unpaid invoice as a group shows up on the Dashboard's ⏰ Overdue Invoices card. It's always a manual tap, never sent automatically on a timer — sends a real email with the invoice's totals and payment link if you're cloud-connected with email set up, otherwise it falls back to your phone's own email app.
Possible Double Charge alert
If the same invoice gets paid twice — a customer taps an older Pay Now link, or a card gets run in person for an invoice that was already settled — the app does not apply the second payment, so your income totals never double-count it. But the money did move through Stripe, and it's your customer's money, so a red ⚠️ Possible Double Charge card appears at the top of your Dashboard naming the customer, the invoice and the amount.

Refund it from your Stripe dashboard (open the payment, hit Refund) — this app can't move money back on its own. Then tap I've handled it to clear the card. Clearing it refunds nothing; it's just a marker that you've dealt with it, and it doesn't come back, so only tap it once you've actually refunded the payment or decided the second one was meant to be there.
Marking an invoice paid by hand
✓ Mark Paid is for money you already have — cash, a check in your hand, or a card you ran yourself — and it settles the invoice in one go. It asks you to confirm first, and shows the invoice number and the amount, because it sits right next to 💳 Get Payment Link and the two do close to opposite things. If some of the bill has already been paid, the question names the part that's left, not the full total, so you're agreeing to the right figure.

Use 💵 Record a Payment instead when they've only handed over part of it, or when you want the amount, the date, the method and the check number kept on the invoice. Several of those add up the same as one Mark Paid does, and the invoice settles itself once they cover the total.

Either way, an invoice with nothing left owing has its online payment link switched off. If the customer taps a link you already sent them after that, they're told the invoice has already been paid — so only mark it paid once the money is genuinely in.
Marking a paid invoice unpaid
Mark a paid invoice back to unpaid — a card payment fell through, a check bounced, or it got marked paid by mistake — and it stays how you set it. Stripe re-sends a payment notification for up to three days if it thinks we didn't hear it the first time, and a repeat of that same payment is ignored rather than flipping the invoice back to paid behind you. A genuinely new payment on that invoice is still honored normally.

Un-paying an invoice is always something you do on purpose — either Mark Unpaid, Mark Sent on an invoice that's already paid, or switching Status away from Paid in the invoice editor. A phone that's been out of signal can't do it by accident: when it catches up and uploads work you did earlier, any edits it was holding are saved, but a payment recorded while it was offline stays recorded. That's true whether the payment was a card, a check or cash.
When you refund an invoice
Refund a payment from your Stripe dashboard and the invoice says so the next time you open it — how much went back to the customer and how much you actually kept, right on the invoice. A refund for the whole amount and one for part of it both show the same way.

Give the whole lot back and the invoice gets a status of its own: ↩️ Refunded, in gray rather than the red of an overdue bill, because nothing went wrong and nobody owes you anything — the money came in and went straight back out. Refunded has its own filter tab in the invoice list, and those invoices are left out of what customers owe you, off the Dashboard's overdue card, and no longer offered a Pay Now link or a 🔔 Send Reminder button, so there's no way to accidentally chase someone who has already had every penny back.

Tips are handled separately from the bill. If a customer added a tip on the card screen you can give back just the tip, just the bill, or both, and the invoice shows each on its own line — Tip refunded, and Tip you kept. Giving a tip back doesn't change what the job was worth or the sales tax on it, because a tip was never part of the bill to begin with.

If a customer disputes a charge with their card company, the invoice shows a plain-English note about where that dispute stands. A dispute isn't a refund — the money is being argued over, not returned — so it's flagged rather than deducted. If the dispute is eventually lost, the bank has taken the money back for good, and that job counts as $0 earned.

Every income figure in the app counts the money you kept, not the money that came and went; see "Refunds and your income numbers" under Expenses & the Business Report for exactly which numbers move.
Adding photos from your gallery
There are two buttons on the photo box. 📷 Take Photo opens the camera straight away, one tap, the way it always has — that's still the right one when you're standing at the rig. 🖼️ From Gallery opens your phone's picker instead, so you can pull in shots you took with your normal camera app, something a customer texted you, or a photo out of Drive.

You can pick several at once from the gallery, up to ten in one go. That's the usual case — the eight before-and-afters you shot on your camera roll last Tuesday all land on the job together. If you select more than ten, the first ten are added and the app tells you how many it left behind; go again for the rest.

They're saved once, as a batch, not one at a time. That matters on a weak connection: ten photos saved separately would mean ten full uploads of the job, each one bigger than the last.

If one photo in a batch won't open, you lose that one and keep the rest — the message says how many went on and what happened to the others. The usual reason is HEIC, Apple's photo format, which some Android phones can be set to use as well. Your phone's browser can't read it, so the app says so by name rather than leaving you guessing. Open that photo in your gallery and save or share it as a JPEG, then add it again. If it keeps happening, it's worth changing your camera to save JPEG — on most phones that's in the camera app's settings, sometimes called "high efficiency" or "storage saver."

Photos from the gallery are shrunk to the same size camera shots are, so a 12-megapixel picture doesn't eat your storage or your data any faster than one you took in the app.
Photos & working offline
A job's or invoice's photos come down the moment you open that one record, rather than all of them every time the app syncs — so start-up and syncing stay quick and use very little data.

A job you've already opened on this phone keeps its photos right there, offline. Open one you've never opened on this phone while you're completely out of coverage and the photo box tells you so instead of showing them — they're safe in your account and fill in the next time you open that job with a bar or two. Both photo buttons are deliberately not there until then: saving a record sends its whole photo list, so adding a picture to a job whose existing photos this phone has never seen would wipe the ones already in your account. Take the shot with your normal camera app in the meantime and put it on the job once you're back in signal.

If a job or quote has several full-size photos on it, a single save can be too big to upload in one go. The app tells you plainly that the change is too large — remove a photo or two and save again.
Changing an invoice after it has been paid
You can still edit a paid invoice — a part got left off, a rate was wrong, the customer okayed extra work after paying a deposit. But changing the line items moves what the customer owes without moving what they already handed over, so before saving you'll get a plain summary: how much has been paid, what the invoice went from and to, and whether that leaves money still owed or a refund to give back. Tap through it and the change saves normally.

You also get a notification when it happens, which matters if you have techs on the account — an invoice one of them re-prices after a customer paid is your money either way.
Deleting an invoice
Delete Invoice is on the invoice editor, and any parts the invoice consumed go straight back into Inventory when you use it.

An invoice that's been paid by card can't be deleted. The record of that charge — what it was, what invoice it settled, how much of it has been refunded — lives on the invoice, so deleting it would throw all of that away while the money is still sitting in your Stripe account and on your customer's statement. The app tells you so instead of doing it quietly. If the charge was a mistake, refund it in Stripe: the invoice becomes ↩️ Refunded, stops chasing the customer, and stays in your books where it belongs.

Cash and check invoices are unaffected — a mistaken one deletes normally.
Two invoices written on two phones on the same afternoon
Invoice numbers come out of one counter in Settings → Invoice Defaults, and each phone steps that counter forward as it writes. Two phones out of signal on the same afternoon can both reach for 1043 without knowing about each other — and two different customers holding two different bills with the same number on them is the kind of thing an accountant asks about a year later.

So the account keeps the last word. When the second phone syncs, its invoice is given the next free number instead, and that phone tells you: Invoice #1043 was already used on another device, so this one is now #1044. The invoice itself is untouched — same customer, same work, same total — and your counter moves on so it doesn't happen again on the next one. If you'd already handed a printed copy to the customer, re-send it so their copy matches yours. Quotes work exactly the same way.
Print, Send, and Request a Review
🖨️ Print / Save PDF just opens your browser's own print dialog — there's no separate PDF generator, so "Save as PDF" happens through your phone's print sheet. ✉️ Send to Customer emails a real HTML invoice with a payment button if you're cloud-connected with email configured; otherwise it opens your phone's own email app with a plain-text version instead. Once an invoice is marked Paid, ⭐ Request Review sends a canned thank-you + review-request message, using your Google Review link from Settings → Reviews if you've set one.

Warranty & Extended Service Plans

When the Warranty section is worth using
☰ More → 🛡️ Warranty. It's there for the work somebody other than the customer pays for: a fridge or a slide motor covered by the manufacturer, an extended service plan the customer bought, or a job a dealer has subcontracted to you. If you never do that kind of work you can ignore the whole section and nothing else changes — the "Who pays" picker on an invoice doesn't even appear until you've added at least one warranty company. If you'd rather not see it at all, ask us and we'll take the Warranty row out of your ☰ More menu — see the More tab entry above; nothing is deleted, and it can come back whenever you want it.

The reason it's a section of its own is that warranty work doesn't lose money on the wrench, it loses money on the paperwork. Work started without an approval number, hours over what was approved, a rate below your retail rate, and an old part that never went back are the four that get you, and every one of them is a date or a number somebody didn't write down.
Start with the warranty company, not the claim
Warranty → Companies → + Add a Warranty Company. A parts maker, an extended service plan and a dealer all pay differently, so the form asks the four things that actually cost money: whether you need approval before you start, what they approve an hour, whether they pay anything for coming out, and how many days you have to get the old part back.

It also holds your servicer or vendor number with them, the adjuster you deal with, their phone, email and portal address, and the parts mark-up they allow. Fill it in once and every claim you raise against that company inherits the rules — the app knows to warn you about that company's part-return deadline, and to start chasing when they've been sitting on a claim longer than their own payment terms.

Untick Still working with them to retire a company. Old claims keep all their history; the name just stops appearing in the pickers.
Coverage follows the coach, so the RV is its own record
Open the customer → RVs → + Add RV. Year, make, model, VIN, chassis, plate, length, odometer, generator hours, purchase date — and the one that matters most, the in-service date, because that's the date a factory warranty counts from and the first thing that decides whether a claim is inside the window at all.

It sits on the RV rather than on the customer on purpose. Coaches get sold. A claim on a 2021 fifth wheel is about that fifth wheel, and if a second owner calls you next spring the history is still attached to the right rig. Every RV on your books is also listed under Warranty → RVs, and deleting a customer never deletes their RVs or their claims.
Appliances, and the serial off the data plate
Open the RV → Appliances → + Add Appliance. Category, brand, model, serial, install date, and either a warranty length in months or the exact date it runs out. Given both, the exact date wins. Given neither, the app says Warranty not known rather than guessing — it will never tell you something is out of warranty on a hunch.

The serial number is the whole reason this list exists. It's the first thing every warranty company asks for, and it can't be read off a photo taken later, because by then the old unit is on the truck. Write it down while the panel is still off.

Each appliance shows a coverage label — covered, ending soon, expired, or not known — and a Claim button that opens a new claim already filled in with that coach and that appliance.
Start the claim before you pick up a screwdriver
+ New Claim, from the Warranty screen, from the RV, or from the appliance itself. Pick the company, the RV and the appliance, and the claim starts life as Needs approval.

Doing the work first and asking after is the single most common way a warranty job turns into a free job. Their answer is "you never called us", and there's no arguing with it. Starting the claim first also means the failure date, the serial and the part number get recorded while you're standing at the coach, instead of reconstructed a two weeks later from memory.
The approval number
The Approval card holds the approval number, the adjuster who gave it to you, the date, the date it runs out, and what they actually approved — hours, rate, parts and trip.

Write the number down while they're still on the phone. A claim that reaches "work done" without one is flagged red, and an approval that expires inside a week is flagged amber, because an expired approval is worth exactly what no approval is worth.

If the rate they approved is below your own shop rate, the card says so in plain dollars. That's not the app being gloomy — it's the number you want in front of you before you decide how much of this work to take on.
Complaint, Cause, Correction
Every warranty company on earth wants these three, in these words, and vague ones get claims kicked back weeks later.

Complaint is what the customer says: "fridge will not cool on gas, works on electric." Cause is what you found: "cooling unit failed, ammonia residue at the boiler tube." Correction is what you did and how you proved it: "replaced cooling unit, ran on gas four hours, 38F at the center shelf."

"Fridge fault" and "fixed" are what a denial looks like three weeks before it arrives.
What you are claiming, against what they approved
The What You Are Claiming card takes the hours you actually worked and the labor, parts and trip you're billing them. Leave Total claimed blank and the app adds the three together; type a figure in and yours wins. If they approved hours and a rate, Fill from the approval does the arithmetic for you.

Actual hours running over approved hours raises an amber flag. It isn't an error — sometimes the job really was worse than the phone call suggested — but going back for more approval before you submit is a great deal easier than arguing about it afterward.

The customer deductible goes on this card too, and it belongs on the customer's half of the invoice, not the warranty company's.
The old part going back
Tick They want the old part back, then fill in the RGA or return number, the ship-by date, the date you actually shipped it and the tracking. A claim with the box ticked and no RGA number shows amber; one past its ship-by date with nothing shipped shows red.

This is the quiet one. A parcel sent without an RGA number on the outside gets refused at their dock, and a part that never goes back gets the credit reversed about sixty days later — long after everyone has moved on and the money has been spent.
Sending it in, and the claim packet
📋 Copy Claim Packet at the top of a claim copies the whole thing — coach, appliance, brand, model, serials, failure date, the three C's, the approval, the amounts and the part return — as plain text, ready to paste into their portal, their claim form or an email. The app doesn't log in to anybody's portal on your behalf; it makes sure you never have to assemble the same set of facts twice.

Fill in the date on the Sending It In card, along with how you sent it and any confirmation number they gave you, and the claim moves to "sent in" — which starts the clock. Once it's past that company's payment terms it turns red on the list, so it's the app chasing them rather than you having to remember.
One invoice, two payers
Once you've added a warranty company, every invoice line gets a small picker underneath the description: Customer pays this or Warranty pays this. Bill the covered labor and parts to the warranty company at their approved rate, and put the trip charge, the deductible and anything they won't cover on the customer.

The totals then show the whole job, the warranty company's share taken back off, and what the customer is actually being asked for. The customer's copy of the invoice asks for the customer's share only. The two halves always add back up to the whole invoice, so nothing falls between them.

Most companies don't pay a cent for coming out, which is exactly why a warranty job normally has two payers on it — them for the repair, the customer for the drive.
Recording money on a split invoice
Record a Payment on a split invoice asks Whose bill does this settle? before anything else. A deductible handed over on the day is the customer. A check or a direct deposit that turns up weeks later against the claim is the warranty company — even though both of those are a check.

Getting that right is what stops the app chasing a customer for money the warranty company owes, or calling a job settled when only half of it is. Each side keeps its own balance and the invoice shows both.
Linking the claim to the job and the invoice
The Job And The Invoice card on a claim links it to the job it came off and the invoice it was billed on. Once an invoice is linked, the claim shows the warranty side and the customer side next to each other, with a link straight through to the invoice.

If the linked invoice has nothing marked as the warranty company's yet, the claim says so in amber — that's the case where the customer would otherwise be asked for the whole job.
Getting paid, or turned down
The Getting Paid card takes the date, the amount and the check or reference number, and marks the claim Paid. If they paid less than you claimed, the shortfall shows in amber rather than the claim closing quietly — some of that will be the customer's deductible, and the rest is worth a phone call.

If they refuse it, record the date and their exact words. That is what an appeal gets argued on. Refused claims stay on the books and count toward the refusal rate shown on the Warranty screen, because a company that turns down one in three is telling you something about itself.

On a Team account, the payment and refusal cards are owner-only, and so are the labor rates and mark-ups a company approves.
The history log on a claim
Every call, email and answer, with a date on it, at the bottom of the claim — who you spoke to, what they said, what you sent. Entries never change once they're added; that's the point of them. A refused claim is usually won back on this log rather than on the repair.
The claims list, and what needs a nudge
Warranty opens on Claims: four figures across the top — open claims, what you're owed, what's sent in and waiting, and how many have been turned down — then a Needs Attention card, a search box and a row of status filters.

Search finds a claim by approval number, RGA, part number, customer or coach. Needs Attention lists every claim with something wrong with it, red before amber and oldest first, so the list reads top to bottom as the order to work it in.

What it watches for is all paperwork: work done with no approval number, an approval nobody wrote a number down for, an approval expired or about to expire, a part return with no RGA or past its ship-by date, hours over what was approved, a finished job that's sat unsent for a week, a claim past the company's payment terms, and a claim they paid short.
The warning on your Dashboard
When claims need attention, a 🛡️ card appears on the Dashboard with the worst few on it and the total amount sitting at risk. It's deliberately blunt, because every one of those is work you have already done. Warranty money isn't lost in the shop — it's lost in the two weeks afterward when nobody chases it.

Tap any row to open that claim, or the button underneath to open the full list.
What warranty work is actually paying you
Above the claims list, once you have paid claims with hours on them, the app works out what an hour of warranty work really earned across all of them and puts it next to your own shop rate. If it's under, it says by how much.

That gap isn't a fault in the app. It's what warranty work costs, and it's worth knowing before you take on more of it.

The Business Report carries the same thing for a date range: claims raised, claims paid, warranty money received, how many were refused, what's still owed to you across all claims, what's sent in and waiting, and a Warranty Money Still Out table broken down by company with the longest wait on each. All of it is in the CSV export too.

One thing to be clear about: warranty figures are not added to the Income line. A warranty invoice already counts its whole value as income the day you raise it, so adding the claim on top would count the same job twice. The warranty section is there to tell you how much of that income has actually turned up.

Estimates / Quotes

How a quote works
Estimates are a completely separate record from invoices, so a quote never accidentally counts as income. Build one the same way as an invoice (same line items, same parts dropdown), then send it — there's no customer web login to click "approve," so the actual yes/no happens by phone or text, and you mark the estimate Approved or Declined yourself.
From a job to a quote
The "Quote" button on a job (Schedule list or the job's own modal) creates a new estimate pre-filled with that customer and the job dropped into Notes — you can quote the same job more than once over time if needed.
Converting to an invoice
Once an estimate is Approved, Convert to Invoice copies its line items and customer into a new Draft invoice and marks the estimate Converted (with a link back and forth between the two) — the original estimate is kept, not deleted. Heads up: converting an estimate with inventory-linked parts draws down stock right at conversion time, the same as saving an invoice does.

Inventory

Tracking parts
Each part tracks Qty on Hand (with quick −/+ buttons right in the list), Cost (what you paid) and Sell Price (what bills on invoices). An optional Reorder Point highlights the row and adds it to the Dashboard's Low Stock card once stock drops to or below that number.
Linking parts to a vehicle (matters for Team plans)
A part can optionally be tied to one vehicle. If you have employees, this is what keeps each employee's van stock separate — they only ever see the inventory assigned to their own vehicle. A part left on "No vehicle" is owner-only and invisible to every employee.

Repair Guides

What's covered
234 step-by-step guides across 13 systems (Refrigerator, Air Conditioner, Water Heater, Aqua-Hot/Hydronic Heat, Furnace, Slide-Out, Electrical, Propane, Plumbing, Awning, Generator, Leveling & Jacks, Solar & Charging) — each with symptoms, diagnostic steps, repair steps, commonly needed parts, and fault/blink codes where applicable. Anything marked with a red ⚠️ safety callout is flagging a genuinely hazardous step (like ammonia-based fridge leaks or gas-line work).
Fully offline, and searchable even with typos
This content is built into the app itself — not fetched from the internet and not part of your business data — so it works with zero signal and never bloats a backup file. Search tolerates typos on longer words (e.g. "themostat" still finds "thermostat") and matches fault codes like "E1" directly. If a search comes up empty, a "Search the web" link opens a pre-built Google search for the symptom plus "RV repair" as a fallback.
Manufacturer service manual links
Every guide page shows a link to that component's real service manual — not just a consumer owner's manual — right below the title. For the brands where the manufacturer's own site directly hosts genuine technician-grade service manuals (Dometic, Atwood, Norcold, Cummins/Onan, HWH, Carefree of Colorado, Aqua-Hot, PrecisionTemp, Victron, Renogy, and MTI Industries/Safe-T-Alert), it links straight there. For every other brand, it opens a pre-built search for that brand's service manual specifically (not "owners manual"), since for a lot of those brands the real service manual is published by a dealer or tech-library site rather than the manufacturer's own consumer-facing page. A guide tagged with more than one brand (e.g. "Suburban & Atwood/Dometic") shows a link for each one that has a direct source.

Expenses & the Business Report

Logging expenses
Fixed categories (Fuel, Vehicle Maintenance & Repairs, Parts & Supplies, Tools & Equipment, Insurance, Phone & Software, Advertising & Marketing, Licenses & Fees, Office & Admin, Other) — each entry just needs a Date, Amount, and Category, with optional Vendor and Note. You can filter the list by category, and a 🔁 next to a date means that one repeats.
Photographing the receipt
Every expense can carry a photo of its receipt — 📷 Photograph receipt on the expense, or pick one from your gallery. Tap the thumbnail to see it full screen, or the ✕ on its corner to remove it. One photo per expense: a receipt, not an album.

Take it at the parts counter while the phone is already in your hand. The receipt is the part that matters at tax time and the part most likely to be lost between the counter and the shoebox.

Receipts are not sent down with the expenses list — a few years of them would make every sync enormous — so each one is fetched when you open that expense to edit it. If it can't be fetched because you have no signal, the app says so and won't let you replace it, because saving over a receipt this phone has never seen would destroy the one already on file.

Receipts are stored in your account and come down to any device you sign in on, and they're included in your account backup.
Recurring expenses
For costs that repeat on a schedule — insurance, a vehicle payment, a software subscription — set Repeats (Weekly, Every 2 weeks, Monthly, Every 3 months, Every 6 months, or Yearly) when adding or editing an expense. The next occurrence gets logged automatically when it comes due, no re-entering it by hand, and shows a 🔁 next to its date in the Expenses list. You can change the amount, category, frequency, or due date any time by editing that entry — changes only apply going forward, so anything already logged in the past stays as-is. Set Repeats back to None to stop it.

Monthly means the same date every month, the way a real truck payment or insurance premium does — a payment set up on the 15th stays on the 15th, and a Jan 31st one becomes Feb 28th (or the 29th in a leap year) and then goes right back to Mar 31st. Every 3 months, Every 6 months and Yearly work the same way, leap years included. Weekly and Every 2 weeks stay on their day of the week. If a due date has drifted off the day you actually pay, edit that expense and set "Next due" to the right date — from then on the app follows that day.
What the Business Report shows
Reached from Settings, with date-range presets (This Month/Quarter/Year, Last Year, or a custom range): Income (paid invoices, counted by paid date), Sales Tax Collected, Parts Cost, Gross Profit, Expenses, Net Profit, and an estimated mileage tax deduction (kept separate from Net Profit, since it's an estimate, not real cash spent). Below that: itemized income (now with a Parts Cost and Profit column per invoice), itemized expenses, mileage by vehicle, new customers by source, and team hours worked (a data summary for payroll, not payroll itself). Export as 🖨️ Print/PDF or ⬇️ CSV to hand to your accountant.

Parts Cost and Gross Profit use what the parts cost you at the time the invoice was written — that figure is stamped onto the invoice when you save it and locked once it's marked Paid. Change a part's price tomorrow and only invoices you haven't been paid for yet pick up the new figure, so a closed month stays closed and last year's numbers don't move.
Refunds and your income numbers
Every income figure in the app counts what you kept, not what passed through — refund a payment in Stripe and the money comes back out of your totals.

On the Business Report that means Income, Sales Tax Collected, Gross Profit and Net Profit are all after refunds, and a Refunded to Customers tile shows the period's total — bill and tip together — so the drop is never a mystery. The itemized income table breaks each invoice into three columns — Invoiced, Refunded and Kept — and the CSV export carries the same three columns plus a summary row at the bottom. An invoice you refunded in full stays listed there, showing what it was worth and that all of it went back, rather than vanishing from the report. Sales tax comes off proportionally: refund half an invoice and half its tax comes off too.

A refunded tip is counted on its own and doesn't move Income or Sales Tax Collected — a tip was never part of the bill, so handing one back doesn't change what the job was worth. The report's Card Tips figure is what you kept after any tip refunds.

A chargeback you lose has its own Taken Back by the Bank tile. Once a customer's bank decides a dispute against you the money is gone the same as a refund, so that job counts as $0 earned and its sales tax comes back off too. The itemized table and the CSV both mark those invoices.

The Dashboard's income tile, the 12-month income chart, and a customer's lifetime total are all after refunds as well. What a customer still owes you is untouched — an unpaid invoice is unpaid whether or not some other invoice was refunded.

One thing worth knowing at tax time: parts you fitted on a job you later refunded still count as a cost, because you really did buy them and they really are gone. So a fully refunded invoice can show a loss for that job rather than zero. That's the honest number.
Gross Profit vs. Net Profit
Gross Profit is income minus sales tax collected minus parts cost only — it's the same number shown per-job on each invoice, just totaled for the period. Net Profit is the fuller picture: income minus every expense you've logged (parts, fuel, insurance, everything). They'll never match, and that's expected — Gross Profit answers "did the jobs themselves make money," Net Profit answers "did the whole business."

Settings

Company Info & logo
Your business name, tagline, contact info, and logo — the logo shows on invoices, the app header, and emails. Logo changes apply immediately; everything else in Settings needs a tap on the pinned Save Settings button to actually save.

Leave the business name blank and a note appears under it saying so, because a blank name doesn't leave a gap on a customer's invoice — it puts MobileRVProApp at the top of it, and the software you use is not who the customer thinks they're paying. Type your name in and tap Save Settings and it's fixed everywhere at once: invoices, quotes, emails and the app header.

Spelling sits under the address on this same card: leave it American, or switch it to Canadian and the app writes Labour, Licence and Cheque instead — on your screens and on the invoices your customers read. It has its own entry further down.
Time Zone
Usually already filled in on its own, detected from this device the first time you connect to Cloud Sync — most people never need to touch it. It only matters for two things happening behind the scenes on the server: exactly when a recurring expense's next occurrence gets logged, and exactly when an invoice flips to "overdue." If either of those ever seems to happen a few hours off from when you'd expect, check this dropdown and correct it.
Sales tax — one line or two, and what each is charged on
Most shops need one line. Give it whatever your state calls it, set the rate, and choose whether it's charged on parts only or on parts and labor — states differ, and getting this wrong is the difference between collecting the right tax and owing the difference yourself.

A second line is there for places that have to show two taxes separately. In Canada that's GST and PST: set GST to 5% charged on parts and labor, and PST to your province's rate charged on whatever your province taxes. Both appear as their own line on the invoice, so a customer can check the bill against what they expect to pay. Leave the second rate at 0 and nothing extra is printed. If you're Canadian, set Spelling in Company Info to Canadian while you're at it.

Each tax is worked out and rounded on its own, then added — so the separate figures printed on the invoice always add up to the tax total, and the tax total always adds up with the subtotal to the total. On a warranty job that holds for each half of the bill as well.

Changing any of this affects new invoices only. Every invoice keeps the taxes it was issued with, so putting your rate up in the spring never rewrites what somebody was billed in January.
Distance — miles or kilometres (in Company Info)
Sets whether the app says miles or kilometres — on the vehicle mileage screens, the Business Report, the spreadsheet export, and your mileage rate, which becomes $/km.

Nothing already logged is changed. A mileage log holds two odometer readings, and an odometer reads whatever your truck was built to read — a Canadian dash has always been in kilometres. So this only decides what the app calls those numbers; it never rewrites them, and switching back and forth is harmless.

One place it does more than relabel: the AI Receptionist's service area. That limit is measured against real distance, so a radius you type in kilometres is converted before the AI uses it. Set 50 with kilometres chosen and the AI keeps to 50 km, not 50 miles.

Your mileage rate should match: the IRS publishes a rate per mile, the CRA one per kilometre.
Spelling — American or Canadian (in Company Info)
Sets whether the app writes Labor, License and Check or Labour, Licence and Cheque, on your own screens and on the invoices your customers read.

It only ever changes the app's own words. Anything you typed — a customer's name, a line description, a note — is left exactly as you wrote it, because those are your words and not the app's to correct.
Invoice Defaults
Your sales tax lines (see above), next invoice number, default payment instructions, hourly labor rate, trip fee, and how tracked job time gets rounded before it fills an invoice's Labor line (every job also bills a 1-hour labor minimum regardless of rounding).

The next invoice number steps forward on its own each time you write an invoice, and it keeps whatever format you've typed — INV-1001 → INV-1002, 0042 → 0043, 2026-007 → 2026-008. Letters, dashes and leading zeros are all kept exactly as you set them.
Working Days & Closed Dates — the days you can be booked
This card in Settings decides which days anything can be booked on your calendar automatically — both by your website's booking form and, if you have it, by the AI Receptionist on the phone. It's one place, and it covers both, so there's nothing to keep in sync in two spots.

The days you work. Tick the days you actually work — Sun through Sat — then tap Save Days. Saturday and Sunday are treated exactly like any other day: if you work Saturdays, tick Saturday and Saturdays become bookable. The default is Monday–Friday, so if you work weekends, tick them. You have to leave at least one day ticked; with none ticked nothing could ever be booked at all.

Holidays. The switch below the days controls the six major U.S. holidays — New Year's Day, Memorial Day, July 4th, Labor Day, Thanksgiving and Christmas. Leave it on and those six days are skipped for you automatically. Turn it off and nothing is assumed for you at all — useful if you're the person who works Thanksgiving, or if you're not in the U.S. Just remember that with it off, any day you actually want off has to be added as a closed date yourself, or it stays bookable.

None of this touches jobs already on your Schedule, and it never stops you from booking anything by hand — you can always put a job on a Sunday yourself. It only controls what gets booked automatically without you there.
Closed dates — days off, vacations, and dates that repeat every year
Below the working days, add any individual day you're closed, or a whole vacation range at once by switching to the range option — a two-week trip is one entry, not fourteen. Tick Repeats every year and that date is closed on the same month and day in every year from then on, without you re-adding it each December — good for a birthday, an anniversary, or a holiday the app doesn't cover. Yearly dates show as "Dec 24 (every year)" in the list; one-off dates show the year.

A closed date you add overrules the built-in holidays, so if you turn the holiday switch off and add your own list, yours is what's used. A day that's already covered won't be added twice, and the app tells you rather than silently doing nothing. One quirk worth knowing: a yearly date set to February 29th only exists in a leap year, so pick the 28th if you mean every year.

Remove one any time with Remove — that day goes straight back to being bookable.
Booked out for today — stop today's bookings with one tap
If you fill up and can't take another job today, tap I'm Booked Out — Stop Today's Bookings in the Working Days & Closed Dates card. Your website booking form (and the AI on the phone, if you have it) immediately starts telling people you're fully booked for the rest of today — even if some time slots would otherwise still show open — and offers a callback instead. It only ever affects today and resets itself overnight, so there's nothing to remember to turn back on tomorrow morning. Jobs already booked for today aren't touched; this only blocks new ones. Tap Resume Taking Bookings Today to turn it back off early.
Push notifications — turning them on, and letting your phone show them
Push notifications are how you find out about something the moment it happens instead of the next time you open the app — a quote request or a booking coming in off your website, and, if you have the AI Receptionist, an appointment it booked or a callback it needs you to make. They're free and have nothing to do with any add-on. The switch is in ⚙️ Settings, in the AI Receptionist card near the top: tap 🔔 Turn On Push Notifications. It's per device, so turn it on individually on each phone or tablet you want buzzing.

Here's the part that catches people out, and it caught me out too. Turning it on inside the app is only half of it. The app can ask your phone to show notifications; your phone decides whether it will. If your phone has notifications switched off for MobileRVProApp, the app will still say notifications are ON for this device — because as far as the app is concerned they are — and you'll still never see one. So if it says ON and nothing is arriving, the app isn't broken; the setting you need is on the phone itself.

The quickest way there is to press and hold the MobileRVProApp icon on your home screen, tap App info, then Notifications, and make sure Allow notifications is switched on. The long way round is Settings → Apps → MobileRVProApp → Notifications, which is the same screen. While you're on it, check the alert style is one you'll actually notice — a notification that's allowed but set to silent lands in the shade with no sound and no banner, which feels exactly like not getting one.

Two other things quietly swallow a notification that's otherwise allowed. Do Not Disturb holds everything back until you turn it off. And battery saving can stop the app being reached at all when it's been closed a while — on a Samsung that's Settings → Battery → Background usage limits, where you want MobileRVProApp not in the Sleeping apps or Deep sleeping apps list; on most other Androids it's Settings → Apps → MobileRVProApp → Battery → Unrestricted.

If the app's own switch says notifications are blocked, that means your phone was asked once and the answer was no. Allow them at the phone level using the steps above, then close the app fully and reopen it — the app picks the permission back up on its own and reconnects. To prove the whole chain works end to end, send yourself a quote through your own website form and watch for the buzz.
Backup & Restore
Everything auto-saves on this device as you go. Download Backup makes a portable copy — worth doing before moving to a new phone — and Import Backup puts one back.

Restoring goes further than the phone in your hand. The backup is put back into your account, so it reaches your other devices too rather than sitting on one phone until something overwrites it. Nothing already in your account is deleted; where a record is in both, the backup's version is the one kept, which is exactly why anything you deleted after the backup was made comes back. It works through the records a few at a time with a running count on screen, so leave the app open until it says it has finished. If some records go up and some don't, you're told how many of each and nothing is removed from anywhere — get a solid signal and run it again.

If you're cloud-connected, the server also makes its own automatic backup every 24 hours behind the scenes and, if a backup email is set up on the hosting side, emails a copy each time — that part needs nothing from you. On the Team plan this whole card (and Import From Another App below) is owner-only; employees never see either one.
Having a backup emailed to you automatically
Under the two backup buttons in Settings there's 📧 Email me a backup. Pick Every week or Every month and a copy of your data gets sent to you on its own — no remembering, no tapping. Leave the address box empty and it goes to the address you sign in with; type one in and it goes there instead. Send one now does it immediately, which is the one to use the day before you switch phones.

Why bother, when the server already backs itself up? Because those copies live on the same machine your data does. The whole point of a backup is having it somewhere else, and an email in your own inbox is somewhere else.

Job photos are not included. They're by far the biggest thing in your account and would make a file no email provider would accept. Everything else is there — customers, jobs, invoices, estimates, parts, expenses, mileage, warranty claims, the lot. Your photos stay safe in your account, and a backup you download by hand does include them, so that's the one to use before wiping a phone.

It goes out when you open the app, not in the middle of the night. If a backup is due, it's sent quietly the next time you open up with a connection — you'll see nothing at all, which is deliberate; a backup working as intended isn't news. The date of the last one is shown right there in Settings, and that's the honest place to check.

If you've got more than one phone on the account, you still get one backup, not one per phone. The server keeps the schedule and turns the others down.

Payment details — your PayPal and Venmo usernames, and any custom card links on invoices — are deliberately left out of every backup, since a backup file gets forwarded and stored in places the original never would.
Import From Another App
Switching from Jobber, Housecall Pro, or similar? Export your Customers, Inventory, or Invoices as a CSV from that app, then import here — column matching is automatic, but always double-check the preview before confirming, since every app names its columns a little differently. Past invoices import as already-paid history, not as something still owed. Owner only on the Team plan.

Importing the same file twice is safe. If an import stops half way — the signal drops, the app gets closed, you're not sure whether it finished — just run the same file again. Anything already in your account is left exactly as it is rather than added a second time, and the message at the end tells you how many it skipped. A customer is recognized by name together with their phone number or email; a part by its name or part number; a past invoice by the same customer, the same date and the same amount. So the safe move when you're unsure is always to re-import, not to start picking through the list deleting doubles by hand.

One thing that follows from this: re-importing a stock list does not add the quantities on top of what you already have. Parts already on file are left alone at the count they're at. When you want to add stock you've actually received, use Receive Shipment on the Inventory screen instead.
If your import file has a problem
The preview checks the file before anything is imported, and tells you in plain English what's wrong and which line it's on, so you can fix that one line in your spreadsheet rather than hunting through the whole file.

A stray quotation mark that never gets closed is the common one — from that point on the file has no more rows as far as any program is concerned, so the app refuses it outright and names the line the quote started on. A row with more or fewer columns than the header row gets a warning naming its line number; the import can still go ahead, but that's your chance to look.

When you're importing past invoices, a row with a negative amount — a credit or a refund, written either with a minus sign or in accounting brackets like (125.00) — is skipped rather than imported, and the message at the end tells you how many were left out. There's no such thing as an invoice for less than nothing, so those rows would otherwise sit in your list reading as $0.00. Go back to the original file, see what those few lines really were, and add them by hand if they belong.

Big files import in batches with a running count on screen, so a long import looks like it's working rather than like the app has frozen. Files over 5,000 rows are turned away with a suggestion to split them — past that size a phone browser tends to run out of memory partway through, which is a far worse outcome than being asked to import two halves.
Cloud Sync setup
Create Account (first time only) or Log In connects this device to your MobileRVProApp account, which is what the app runs on — see "You need an account" and the trial and sign-out entries under Getting Started above. If you were invited to a Team, use Log In (not Create Account) after setting your password from the invite link. Anything already on this device uploads to the account automatically the first time you connect.

That first upload is the one moment your work exists in only one place, so the app treats it carefully. Until it has finished, nothing on the device is replaced with what's in the account — not on the next launch, not when you come back to the app, not if you tap 🔄 Sync Now. If you connect somewhere with no signal, you'll be told the account couldn't be reached and that everything is still saved on the device, and the app quietly picks the upload back up the next time it can, even if that's days later. If some records go up and some don't, you're told how many of each and nothing is removed from the phone — press Sync Now with a solid connection and the rest follow.
Changes "waiting to upload" — and the Try Again button
Everything you enter saves on the device the instant you enter it, whether or not you have a signal. When there's no connection the app keeps a list of what still has to reach your account, and Settings → Cloud Sync shows the count: 📥 3 changes saved on this device, waiting to upload. It clears itself the next time you have bars — you don't have to do anything. Tapping 🔄 Sync Now just makes it happen immediately instead of waiting.

Occasionally something in that list won't go through even with a good connection, and the app moves it aside so it isn't holding up everything queued behind it. That shows as ⚠️ 1 change the server would not accept, with a Try Again button. Nothing has been thrown away — the change is still on the device and still on the list. Tap Try Again once you've got a solid signal; it usually goes straight through if whatever was wrong at the other end has been fixed. If it keeps coming back, that's the point to email support@mobilervproapp.com, and mention what you were entering when it happened.

Either way, the card tells you why rather than leaving you guessing: under the count you'll see the change it's stuck on and the server's own words about it — something like The last try didn't get through — Edited job: There is already a job booked at that date and time. That sentence is usually the whole answer, because fixing what it mentions and tapping Sync Now clears it.

And it can never trap you on the device. If a change genuinely won't upload no matter what, signing out doesn't refuse and leave you stuck — it saves a full backup of the phone to your downloads first, shows you what didn't make it, and lets you go. Discard Stuck Changes next to Try Again is there for the same reason: a change that will never be accepted shouldn't leave a warning pinned in Settings forever with nothing you can do about it.

One more warning is worth knowing about: This device is out of storage. When that happens the app can't write to its normal spot any more, so it tucks the not-yet-uploaded changes into a backup on the device instead, and tries to get them to your account right then rather than waiting — the message tells you which of those it managed. Closing the app doesn't lose them; they're read back out of that backup the next time it opens. Even so, treat it as urgent: get a connection and sync, then free up space — deleting photos off old, finished jobs is normally the fastest way to get it back. Once there's room again the app says so and goes back to saving normally on its own. You'll see the out-of-storage warning wherever it applies, including on the quick taps — clocking in, clocking out, and sending an appointment reminder — rather than a cheerful "Saved" that isn't the whole story.

If your subscription has lapsed, a change you make is still saved on the phone but won't upload, and the app says exactly that and points you at Settings to renew. Nothing is lost while you sort it out; it all goes up on its own once the subscription is current again.
"Changed on two devices" — when one phone saves over another
Every device keeps its own full copy of the account and works from it, signal or no signal — that's what lets a tech finish a job in a canyon. The cost of it is this: if two people had the same record open, the one whose change reaches the account last is the one that's kept. Say you drop an invoice from $520 to $470 as a favor to a regular, while the tech, out of signal, adds a $30 part to his copy of that same invoice and syncs at supper time. His copy lands last, so the price goes back to $520.

The app doesn't try to stitch the two versions together — guessing which of two people was right is a worse problem than the one it solves. What it does instead is tell you. When a save replaces work that came from somewhere else, a Changed on two devices list appears in Settings → Cloud Sync, naming the record, who saved over it, and what the value was before:

Invoice #1043 — Total was $470.00, now $520.00 — Tom, yesterday 6:14 PM

Nothing has been deleted and nothing needs undoing before you can work: the record is sitting there with whichever change arrived last. Open it, decide which figure was right, fix it the normal way if it needs fixing, then tap Dismiss on the notice — or Dismiss All when you've been through them. Dismissing only clears the list; it never changes a record. Photos and signatures are reported as having changed without showing the picture, since there's no way to put one of those in a line of text.

This is owner-only — it's the owner who has to decide which version was right — so an employee never sees the list, and on an account where nobody is doubling up on records the whole thing simply never appears. Notices clear themselves out after a couple of months if you never get to them.

Website Quotes and Bookings

What it is
Settings → Website Quotes and Bookings has a ready-to-paste embed code that adds a form to your own website with two tabs — Request a Quote and Schedule an Appointment — so a visitor just clicks whichever they want, with only that form showing. No coding: paste it into your site builder's custom HTML/JavaScript block (GoDaddy, Wix, Squarespace, and WordPress instructions are all right there). Free with every plan.
What happens when someone uses it
A quote submission shows up in your Quotes list with a push notification, and "Schedule This" there turns it into a real customer + job in one tap. A booking is different — it's confirmed on the spot, and it obeys the rules you set in the Working Days & Closed Dates card in Settings: the days of the week you work, the holidays you've left switched on, your own closed dates and vacation ranges, the "booked out for today" switch, plus your business hours, spacing between jobs and service area. So nothing gets double-booked, booked on a day you're off, or booked somewhere you can't reach that day. It lands directly on your Schedule as a real job, also with a push notification — no AI Receptionist subscription required; those settings are yours whether or not you ever add the phone AI.
A popup the moment a quote or booking arrives
Beyond the push notification, the OWNER's own device (not employees') pops up a small clickable card right in the app the moment a quote request or booking comes in on its own — from the AI Receptionist, or through this website widget — while the app is open. Tap it to jump straight to that quote or job; tap the ✕ to dismiss it without leaving what you're doing. This never fires for a job or quote your team enters by hand, only for the ones that showed up automatically and you might not know about yet. Checks about every 25 seconds while the app is open, so it's not instant, but close.
How far ahead someone can book
Bookings through the website widget (and through the AI Receptionist) are capped at one year ahead. Anyone trying for a date beyond that is told to pick one within the next year. This closes a gap where a form on the open internet would happily accept a date in the year 9999 and drop a real job onto your Schedule that you'd have no practical way to notice or clean up. A year is far more than anyone books an RV repair, so you'll never hit it in normal use.
Taking a deposit to hold a new customer's booking
Optional, off unless you switch it on: Settings → Take a deposit to hold a new customer's booking. It only ever applies to people who book themselves — through this website form or the AI Receptionist — and only the first time, before they're a customer of yours. Anyone already on your books is never asked, and neither is anything you enter yourself.

The amount is your trip fee. There's no separate figure to set, on purpose: it's what a wasted drive actually costs you, and it's the same number the AI quotes on the phone, so nobody is told one figure and charged another.

When someone books, the slot is held straight away so nobody else can be sold it while they find their card, and they get a link to pay. You get a notification saying "Slot held — deposit not paid yet" rather than one claiming a booking, so you never drive out to something that was never confirmed. Pay, and it becomes an ordinary appointment and you're told again. Don't pay, and the slot goes back on your calendar when the hold runs out — an hour by default.

The deposit comes off their final bill by itself. Invoice that job for $400 with an $85 deposit already paid and the customer is asked for $315. On a warranty job it always lands on the customer's half and never reduces what the warranty company owes.

Two things it deliberately does not do. Asking for a quote never involves a deposit — nothing is being held, so there's nothing to protect. And moving an appointment is not cancelling one: reschedule and the deposit follows it to the new time, with no refund and no second charge.
Deposits: cancellations, refunds, and email
Set Free cancellation up to (hours before) in Settings — 24 hours by default. Cancel earlier than that and the deposit is refunded automatically; later than that, you keep it, and the customer was told so before they paid. Refunds aren't instant on purpose: a cancelled deposit sits for about half an hour first, because a reschedule is a cancellation followed by a new booking, and refunding immediately would hand the money back a moment before the new booking claimed it.

Because the payment link is sent by email, an email address becomes required for new customers once deposits are on — the website form marks it required and the AI asks for it while taking their details. If somebody genuinely won't give one, the AI offers a callback instead rather than pretending the appointment is booked.

One thing to remember: re-copy your embed code after switching deposits on. The code on your website is a snapshot from the day you pasted it. An old copy will take a booking and tell the visitor it's confirmed when it's only being held.

Switching deposits back off stops any new one being asked for. Deposits already paid still come off their invoices, and holds already running still expire normally.
Keeping it safe from spam
The widget has lightweight, invisible spam protection — a hidden field real visitors never see or fill in, plus a submission rate limit. A bot that fills in the hidden field gets a fake "success" response and nothing is actually created, so it has no way to tell it didn't work — you'll never see spam rows in your Quotes list or bogus jobs on your Schedule.

Billing & Team

Managing your subscription
Settings → Billing shows your trial/subscription status and lets you subscribe, switch between Solo and Team, or manage payment details.

If a renewal payment doesn't go through, that card changes to say so — ⚠️ Your last payment didn't go through — please update your card to avoid losing access — with an Update Payment Method button right underneath it. That warning is the window, and it matters: the app carries on working completely normally while it's showing. A card that expired isn't a decision anybody made, and the person who'd get hurt by an instant shutoff is the customer waiting in a driveway for their invoice. Sort the card out while the warning is up and nothing ever changes. Leave it and the app eventually goes read-only, which is described below.
If your subscription lapses — what still works
A subscription usually lapses because a card expired, not because anyone decided to stop paying, and the person who gets hurt by a hard shutoff isn't you — it's the customer sitting in a driveway waiting for their invoice. So when a subscription goes unpaid the app switches to a read-only mode rather than locking the doors.

What you can still do: open and read everything; send an invoice or a quote you've already written; send a payment reminder; take a card payment in person; hand over a Pay Now link; mark an invoice paid when someone hands you cash; capture a signature; mark a job on-my-way, arrived or complete; and download a full backup of your data.

What's paused: creating or editing anything new — new customers, jobs, invoices, estimates, expenses, inventory, and changes to your settings. On an invoice or a job that already exists you can still change its status and the payment/signature details, but not the line items, prices or dates; try it and the app will tell you plainly rather than failing silently.

Nothing is deleted and nothing is locked away. Update your card in Settings → Billing and everything comes straight back exactly as you left it.
Adding employees (Team plan)
Invite an employee with their name, email, and one assigned vehicle (add the vehicle first if you haven't yet — this vehicle governs what THEY see in Vehicles/Mileage, separate from which jobs they see, below). The name is what shows up everywhere in the app from then on — the Team list, and the "Assigned To" picker on a job — instead of just their email address. Each employee gets their own login. You can reassign someone to a different vehicle any time without losing their history. Anyone in the Team list without a name on them shows a small + Add name button — tap it to fill theirs in. Tap the ✎ next to any existing name to change it or fix a typo.
Assigning jobs to a specific employee (Team plan)
Every job's screen (Team plan only) has an Assigned To dropdown listing your whole team by name — pick anyone, regardless of which vehicle they're set up with. An employee only ever sees jobs assigned to THEM (and the customers/invoices tied to those jobs) — never company-wide totals or another employee's work — while you as the owner see and can reassign everything. Only the owner can change who a job is assigned to; an employee creating a job gets locked to themselves automatically.
Removing someone from your team — check "Last synced" first
The Team list has a Last synced column: the last time that person's phone actually reached your account. It's worth a glance before you do anything to somebody's access, because work written on a phone that's out of signal lives only on that phone until it syncs. A tech who's been up a mountain for three days may have a week of jobs, invoices and photos sitting on a handset and nowhere else.

So Remove asks you to confirm, and the question it asks depends on what that column says. If they synced today, it tells you so — everything of theirs should already be in your account, go ahead. If they haven't synced in days, it warns you plainly that anything written since then is still only on their phone and removing them means it can never reach your account, and suggests asking them to open the app somewhere with a signal and tap Sync Now first. If they never accepted the invite in the first place, it says that too, so you're not being warned about a phone that doesn't exist.

Removing someone takes their access away immediately. Everything of theirs that has already reached your account stays in it — their jobs, their invoices, their customers, their photos. Nothing of yours is deleted.
What employees can't see or change
Beyond data scoping, a set of Settings cards are owner-only and simply don't appear for an employee at all: Company Info, Invoice Defaults, PayPal and Venmo Buttons, Accept Card Payments, Backup & Restore, Import From Another App, Vehicle Mileage rate, Reviews link, Business Report, Team management, the Billing/subscription section, and Danger Zone (Clear All Data). An employee's app is focused entirely on doing the work — their own jobs, customers, invoices, and inventory — not running the business.

AI Receptionist

What it does
An AI phone agent answers your business line, talks to the caller, and books the job for you automatically — a real customer and job get created directly in your MobileRVProApp account, the same as if you'd entered them by hand. It comes with the Solo Pro and Team Pro plans; switch to one from Settings → Billing and it turns itself on.
Cost
Solo Pro: $99/month, with 200 included AI-answered minutes. Team Pro: $149/month, with 300 included minutes. The receptionist comes with those two plans rather than being bought separately — Solo ($49) and Team ($99) do not include it. Going over your included minutes never triggers an automatic charge — instead, a 60-minute top-up pack is $19.99, and any purchased minutes are drawn down first before you show as over your allowance. Where you buy it depends on how you subscribed. If your subscription came from the Google Play Store or the App Store, there is a Buy 60 more minutes button right there in Settings → AI Receptionist. If you subscribed on the web instead, the same Buy 60 more minutes button is there and takes you to a secure card checkout. If you go over without a top-up on hand, calls are still answered, but the AI stops booking NEW appointments online — anyone it can't book automatically gets logged as a callback for you, right in the app, so nothing falls through the cracks. New bookings resume the moment you buy a top-up pack, or automatically once your next billing period starts. Settings → AI Receptionist shows a live minutes-used bar for the current billing period, and you'll get an automatic email if you cross 80% of your included minutes, and another if you go over 100% (with a heads-up if bookings are about to pause), so you're never caught by surprise.
How your minutes are counted — and what happens if you switch plans mid-month
Every call the AI answers is rounded up to the next whole minute and counted against the billing period it happened in. The bar in Settings → AI Receptionist, the 80% and 100% warning emails, the point at which new online bookings pause, and the final tally when the period closes all read from that same count — so they can't tell you different things.

If you move between Solo and Team partway through a month, the period you're already in is judged against the plan you started it on. That's deliberate: it means the allowance you've been watching all month is the one you're actually held to, rather than the number jumping around underneath you. The new plan's allowance starts with your next billing period.

Purchased top-up minutes work the same either way — they're drawn down when a period closes, only for minutes you actually went over by, and anything left over stays on your account. They don't expire at the end of the month.
If a top-up purchase gets interrupted
This one is only about packs bought through the Google Play Store or the App Store. On a web subscription there is no store standing in the middle — the pack is put on your account by hand — so none of what follows can happen to you.

Buying a 60-minute pack from a store is two steps, not one. The store takes the payment, then the app tells your account about it so the minutes land on your balance. Those two things happen a second apart normally and you never notice there were two of them.

They can come apart, though. The signal drops as you're standing between two rigs in an RV park, or the app gets closed on the way, or the account is busy at that exact moment. Money's gone, minutes aren't there. You don't have to do anything about it: the pack is picked up and applied on its own the next time the app talks to your account — open it somewhere with a signal and it sorts itself out. That works because the store keeps a paid pack on its books until the app confirms the minutes were delivered, so a pack still sitting there is, by definition, one that was paid for and not yet handed over. There's nothing to tap and nothing to email support about.

The same thing fixes the problem from the other direction. The store won't sell you a second pack while a first one is still outstanding, so an interrupted purchase would otherwise leave you unable to buy at all — which is a poor place to be at 4pm with a customer on the line. Clearing the old pack clears that too.
Why isn't the AI Receptionist included with my free trial or free access?
The AI Receptionist is the one part of MobileRVProApp that isn't included with a free trial, a class or student signup code, or complimentary access — it's a separate paid add-on on top of a paid plan. Everything else in your account works exactly the same during a trial or on free access; only this one feature waits. The reason is that it isn't just software: turning it on rents a real phone number in your name and pays a phone company for every minute the AI spends talking to your callers, every month, whether or not anything is being paid for the account. So you'll see the Turn On button once you're on a paid MobileRVProApp plan, and not before. If you tried to buy it and it wouldn't let you, nothing was charged — and if a charge did somehow go through, it gets refunded automatically. Email support@mobilervproapp.com if something doesn't look right.
Which days the AI is allowed to book — and stopping today's bookings
The AI never books a day you're closed. Which days those are lives in one place — the Working Days & Closed Dates card in Settings, just below AI Receptionist — because your website booking form uses exactly the same rules, and keeping them in two places would only ever mean getting booked on a day you're off. That card is where you tick the days you work (Saturday and Sunday included, if you work them), switch the six major U.S. holidays on or off, add your own days off and vacation ranges (with an optional Repeats every year), and tap I'm Booked Out — Stop Today's Bookings when you fill up for the day. See "Working Days & Closed Dates" and the two entries after it under Settings above for the full detail.

What's specific to the phone: a caller who asks about a day you're closed is told plainly that you're not open that day, and the AI offers to have you call them back rather than leaving them stuck or guessing.
Service area — keeping the AI from booking jobs too far away
Set a maximum distance from your shop address in Settings → AI Receptionist ("Service area"), and the AI won't book a caller further out than that on its own — it explains warmly that the address may be outside your normal area and offers you a callback instead, so you decide whether it's worth the drive. Leave it blank for no limit at all. An address the AI can't look up is always let through rather than blocked, so a rural or unusual address never gets wrongly turned away.
Keeping one truck on one route each day (Solo plan)
On the Solo plan, once the AI has booked 3 or more jobs close together in the same part of town on a given day, that day is treated as "claimed" for that area — a caller from a different part of town that same day is told there's no tech scheduled out that way that day, rather than getting booked into a route that zigzags across town chasing one job at a time. Either way, the AI offers you a callback so you can decide whether to make an exception yourself. This is Solo-only — a Team plan can run more than one truck at once, so nothing restricts which areas get booked together on Team.
Appointment spacing — how far apart the AI books jobs
Every appointment the AI books gets a block of time, back to back with no wasted gap in between — with the default 60-minute window, a 10am job means the very next one can start right at 11am. Change how long that block is in Settings → AI Receptionist ("Appointment spacing") to match how long a typical job actually takes you, from 5 minutes up to 8 hours. Applies to every appointment the AI books, every day — Solo and Team alike.
Time range vs. exact time — what the AI actually promises the caller
Right below Appointment spacing in Settings → AI Receptionist is a checkbox: "Give the caller a time range instead of an exact time." On (the default): the AI never promises an exact time it can't guarantee — it tells the caller a range instead, e.g. "between 9 and 10am," then "between 10 and 11am" for the next job, and so on, back to back using the spacing setting above. Off: the AI promises the exact time the caller asked for instead (e.g. "10am"), with no range language — appointments are still spaced apart using that same spacing setting either way; this only changes what gets said out loud.
Push notifications — get alerted the moment it books something
Turn on push notifications in Settings → AI Receptionist and this device buzzes the instant the AI books an appointment, or can't and needs you to call a customer back yourself. It's free, and set up separately per device — turn it on individually on each phone or tablet you want alerted.

If you switch them on and nothing ever arrives, it's almost always your phone's own notification setting for the app rather than anything here — Push notifications — turning them on, and letting your phone show them in the Settings part of this guide walks through where that lives on your phone.
When a caller cancels an appointment on the phone
A customer can ring and cancel an appointment, and the AI takes it off your Schedule for you. The thing that matters is that you find out — an appointment quietly vanishing off your calendar overnight is worse than one you have to cancel yourself.

So a cancellation now reaches you two ways. You get a notification the moment it happens, the same as you do when the AI books something. And a note is added to that customer saying the appointment was cancelled and when, so it's still there in black and white weeks later when you're looking at their history and wondering what happened to that Tuesday.

The AI will only cancel for someone calling from a phone number on that customer's file. Either number counts — if you've put a spouse's mobile or a shop line in the Second Phone box, that person can move or cancel their own appointment too, because it's a number the customer gave you on purpose. When the AI asks what number the appointment was booked under, whatever they answer is fine — the right number, the other one on the file, or a number they've simply misremembered. That question is just part of the conversation. The only thing checked is the number showing on the caller ID, because that's the one nobody can fake by knowing it. Any other number and it won't cancel anything: it takes a callback for you instead and you decide. That's deliberate — canceling an appointment is one of the few things a stranger could do real damage with, and "the caller said they were Dave" isn't good enough when it costs you a booked slot. Someone ringing from a number that isn't on their file (a landline at the campground, a borrowed phone) just means you get a callback to sort out yourself, which is the right outcome.
The AI won't read out your address unless you say so
Ask the AI where the business is and, by default, it won't tell them. Not a bug — for most mobile RV techs the address on file is their house, and there's no reason for a phone number on the open internet to hand out where you and your family sleep to anyone who thinks to ask.

There's a switch in Settings → AI Receptionist to turn it on if you want it. Turn it on if you've got a real shop or a yard that customers are meant to drive to. Leave it off — which is how it comes — if that address is your home, and the AI will offer to have you call them back instead of reading it out.

This only affects what the AI says out loud on the phone. Your address is still used for everything it's always been used for: it's on your invoices, and it's the point the AI measures your service area from when it's deciding whether a caller is too far out to book.
Keeping the live AI up to date
Changing your trip fee, hourly rate, business name, or the AI's own name (all in Settings) updates the live AI automatically within moments — most of the time there's nothing else to do. If it ever seems to be working off old information, tap Update AI script in Settings → AI Receptionist to push everything current right away. This never changes your phone number — only what the AI knows and says.
Turning it off — no refunds, but nothing wasted
Tap Turn Off in Settings → AI Receptionist. It stops renewing, so you won't be charged for it again. You keep using it through the end of the billing period you already paid for — that remaining time is non-refundable — and there's a "Changed my mind — keep it on" button if you want to undo it before that date arrives. If you subscribed through the Google Play Store and Play won't accept the change, the app tells you right then and shows you how to cancel it in the Play Store yourself, rather than saying it's off when it isn't. Turning it back on later is just Turn On again, any time.
Your AI Receptionist phone number
Your number stays exactly the same for as long as you keep using the feature — turning it off and back on, even more than once, never changes it, so anything you've set up around it (Google Voice forwarding, business cards, verification) keeps working. The one exception: if it's left off for a full 30 days in a row with nobody turning it back on, the number is automatically released so you're not paying for one that's sitting unused — turning it on again after that point issues a brand-new number instead. Turning it back on any time before those 30 days are up keeps your same number, and simply resets the 30-day clock for next time.

Remember to forward your business number to the AI number — the AI only ever answers calls placed directly to its own number, so callers dialing your regular business line won't reach it unless you've forwarded that line to it. And if you ever toggle the AI off, remember to remove that forwarding from your business number so your calls come to you normally again instead of ringing an AI that's no longer answering.

Nothing in the guide matches that. Try a shorter word.

Ready to try it?

Free for 30 days, and you don't need a card to start. Everything you enter during the trial stays yours — nothing is deleted if you decide not to carry on.