# Crewtavo Docs
> The complete Crewtavo documentation: how to do everything in it, for owners, office staff, salespeople, crews, subcontractors and their clients. Setting it up, quotes and the sales flow, measuring, jobs and the schedule, the field app, invoices and payments, clients, messages and marketing, roles and the team, apps and connections, hosting, updates, backups and troubleshooting. Each page below starts with its title and ends with its address.
---
# Set up Crewtavo on Railway
> Create a free Railway account, approve the setup, and Crewtavo deploys into your own account and opens in a few minutes.
Crewtavo runs in your own account at Railway, a hosting company, so your business data stays yours. The guided setup at [crewtavo.com/start](https://crewtavo.com/start/) signs you in to Railway (or creates your account), sets up Crewtavo there and opens it when it's ready. It usually takes a few minutes, and there's nothing to install.
## Before you start
- An email address or a Google account for Railway.
- Nothing to pay yet. Railway's free trial covers the first 30 days or $5 of usage, whichever comes first. To keep Crewtavo running after that, it needs Railway's Hobby plan: $5 a month, including $5 of usage. See [What Railway costs](https://crewtavo.com/docs/hosting/railway-costs/).
## Set it up
1. Open [Get started](https://crewtavo.com/start/) and choose **Continue with Railway**.
2. On Railway's page, choose **Log in using email**, then choose Google or type your email. If you're new to Railway, this creates your account.
3. Pick the workspace to put Crewtavo in, then choose **Authorize**.
4. Keep the **Setting up your Crewtavo** tab open. It ticks off each step: creating your Crewtavo in Railway, starting its database, sign-ins and file storage, then starting Crewtavo and preparing your database.
5. When it says **Your Crewtavo is ready**, bookmark the address it shows. It's where you and your team sign in, and it looks like `crewtavo-production-1a2b.up.railway.app`.
Your Crewtavo then opens on its own, on the screen where you [create your owner account](https://crewtavo.com/docs/getting-started/first-sign-in/).
:::note[What the setup keeps]
Nothing. The setup uses your Railway sign-in only to deploy Crewtavo. That access lasts one hour, stays in an encrypted cookie in your browser, and is cleared as soon as your Crewtavo is ready. Your business data never passes through crewtavo.com.
:::
## What it creates
A Railway project called **Crewtavo**, with five services. Every password and key is generated for you, so there's nothing to fill in.
| Service | What it does |
| --- | --- |
| `crewtavo` | The app itself, its background tasks (reminders, automations, recurring visits), and the only part the internet can reach |
| `db` | Your database (Postgres) |
| `auth` | Sign-in, invitations and password resets |
| `rest` | The data API the app reads and writes through |
| `storage` | Photos, receipts and documents |
## Already use Railway?
You can skip the guided setup and deploy the [Crewtavo template](https://railway.com/deploy/crewtavo?referralCode=pQ_v0d) from Railway's own page: press **Deploy**, wait a few minutes, then open the address shown on the **crewtavo** service.
## If something goes wrong
- The setup stops with a message: see [The guided setup didn't finish](https://crewtavo.com/docs/troubleshooting/setup-did-not-finish/).
- You closed the tab or lost the address: see [Find your Crewtavo's address](https://crewtavo.com/docs/troubleshooting/find-your-address/).
- The address shows **Crewtavo is starting up** or **Finish setting up Crewtavo**: see [Finish setting up Crewtavo](https://crewtavo.com/docs/troubleshooting/finish-setting-up/).
Source: https://crewtavo.com/docs/getting-started/set-up-on-railway/ (last updated 2026-10-18)
---
# Create your owner account and business
> The first time you open your Crewtavo, you create the owner account, name your business, pick your trade, connect Railway and set up your web address.
The first time anyone opens your Crewtavo's address, it asks for the owner account, then for your business. It takes about two minutes.
:::caution[Do this before you share the address]
Until the owner account exists, whoever opens the address first gets to create it. Create yours right after the setup finishes.
:::
## 1. Create the owner account
On **Welcome to Crewtavo**, enter your name, your email and a password of at least 8 characters, then choose **Create owner account**. This is the account you'll sign in with. The owner can do everything, including making other people owners.
## 2. Save your key file
Next comes **Save your key file**. Until email is set up, Crewtavo can't send you a password reset link, so this file is how you get back in if you forget your password.
1. Choose **Download key file** and keep it somewhere safe, like your password manager or a folder you back up. If you'd rather keep paper, open **Rather keep it on paper? See the keys** and choose **Print the keys**.
2. Tick **I saved my key file somewhere safe**, then choose **Continue**.
Each key in the file works once. Anyone who has the file can get into your account (it has your email in it), so don't share it. Once email is connected, **Forgot password** sends you a link instead. See [Sign in, reset a password and get back in](https://crewtavo.com/docs/team/sign-in/).
## 3. Set up your business
On **Set up your business**:
1. Type your **Business name**, the way clients should see it.
2. Choose your **Time zone** and **Currency**.
3. Choose your **Trade**. It fills in a starter price list, checklists and forms for that kind of work. **Paving & Sitework** also installs the Paving app, and **Roofing & Exteriors** the Roofing app. See [Choose a trade preset](https://crewtavo.com/docs/getting-started/trade-presets/).
4. Agree to the Crewtavo Terms, then choose **Create business**. They say your business runs Crewtavo on its own accounts and is responsible for its data and its customers.
## 4. Connect Railway
On **Connect Railway**, choose **Log in with Railway**. You're still signed in to Railway from the setup, so choose **Authorize** on Railway's screen.
Crewtavo needs this: it's how it warns you before your Railway trial runs out, so your Crewtavo never stops by surprise. It also shows what Crewtavo costs in **Settings → Hosting**, and sets up your own domain for you. See [What Railway costs](https://crewtavo.com/docs/hosting/railway-costs/#see-it-in-crewtavo).
If you can't right now, or someone else looks after your Railway account, choose **Ask me tomorrow**. Crewtavo asks again the next day, each day until Railway is connected.
## 5. Your web address
Then Crewtavo offers your own web address: buy a new domain on Railway, or use one you already have, like `crm.yourbusiness.com`. See [Use your own domain](https://crewtavo.com/docs/hosting/own-domain/). You can skip this; **Settings → Web address** does the same thing any time.
## What to set up next
Work through these when you have a few minutes. None of them has to be done on day one.
- **Email.** So quotes, invoices and team invitations go out by email. See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/).
- **Settings → People.** Invite your team and give each person a role. See [Invite your team and set roles](https://crewtavo.com/docs/getting-started/invite-your-team/).
- **Settings → Company.** Your logo, address (used as the start of routes and in email footers), payment terms, tax rate and brand color. See [Set your business details, tax and defaults](https://crewtavo.com/docs/getting-started/company-settings/) and [Add your logo to quotes, invoices and emails](https://crewtavo.com/docs/getting-started/add-your-logo/).
- **Settings → Schedule and routes.** How the schedule snaps when you drag, and whether crews' routes are organized automatically. See [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
- **Settings → Price list.** Change the starter prices to what you charge, and add what's missing, or import your own list. See [Set up your price list](https://crewtavo.com/docs/sales/price-list/).
- **Clients.** Bring your client list over from a spreadsheet. See [Switching from Jobber](https://crewtavo.com/docs/getting-started/switch-from-jobber/).
- **Settings → Crews and Checklists.** Group your people into crews and check the starter checklists. See [Set up crews and checklists](https://crewtavo.com/docs/jobs/crews-and-checklists/).
- **Apps → Stripe.** To take card and bank payments. See [Take payments with Stripe](https://crewtavo.com/docs/connections/stripe/).
- **Marketing → Reviews.** Paste your Google review link, so review requests point at it. See [Ask for Google reviews](https://crewtavo.com/docs/clients/reviews/).
- **Marketing → Referrals.** Set the reward you offer for referrals, if any.
- **Settings → Automations.** Most starter rules are on, like the past-due invoice reminder. Seven start off until you turn them on: **Remind clients the day before a visit**, **Text the client when the crew is on the way**, **Ask for a Google review after a job**, **Ask for a Google review on recurring work**, **Ask for referrals after a job**, **Re-engage past clients** and **Win back lost quotes**. Change their wording or timing, or add your own. See [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
- **Finance → Overview.** An admin can set the yearly revenue goal and a target job margin. See [See your money and how the business is doing](https://crewtavo.com/docs/billing/finance-and-metrics/).
Source: https://crewtavo.com/docs/getting-started/first-sign-in/ (last updated 2026-11-04)
---
# Set your business details, tax and defaults
> Settings → Company holds your business name, phone, email, logo, brand color and shop address, plus your currency, sales tax, when invoices are due, minimum charge, late fee, how long quotes are good for, your workday and workdays, arrival window, tips and how breaks are paid. Owners and admins change it.
**Settings → Company** is where your business's details live: the name, phone, email and logo your clients see, your shop address, and the defaults Crewtavo uses for new quotes, invoices, the schedule and the time clock. It's the first thing an owner or admin sees in **Settings**.
## Change your company settings
1. Open **Settings → Company**.
2. Change what you need in the **Business**, **Shop address**, **Defaults** and **Time clock** cards.
3. Choose **Save company settings** at the bottom. The button shows "Saved".
The logo is the exception: it saves as soon as you pick it, without **Save company settings**.
Only owners and admins can change these settings, and only they see the **Company** tab. If you've [connected Claude or ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/), an owner or admin can also ask it to change them.
## Business
| Setting | What it changes |
| --- | --- |
| **Business name** | The name at the top of Crewtavo, on your quotes and invoices, on the Client Hub, and the name your emails come from. |
| **Phone** | On your quotes and invoices, at the bottom of the quotes, invoices and messages you email clients, as the call button on the Client Hub, and on your booking forms ("Questions? Call …"). |
| **Email** | On your quotes and invoices and the Client Hub. When a client replies to an email from Crewtavo, the reply comes here. The first website form and careers form Crewtavo makes for you send their messages here too. |
| **Website** | On your quotes and invoices and the Client Hub. You can leave off the `https://`; Crewtavo adds it. |
| **Trade** | "Picks your starter prices and terms." |
| **Logo** | On quotes, invoices, the Client Hub and emails. |
| **Brand color** | The color of the buttons and highlights on the Client Hub. |
### Email: replies and the sending address
The **Email** here is where replies go. The address emails are actually sent from is set up separately, under **Settings → Email**. If you leave **Email** empty, replies go to that sending address instead. See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/).
Use an inbox someone reads every day: replies don't come back into Crewtavo. See [Text and email clients from Messages](https://crewtavo.com/docs/clients/messages/).
### Trade
Pick one of the 12 trades, like **Plumbing**, **Lawn & Exterior Maintenance** or **General / Other**. Changing it here doesn't change your price list, checklists or anything else you've set up.
Paving and Roofing are apps: turn on either or both under **Apps**. Changing your trade doesn't install or uninstall them. See [Choose a trade preset](https://crewtavo.com/docs/getting-started/trade-presets/).
### Logo
Choose **Add your logo** (or **Change logo**) and pick the picture. **Remove logo** goes back to your business name. A PNG or SVG with a see-through background looks best. See [Add your logo to quotes, invoices and emails](https://crewtavo.com/docs/getting-started/add-your-logo/).
### Brand color
Pick one of the eight colors, or the color box after them to choose your own. The Client Hub uses it for its buttons and highlights, and picks white or dark lettering on top so it stays readable. Emails show your logo, but their buttons stay Crewtavo's green.
## Shop address
Enter your **Street**, **City**, **State / Province** and **ZIP / Postal code**. Crewtavo uses it to:
- **Start and end routes.** Organizing a crew's route starts from your shop, and the maps-app link starts there. See [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
- **Check shop time.** On **Timesheets**, time clocked as **Shop time** says "at the shop" when the phone was there. See [Track time, breaks and where people clock in](https://crewtavo.com/docs/team/timesheets-and-pay/).
- **Show your address** on quotes and invoices, on the Client Hub, and at the bottom of the emails you send clients.
When you save, Crewtavo looks the address up on the map. If it can't find it, it saves anyway and says "Shop address not found on the map. Routes start from the first stop." Check the spelling and the ZIP or postal code, and save again.
## Defaults
| Setting | What it does |
| --- | --- |
| **Time zone** | Decides what "today" is and how every time shows: on Home, the schedule and My day, in the dates and times reminders give your clients, and on the time clock. |
| **Currency** | What your quotes, invoices and payments are in. "Changing it doesn't convert amounts already saved." |
| **Sales tax (%)** | The tax rate a new quote or invoice starts with. You can type a decimal, like `8.875`. |
| **Invoice due after (days)** | When a new invoice is due, counted from the day it's made. "0 means due on receipt. A client can have their own, on their page." |
| **Minimum charge** | Off unless you type an amount. "An invoice under it gets a Minimum charge line that makes up the difference." |
| **Late fee** | **Off**, **A flat amount** or **A percent of what's owed**. Then set the **Late fee amount** (or **Late fee (%)**) and the **Days after the due date** (7 unless you change it). It's added once to an invoice still unpaid that many days after it's due. Late fees aren't taxed. |
| **Quotes valid for (days)** | How long a new quote is good for. It sets the quote's **Valid until** date. |
| **Workday starts** and **Workday ends** | Your working hours, used by the schedule, routes and the time clock. |
| **Workdays** | The days you work, **Mon** to **Sun**. Every day is on until you change it. "Find a time and clients moving a visit online only get these days." |
| **Arrival window** | What clients are told in their portal and reminders, like "between 9:00 AM and 11:00 AM": **None: the start time**, or 30 minutes to 4 hours after it. |
| **Let clients add a tip when they pay online** | Clients paying an invoice on the Client Hub can add a tip. |
### What changes for work you've already done
**Sales tax (%)**, **Invoice due after (days)** and **Quotes valid for (days)** only apply to quotes and invoices made after you save. A quote or invoice that already exists keeps its tax rate and dates, and you change those on the quote or invoice itself. See [Create and send a quote](https://crewtavo.com/docs/sales/quotes/) and [Create an invoice and get paid](https://crewtavo.com/docs/billing/invoices/).
A sent quote past its **Valid until** date shows "This quote has expired; update the date before resending." Your client can still approve it: their Client Hub says the date has passed and that you'll confirm the price.
### Time zone
You chose a time zone when you set up your business; Crewtavo suggested your computer's. The list has every time zone, by region and city, with the one you're on now first, then the US ones: **America/New York** for Eastern time, **America/Chicago** for Central, **America/Denver** for Mountain, **America/Phoenix** for Arizona and **America/Los Angeles** for Pacific.
:::caution
Change the time zone only if it's wrong. Visits keep their times, so a visit at 9:00 AM Eastern shows at 8:00 AM once you switch to Central.
:::
### Workday
**Workday starts** and **Workday ends** are 7:00 AM and 6:00 PM unless you change them, and the workday has to end after it starts ("The workday has to end after it starts.").
- **Schedule**: the day and week views show your workday, with an hour either side, stretching to fit any visit outside it.
- **Find a time**, when you schedule a visit, only suggests open times within the workday, on your **Workdays**.
- **Routes**: organizing a crew's day starts at the start of the workday.
- **Time clock**: a clock someone forgot to stop is stopped for them at the end of that workday. See [Track time, breaks and where people clock in](https://crewtavo.com/docs/team/timesheets-and-pay/).
### Tips
With **Let clients add a tip when they pay online** on, the Client Hub asks "Add a tip for the crew?" when a client pays an invoice, with **No tip**, **10%**, **15%**, **20%** and **Other**. The tip is added to the card or bank payment. Online payments need Stripe; an invoice made in Stripe itself is paid exactly as Stripe billed it, with no tip. See [Take payments with Stripe](https://crewtavo.com/docs/connections/stripe/).
## Time clock
- **Breaks** decides which breaks count as paid time: **Paid if 20 minutes or less** (the default), **Always paid** or **Never paid**.
- **Save where people are when they clock in and out (the office and crew leads see it on Timesheets)** is on unless you turn it off.
Both are explained in [Track time, breaks and where people clock in](https://crewtavo.com/docs/team/timesheets-and-pay/).
## If saving doesn't work
- "Sales tax must be between 0 and 100%.": the tax box has a number of 100 or more. Type the rate as a percent, like `7.25`.
- "The workday has to end after it starts.": **Workday ends** is the same as or earlier than **Workday starts**.
- "Pick at least one workday.": every day under **Workdays** is off.
- "Enter a minimum charge of 0 or more, or leave it empty.", "Enter the late fee amount." or "Enter a late fee between 0 and 100%.": fix the number in that box.
- You don't see **Company** in **Settings**: your role isn't owner or admin. Ask your owner. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## Other settings for your business
A few things you might look for here are on their own tabs in **Settings**:
- **Schedule and routes**: how routes are timed and whether the day ends back at the shop. See [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
- **Document style**: how your quotes and invoices look, your tagline, license and signature. See [Make your estimates and invoices look like your business](https://crewtavo.com/docs/sales/estimate-templates/).
- **Price list**: your services and prices. See [Set up your price list](https://crewtavo.com/docs/sales/price-list/).
- **Email**: the address emails are sent from. See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/).
Source: https://crewtavo.com/docs/getting-started/company-settings/ (last updated 2026-11-04)
---
# Choose a trade preset
> The trade you pick when you set up your business fills in a starter price list, formulas, checklists, booking forms, weather rules and SOP categories. Paving and Roofing are apps you turn on under Apps.
When you set up your business, Crewtavo asks for your **Trade**. The trade preset fills in starting lists for that kind of work, so you begin with something close to what you need instead of a blank screen. Everything it adds is yours to change afterwards.
## The presets
There are 12. When you set up your business, search for yours, like "plumbing" or "pool".
| Trade | Made for | Services it adds |
| --- | --- | --- |
| **General / Other** | A simple starting point for any service business | 5 |
| **Cleaning & Janitorial** | Maid service and house cleaning, deep cleans, move-outs, and office and commercial cleaning | 17 |
| **Electrical** | Service calls, outlets and wiring, lighting, panel upgrades, EV chargers and generator hookups | 17 |
| **Handyman & Home Repair** | Small repairs, installs, drywall and paint, carpentry and to-do lists, by the hour or the job | 18 |
| **HVAC** | Heating and air conditioning: tune-ups, repairs, system installs, ductwork and maintenance plans | 19 |
| **Landscaping & Hardscaping** | Landscape design, planting, mulch and sod, patios and walls, irrigation, and bed care plans | 19 |
| **Lawn & Exterior Maintenance** | Recurring mowing, seasonal services (leaves, snow, holiday lights), exterior cleaning and commercial grounds plans | 10 |
| **Paving & Sitework** | Residential, commercial and municipal paving, sealcoating, striping, grading, stonework, and subcontract work for general contractors | 16 |
| **Pest Control** | Monthly and quarterly pest plans, one-time treatments, termites, rodents, mosquitoes and wildlife | 16 |
| **Plumbing** | Repairs, drains and sewer lines, water heaters, fixtures and repipes for homes and businesses | 20 |
| **Pool & Spa Service** | Weekly pool service plans, openings and closings, green-pool cleanups, repairs and equipment | 17 |
| **Roofing & Exteriors** | Shingle and metal roofing, repairs, gutters, siding, windows and decks, with optional insurance-claim tracking | 31 |
What Crewtavo does for each trade is on [Lawn care software](https://crewtavo.com/lawn-care-software/), [Paving and sealcoating software](https://crewtavo.com/paving-software/) and [Roofing software](https://crewtavo.com/roofing-software/).
## What a preset fills in
- **Services and prices** for your price list, as many as the table shows.
- **Formulas** that work out a quote line's quantity or price for you, in the landscaping, lawn, paving and roofing presets.
- **Checklists** your crews tick off on a visit.
- **Booking forms** with the questions that trade needs before a quote.
- **Weather rules**, for trades that work outdoors: the conditions each kind of work needs, like a minimum temperature for hot-mix asphalt, the chance of rain that calls off mowing, or the dry hours sealcoat needs afterwards.
- **SOP categories** for your [knowledge base](https://crewtavo.com/docs/team/knowledge-base/).
Your trade also picks the example sections **Settings → Contract terms** offers, like Cure time for paving or Hidden decking damage for roofing. See [Write your contract terms](https://crewtavo.com/docs/sales/contract-terms/).
## Paving and Roofing are apps
The **Paving** and **Roofing** sections are apps, **Crewtavo - Paving** and **Crewtavo - Roofing**, that you turn on under **Apps**. Any business can have either or both, whatever its trade.
- **Crewtavo - Paving** adds **Paving** to the sidebar: takeoff, estimate, proposal, schedule and invoice for a job on one page, and paving items on the measuring map. See [Bid a paving job from the aerial](https://crewtavo.com/docs/measuring/paving-takeoffs/).
- **Crewtavo - Roofing** adds **Roofing** to the sidebar, roof tools on every measurement, and roof packages. See [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/).
Signing up with **Paving & Sitework** installs Crewtavo - Paving, and **Roofing & Exteriors** installs Crewtavo - Roofing. Changing your trade later doesn't install or uninstall either one. See [Install and manage apps](https://crewtavo.com/docs/connections/apps/).
## Packages, in every trade
Whatever your trade, you can sell services together as packages, each with a picture, and offer two or three side by side on an estimate, like Good, Better and Best. Set them up under **Settings → Packages**; with Crewtavo - Roofing installed, they're under **Roofing → Packages**. See [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
## Changing it afterwards
Treat the preset as a first draft. Change prices and services under **Settings → Price list**, and checklists under **Settings → Checklists**. If your trade isn't listed, choose **General / Other** and add your own services.
An owner or admin can change the trade itself under **Settings → Company → Trade**. That changes the starter terms Crewtavo suggests, like the example sections in **Settings → Contract terms**, but not your price list, your apps or anything else you've set up. A business that adds paving can add the standard paving services from **Paving → Price book**, and one that adds roofing sets up its roof packages (Good, Better and Best), with the standard roofing services, from **Roofing → Packages** → **Set up the standard packages**.
Source: https://crewtavo.com/docs/getting-started/trade-presets/ (last updated 2026-11-04)
---
# Invite your team and set roles
> Invite people from Settings → People, give each one a role and a pay rate, add their photos, and have them turn on phone notifications.
Invite your team from **Settings → People**. Each person gets a role, which decides what they can see and do. The database enforces it, not just the screens, so a role holds everywhere, including in Claude and ChatGPT.
## Invite someone
1. Open **Settings → People** and choose **Invite someone**.
2. Enter their email and choose their role.
3. Choose **Send invite**. They get an email with a link to join.
Crewtavo also offers **Copy invite link**, so you can text the link too, for example when the email lands in spam. Haven't [connected email](https://crewtavo.com/docs/connections/email/) yet? The invite says **Invite ready** instead of **Invite sent**: copy the link and text it to them.
The link works once and expires after a day. Only send it to that person, since whoever opens it gets into their account.
## See who hasn't joined yet
Until someone sets up their account, **Settings → People** shows **Invite pending** under their name, with when their link went out. If it expired or never arrived, choose **Resend invite**. Crewtavo emails them a new link and offers **Copy invite link** again. Once they've signed in, **Invite pending** goes away.
To take someone off the team, choose **Remove** next to their name, then **Remove access**. They're signed out right away, their visits, time and notes stay on record, and you can restore access later.
## Add photos
A photo makes it easier to tell people apart. It shows wherever their initials did: on the **Schedule**, on visits, in **Timesheets**, in team chat and in **Settings → People**.
- **Your own:** open **Settings → Profile** and choose **Add a photo**. On a phone you can take one with the camera or pick one from your photos.
- **Someone else's** (owners and admins): in **Settings → People**, choose the circle with their initials, then **Add a photo**. Only an owner can change another owner's photo.
To change or take one off, use **Change photo** or **Remove photo** in the same places.
Crewtavo crops each photo to a square around the middle (a little higher for a tall photo), so pick one with the face near the center. Photos are kept with your business's other files and only your team can see them.
## Set pay rates
In **Settings → People**, **Labor cost / hr** is each person's hourly pay. Their approved hours are paid and costed at it, under **Timesheets → Pay** and in each job's costs.
For pay per square, per job or per day, choose **Piece rates** under it. Owners see it, and so do admins whose role has **Job costs and profit**. See [piece pay](https://crewtavo.com/docs/team/timesheets-and-pay/#piece-pay).
## Roles
Every business starts with these roles. Rename them, change them, delete them or make your own under **Settings → Roles**.
| Starter role | What it's for |
| --- | --- |
| General manager | Runs the business day to day. |
| Office manager | Books work, schedules crews, sends quotes and invoices, and approves time. |
| Operations manager | Schedules crews and keeps jobs on track. |
| Foreman | Runs their crew: schedules its visits, assigns its people and sees its time. No prices. |
| Employee | Works their own visits. |
Every role on your team is built on one of six access levels: **Owner**, **Admin**, **Office**, **Estimator**, **Crew lead** and **Field crew**. Only an owner can make someone else an owner.
There's a seventh level, **Subcontractor**, for the businesses you hire. You don't pick it here, and subs aren't listed under **Settings → People**: a sub gets it with a sign-in from their page under **Subcontractors**. It shows them only their own jobs, their price on each and their paperwork. See [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/).
With [Careers](https://crewtavo.com/docs/connections/careers/) installed, **Applicants** shows only to roles with **Job applicants and hiring**: owners, the **General manager** and the **Office manager** to start with. Field crews never see applications or résumés.
On the **Schedule**, someone with the **Employee** role (field crew) sees only the visits they're on, and the jobs and clients behind them, never prices. A **Foreman** and everyone above sees the whole schedule. To give someone work, put them on a visit: see [who's on each visit](https://crewtavo.com/docs/jobs/schedule-and-routes/#see-whos-on-each-visit).
:::note[A Foreman can't approve time to start with]
The starter **Foreman** role runs their crew and sees its time, but it doesn't include **Approve timesheets (crew leads: their crew's)**. To let your foremen approve their crew's hours, open **Settings → Roles**, edit **Foreman** and tick it.
:::
For everything each access level and area allows, including which clients a crew lead or field crew can see, see [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## Get notifications on phones
Each person turns on their own notifications under **Settings → Profile**, and chooses what also comes by email or text. Phone notifications are free and need no setup. The full steps, including fixing notifications a phone has blocked, are in [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
- **iPhone:** open Crewtavo in Safari, choose **Share → Add to Home Screen**, then open it from the Home Screen and turn notifications on there.
- **Android, or a computer with Chrome or Edge:** choose **Install the app** when the browser offers it.
Crews can keep working with no signal. Their updates go out once Crewtavo is open again with signal. On Android, if the app is closed by then, a notification says how many are waiting.
Source: https://crewtavo.com/docs/getting-started/invite-your-team/ (last updated 2026-10-28)
---
# Switching from Jobber
> Bring your clients, properties and price list over from Jobber in CSV files, then your open quotes, unpaid invoices and active jobs, invite your team, and switch over.
Your clients, their properties and your price list come over in spreadsheet (CSV) files that Jobber exports. Most of the work is checking your prices once they're in. Your open quotes, unpaid invoices and active jobs can come over too, from Jobber's reports. Finished jobs, paid invoices and old quotes stay in Jobber.
For how the two compare, feature by feature, see [Crewtavo vs. Jobber](https://crewtavo.com/jobber-alternative/).
## 1. Set up Crewtavo and pick your trade
[Set up Crewtavo on Railway](https://crewtavo.com/docs/getting-started/set-up-on-railway/), then [create your business](https://crewtavo.com/docs/getting-started/first-sign-in/) and choose your trade, so starter services, formulas and checklists load.
## 2. Bring over your clients and properties
1. In Jobber, open **Clients**, choose **Export** and download the CSV.
2. In Crewtavo, open **Clients**, then **More actions → Import from a spreadsheet**, and choose that file. (People who don't see invoices have **Import and export** in place of **More actions**.)
3. Check how Crewtavo matched the columns. It recognizes Jobber's column names (like `Main Phone #s`, `Service Street 1`, `Billing City` and `J-ID`), and you can match more by hand or choose **Don't import** for a column.
4. Back in Jobber, export **Properties** the same way, and import that file too. Each property is added to its client.
Importing is safe to repeat. Rows for the same client (same Jobber ID, email or name) become one client with several properties. A client who's already in Crewtavo gets the new properties added instead of a duplicate. Addresses written two ways, like "Oak Street" and "Oak St", count as one property.
If your file has a status column, clients marked Inactive or Former come in archived, and Leads come in as leads. Everyone else comes in active. New properties are put on the map in the background, so routes and weather work once they're placed.
:::tip[Let an assistant do it]
[Connect Claude or ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/) with Full access, hand it your export, and ask it to bring your customers over. It shows you what it would add first, then adds them. It can set up your recurring services from Jobber's visit list the same way.
:::
Other tools work too: any CSV with column names in the first row.
## 3. Bring over your price list
1. In Jobber, open **Settings → Products & Services**, choose **Export** and download the CSV.
2. In Crewtavo, open **Settings → Price list**, choose **Import**, and choose that file.
3. Check how Crewtavo matched the columns (name, description, unit, price, cost, taxable and category), then choose **Import**.
Services whose names are already in your price list are skipped, so the starter services from your trade stay as they are. Change their prices to what you charge, or delete the ones you don't sell. See [Set up your price list](https://crewtavo.com/docs/sales/price-list/).
## 4. Bring in your open work
The owner can bring over what's still open in Jobber: quotes waiting on clients, unpaid invoices with their balance, and active one-off and recurring jobs.
1. In Jobber, go to **Insights → Reports**. Open the **Quotes**, **Invoices**, **One-off jobs** and **Recurring jobs** reports in turn, set the dates to All time, and choose **Export to CSV** with all columns.
2. Export the **Visits** report too, for the next few months. Recurring jobs keep their schedule when their visits show it, and one-off jobs come with their visits still to do.
3. In Crewtavo, open **Settings → Your data** and choose **Bring in your Jobber work**.
4. Drop the files in, or click to choose them. If some clients aren't in Crewtavo yet, add Jobber's clients export (and its properties export) too, and they come in first.
5. Choose **See what comes in**. It shows how many of each will come in, which are already here, and any that can't come in, with why.
6. Choose **Bring it in**. It keeps going if you close the window.
Only what's still open comes in: quotes not yet won or lost, invoices not paid, and jobs not closed. Nothing is emailed, texted or charged, and no trip charge, minimum charge or late fee is added: each invoice owes what it owed in Jobber, with what was paid there as one payment. Each record gets its own Crewtavo number and keeps Jobber's beside it, and importing the same files again adds nothing.
If the files don't say how a recurring job repeats, it comes in without a schedule and is listed under **Needs a schedule**. Open each one, choose **Edit details**, then **Recurring job**, and set it.
## 5. Invite your team
[Invite your team](https://crewtavo.com/docs/getting-started/invite-your-team/) and give each person a role.
## 6. Switch over
Book new work in Crewtavo, and finish in Jobber anything you didn't bring over. Keep your old invoices and reports from Jobber on file.
:::tip[Taking card payments?]
[Connect Stripe](https://crewtavo.com/docs/connections/stripe/) before you send your first invoice from Crewtavo, so clients can pay online from the start.
:::
Source: https://crewtavo.com/docs/getting-started/switch-from-jobber/ (last updated 2026-11-04)
---
# Add your logo to quotes, invoices and emails
> Upload your logo once in Settings → Company, and clients see it on quotes and invoices, in the Client Hub, on PDF copies and at the top of every email. Your team sees it at the top of every screen in Crewtavo.
Your logo goes in once, and Crewtavo puts it everywhere your clients look, and at the top of every screen for your team.
## Add your logo
1. Open **Settings → Company**.
2. Under **Logo**, choose **Add your logo** and pick the picture.
3. Your logo shows beside the button, on white, the way clients will see it. It's saved straight away: there's no need to press **Save company settings**.
To swap it, choose **Change logo**. To go back to just your business name, choose **Remove logo**.
:::tip[What looks best]
A PNG or SVG with a see-through background. Crewtavo cuts off any empty space around the logo, so you don't need to crop it first. A JPEG works too, it just keeps its background.
:::
Only owners and admins can change the logo, the same as the rest of **Settings → Company**.
## At the top of every screen
Everyone on your team sees your logo at the top of every screen in Crewtavo, next to your business's name, on white the way clients see it. For you, it changes there as soon as you add or change it, with no need to reload. With no logo, or if the picture can't load, your business's initials show there instead.
If you belong to more than one business, the logo is the one for the business you have open, and changes when you switch.
## Where clients see it
- **The Client Hub**, at the top of every quote, invoice and their account page, in place of the colored square with your initials.
- **Printed and PDF copies.** When a client (or you) prints a quote or invoice, or saves it as a PDF, the logo prints at the top of the first page with Crewtavo's letterhead. If your estimate template uses **Your own** letterhead, your letterhead prints there instead of the logo. See [Make your estimates and invoices look like your business](https://crewtavo.com/docs/sales/estimate-templates/).
- **Emails** you send clients: quotes, invoices, payment reminders, messages, review requests, campaigns and automation emails. The logo replaces your business name at the top. Email apps that hide pictures until you ask show your business name instead.
- **Referral links** you share with clients.
The test email on **Settings → Email** shows the logo too, so you can check how it looks.
## Stripe's payment page
When a client presses **Pay** in the Client Hub, they go to Stripe's page for the invoice. That page uses the logo and color from your Stripe account, not from Crewtavo. To put your logo there too, sign in to Stripe and add it under **Settings → Business → Branding**. See [Take payments with Stripe](https://crewtavo.com/docs/connections/stripe/).
Source: https://crewtavo.com/docs/getting-started/add-your-logo/ (last updated 2026-11-02)
---
# Find your way around: Home, Create, your phone and notifications
> What the Home screen (dashboard) shows the office and crews and what each Workflow number counts, which sidebar sections each role gets, the Create menu, the phone's bottom bar and More, the notification bell, and switching between businesses.
Crewtavo opens on **Home**, a dashboard of today and of what needs doing next. Around it are the sidebar (or, on a phone, the bar along the bottom), the **Create** menu for starting something new, search, and the bell for notifications. What you see depends on your role and on the apps your business has installed.
## Home for the office
Owners, admins, office staff and estimators see the date and a greeting, with **New request** and **New quote** beside them, then:
- **Workflow**: where your work stands, from new requests to unpaid invoices.
- **Today's appointments**.
- Down the side: **Business performance** and **Receivables** for people who see the money, your website's visitors if you use Website Analytics, and **Needs attention**.
Home refreshes itself every minute, so you can leave it open.
### What the Workflow numbers count
Each column opens its list when you choose it.
| Column | The big number | Underneath |
| --- | --- | --- |
| **Requests** | **New**: requests nobody has dealt with yet. | **Assessment done**: requests whose site visit is done, ready for a quote. **Overdue**: new requests that have waited more than 2 days. |
| **Quotes** | **Awaiting response**: quotes you've sent, and ones the client asked you to change, with their total. | **Approved**: quotes the client said yes to that aren't jobs yet. **Draft**: quotes not sent yet. Each with its count and total. |
| **Jobs** | **Require invoicing**: jobs marked **Requires invoicing**, with what they're worth. | **Active**: jobs under way. |
| **Invoices** | **Awaiting payment**: invoices that are out, partly paid or past due, with what's still owed on them. | **Draft**: invoices not sent yet. **Past due**: with what's owed, in red when there are any. |
The **Invoices** column shows only for people who see invoices: owners, and admins and office staff whose role has **Invoices and payments**. Written-off invoices don't count. See [Take a request and book an assessment](https://crewtavo.com/docs/sales/requests/), [Follow up on quotes with the Sales board](https://crewtavo.com/docs/sales/sales-board/) and [Create an invoice and get paid](https://crewtavo.com/docs/billing/invoices/).
### Today's appointments
Every visit on the schedule today, in time order, with **Anytime** for one without a set time. Each shows the client, the address and the crew (with the crew's color down the left side) and its status. Above the list, "3 of 8 complete · 1 in progress" shows how the day is going.
A visit on a weather hold says "Weather:" and why, like rain in the forecast. Choose a visit to open its job, or the visit itself if it isn't part of a job. **View schedule** opens the whole schedule. On a quiet day, "Nothing on the schedule today" offers **Schedule a visit**.
### Business performance and Receivables
Owners, and admins and office staff with **Invoices and payments**, see:
- **Collected this month**: every payment received since the 1st, with how it compares to the same days last month (like "↑ 12%"), and a bar for each of the last six weeks once there are four weeks of payments.
- **Invoiced this month**: the total of the invoices issued this month, not counting drafts or voided ones.
- **Quotes won**: how many quotes clients approved this month, and their total.
- **Receivables**: how many clients owe you and how much in all, then the five who owe the most. Choose one to open their page, or **All invoices** for the list.
For more numbers, see [Finance and Metrics](https://crewtavo.com/docs/billing/finance-and-metrics/).
**Website visitors this week** appears for owners, admins and office staff with **Marketing** once you've installed Website Analytics. It compares the last 7 days with the 7 before them, and counts **Booking requests from your website**. See [See who visits your website with Website Analytics](https://crewtavo.com/docs/connections/website-analytics/).
### Needs attention
A short to-do list. Choose an item to open it.
- "Quote #…: changes requested": the client asked for changes.
- "Quote #… approved: convert to a job". See [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/).
- "Weather hold: …": a scheduled visit the weather may call off. It opens the schedule.
- "Invoice #… is past due", with what's owing.
- Maintenance overdue or coming due, for people who look after equipment (with **Manage equipment and maintenance** in their role). The first three machines are listed, and the rest show as "… more machines need maintenance". See [Track equipment and maintenance](https://crewtavo.com/docs/jobs/equipment/).
**All clear** means there's nothing on it. An estimator doesn't see the money, so their side column is just **Needs attention**.
## Home for crews
Crew leads and field crew see a simpler Home:
- On a phone, a card to put Crewtavo on your Home Screen: **Add Crewtavo to your Home Screen** on an iPhone (tap Share, then **Add to Home Screen**), or **Get the Crewtavo app** with **Install the app** on Android. The **×** hides it for good on that phone. See [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
- **Today's appointments**, as above. A crew lead sees every visit the business has today; field crew see only the visits they're on. A visit on a weather hold says "Weather:" and why. Tap one to open it.
- **Needs attention**: weather holds on visits you can see, and for a crew lead who looks after equipment, maintenance coming due.
Crews don't see the Workflow, quotes or money.
**Home or My day?** Home is a look at the whole day. **My day** is where you work it: your own visits in order, your clock, the buttons you tap as you go, and the route in your maps app. The **My day** button on Home takes you there. See [Your day in the field](https://crewtavo.com/docs/field/your-day-in-the-field/).
Subcontractors don't have Home: Crewtavo opens on **My day** for them. See [Your jobs and paperwork as a subcontractor](https://crewtavo.com/docs/field/subcontractor-guide/).
## The sidebar
On a computer or tablet, the sidebar lists every section you can open, in three groups, with **Create** at the top and **Settings** at the bottom.
| Section | Who sees it |
| --- | --- |
| **Home**, **Schedule** | Everyone on the team. |
| **Paving**, **Roofing** | Owners, admins, office staff and estimators with **Quotes and sales**, once the Paving or Roofing app is installed. See [Choose a trade preset](https://crewtavo.com/docs/getting-started/trade-presets/#paving-and-roofing-are-apps). |
| **My day** | Crew leads and field crew. |
| **Team chat** | Everyone, once Team chat is installed. See [Talk to your team with Team chat](https://crewtavo.com/docs/connections/team-chat/). |
| **Clients**, **Requests**, **Jobs** | Everyone. Field crew only see the ones behind their own visits. |
| **Quotes** | Owners, admins, office staff and estimators. **Sales board** and **Measure** open from here. |
| **Invoices** | Owners, admins and office staff with **Invoices and payments**. **Stripe deposits** opens from here. |
| **Marketing** | Owners, admins and office staff with **Marketing**. |
| **Website** | The same people, once the website editor is installed. See [Edit your website from Crewtavo with Sveltia CMS](https://crewtavo.com/docs/connections/sveltia-cms/). |
| **Finance** | Owners, admins and office staff with **Finance and metrics** and **Invoices and payments**. |
| **Metrics** | Owners, admins and office staff with **Finance and metrics**. |
| **Timesheets**, **Equipment**, **Knowledge base** | Everyone. |
| **Applicants** | Owners, admins and office staff with **Job applicants and hiring**, once Careers is installed. See [Take job applications from your website with Careers](https://crewtavo.com/docs/connections/careers/). |
| **Subcontractors** | Owners, admins and office staff with **Subcontractors, their paperwork and pay**. |
| **Apps** | Owners, and admins with **Connect apps**. See [Install and manage apps](https://crewtavo.com/docs/connections/apps/). |
Owners see every section their apps allow, except **My day**, which is for crews. A custom role can switch areas off, which takes their sections away too. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
Setup screens like **Automations** and **Online booking** are in **Settings**.
A green number beside **Requests** is how many new requests are waiting. Beside **Team chat**, a red number counts mentions of you, and a dot means new messages.
## Start something new with Create
**Create**, at the top of the sidebar, starts the things people make most:
| Choose | It opens | Who has it |
| --- | --- | --- |
| **Client** | A new client. See [Add clients and properties](https://crewtavo.com/docs/clients/clients-and-properties/). | Owners, admins, office staff and estimators. |
| **Request** | A new request. | The same. |
| **Quote** | A new quote. See [Create and send a quote](https://crewtavo.com/docs/sales/quotes/). | The same, with **Quotes and sales**. |
| **Measurement** | **Measure**, to draw on the map. | Owners, admins, office staff and estimators. |
| **Invoice** | A new invoice that isn't tied to a job. | Owners, admins and office staff with **Invoices and payments**. |
| **Visit or task** | A new visit on the schedule. See [Run the schedule day to day](https://crewtavo.com/docs/jobs/run-the-schedule/). | Owners, admins, office staff, estimators and crew leads with **Schedule the whole team**. |
Field crew and subcontractors don't have **Create**. Search can start these too, along with a new guide, automation or subcontractor for people who make those.
## Search and the top bar
Along the top of every screen:
- Your business's name, with its initials.
- **Search**, or press **⌘K** on a Mac or **Ctrl K** on Windows. See [Find anything with search](https://crewtavo.com/docs/getting-started/find-anything/).
- The **Messages** icon, for your texts and emails with clients. See [Text and email clients from Messages](https://crewtavo.com/docs/clients/messages/).
- The bell, for notifications.
- Your picture, with **Your profile**, **Settings** and **Sign out**.
## On your phone
The bar along the bottom has **Home**, **My day**, **Schedule**, **Chat** (when your business has Team chat), **Clients** and **More**.
**More** opens everything else: buttons to start something new at the top (**New client**, **New request**, **New quote** and so on, the same as **Create**), then every section from the sidebar and **Settings**.
At the top, the magnifying glass opens search, then the bell and your picture. There's no **Messages** button on a phone: open search and type `messages`.
When you're typing in a form, the bottom bar steps out of the way until you're done. With no signal, a bar across the top says "You're offline. Visit updates are saved and sent when you reconnect; other changes need a connection."
A subcontractor's bar has **My day**, **My jobs**, **Paperwork** and **Profile**, and no **More**.
To put Crewtavo on your phone's Home Screen like an app, and get notifications on it, see [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
## Notifications: the bell
A number on the bell is how many notifications you haven't read.
**For you** lists notifications for you: your schedule changing, messages from clients, a clock left running, equipment coming due, team chat mentions, and alerts from your business's automations, like a quote being approved. Opening the bell to **For you** marks them read and clears the number. Choose one to open what it's about. When there are no notifications at all, it says "You're all caught up".
New notifications that arrive while Crewtavo is open also pop up on the screen, with **View** to open them. Crewtavo checks for them about every 30 seconds.
**Activity**, next to **For you**, is the business's feed: the latest things that happened, like a new client or request, a quote sent or approved, a crew on its way or a visit completed, newest first. Owners, admins, office staff and estimators have it. Invoice and payment activity only shows for people who see invoices.
The bell always shows everything. To also get notifications by email, text or on your phone, choose which in **Settings → Profile**. See [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
## Switch between businesses
If you belong to more than one business on this Crewtavo, the business name at the top left is a menu. Choose another business to switch to it. You get the role you have there, and only that business's clients, work and notifications. This device remembers which one you were in for next time.
Source: https://crewtavo.com/docs/getting-started/home-screen/ (last updated 2026-11-04)
---
# Find anything with search
> Search finds clients, addresses, quotes, jobs, invoices, measurements, guides and every screen, app and Settings section from one box.
Choose **Search** at the top of any screen, or press **⌘K** on a Mac or **Ctrl K** on Windows. Pressing **/** opens it too when you're not typing in a field. On a phone, tap the magnifying glass.
Type a few letters, then use the arrow keys and **Enter**, or tap a result.
## What it finds
- **Your records:** clients (by name, company, email or phone), addresses, requests, quotes, jobs and invoices (by title, client or number, like `#1042`), equipment, subcontractors (if you manage them), saved measurements (by name, address, client or quote), [knowledge base](https://crewtavo.com/docs/team/knowledge-base/) guides (by title or anything written in them), marketing campaigns, automations and price list services.
- **Every screen,** including the ones that open from another screen: **Measure**, **Sales board**, **Messages** and **Stripe deposits**. Type `quickbooks` or `stripe` for **Apps**, or `chat` for **Team chat** when it's on.
- **Every section of Settings,** by name or by what's in it. Type `tax` or `time zone` for **Company**, `password` for **Profile** or `smtp` for **Email**.
- **Things to start:** a new client, request, quote, measurement, invoice, visit, guide, automation or subcontractor.
- **What you opened lately:** before you type anything, search lists what you can start, then **Recent**: the records you opened last on this device.
When what you type is the name of a screen, like `measure` or `price list`, that screen is listed first under **Best match**.
:::note
Search only shows what your role can open. A crew member doesn't see prices, campaigns or automations, and only sees published guides.
:::
Source: https://crewtavo.com/docs/getting-started/find-anything/ (last updated 2026-10-28)
---
# Take a request and book an assessment
> Requests (leads and inquiries) come in from your booking forms, website forms and the Client Hub, or you log them from a call. Book an assessment, mark it done, then make the quote or go straight to a job.
A request is someone asking for work: a lead, an inquiry, a call about a gutter repair. **Requests** keeps them all in one list, wherever they came from. From a request you book a site visit (an assessment), then make the quote, or skip the quote and go straight to a job.
## Who can do it
Owners, admins, office staff and estimators whose role includes **Quotes and sales** can log requests, book assessments and make quotes from them. Crew leads can open **Requests** and look, but not change anything. Field crew only see the requests whose assessment they're on. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## Where requests come from
- **Your booking forms**, built in **Settings → Online booking** and put on your website or shared as a link. See [Put a booking form on your website](https://crewtavo.com/docs/sales/booking-form-on-your-website/).
- **Your website's own contact form**, pointed at Crewtavo with [Website Forms](https://crewtavo.com/docs/connections/website-forms/).
- **The Client Hub (your clients' portal)**, where a client chooses **Request work**. See [The Client Hub](https://crewtavo.com/docs/clients/client-hub/).
- **Referrals**, and requests an AI assistant logs for you.
- **Ones you log yourself**, from a phone call, an email, or someone who flags you down on a job.
Under each request's title, the list says where it came from: **Booking form**, **Website form**, **Client Hub**, **Phone**, **Email**, **In person**, **Referral** or **AI assistant**.
The office gets a notification for each new request from a booking form, a website form, the Client Hub or a referral ("New request from …"). That's one of your starter [automations](https://crewtavo.com/docs/clients/automations/), so you can change who gets it or turn it off.
## Log a request from a call or an email
1. Open **Requests** and choose **New request**. You can also pick **Request** in the sidebar's **Create** menu, or choose **New request** on a client's page.
2. Under **Client**, search by name, email or phone. For someone new, type their name and choose **Create "…" as a new client**. They're added as a lead.
3. Pick the **Property**, or **No specific property**.
4. Fill in **What do they need?** (like "Driveway estimate") and anything else under **Details**.
5. Under **How did it come in?**, pick **Phone**, **Email** or **In person**.
6. Choose **Create request**.
A client you just added has no address yet. Add one on their page, then pick it with **⋯** then **Edit request**, so you can measure the property and the crew knows where the assessment is. See [Add clients and properties](https://crewtavo.com/docs/clients/clients-and-properties/).
## Find a request
The tabs along the top of **Requests** sort them by where they are:
| Tab | What's in it |
| --- | --- |
| **Open** | Everything you haven't quoted, converted or archived yet. This is where you start. |
| **New** | Nobody has booked an assessment yet. |
| **Assessments** | An assessment is booked (**Assessment booked**) or done (**Assessment done**). |
| **Quoted or converted** | You've made a quote from it, or turned it into a job. |
| **Archived** | Requests you've put away. |
Search by the client's name or the request's number. A new request that's been sitting for more than two days says **Waiting over 2 days** in red, and the request itself says "Waiting over two days." at the top. Get back to those first.
## What's on a request
- **What they asked for**: the details, and the answers to your booking form's questions.
- **Plans and files**: photos and plans the client sent, and any you add. Drag files onto the card or choose **Add files**. They carry over to the quote you make from the request, or to the job. See [Upload and manage plans for a job](https://crewtavo.com/docs/jobs/plans-and-files/).
- **Assessments**: the site visits booked for it.
- **Quotes**: any quotes made from it, with their status.
- On the side: the client's contact details, the **Property**, when it was **Received** (and through which form), any **Promo code** they entered, and, if you count your website's visits with [Website analytics](https://crewtavo.com/docs/connections/website-analytics/), where they **Came from**.
To change the title, the details or the property, open the **⋯** menu and choose **Edit request**. A request can't be moved to another client.
## Book an assessment
An assessment is a visit to look at the job and measure it before you price it.
1. On the request, choose **Schedule assessment** (or **Schedule** beside **Assessments**).
2. In **Schedule an assessment**, set the **Date**, **Starts** and **Ends**, or turn on **Anytime that day**. **Find a time** suggests open slots in the next week.
3. Pick the **Crew** and the **People** going, and add **Instructions for the crew** if they need them.
4. Choose **Schedule**.
The request moves to **Assessment booked**, and the visit shows on the schedule and on the assigned people's **My day**. Click an assessment on the request to change or delete it. For running the schedule, see [Run the schedule day to day](https://crewtavo.com/docs/jobs/run-the-schedule/).
### Mark the assessment done
When you've been out, choose **Mark assessment done** under **Assessments**. The request moves to **Assessment done**, ready to quote.
:::note
Finishing the assessment visit on the schedule doesn't change the request by itself. Choose **Mark assessment done** on the request, or just make the quote: that moves it along too.
:::
## Measure the property
Choose **⋯** then **Measure on the map** to outline the lawn, roof or driveway on the aerial. It's there once the request has a property. The measurement is saved with the request and goes onto the quote you make from it, ready to fill in quantities. See [Measure a yard or a roof](https://crewtavo.com/docs/measuring/measure-yards-and-roofs/).
## Make the quote
Choose **Create quote**. Crewtavo starts a draft quote for the same client and property, titled like the request, at your usual sales tax, and opens it. The request moves to **Quoted**. Any measurement made from the request moves onto the quote, and so do its files.
Then add the lines and send it: see [Create and send a quote](https://crewtavo.com/docs/sales/quotes/).
You can make more than one quote from the same request, like a repair and a replacement: choose **Create quote** again.
:::tip
A quote made this way doesn't get a **Valid until** date. Set one on the quote before you send it if you want it to expire.
:::
## Skip the quote and make a job
For work you'll do without a quote, like a repeat client's small repair, choose **⋯** then **Convert straight to a job**. Crewtavo makes a job for the same client and property, with the request's details as the job's instructions and its files on the job, and opens it. The request moves to **Converted**. The job starts with no line items: add them on the job. See [Create a job or recurring service](https://crewtavo.com/docs/jobs/jobs-and-recurring-service/).
## Archive, reopen or delete a request
- **Archive request**, in the **⋯** menu, puts away a request you won't follow up on, like spam or someone who went elsewhere. It moves to the **Archived** tab.
- **Reopen request**, on an archived one, brings it back as **New**.
- **Delete request** removes it for good, with its assessments: "Its assessments are deleted too. This can't be undone." It's only there while no quote has been made from the request. Once there is one, archive it instead.
On the [Sales board](https://crewtavo.com/docs/sales/sales-board/), dropping a request on **Drop here to mark archived** archives it too.
## If something's off
**There's no Schedule assessment or Create quote button.** Your role doesn't include **Quotes and sales**, or the request is converted or archived. Reopen an archived one first.
**Measure on the map isn't in the menu.** The request has no property. Choose **Edit request** and pick one, or add an address to the client first.
**The same person shows up as two clients.** A booking form finds a client you already have by their email or phone. If they typed ones you don't have for them, they come in as a new lead. See [Put a booking form on your website](https://crewtavo.com/docs/sales/booking-form-on-your-website/#when-an-existing-client-uses-the-form) for what to do.
Source: https://crewtavo.com/docs/sales/requests/ (last updated 2026-11-04)
---
# Create and send a quote
> Make a quote (estimate) from your price list or custom lines, with optional add-ons, a discount or promo code, tax, a deposit, a valid-until date and how often recurring work repeats, then email it, text it or copy its link so the client can approve it online.
A quote (estimate) lists the work and its price. You build it from your price list or your own lines, send it by email or text, and the client opens it in the Client Hub, picks any add-ons and approves it online. It works the same in every trade: a lawn treatment, a gutter job, a parking lot, a roof.
## Who can do it
Owners, admins, office staff and estimators can open **Quotes**. Making, changing and sending quotes takes a role that includes **Quotes and sales**, which office staff and estimators have unless you've changed their role. Crews never see quotes or their prices. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## Start a quote
1. Open **Quotes** and choose **New quote**. You can also choose **New quote** on a client's page, or **Quote** in the sidebar's **Create** menu.
2. If you have quote templates, pick one under **Start from**, or leave it on **A blank quote**. See [Quote templates](#quote-templates).
3. Pick the **Client** (or type a name and choose **Create "…" as a new client**) and the **Property**.
4. Give it a **Title**, like "Driveway replacement". The client sees it.
5. Choose **Create quote**.
The quote opens as a **Draft**, taxed at the **Sales tax (%)** in **Settings → Company**, and good for the number of days in **Quotes valid for (days)** there (30 unless you change it). See [Set your business details, tax and defaults](https://crewtavo.com/docs/getting-started/company-settings/).
To quote a request you already have, choose **Create quote** on the request instead. The client, property, measurement and files come with it. See [Take a request and book an assessment](https://crewtavo.com/docs/sales/requests/).
## Add what you're quoting
Under the lines:
- **Add from price list** opens a search of your services ("Search your services"). Pick one and it goes on with its name, description, unit, price, cost and whether it's taxed. Set up your services in [Set up your price list](https://crewtavo.com/docs/sales/price-list/).
- **Custom item** adds a "New item" line, open and ready to type in, for anything that isn't on your price list.
Each line shows its **Qty**, **Unit**, **Price** and **Total**, and the quote's totals work themselves out as you go.
### Change a line
Click a line to open it. Each field saves as you leave it, and **Done** closes the line.
- **Item name**, **Qty**, **Unit** and **Price** (each unit's price).
- The description under the name: "Description the client will see (optional)".
- **Optional (client chooses)**: makes it an add-on the client can tick in the Client Hub. It starts unticked, so it shows **Not included** and doesn't count in the total until they pick it. Use it for upgrades and extras, like "Add aeration" or "Gutter guards".
- **Taxable**: untick it for a line you don't charge tax on. It shows **No tax**.
- **Unit cost**: what the line costs you, for the profit estimate. Only people whose role includes **Job costs and profit** see it.
The **⋯** menu on each line has **Edit**, **Move up**, **Move down**, **Duplicate** and **Remove**. Removed a line by mistake? Choose **Undo** on the message that pops up.
### Fill quantities from a measurement
If you measured the property on the map, the **Drawings** card in the side column lists the drawing. Choose **Fill quantities** and every line whose service has a formula gets its quantity from the drawing: the lawn's square feet, a roof's squares, the feet of fence. For mulch, gravel or asphalt, put the **Depth (inches)** in first. The **Measure** button on the card opens the map for this quote. See [Measure a yard or a roof](https://crewtavo.com/docs/measuring/measure-yards-and-roofs/#put-a-drawing-on-a-quote-or-invoice).
## Set the totals
The card beside the lines has the money:
- **Discount**: a dollar amount off the whole quote.
- **Add promo code**: type the code and choose **Apply**. Crewtavo checks the code's rules and takes it off. **Remove** takes it back off. If the client entered a code on your booking form, the quote says "The client entered … when they booked." with an **Apply** button: it's not applied until you choose it. Codes are made in Marketing: see [Marketing: campaigns and promo codes](https://crewtavo.com/docs/clients/marketing/#promo-codes).
- **Tax**: the rate for this quote. It starts at your sales tax; change it here for a job in another town. For a client marked **Tax exempt** (in **Edit client** on their page, under **Invoices**), it says **Tax exempt**, at 0%, with no rate to change. Marking a client exempt takes the tax off their drafts; quotes already sent keep theirs.
- **Deposit required**: what you ask the client to pay up front, as a dollar amount (**$**) or a percent of the total (**%**). A percent follows the total as lines change and as the client picks options and add-ons. It's shown to them as **Deposit to book**. It can't be more than the total. For billing it once they say yes, see [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/#take-the-deposit).
- **Valid until**: the last day the price holds. Clear it for a quote that doesn't expire.
- **How often**: **One time**, or how recurring work repeats. See below.
## Quote recurring work
For work that repeats, like weekly mowing, quote the price of one visit and say how often:
1. Beside **How often**, which says **One time** to start, choose **Repeat**.
2. In **How often**, choose **Repeats** and fill in the schedule, the same as on a recurring job: **Repeats every** a number of days (up to 30), weeks (up to 8) or months (up to 12); **On** (the days of the week, or for monthly work **A date** or **A weekday**, like the last Friday); **First visit**; **Ends** (**Never**, **On a date** or **After a number of visits**); and **Season**. See [Set up a recurring service](https://crewtavo.com/docs/jobs/jobs-and-recurring-service/#set-up-a-recurring-service).
3. Choose **Save**.
The quote's total now reads **Total per visit**, with how often under it ("Every 2 weeks, Tuesday, April to October"). The client sees the same in the Client Hub and on the printed estimate, and when you send it without a message of your own, the email or text says "Here's your quote ($55.00 per visit)". When they approve, they tick "I approve this quote for $55.00 per visit, every 2 weeks, Tuesday, April to October…".
To change it, click the schedule beside **How often**. Choose **One time** and **Save** to make it a one-time quote again. Change orders don't have **How often**.
When you convert the quote, it becomes a recurring job billed after each visit, with its visits scheduled. See [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/#convert-the-quote-to-a-job). **Copy as new draft** keeps how often.
:::tip[Autopay for recurring work]
If you take [autopay](https://crewtavo.com/docs/billing/autopay/), a quote with a line priced per visit (its **Unit** is "visit", like mowing on the starter price list) lets the client choose **Approve and set up autopay**, so each visit is charged to their card from the start.
:::
## Write a message to the client
**Message to client** prints above the lines, in the Client Hub and on the PDF: a thank-you, what you recommend and why. "Thanks for having us out. Here's what we recommend…" is the idea.
**Polish with AI** rewrites what you've typed to read more smoothly, and saves it ("Message polished. Review it before sending."). Read it over before you send. It's there once your business has added a Claude key under **Apps → Claude**, or the server has one: see [Ask a question](https://crewtavo.com/docs/team/knowledge-base/#ask-a-question).
## Check it before you send it
- **Lines** and **Paper**, above the lines, switch between the lines you edit and the estimate as it prints, on your template.
- **Preview as client**, in the **⋯** menu at the top, opens the quote as the client will see it in the Client Hub, with "Preview: this is what your client sees." Nothing you do there approves it or sends anything, and the link stops working after a day.
- **Print or save PDF**, in the same menu, prints the estimate pages, or saves them as a PDF from your browser's print window.
- **Document style**: with more than one document style, pick which one this quote prints on. See [Make your estimates and invoices look like your business](https://crewtavo.com/docs/sales/estimate-templates/).
- **Contract** lists the contract sections that print with this quote, and lets you add more for this job. See [Write your contract terms](https://crewtavo.com/docs/sales/contract-terms/).
- **Profit estimate** shows once the lines have costs: **Price before tax**, **Estimated cost** and **Profit**, with its percent. It's for you, never the client.
## Send the quote
1. Choose **Send quote** at the top. (It's greyed out until the quote has a line.)
2. Pick how:
- **Email**: check **To** (the client's email), the **Subject** ("Quote #12 from …"), and add a **Message** if you like. Choose **Send email**.
- **Text**: check the **Mobile number**, add a **Message** if you like, and choose **Send text**.
- **Copy link**: copies the client's link for you to paste into any message, like a text from your own phone. Choose **Copy link**. It marks the quote as sent, too.
3. You'll see "Emailed to …" or "Texted to …", with the **Client link** to copy and a **Preview** button. Choose **Done**.
The quote is now **Awaiting response**, with "Sent … Waiting for … to respond." at the top. The email or text and its link are logged on the client's timeline.
If you don't write a message, the client gets: "Thanks for the opportunity. Here's your quote ($…). You can review the details, choose any options and approve it online:" and the link. "The link is added automatically", so don't paste it into your message.
:::note
Email and texting have to be set up first. Until they are, the window says "Email isn't turned on yet. Use “Copy link” and send it yourself." (or the same for texting). See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/) and [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/).
:::
Your starter automations email the client a reminder if they haven't answered three days after you send it ("Follow up on quotes after 3 days"). See [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
### Change it after you send it
You can keep changing a quote that's awaiting a response, or one the client asked to change. The client's link always shows it as it is now. Choose **Resend** to send them a fresh email or text about it. If they're in the middle of approving when the price changes, they're asked to look it over again, so they never approve a price they didn't see.
Once it's approved, a quote is locked. For a new version, choose **Copy as new draft** in the **⋯** menu: it copies the lines (and any options) into a new draft quote.
## Follow your quotes
The tabs on **Quotes**:
| Tab | What's in it |
| --- | --- |
| **Open** | Drafts, quotes awaiting a response, ones with changes requested, and approved ones not yet a job. |
| **Draft** | Not sent yet. |
| **Awaiting response** | Sent, waiting for the client. |
| **Changes requested** | The client asked for changes. |
| **Approved** | The client said yes. Next, make it a job. |
| **Converted or lost** | Made into a job, marked lost, or archived. |
| **Quote templates** | Saved quotes that new quotes start from. See below. |
Search by the title, the client or the quote's number. The **Sent** column says how long ago each one went out (or **Not sent**), and the bottom of the list adds up the quotes on that tab. For a board of every open quote by stage, with what's going stale, use the [Sales board](https://crewtavo.com/docs/sales/sales-board/).
**History**, at the bottom of the quote's side column, lists what's happened to it, like when it was sent and approved.
## Quote templates
For work you quote again and again, like a spring cleanup, save a quote as a template:
1. On the quote, choose **⋯**, then **Save as template**.
2. Give it a **Template name** and choose **Save template**. Its lines, options, contract sections and message go with it. The client and dates stay on the quote.
Your templates are on the **Quote templates** tab. Open one to change it, the same as a quote. It's never sent. To use it, choose **New quote from it**, or pick it under **Start from** in **New quote**. **Delete template**, in its **⋯** menu, removes it; quotes made from it stay as they are.
## When a quote expires
Nothing changes on its own when the **Valid until** date passes: the quote stays where it is, and you can still convert it.
- In the office, a sent quote past its date says "This quote has expired; update the date before resending."
- In the Client Hub, the quote says "Was good until …", its **Valid until** date turns red, and the client sees "This quote's valid-until date has passed. You can still approve it, and … will confirm the price."
To give them more time, change **Valid until** and choose **Resend**. If the price has changed, update the lines first.
## Your trade's extras
- **Good, Better and Best options** side by side: [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
- **Roofs** priced from the aerial, with a price range first: [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/).
- **Parking lots and driveways** from a takeoff: [Bid a paving job from the aerial](https://crewtavo.com/docs/measuring/paving-takeoffs/).
- **Measuring** any property for quantities: [Measure a yard or a roof](https://crewtavo.com/docs/measuring/measure-yards-and-roofs/).
## If something's off
**Send quote is greyed out.** Add a line first: "Add a line item first."
**"Add a valid email address for this client first."** The client has no email, or it's mistyped. Fix it on their page, or send it by **Text** or **Copy link**.
**I can't edit the lines.** The quote is approved, converted, lost or archived, or your role doesn't include **Quotes and sales**. A lost or archived quote can be brought back with **Reopen as draft** in the **⋯** menu.
**The add-on doesn't count in the total.** That's on purpose: an optional line only counts once the client ticks it (or you do, by unticking **Optional (client chooses)**).
Next: [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/).
Source: https://crewtavo.com/docs/sales/quotes/ (last updated 2026-11-04)
---
# When the client says yes: approve, convert to a job and take the deposit
> Clients approve and sign quotes in the Client Hub (and can set up autopay as they do), or you mark them approved. Then convert the quote to a job, or a recurring job for recurring work, take the deposit (paid as they approve when you take payments with Stripe, else billed from the job), handle change orders, and mark lost quotes with a reason.
Once a quote is out, the client approves it online, asks for changes, or tells you yes (or no) on the phone. This page covers each of those, then turning the quote into a job, billing the deposit, and adding extra work to a job with a change order.
## Who can do it
Owners, admins, office staff and estimators whose role includes **Quotes and sales** can mark quotes approved or lost, sign for the business, convert quotes to jobs and start change orders. Billing the deposit takes **Invoices and payments**, which owners, admins and office staff have and estimators don't. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## When the client approves in the Client Hub
The client opens the link you sent. On a plain quote (one without Good, Better and Best options):
1. They see your message and the lines. They tick any add-ons they want (the lines marked **Optional**), and the total changes as they go.
2. If they have a code, they choose **Have a promo code?**, type it and choose **Apply**. If the code needs a bigger order, they see "… needs an order of at least $…. Remove the code, or change your choices."
3. If your quote prints contract terms, they read the estimate as it prints in **Review the agreement**, add their initials where a section asks, and choose **Continue to sign**.
4. Under **Sign** (or **Approve**, on a quote with no terms), they type **Your full name**, sign under **Your signature**, tick "I approve this quote for $… and authorize … to do the work." (with "agree to the terms I reviewed" in it when there are terms), and choose **Approve quote**. On a quote for [recurring work](https://crewtavo.com/docs/sales/quotes/#quote-recurring-work), the box says the price per visit and how often: "I approve this quote for $55.00 per visit, every 2 weeks, Tuesday, April to October…".
They see "Signed on …" with the signed estimate to print or save, and "Thank you. … will be in touch to schedule the work." For a quote offering options, they choose one first: see [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/#what-the-client-sees).
In the office:
- The quote moves to **Approved**, with "Approved … by …" and their signature at the top.
- The office gets a notification: "Quote #… approved".
- On the [Sales board](https://crewtavo.com/docs/sales/sales-board/), the card moves to **Approved**.
The add-ons they ticked are the ones that count, on the quote and on the job you make from it.
:::note
If you change the quote while they're signing, their approval is turned down with "The price changed. Please look it over again." and they start over with the new price. They never approve a price they didn't see.
:::
### Approve and set up autopay
When you take [autopay](https://crewtavo.com/docs/billing/autopay/) and the client isn't on it yet, a quote with a line priced per visit (its **Unit** is "visit") has two buttons: **Approve quote** and **Approve and set up autopay**. The second signs the quote, then goes straight on to saving a card on Stripe's secure page and agreeing to your autopay terms. If they choose **Approve quote**, the signed quote offers it after: "Pay automatically after each visit" with **Set up autopay**.
When you [require a card on file](https://crewtavo.com/docs/billing/autopay/#require-a-card-on-file), any quote says "A card on file is required for service. After you sign, you'll add yours on Stripe's secure page." and its one button is **Approve and add your card**. Until they've added it, the signed quote shows "Finish setting up: add your card" with **Add your card**.
Either way, the quote is signed and approved first, so it stays approved even if the client stops on Stripe's page. Price ranges and change orders don't offer autopay.
### A preview can't approve
The link from **Preview as client** shows exactly what the client sees, with "Preview: this is what your client sees." It can't approve the quote or ask for changes ("Preview: your client signs here."), so it's safe to click through. Only the link you send the client can.
## If the client asks for changes
In the Client Hub, the client chooses **Request changes**, writes what they'd like under "What would you like changed?" and chooses **Send request**. They see "Request sent".
In the office:
- The quote moves to **Changes requested**, and the office gets "Changes requested on quote #…".
- The top of the quote says "… asked for changes", with their note in quotes, and "Update the quote, then resend it."
- On the Sales board, the card says **Changes requested** in red.
Change the lines, then choose **Resend**. The quote goes back to **Awaiting response**. Meanwhile, the client can still approve the quote as it is: their link says "You've asked for changes. … may send an updated quote, or you can approve this one as it is."
:::caution
A client can only ask for changes once each time you send the quote. If they try again before you resend it, they get "This quote isn't waiting for a response." Resend the quote, or ask them to call or message you.
:::
## When they say yes another way
If the client tells you yes on the phone or in person, open the quote, choose **⋯**, then **Mark approved**. It works on a draft too. The quote moves to **Approved** in your name ("Marked approved"), and keeps the document style and contract terms it has now, the same as a signed one. The client's signature line stays blank, for signing on paper.
You can also drag the quote to **Approved** on the [Sales board](https://crewtavo.com/docs/sales/sales-board/). A quote offering options asks "Which option did they choose?" first, so it's marked approved from its own page.
## Sign for your business
If your document style has a signature line for your business, an approved quote shows **Sign for** and your business name.
- With a saved signature, one tap signs it ("With your saved signature.").
- Without one, sign with your finger or mouse in the window that opens, and leave **Save my signature for next time** ticked so it's one tap next time.
Your signature goes on the business's line of the signed estimate, in the office and on the client's link. See [Make your estimates and invoices look like your business](https://crewtavo.com/docs/sales/estimate-templates/).
## Convert the quote to a job
Choose **Convert to job**, at the top of an approved quote or in its green "Approved" box. Crewtavo makes the job and opens it: "Converted to a job".
The job gets:
- The quote's title, client and property, and its **Message to client** as the job's instructions.
- The lines the client chose. Add-ons they left off don't go on the job.
- The discount or promo code, as a line of its own.
A quote for [recurring work](https://crewtavo.com/docs/sales/quotes/#quote-recurring-work) becomes a **recurring job** billed **After each visit**, with the quote's schedule, season and end date. It starts on the quote's **First visit**, or today if that day went by while the client decided, and its visits go on the schedule straight away. A quote for one-time work becomes a one-off job billed **When the work is done**. If the client is on autopay and **Turn on autopay for new recurring jobs of clients on autopay** is on, the new recurring job is charged automatically from the start: see [Which jobs are charged](https://crewtavo.com/docs/billing/autopay/#which-jobs-are-charged).
The quote moves to **Converted** ("Converted to job #…"), the request it came from moves to **Converted** too, and a lead becomes an active client. Next, schedule the work: see [Create a job or recurring service](https://crewtavo.com/docs/jobs/jobs-and-recurring-service/).
You don't have to mark a quote approved first. **Convert to job** is also at the top of a quote that's awaiting a response, and in the **⋯** menu of a draft. Converting a quote nobody signed approves it in your name on the way.
## Take the deposit
### Paid as they approve
When you take payments with [Stripe](https://crewtavo.com/docs/connections/stripe/) and the quote has a **Deposit required**, the client's button in the Client Hub says **Approve and pay deposit**, with "The $… deposit is paid next, by card or bank, on Stripe's secure page." Approving makes the deposit invoice, marks it sent and opens Stripe's page to pay it.
The quote is approved before they pay, so it stays approved if they stop on Stripe's page. Until it's paid, their signed quote says "Your deposit is still due: pay it to hold your place on the schedule." with a **Pay the $… deposit** button. When you convert the quote, the deposit invoice goes on the job, and the job's last invoice takes it off. A quote you mark approved yourself doesn't take the deposit this way: bill it from the job, below.
### Bill it from the job
Without Stripe, the client's signed copy tells them "You'll receive an invoice for the deposit." Nothing makes that invoice on its own: someone in the office has to create it from the job and send it.
1. Convert the quote to a job, then open the job.
2. Choose **Create invoice**.
3. Pick **Deposit**. It says "The quote asked for $…", and that amount is filled in. Change it if you agreed on something else.
4. Choose **Create invoice**. The deposit invoice opens as a draft ("Invoice created as a draft").
5. Check it and send it, the same as any invoice.
When you bill the rest of the job, the final invoice takes off what the deposit already billed. See [Create an invoice and get paid](https://crewtavo.com/docs/billing/invoices/).
Estimators can't create invoices. If your estimators close the deal, let the office know so they can send the deposit invoice.
## Add work to a job with a change order
A change order is a small quote for extra work on a job that's already going, like a second driveway apron or rotted decking found during a tear-off. Once the client approves it, its lines go on the job.
1. Open the job, choose **⋯**, then **New change order**.
2. A quote opens, titled "Change order: …", saying "Change order for job #…". Add what's changing, the same as on any quote. It starts at 0% tax and with no **Valid until** date, so set the **Tax** if the extra work is taxed.
3. Send it with **Send quote**. In the Client Hub, the client ticks "I approve this change order for $… and authorize … to do this added work." and chooses **Approve change order**.
When it's approved, by the client or by you with **Mark approved**, its lines and any discount are added to the job right away, and the job's total goes up. Its button says **Add to job #…** rather than **Convert to job**. The job's page lists its change orders under **Change orders**, where **New change order** starts another.
## If they say no
Choose **⋯**, then **Mark as lost**. Pick the **Reason**: **Price was too high**, **Went with another company**, **Timing didn't work**, **No response**, **Scope changed** or **Other**, add a **Note** if you like, and choose **Mark lost**. The quote says "Marked lost: …" and moves to the **Converted or lost** tab. The reasons add up in **Metrics** under "Why quotes were lost", so you can see what's costing you work.
Dropping a quote on **Drop here to mark lost** on the Sales board marks it lost too, with the reason "Marked lost from the pipeline".
An approved quote can't be marked lost from its page. Archive it instead, or drop it on lost on the Sales board.
## Reopen, archive or delete a quote
In the quote's **⋯** menu:
- **Reopen as draft** brings back a lost or archived quote, to change and send again.
- **Archive** puts a quote away without calling it lost, like a duplicate. It goes under **Converted or lost**.
- **Delete quote** removes it with its lines: "Its line items are deleted too. This can't be undone." It's only there for drafts, lost and archived quotes that never became a job.
Source: https://crewtavo.com/docs/sales/when-a-quote-is-approved/ (last updated 2026-11-04)
---
# Follow up on quotes with the Sales board (pipeline)
> The Sales board shows every open request and quote as a card in its stage, with what it's worth and how long it's sat there. Drag a card to start a quote, send it, mark it approved, or mark it lost.
The **Sales board** is your sales pipeline at a glance: every open request and quote as a card, in columns from new request to approved. Each card shows what it's worth and how long it's been sitting, so you can see what needs a follow-up call today. You can move work along by dragging the cards.
## Open the Sales board
- Choose **Sales board** at the top of **Quotes** or **Requests**.
- Or search for "Sales board" or "pipeline" (see [Find anything](https://crewtavo.com/docs/getting-started/find-anything/)).
It's there for owners, admins, office staff and estimators. Moving cards takes a role that includes **Quotes and sales**, the same as changing the requests and quotes themselves. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## The columns
| Column | What's in it |
| --- | --- |
| **New requests** | Requests nobody has booked an assessment for yet. |
| **Assessments** | Requests with an assessment booked or done. |
| **Drafting quote** | Quotes you haven't sent yet. |
| **Awaiting response** | Quotes the client has, including ones where they asked for changes (marked **Changes requested** in red). |
| **Approved** | Quotes the client said yes to that aren't a job yet. |
Each column shows how many cards it has and what they add up to. Quoted, converted and archived requests, and converted, lost and archived quotes, leave the board.
## Read a card
A card shows the request's or quote's title, the client, its number, and for a quote, its total. A quote that offers Good, Better and Best options shows "From $…", its cheapest option, with "3 options" beside it, until the client picks one.
The corner of each card says how long since anything changed on it: "today", or a number of days like "5d". Cards are in order with the longest-waiting at the top.
- At **7 days** the age turns amber.
- At **14 days** it turns red.
Those are the ones to call about. Click a card to open the request or quote.
## The numbers at the top
| Number | What it counts |
| --- | --- |
| **Open quotes** | What your open quotes add up to (drafts, awaiting a response and approved), with how many quotes and requests are on the board. |
| **Won (30 days)** | Quotes converted to jobs in the last 30 days, and what they came to. |
| **Lost (30 days)** | Quotes marked lost in the last 30 days, and what they came to. |
| **Win rate (30 days)** | Won, out of won and lost together. |
An approved quote doesn't count as won until it's converted to a job. For longer periods, where your leads came from and why you lost quotes, see **Metrics** in [See your money and how the business is doing](https://crewtavo.com/docs/billing/finance-and-metrics/).
## Move a card
Drag a card onto the next column to do that step:
| Drag | From | To | What happens |
| --- | --- | --- | --- |
| A request | **New requests** or **Assessments** | **Drafting quote** | Starts a draft quote from the request, the same as **Create quote** on it ("Quote started", with **Open**). |
| A draft quote | **Drafting quote** | **Awaiting response** | Opens the **Send quote** window, to email, text or copy its link. It moves once it's sent. |
| A sent quote | **Awaiting response** | **Approved** | Marks it approved in your name, the same as **Mark approved** on the quote. |
Other moves aren't possible from the board: a column that can't take the card doesn't light up. Booking an assessment is done on the request ([Take a request and book an assessment](https://crewtavo.com/docs/sales/requests/)), and making an approved quote a job is done on the quote ([Convert the quote to a job](https://crewtavo.com/docs/sales/when-a-quote-is-approved/#convert-the-quote-to-a-job)).
:::note
A quote that offers options can't be dragged to **Approved**: "Open the quote to pick the option they chose." Open it and choose **Mark approved**, and it asks which option they picked. See [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
:::
If the client answered the quote while it sat on your screen, dragging it to **Approved** says "The client has already answered this quote.", with **Open** to look at it again.
## Mark a card lost or archived
While you drag a card, a box appears at the bottom of the board: **Drop here to mark lost** for a quote, or **Drop here to mark archived** for a request. Drop the card on it and confirm:
- A quote is marked lost, with the reason "Marked lost from the pipeline". "You can reopen it later from the quote." To give a real reason instead, open the quote and use **Mark as lost** there (see [If they say no](https://crewtavo.com/docs/sales/when-a-quote-is-approved/#if-they-say-no)).
- A request is archived. "It leaves the pipeline. You can reopen it from the request."
This works on approved quotes too, for a client who said yes and then backed out.
:::tip
If dragging doesn't work on your phone or tablet, tap the card to open it, and use the buttons on the request or quote instead. Every move on the board has one there.
:::
Source: https://crewtavo.com/docs/sales/sales-board/ (last updated 2026-10-28)
---
# Set up your price list
> Settings → Price list holds the services and products you sell, each with a unit, price, cost and tax setting, and an optional formula that fills in the quantity from a map measurement. Import one from a spreadsheet or from Jobber.
Your price list (price book, or products and services) is what you pick from when you add a line to a quote. Each service has a unit, a price, an optional cost, whether it's taxed, and optionally a formula that works out the quantity from a measurement. It's under **Settings → Price list**.
You don't start from nothing: the trade you picked when you set up your business filled in starter services for that kind of work: five for General (like a service call, labor and a trip charge), ten for lawn and exterior, and more for each of the other trades, from cleaning and plumbing to paving and roofing. Change their prices to yours and delete the ones you don't sell. See [Choose a trade preset](https://crewtavo.com/docs/getting-started/trade-presets/).
## Add a service
1. Open **Settings → Price list** and choose **Add service**. A row called "New service" appears at the end of the list.
2. Fill in the row. Each box saves as soon as you click or tab out of it; there's no save button.
- The name, in bold under **Service**, is what goes on the quote. A service needs a name: if you empty the box, it goes back to the old name.
- **Category**, the small box under the name, is optional. It shows beside the service when you add a line to a quote, you can search by it, and it groups the picture tiles on the iPad's roof site visit.
- **Unit**: what you sell it by, like `ea`, `hr`, `sq ft`, `sq` or `ton`. A new service starts as `ea`.
- **Price**: the price for one unit.
- **Cost**: what one unit costs you, if you want to track it. With both a price and a cost, the margin shows underneath, like "35% margin", in red when the cost is more than the price.
- **Formula**: leave it at **None** unless you want the quantity worked out from a measurement. See [Fill in quantities with a formula](#fill-in-quantities-with-a-formula).
3. Tick or untick **Taxable**, **Show on quotes** and **Add to every job** on the right.
**Taxable** means the line is taxed at the quote's sales tax rate. That rate comes from **Sales tax (%)** in **Settings → Company** when the quote is made. See [Set your business details, tax and defaults](https://crewtavo.com/docs/getting-started/company-settings/).
**Show on quotes** means it's offered when someone adds a line to a quote. Untick it to stop offering a service without deleting it.
**Add to every job** puts the service on new jobs and quotes as a line, once, like a trip charge. Take it off one like any other line. A job made from a quote doesn't get it again, since it has the quote's lines.
## Add a picture
The **Picture** column shows each service's picture. Without one, Crewtavo draws one to match the service's name. To use a photo of your own, like your shingle line or a finished patio:
1. Choose the picture (it says **Add** or **Change**).
2. Pick a photo, a JPEG or PNG.
**Remove** under it goes back to the drawing. The picture shows on the tiles your salesperson taps through on the iPad during a roof site visit, grouped by category. See [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/).
## How services get onto a quote
On a quote, **Add from price list** lists every service with **Show on quotes** ticked. Search it by name or category, and choose one. The line gets the service's name, description, unit, price, cost, taxable setting and formula, with a quantity of 1. See [Create and send a quote](https://crewtavo.com/docs/sales/quotes/).
The quote keeps what it got. Changing a price on your price list changes the next lines you add, not the quotes and invoices you've already made, so update the line on an open quote yourself if it should change too.
Clients never see your cost. It stays on the quote's lines for your team, so you can see what a job should cost you.
:::note
A description comes onto the quote line when a service has one, but the price list itself doesn't show descriptions, and you can't type one here. A service gets a description from an import, or from Claude or ChatGPT if you've [connected them](https://crewtavo.com/docs/connections/claude-and-chatgpt/). You can always change the description on the quote line.
:::
## Fill in quantities with a formula
A formula works out a line's quantity from a measurement you draw on the map, so you don't have to do the math. For example, a lawn treatment priced per 1,000 square feet could be `area_sqft / 1000`, and sod with 10% extra `area_sqft * 1.1`.
1. Type the formula in the **Formula** box and click out of it. Crewtavo checks it straight away. If it can't work it out, it says "That formula doesn't work. Check the spelling, for example area_sqft." and doesn't save it.
2. Once there's a formula, choose under it what it sets:
- **Sets the quantity** (the usual): the formula's answer is how many units go on the line.
- **Sets the price**: the answer is the line's price for one unit, for something whose price depends on the size of the job.
When you apply a measurement to a quote, every line with a formula is filled in from it.
Open **Using formulas** above the list for the names you can use:
- `area_sqft` (square feet), `area_sqyd` (square yards), `length_ft` (feet), `count`, `depth_in` (inches), `pitch_factor` and `waste`.
- For roofs: the edges `eave_ft`, `rake_ft`, `ridge_ft`, `hip_ft` and `valley_ft`, and the roof's surface and squares: `roof_sqft`, `squares`, `roof_squares` and `steep_squares`.
- For paving takeoffs: a value for each kind of item drawn on the map, like `asphalt_sqft`, `sealcoat_sqft`, `crack_ft` or `stripe_ft`.
For more on measuring and the formulas that go with it, see [Measure a yard or a roof](https://crewtavo.com/docs/measuring/measure-yards-and-roofs/), [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/) and [Bid a paving job from the aerial](https://crewtavo.com/docs/measuring/paving-takeoffs/).
## Find, hide and delete services
- **Search services** finds a service by its name or category. Searching from the top of any screen finds price list services too, and opens this list on the one you choose. See [Find anything with search](https://crewtavo.com/docs/getting-started/find-anything/).
- **Show hidden** lists the services with **Show on quotes** unticked as well. They're faded.
- **Delete**, on the right of each service, asks "Delete “…”?". Quotes and invoices that already have the service keep their lines. A deleted service can't be brought back, so if you might sell it again, untick **Show on quotes** instead.
## Download your price list
**Download** saves the whole price list, hidden services too, as a CSV spreadsheet with each service's name, category, unit, price, cost, taxable setting and formula. Open it in Excel or Google Sheets.
## Import a price list
To bring in a price list from a spreadsheet, or from another app:
1. Save it as a CSV file with column names in the first row: name, description, unit, price, cost, taxable and category. Only a name is needed.
2. Choose **Import**, then **Choose a spreadsheet (.csv)** and pick the file.
3. Crewtavo matches your columns by their names. Check each one, choose another column, or choose **Don't import**.
4. Choose **Import**. It says how many it'll add first.
It recognizes the usual names for each column, like `Item`, `Product / Service`, `Rate` or `Unit Price`, `Unit Cost`, `Tax`, `Type` and `UOM`. Prices can have dollar signs and commas.
**From Jobber:** in Jobber, open **Settings → Products & Services**, choose **Export**, then import that file here. See [Switch from Jobber](https://crewtavo.com/docs/getting-started/switch-from-jobber/).
What happens to each row:
- A name already in your price list is skipped, however it's capitalized, so importing the same file twice doesn't make doubles, and the starter services from your trade stay as they are.
- A row without a name is skipped, and if a name is in the file twice, only the first is added.
- A blank unit becomes `ea`, and a blank price `0`.
- Every service is taxable unless its taxable column says no, n, false, 0, non-taxable or exempt.
- Imported services go on the end of the list with **Show on quotes** ticked. Formulas and pictures don't import; add them afterwards.
:::caution[An import doesn't change prices you already have]
Because names already in your price list are skipped, you can't update prices by importing a new file. Change them in the list, or delete the old services first and then import.
:::
If Crewtavo says "That file has no rows to import. The first row should be column names.", the file is empty or has only the header row. A spreadsheet saved as Excel (.xlsx) has to be saved as CSV first.
## Who can change the price list
| Role | Price list |
| --- | --- |
| Owners and admins | See and change everything. |
| Office staff | See and change everything, if their role has **Price list, checklists, crews and booking forms** (it does unless you've turned it off). |
| Estimators | See the price list and download it, but can't change it. |
| Crew leads, field crew and subcontractors | Don't see it. |
To let someone else change prices, give them a role that includes **Price list, checklists, crews and booking forms**. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
:::tip
Selling several services together as one package, like Good, Better and Best, is set up under **Settings → Packages**. See [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
:::
Source: https://crewtavo.com/docs/sales/price-list/ (last updated 2026-11-04)
---
# Offer Good, Better and Best options
> Set up packages with a picture, highlights and a warranty, then offer two or three of them side by side on any estimate, so the client compares, picks one and signs for it.
A package is a set of services you sell together, with a picture so it's easy to pick. Put one on an estimate to price it, or offer two or three side by side, like Good, Better and Best. The client compares them in the Client Hub, chooses one and signs for it. It works in every trade.
## Set up your packages
With the Roofing app installed, packages are under **Roofing → Packages**. Without it, they're under **Settings → Packages**: "Services you sell together, each with a picture so it's easy to pick. Put one on an estimate, or offer two or three side by side."
1. Open **Settings → Packages** (or **Roofing → Packages**) and click **New package**.
2. Fill in the package. Each change saves as you go.
3. Click **Add a package** in the list for the next one.
A package has:
- **Package name**, up to 80 characters.
- **Tier** (optional): a word like Good, Better or Best, or your own, up to 40 characters.
- **A picture**: click **Add a picture** and pick a photo of the finished work or what goes in. The client sees it when the package is one of the options. Crewtavo keeps it as a JPEG up to 1600 pixels on its long side. Use **Change picture** or **Remove picture** later.
- **Main service** (optional): what the package is mostly about, if there's one service. Its price shows on the package's card, and under **Price**, where changing it changes it in your price list too.
- **Always included**: what goes on the estimate every time. Pick from **+ Add from your price list**. Measured services fill in from the measurements; the rest start at the count you set.
- **On its card**: what the client reads when you offer it as an option. Add up to 8 short lines with **+ Add a highlight**, and a **Warranty**: one line on what it covers, and for how long.
- **Contract**: sections from [Settings → Contract terms](https://crewtavo.com/docs/sales/contract-terms/) that print on every estimate this package is on.
**Copy** makes a second package from this one to change, and the trash button deletes it. Estimates already made with a deleted package keep their lines.
Changing packages takes access to Settings. Anyone who sells can put them on estimates.
### Roof packages
On **Roofing → Packages**, a package is a kind of roof, priced by the square, with one-tap quick adds. **Set up the standard packages** gives you three, ready to offer as options: **Architectural shingle** (Good), **Designer shingle** (Better) and **Standing-seam metal** (Best), each with highlights and a warranty. See [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/).
:::caution
The warranties the standard packages come with are example wording, and the package page says so until you change them: "Example wording to start from — have your attorney review it before you use it." In the office, an option still on one shows **Example warranty**. The client never sees that flag.
:::
## Offer options on an estimate
1. Open the quote.
2. In the bar above the lines, click **Offer options** ("Offer two or three packages side by side, like Good, Better and Best."). On a quote with nothing on it yet, the button is **Pick packages**.
3. Pick the packages. You can offer two or three options.
4. If the estimate already has lines, it becomes option 1 and each package you pick becomes another option. Under **On every option**, tick the lines that should count whichever option the client picks, like extras found on the job. The rest stay on option 1 only.
5. Click **Offer 2 options** or **Offer 3 options**.
On a quote with nothing on it, picking one package prices the estimate from it instead (**Use** and the package's name), with no options.
**Start over** in the same dialog takes every line and option off the estimate and starts it over from the packages you pick.
:::note
The deposit is never more than the cheapest option. If adding options brings it under the deposit, Crewtavo lowers it and says so, like "The deposit is now $1,500.00, so it's no more than the cheapest option."
:::
## Work with the options
Each option is a tab with its picture, tier, name and total. Clicking a tab only changes what you're looking at. The lines show the ones on every option and that option's own, and the totals beside them are for that option.
- **Tiers:** an option keeps its own tier. When none of them has one, they're labeled Good, Better and Best by price, cheapest first.
- **Show this one first:** the client's link opens on the option marked **Shown first**. If you change it after the client has the estimate, Crewtavo asks first, because any add-ons they picked are cleared.
- **New lines:** when you add a line, choose **Only on** that option or **On every option**.
- **Discounts:** "The discount comes off whichever option they choose."
- **Deposit:** if it's more than the cheapest option, the totals say "That's more than … Lower it so it fits whichever option they choose."
- **Add an option** adds another package, up to three.
- The **⋯** menu has **Edit this option** (the name, tier, highlights and warranty on its card, for this estimate only), **Start over from packages**, and **Take this option off**. With two options, taking one off makes it a single estimate again, with the other option's lines.
**Lines** and **Paper** switch between the editable lines and the estimate as it prints. While the client is still deciding, the paper shows the options side by side with the one you're looking at priced in full.
**Copy as new draft**, in the quote's **⋯** menu, copies the quote with its lines and options.
On the [Paving](https://crewtavo.com/docs/measuring/paving-takeoffs/) and [Roofing](https://crewtavo.com/docs/measuring/roofing-estimates/) estimate steps, the same options bar sits above the lines.
## What the client sees
The client's link walks them through up to three steps:
1. **Choose:** "Choose your option" shows the options as cards, with their pictures, highlights, warranty and price. They click **Choose this one** on the one they want, and pick any add-ons.
2. **Review:** "Review the agreement" shows the estimate for that option as it prints, with your contract terms. If a section asks for initials, they draw them under **Your initials** and click **Add my initials** beside each one. This step only shows when the estimate has terms.
3. **Sign:** they type **Your full name**, sign under **Your signature**, tick "I approve this quote for $… (Better · Designer shingle), agree to the terms I reviewed, and authorize … to do the work.", and click **Approve quote**.
They can click **Request changes** at any step instead.
## When the client says yes another way
If the client says yes on the phone or in person, open the quote and choose **Mark approved** in the **⋯** menu, or click **Convert to job**. On a quote with options, Crewtavo first asks "Which option did they choose?". Pick it, then click **Mark approved** (or **Convert to job**). The approval keeps the option and its contract terms, and a job gets that option's lines.
On the **Sales board**, a quote with options can't be dragged to **Approved**: "Open the quote to pick the option they chose."
Once it's signed, the chosen option shows **Chosen** and the quote says "Signed estimates keep their option."
At a roofing site visit, the salesperson taps the option the homeowner wants, then **They chose this one**, and the homeowner signs on the iPad. See [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/).
## In your lists
The quotes list and the sales board price a quote with options from its cheapest option, like "From $18,300", with "3 options" under it. Once it's signed, they show the total for the option chosen, and its name.
Source: https://crewtavo.com/docs/sales/good-better-best-options/ (last updated 2026-11-04)
---
# Make your estimates and invoices look like your business
> Settings → Document style sets the letterhead (Crewtavo's or your own), color, lettering, license number, insurer, contract, signature lines and footer that every estimate and invoice prints with, in every trade, with a live preview.
**Settings → Document style** decides how your paperwork looks: the pages that print, the PDF you save, the pages your client reads before they sign, and the signed copy they get a link to. It works the same in every trade. As you change something, the letter-size pages beside it change too.
## Set it up
1. Open **Settings → Document style**.
2. Open each section and fill it in. The live preview shows a sample estimate as you go; switch it to **Invoice** to see a sample invoice.
3. Click **Save style**.
Until you save, estimates use a plain built-in look, so nothing breaks while you're getting to it. Your first save stores your style as **Standard** and makes it the default.
### Letterhead
- **Letterhead**: **Crewtavo's** (the default) prints your name, logo and details in the style you pick below. **Your own** prints your own letterhead instead (see below).
- **Header style**: **Classic** (logo and name on the left, your details on the right), **Centered**, or **Banner** (a band of your color across the top).
- **Logo**: comes from **Settings → Company**. Owners and admins can change it here too. See [Add your logo](https://crewtavo.com/docs/getting-started/add-your-logo/).
- **Color**: your brand color, one of the suggested colors, or a custom one.
- **Lettering**: **Modern** (the same lettering as the app) or **Classic** (a serif, like a printed letterhead).
### Use your own letterhead
If you already have letterhead, from Word or a printer, Crewtavo can print on it.
1. Under **Letterhead**, choose **Your own**.
2. Click **Upload your letterhead** and pick the file. A PDF of a blank page prints cleanest (in Word, choose **File → Save as PDF**); Crewtavo uses its first page. A PNG, JPEG, SVG or HEIC picture, or a scan or photo of a printed page, works too.
3. In **Your letterhead**, drag **Header ends** to where your letterhead's top ends, and **Footer starts** to where its bottom starts. Your estimate prints between the two lines.
4. Click **Use this letterhead**, then **Save style**.
The header prints at the top of the first page, in place of Crewtavo's, so **Header style** and **Logo** go away and your letterhead's details replace the ones under **Business details**. The footer prints along the bottom of every page, in place of the footer's words. To change it, click **Upload a different one**.
To leave a part out, drag its line to the very top or bottom of the page. Without a top, Crewtavo's header prints there, in the style you pick; without a bottom, the footer's words do.
:::tip
A photo can print with gray paper, and Crewtavo warns you when it looks like one. For a clean letterhead, upload a PDF from Word or a flat scan.
:::
### Business details
Your business name, address, phone, email and website come from **Settings → Company**: click **Change in Settings → Company** to change them. Here you add:
- **Under the name**: a short line under your name, like "Roofing · Siding · Gutters".
- **License number** and **Insured by**, each with a switch to show or hide it on the page.
### Contract
- **Printed above the signatures**: a few lines in plain words, like your payment terms, what's extra and your warranty. Each line prints on its own line. **Use the suggested wording** puts in a plain starting point to change to your own.
- **Sections on estimates**: tick the sections from **Settings → Contract terms** that every estimate prints, after the words above.
- **Sections on invoices**: tick the ones every invoice prints, after its totals.
Write, change and reorder your sections in **Settings → Contract terms**. See [Write your contract terms](https://crewtavo.com/docs/sales/contract-terms/).
:::tip
If your contract sections already cover payment, changes and your warranty, clear **Printed above the signatures** so they don't print twice.
:::
### Signatures
Turn the customer's line and your company's line on or off, change the words under each line, and choose whether a date prints beside each signature.
Your salespeople don't sign by hand every time: each person saves their signature once in **Settings → Profile → Your signature**, or the first time they sign an estimate on site, and it goes on every estimate they sign after that.
### Footer
**Along the bottom of every page**: a line like "Licensed and insured in Ohio · Family owned since 1998". With your own letterhead, its bottom prints there instead. **Page numbers** adds "Page 2 of 3" to every page.
## How the pages print
Estimates and invoices are real US Letter pages, the same on screen as on paper:
- **Page 1** has the letterhead. Later pages have a slim header with your name and the estimate's number, so a loose page is easy to place.
- **Your contract sections** print above the signatures or on their own pages after the estimate, under "Terms and conditions", depending on where each one is set to print.
- **While the client is still deciding between options**, the estimate shows them side by side. Once they choose, it says which ("Your choice: Better · Designer shingle").
## More than one style
Use **New style** for a second look, like one for storm and insurance work. The **⋯** menu beside the **Style** picker has **Rename**, **Make it the default** and **Delete style**. A quote uses the default unless you pick another under **Document style** on the quote page (it only shows when you have more than one).
## Where it shows
- **On a quote**: switch **Lines** to **Paper** to see the estimate as it prints. **Print or save PDF** in the quote's **⋯** menu prints those pages, with the exact price, from the office. On an invoice, **Print or save PDF** opens the client's copy, ready to print.
- **The Client Hub**: the client reads these pages in the **Review** step before they sign, and gets this page when they print a quote or invoice from their link. Once a quote is signed, their link shows the signed copy, with the customer's and your company's signatures on their lines.
- **Signing on site**: the salesperson's iPad shows these pages while the homeowner signs. See [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/).
:::tip
**Print a sample** prints the preview, so you can check it on your own printer before a client sees it.
:::
Source: https://crewtavo.com/docs/sales/estimate-templates/ (last updated 2026-11-04)
---
# Write your contract terms
> Settings → Contract terms keeps your contract's wording a section at a time, like payment, your warranty and the right to cancel, with fill-ins and initials, and prints it with your estimates and invoices.
**Settings → Contract terms** is where your contract's wording lives, a section at a time: payment, changes to the work, your warranty, the right to cancel. You write each section once. Your document style picks the ones every estimate and invoice prints, a package can bring its own, and you can add more to one job. The customer reads them before they sign, and initials the ones you ask them to.
Only people in the office who manage Settings can change your contract terms.
## Start your contract terms
Your list starts empty.
1. Open **Settings → Contract terms**.
2. Click **Add example sections** to start from plain-language sections for your trade, or **Write your own** to start from nothing.
The example sections are:
- **Every trade:** Payment, Changes to the work, Warranty, Permits and inspections, Cleanup, Delays beyond our control, Liens, and Your right to cancel.
- **Cleaning & Janitorial** adds Access and keys, and Your things.
- **Electrical** adds Power shut-off and Existing wiring.
- **Handyman & Home Repair** adds Hourly work.
- **HVAC** adds What we find and Access.
- **Landscaping & Hardscaping** adds Underground lines and New plants.
- **Lawn & Exterior Maintenance** adds Access and pets, and Weather.
- **Paving & Sitework** adds Cure time and Cracks coming back.
- **Pest Control** adds Treatments.
- **Plumbing** adds What we find and Water shut-off.
- **Pool & Spa Service** adds Access and pets, and Water between visits.
- **Roofing & Exteriors** adds Hidden decking damage, Insurance claims and Weather.
Each example has an **Example** tag in the list until you change its words.
:::caution
The examples are a start, not finished legal terms. As the app says: "Example wording to start from — have your attorney review it before you use it." Contract rules, like the right to cancel, differ from state to state.
:::
Adding the examples doesn't put them on your estimates yet. Pick the ones you want in your document style (see [Put sections on your estimates and invoices](#put-sections-on-your-estimates-and-invoices)).
## Write a section
1. Click **Add a section** (or **Write your own** on an empty list).
2. **Title**: printed above its words, like "Payment" or "Your right to cancel". Up to 120 characters.
3. **Words**: write it the way you'd say it to the customer. The toolbar has headings, bold, italic, underline, numbered and bulleted lists, quotes, tables and dividers. To put in something that changes with each estimate, like the customer's name, click **Fill-in** on the toolbar and pick one (see below).
4. **Where it prints**:
- **Above the signatures**: right above where the customer signs, for what they must read first.
- **On the terms pages**: on the pages after the estimate, under "Terms and conditions".
5. Turn on **The customer initials this section** if they should initial it when they sign.
6. Click **Add section**.
A section holds up to 20,000 characters. If you go over, the app says "That's more than one section can hold. Split it into two sections."
### Fill-ins
A fill-in is a word in braces that Crewtavo fills in for each estimate. You can type them yourself too; capital letters don't matter.
| Fill-in | What it prints |
| --- | --- |
| `{Customer name}` | Who the estimate is for |
| `{Customer address}` | The customer's address, on one line |
| `{Job address}` | Where the work is |
| `{Business name}` | Your business's name |
| `{Business phone}` | Your business's phone number |
| `{License number}` | The license in your document style |
| `{Estimate number}` | Like 1042 |
| `{Date}` | The estimate's date, like October 25, 2026 |
| `{Total}` | The price of the option they pick, with tax |
| `{Deposit}` | The deposit on the estimate |
| `{Option}` | The name of the option they pick |
| `{Warranty}` | The warranty of the option they pick |
`{Option}` and `{Warranty}` come from the option the customer picks, or the package the estimate was priced from. Without either, they're blank. See [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
:::tip
Fill-ins work in **Printed above the signatures** in your document style too.
:::
## Put sections on your estimates and invoices
1. Open **Settings → Document style** and open **Contract**.
2. Under **Sections on estimates**, tick the sections every estimate prints.
3. Under **Sections on invoices**, tick the ones every invoice prints. They print after the invoice's totals.
4. Click **Save style**.
If you have more than one style, each one picks its own sections. See [Make your estimates and invoices look like your business](https://crewtavo.com/docs/sales/estimate-templates/).
## Sections for one package or one job
- **A package:** open the package (**Settings → Packages**, or **Roofing → Packages** with the Roofing app installed) and tick sections under **Contract**. They print on every estimate that package is on, after the ones every estimate has. When you offer packages as options, each option brings its own, and the customer sees the ones for the option they're looking at.
- **One job:** on the quote page, the **Contract** card lists **What prints** and where each one comes from (**Every estimate** or **With this option**). Tick any other section under **Add for this job** to print it on this estimate only.
## What prints, and in what order
An estimate prints:
1. The words in **Printed above the signatures** in your document style.
2. Your document style's sections.
3. The package's (or the option's) sections.
4. The sections added for this job.
Each section prints once, in the order of your list in **Settings → Contract terms**. Sections set to **Above the signatures** print before the signature lines. Sections set to **On the terms pages** start a new page headed "Terms and conditions", and the estimate says "By signing, you agree to this estimate and the terms on the pages that follow." above the signatures.
An invoice prints the document style's **Sections on invoices** after its totals. Nobody initials an invoice, and it has no terms pages.
## When the customer signs
In the Client Hub, the **Review** step shows the estimate as it prints, with its terms. The customer draws their initials once under **Your initials**, then clicks **Add my initials** beside each section that asks for them. They can't go on to sign until every one is initialed. At a roofing site visit, the homeowner initials and signs on the iPad the same way (see [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/)).
If the terms change while the customer has the page open, they're asked to look again: "The terms changed. Please look them over again."
## Reorder, change or delete a section
- **Reorder:** use the up and down arrows beside a section. It moves in every document style and package too.
- **Change:** click the section, or choose **Edit** in its **⋯** menu, then **Save section**.
- **Delete:** choose **Delete section** in its **⋯** menu.
:::note
A signed estimate keeps the words it was signed with. Changing or deleting a section only changes estimates that aren't signed yet. On a signed quote, the **Contract** card says "Signed with these. Changing your template or your contract terms doesn't change them."
:::
Source: https://crewtavo.com/docs/sales/contract-terms/ (last updated 2026-11-04)
---
# Put a booking form on your website
> Build a booking form in Settings → Online booking, with your own questions and service area, then add it to your Squarespace, Wix, WordPress, GoDaddy or Google Sites website. Each form sent comes into Requests, on the client you already have or a new lead.
Every booking form in **Settings → Online booking** has its own link. You can put the form right on a page of your website, or add a button there that opens the link. Either way, each form someone sends comes in under **Requests** as a new request, on the client you already have or a new lead client (see [When an existing client uses the form](#when-an-existing-client-uses-the-form)).
:::tip[Already have a form on your website?]
Keep it, and point it at Crewtavo with [Website Forms](https://crewtavo.com/docs/connections/website-forms/), the way Formspree works. Each message comes in under **Requests** and to your inbox.
:::
## Build a form
Owners, and admins and office staff whose role includes **Price list, checklists, crews and booking forms**, can build and change forms.
1. Open **Settings → Online booking** and choose **New form** (or **Create a form**, before you have one).
2. Give it a **Form name**, like "Request a quote" or "Free lawn estimate". It's the heading on the form, and the title of every request it brings in.
3. Pick the **Type**: **Request form**, **Book an estimate** or **Book a service**. The type is a label on the form's card, to tell your forms apart. Every type works the same way: people send a request, and you book the visit from it. Nobody picks a time on the form.
4. Under **Link**, type the end of the form's address, or leave it empty to make it from the name. The full address shows under the box. If another of your forms has it, you'll see "Another form uses this link".
5. Under **Service area ZIP / Postal codes**, list the ZIP or postal codes you serve, separated by commas (like "24151, 24065, 24184"). A code covers every one that starts with it, like M5V for M5V 2T6. "Leave empty to accept any area."
6. Set up the **Questions** (below).
7. Choose **Create form**.
The form is live straight away. Its card shows **Live**, its type, how many questions it has, how many service areas it has (or "any area"), how many "requests in the last 30 days" it brought in, and its link, with **Copy link**, **Open** and **Embed**.
### Questions
"Name, email, phone and address are always asked", so you don't add those. People have to give an email or a phone number, and the address for the work. A new form starts with one question, "What do you need done?".
For each question, type it in the box and pick its answer type:
| Answer type | What people do |
| --- | --- |
| **Short answer** | Type a line. |
| **Paragraph** | Type as much as they like. |
| **Number** | Type a number, like the number of trees. |
| **Yes / no** | Tap **Yes** or **No**. |
| **Pick one** | Tap one of your options. Type the options in the box beside it, separated by commas. |
| **Pick any** | Tap as many of your options as apply. |
| **Files (plans, PDFs)** | Add files, like a site plan. They go on the request under **Plans and files**. See [Upload and manage plans for a job](https://crewtavo.com/docs/jobs/plans-and-files/#let-clients-send-plans-with-a-request). |
| **Photos** | Add pictures only. |
Tick **Required** for a question they must answer. The arrows move a question up or down, and the trash button removes it. **Add question** adds another, up to 30.
The answers show on the request under **What they asked for**, by question.
### Change, turn off or delete a form
Open the form's **⋯** menu:
- **Edit form** opens it as you set it up. Choose **Save form**. Your website shows the change right away.
- **Turn off** stops the form taking requests ("Form turned off"), and its card says **Off**. People who open it see "This form isn't available". **Turn on** brings it back.
- **Delete form**: "The link stops working. Requests it already brought in are kept."
## Promo codes on the form
Every form has a **Have a promo code?** button above **Send request**. People choose it, type the code and choose **Apply**. If the code checks out, the form shows it with what it gives ("… It'll be applied to your quote."), and **Remove** takes it off. If it doesn't, they see why, and can send the request without it.
To fill a code in for people, add `?promo=` and the code to the end of the form's link, like `…/book/your-business/request-a-quote?promo=SPRING10`, and use that link in an email or ad.
The code shows on the request under **Promo code**. It isn't taken off anything yet: when you choose **Create quote**, the quote says "The client entered … when they booked." Choose **Apply** there to put it on. See [Create and send a quote](https://crewtavo.com/docs/sales/quotes/) and, for making codes, [Marketing: campaigns and promo codes](https://crewtavo.com/docs/clients/marketing/#promo-codes).
## Get the code
1. Open **Settings → Online booking**.
2. On the form's card, choose **Embed**.
3. Choose **Copy code**.
The same window has the steps for your website builder: pick it under **Your website is on**.
On your website, the form fits itself to the page. It grows and shrinks with its questions, so there's no box to size, and it leaves out your business name at the top, since your website already shows it.
:::tip
Changing the form later (its questions or **Service area ZIP / Postal codes**) doesn't need new code: your website always shows the form as it is in Crewtavo. Only changing its **Link** does, since that changes the form's address.
:::
## Add it to your website
### Squarespace
1. Edit the page. Where the form should go, click **Add block** (or **+**), then **Code**.
2. Click the pencil on the new block and paste the code over what's in it. Leave **Display Source** off.
3. Save and publish.
While you're signed in to Squarespace, it may not show the form. Open the page in a private window to see it.
:::note
Code blocks that add a form like this need Squarespace's Core, Plus or Advanced plan (or Business or Commerce on older plans). On other plans, [link a button to the form](#or-link-a-button-to-it) instead.
:::
### Wix
1. In the Wix Editor, click **Add Elements**, then **Embed Code**, then **Embed HTML**.
2. Click the new box, then **Enter Code**. Paste the code and click **Apply**.
3. Drag the box's bottom edge down until the whole form shows. Wix keeps the box at the size you give it.
4. Publish.
### WordPress
1. Edit the page. Click **+**, search for **Custom HTML**, and add that block where the form should go.
2. Paste the code into the block.
3. Click **Update** (or **Publish**).
:::note
On WordPress.com, this needs a paid plan with hosting features turned on; the free plan removes the code. WordPress sites hosted anywhere else work as they are.
:::
### GoDaddy
1. In the website editor, hover between two sections and click **+** to add a section. Search for **HTML** and add it.
2. Paste the code into **Custom Code** and click **Done**.
3. Publish.
### Google Sites
1. Click **Insert**, then **Embed**, then the **Embed code** tab.
2. Paste the code, click **Next**, then **Insert**.
3. Drag the box's bottom edge down until the whole form shows, then **Publish**.
### Built by a developer
If your website is code someone wrote, choose **Built by a developer** under **Your website is on** in the **Embed** window, then the framework the site uses.
**Astro:** paste the code into a `.astro` page or component, where the form should go. Astro bundles the script, which is fine. With two forms on a page, the script only needs to be there once. Don't paste it straight into an `.mdx` page, since MDX reads the script's braces as code: put the form in a `.astro` component and use that there.
**Next.js:** the code can't go into JSX as it is, and React won't reliably run a script written into a page, so the **Embed** window gives you a component instead. Choose **Next.js**, then **Copy component**. Save it as `components/BookingForm.tsx` (or `.jsx`) and render ` ` where the form should go. It works in the App Router (as a server component) and the Pages Router. It looks like this, with your form's link and name filled in:
```tsx
import Script from "next/script";
export function BookingForm() {
return (
<>
>
);
}
```
The script fits each form's frame to the form and, once someone sends it, scrolls the thank-you into view. The `id` makes Next.js load it once, however many forms a page has.
**Anything else:** plain HTML pages, and the templates of a site generator like Hugo, Eleventy or Jekyll, take the code as it is. Markdown files may strip it out. In an app framework like React, Vue or Svelte, render the frame the way the Next.js component does and load the script once, from the page's `
`. A script inside a component's markup usually doesn't run.
### Another website builder
Most builders have a block for adding your own code, usually called **Embed**, **HTML**, **Custom code** or **Code**. Paste the code into it where the form should go, and publish.
## Or link a button to it
If your website can't take code, or you'd rather send people to a page of their own, add a button (like "Get a quote") that opens the form's link. Every website builder can do this, on every plan.
On the form's card in **Settings → Online booking**, choose **Copy link**, then paste it as the button's link on your website.
## Check that it works
Open your website in a private window, fill in the form with your own details, and choose **Send request**. It should show up under **Requests** in Crewtavo within a few seconds, and the form's card in **Settings → Online booking** counts it in "requests in the last 30 days".
Your test makes a lead client with your name. Open it from the request and choose **⋯** then **Delete client** when you're done, so it doesn't sit in your clients. Test with an email and phone that aren't on one of your clients: otherwise the request goes on that client instead.
## When an existing client uses the form
A booking form looks for the client you already have, by email first, then by phone, the same as [Website Forms](https://crewtavo.com/docs/connections/website-forms/) does. When it finds them, the request goes on their own record, at their property with the same street address, or at a new property if the address is new. Their details stay as they are: what was typed on the form goes on the request, since anyone can type someone else's email.
When it finds no one, the request makes a **new client**, a lead with **Website form** as their lead source, with the address they typed as a new property.
If a client you already have books with an email and phone you don't have for them, they come in as a new lead. To keep their history in one place, open the new lead (click their name on the request), choose **⋯**, then **Merge into another client**. Pick your existing client, leave them under **Keep**, and choose **Merge into …**. Everything on the lead, the request included, moves to them, and the lead is deleted.
:::tip
Give your repeat clients their Client Hub link instead of the booking form: on their page, choose **⋯** then **Copy Client Hub link**, and send it to them. **Request work** there puts the request straight on their own record. See [The Client Hub](https://crewtavo.com/docs/clients/client-hub/).
:::
## If something's off
**The form doesn't show on the page.** Check the page in a private window: some builders hide code while you're signed in. If it's still missing, your plan may not allow code (see the notes for Squarespace and WordPress.com above). Link a button to the form instead.
**The form sits in a box with its own scroll bar.** Wix and Google Sites keep the box at the size you drag it to, so make it taller. On other builders, it means the builder left out the part of the code that fits the frame to the form. The form still works; make its box taller if your builder lets you.
**It says "This form isn't available".** The form has been turned off or deleted. In **Settings → Online booking**, open the form's **⋯** menu and choose **Turn on**.
**People outside your area can't send it.** If the form has service area codes, a request from any ZIP or postal code that doesn't start with one of them gets "Sorry, … doesn't serve that area yet." Change them under **Service area ZIP / Postal codes** with **⋯** then **Edit form**, or leave it empty to take any area.
Source: https://crewtavo.com/docs/sales/booking-form-on-your-website/ (last updated 2026-11-04)
---
# Measure a yard or a roof (cut out the house, set the pitch)
> Outline a yard and cut out the house, a pool or a bed, give a roof its pitch from free USGS lidar, your phone or a photo, and mark its eaves and ridges.
**Measure** draws on aerial imagery and adds up what you outline. Open it from a client, request, quote or invoice so it starts at their property, or search for **Measure** (see [Find anything](https://crewtavo.com/docs/getting-started/find-anything/)). (Which imagery it uses is on [Map imagery for measuring](https://crewtavo.com/docs/connections/map-imagery/).)
The map fills the page, with the address search over its top left and **Shapes**, the totals and the rest in the panel on its right. The arrow at the top of the panel hides it for more map, and the button in the map's corner brings it back. On a phone the panel is under the map.
The tools down the left of the map:
- **Area** for lawns, roofs, lots and driveways.
- **Cut out** for what isn't part of an area: the house, a pool, a flower bed.
- **Line** for edges, fences, curbs, and a roof's eaves and ridges.
- **Count** for trees, drains or posts.
- **Edit** to move corners or pick a shape.
## Cut the house out of a yard
1. Outline the whole yard with **Area**.
2. Pick **Cut out** and outline the house the same way, a corner at a time. Click (or tap) the first corner to finish.
The house comes off the yard straight away. On the map the yard shows with a hole where the house is, and the house gets a red outline. In **Shapes**, the yard shows its size after the cutout ("13,759 sq ft", with "16,908 sq ft before cutouts" under it), and the cutout shows what it took out in red.
A cutout comes off every area it covers, so one house drawn over the front and back yards comes off both. If part of it hangs past the yard, only the part over the yard comes off.
**Already drew the house as an Area?** Choose the scissors on its row in **Shapes**, or pick it with **Edit** and choose **Cut out** on the left. It turns into a cutout and keeps its name. Choose the same button on a cutout to count it as an area again.
### Cut out buildings in one tap
Choose **Cut out buildings** under **Shapes** and Measure looks up the buildings on your areas in OpenStreetMap and cuts them out for you. It can take a few seconds. Check the outlines against the imagery and drag any corners that are off.
:::note
OpenStreetMap has most buildings in towns and fewer in the country. When it has nothing there you'll see "OpenStreetMap has no buildings on these areas. Draw them with Cut out." A saved picture that uses its outlines carries the credit "Building outlines © OpenStreetMap contributors".
:::
## Set a roof's pitch
Open **Roof pitch and edges** under **Shapes** (with the Roofing app installed, it comes first). Pick the pitch, from **Flat** to **12/12**, or type another in **Other**. Write it however you're used to: 6/12, 6-12, 6:12, "6 in 12" or 26.5°. It's saved as 6/12.
Under the buttons you'll see what the pitch means: "×1.118: the roof is 12% bigger than it looks from above." Pitches of 8/12 and up are marked **Steep**, and ones under 4/12 **Low slope**.
**Roofing squares** shows up with the totals once there's a pitch: each roof area at its pitch, plus the **Waste %** (about 10% for a plain gable roof, 15% or more with hips and valleys).
### A porch or dormer at another pitch
Each roof area has a pitch button on its row in **Shapes** ("6/12 · roof" means it follows the roof's pitch). Choose it, then pick that section's own pitch, or **Same as the roof** to go back. With more than one roof section, **Each roof section** in the roof card lists their squares one by one.
### Read the pitch from lidar (free)
The US Geological Survey has flown lidar (laser scans from a plane) over most of the US and gives it away. Measure can read your roof's slope from it without anyone going out.
1. Draw the roof with **Area**, or choose **Outline the building in the middle**. Draw a porch or dormer at a different pitch as its own area.
2. Under **Measure it**, choose **From lidar (free)**. It finds the newest survey for that spot, downloads just the part over your roof (a few MB, usually under 10 seconds) and finds the roof's planes.
3. It gives each roof area a pitch, like "Your roof: 4/12" and "Measured 4.0/12 from 880 points". Choose **Use 4/12**. With more than one area, choose **Use** on one, or **Use these pitches** for all of them: the biggest sets the roof's pitch and the others get their own where they differ.
If part of an area reads a different pitch, it says so ("Part of it reads 2/12, maybe a porch or dormer"). Draw that part as its own area and run it again to give it its own pitch. **What it found** lists every roof plane, which way it faces and its size.
:::caution
The survey's year is at the bottom of the result. Depending on where you are it was flown anywhere from the early 2000s to 2024 (most since 2010), so if the roof was replaced or the house added onto since, the lidar won't know. It reads to about half an inch per foot; check small dormers, and anything that changes the price, on site.
:::
When there's nothing to read you'll see "USGS doesn't have lidar for this spot" (outside the US, and in a few places USGS doesn't host, like parts of North Carolina) or that the lidar "doesn't show a roof inside your outline" (a building newer than the survey, or one under trees). Use your phone or a photo instead.
### Measure the pitch on site
Under **Measure it**:
- **Phone on the roof:** lay your phone flat on the shingles and it reads the slope from its tilt sensor. Choose **Start**, wait until it says **Steady**, then choose **Use 6/12** (or whatever it reads). A thick case or camera bump can tip the phone a little; laying it on a straight board, or taking the case off, gives the best reading.
- **From a photo:** take a picture straight at a gable end (the triangle at the end of the roof), then drag the orange line along the roof edge and the blue line along something level, like the gutter or a row of siding. Stand square to the gable and step back rather than shooting up from close by; from off to the side it reads steeper than it is.
- **Ask Google:** only shows when whoever runs your Crewtavo server has added a Google key for Google's Solar API. It lists the pitches Google sees on the building in the middle of the map.
:::tip
The phone needs Crewtavo's secure (https://) address to read its tilt sensor. On an iPhone, the first time, Safari asks to allow motion access; choose **Allow**. If you said no, close the tab and open the page again to be asked again. On a laptop there's no tilt sensor, so measure from a photo instead.
:::
### Start from the building's outline
Put the building in the middle of the map and choose **Outline the building in the middle**. Measure adds OpenStreetMap's outline of it as an area. Outlines follow the walls, so drag the corners out to the eaves (often 1 to 2 ft).
## Eaves, rakes, ridges, hips and valleys
Draw the roof's edges with **Line**, then pick what each one is on its row in **Shapes**: **Eave**, **Rake**, **Ridge**, **Hip** or **Valley**. It's renamed to match ("Rake 1"). With the Roofing app installed, you can pick the edge first instead: in the **Roof** card, choose **Eaves**, **Rakes**, **Ridges**, **Hips** or **Valleys**, and every line drawn after that is that edge. Each kind of edge has its own color on the map and the saved picture.
Rakes, hips and valleys run up the roof, so they're longer than they look from above. Measure stretches them by the pitch and shows both ("70.8 ft", with "63.3 ft from above" under it). Eaves and ridges are level, so they stay as drawn.
The roof card adds them up: feet of each edge, **Drip edge (eaves and rakes)** and **Ridge cap (ridges and hips)**.
## Use it on a quote
Price list formulas can use the roof's squares and edges as well as the area: `squares` (the roof's surface at each section's pitch, with the waste), `roof_squares` (the same without waste, for tear-off), `steep_squares` (squares at 8/12 or steeper), `roof_sqft`, and the edges `eave_ft`, `rake_ft`, `ridge_ft`, `hip_ft` and `valley_ft`. For example, a drip edge line can use `eave_ft + rake_ft` and ridge cap `ridge_ft + hip_ft`. `pitch_factor` follows each section's own pitch, so `area_sqft * pitch_factor` is still the whole roof's surface when a porch is at another pitch. Businesses set up for the **Roofing & Exteriors** trade start with shingle and metal roofs, tear-off, **Drip edge**, **Ridge cap**, **Valley flashing** and a **Steep roof charge** on their price list.
With the Roofing app installed, you can take a roof from here to a priced estimate in the **Roofing** section: see [Get a roof estimate out from the aerial](https://crewtavo.com/docs/measuring/roofing-estimates/). For how a lawn's size prices the mow, see [Free lawn measuring](https://crewtavo.com/free-lawn-measuring/).
## Save the measurement
1. Type a name in **Name this measurement** in the panel, like "Front lawn and driveway". The client sees it if you show them the drawing. Left empty, it's saved as "Measurement".
2. Choose **Save measurement** at the top right. It says "Saved: 13,759 sq ft" (or "Saved on quote #12: …").
Saving keeps a picture of the drawing on the map, for the quote, the invoice and the PDF ("Saving a picture of the drawing…"). When you've been drawing on Google's imagery, the picture uses free imagery instead, since Google's terms don't allow keeping pictures of it. If the picture can't be kept, you'll see "Saved, but the map picture couldn't be kept, so clients would see the sizes only. Save again to retry."
The button says **Saved** until you change something, then **Save changes**. Where the drawing is kept depends on where you opened Measure from:
- **From a quote or invoice:** it's on that quote or invoice.
- **From a request:** it's kept with the request, and goes onto the quote you make from it with **Create quote**.
- **From a client or property:** it's kept with the property, and offered on that property's quotes and that client's invoices.
Owners, admins, office staff and estimators can measure and save. Crew leads can too, when they choose **Put on the map** on a job's plan.
## Put a drawing on a quote or invoice
Once it's saved, the panel shows **Put it on a quote or invoice**: "The picture and sizes go with it. You choose whether the client sees them."
1. Pick the **Quote** it's for (this client's quotes are listed, apart from lost and archived ones), or the **Invoice**, or both. You'll see "Added to the quote. Turn on "Client sees it" to show it there."
2. Turn on **Client sees it on this quote** (or **on this invoice**) when it's ready for them. Until then it's for your team only.
3. **Open the quote** (or **Open the invoice**) takes you there.
### The Drawings card on a quote
A quote has a **Drawings** card in its side column, under the totals (an invoice has one too):
- Drawings on the quote are listed with their picture and sizes, and a **Client sees it** switch. **Client sees it** is off until you turn it on.
- Under "Drawings for this client you can add to the quote" (or "More for this client") are other drawings of the property. Choose **Add** to put one on the quote.
- A drawing's **⋯** menu has **Open the drawing** and **Take off this quote**.
- **Measure** opens the map for this quote, and the drawing you save there goes on it.
Moving a drawing to another quote or invoice hides it there until you turn **Client sees it** on again. If a drawing was saved without its picture, the card says "No picture saved; the client sees the sizes only."
### Fill the quote's quantities from a drawing
While the quote can be changed, each drawing on the card has **Fill quantities**. Every line whose price list service has a formula gets its quantity (or its price, for a service set up that way) from the drawing, and the card lists what each line got, like "Lawn mowing: qty 13759". Lines without a formula keep what you typed. If none have one, it says "No lines on this quote use a formula." Filling also puts the drawing on the quote.
For mulch, gravel and asphalt, formulas need a depth. Type it in **Depth (inches)** on the card before you choose **Fill quantities**, or leave it empty to use the depth saved with the drawing (the **Depth** card on the Measure panel). Formulas are set up on your price list: see [Set up your price list](https://crewtavo.com/docs/sales/price-list/).
Change the drawing later, save it, and choose **Fill quantities** again to bring the quote up to date.
## What the client sees
When you show a drawing (with **Client sees it** on the quote's or invoice's **Drawings** card, or **Client sees it on this quote** after saving it), the Client Hub and the PDF show its picture and name, and list each area at its size after cutouts and each cutout as "left out" ("Building (left out)"). If roof sections have different pitches, each one says its own. Under it, the client reads "Measured from aerial imagery. Sizes on site may differ slightly."
Source: https://crewtavo.com/docs/measuring/measure-yards-and-roofs/ (last updated 2026-11-04)
---
# Get a roof estimate out from the aerial
> The Roofing section takes a roof from an address to a signed estimate. The office measures the roof and prices it from one roof package or two or three as options, the homeowner says yes to a price range, and the salesperson checks the roof, sets the exact price and signs with them on an iPad.
The **Crewtavo - Roofing** app adds a **Roofing** section to the menu. It walks one roof through six steps on one page: **Measure**, **Estimate**, **Range**, **Site visit**, **Schedule** and **Invoice**. Each step uses the same quote, job and invoices as the rest of Crewtavo, so nothing is typed twice.
:::tip
Don't see **Roofing** in the menu? An owner or admin can open **Apps**, choose **Crewtavo - Roofing** and choose **Install**. Any business can install it, whatever its trade, and Paving too: your trade in **Settings → Company** only picks your starter prices and terms. **Uninstall** takes Roofing out of the menu and keeps every estimate, package and price range. See [Install and manage apps](https://crewtavo.com/docs/connections/apps/).
:::
## Before you start: roof packages
A roof package is what goes on a kind of roof: the shingles or metal by the square, what's always on it, and **quick adds**, one-tap extras for the estimate. Open **Roofing → Packages** and click **Set up the standard packages** to get **Architectural shingle**, **Designer shingle** and **Standing-seam metal**, with the roofing services they need added to your price list at starting prices to change to your own.
Click a package to change it:
- **Price a square**: **Set it yourself**, or **Follow ABC prices** (your ABC Supply materials plus labor and the rest, plus your markup), so new estimates price at today's materials. If the roof has a material your ABC branch has never priced, it shows **A square, held**: the price stays where it was instead of leaving that material out, until the branch prices it or you replace it. See [ABC Supply](https://crewtavo.com/docs/connections/abc-supply/#keeping-prices-current).
- **Always on this roof**: the services every roof of this kind gets, like tear-off, drip edge, ridge cap and a dumpster. Measured ones fill in from the roof; others start at a count you set, like 3 pipe boots. Each shows your cost and margin.
- **Quick adds**: tap a service to make it a one-tap button on the estimate, like chimney flashing, rotten decking or a skylight.
- **On its card**: **Highlights** and a one-line **Warranty**, which the homeowner reads when you offer the package as one of two or three options. See [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
**Price ranges**, beside the packages, sets how much room the range leaves on top (15% to start) and what it rounds to. Owners and admins can change it.
## 1. Start a roof estimate
1. Open **Roofing** and click **New roof estimate**.
2. Under **Who's it for?**, pick the client, or type a new name and create them.
3. Pick the **Property**, or choose **Add an address**.
4. Under **What kind of roof?**, pick a package. Your default is already picked. To offer two or three side by side, like Good, Better and Best, click **Offer as an option** on the others.
5. Click **Measure the roof**.
The measuring map opens at the house. Where OpenStreetMap or the street map has the building, its outline is already drawn as the roof.
## 2. Measure the roof
The **Roof** card at the top of the panel beside the map has four steps, each ticked off as you go.
1. **Outline the roof.** **Outline the building** adds the outline of the building in the middle of the map; **Draw it** lets you click each corner yourself. Building outlines follow the walls, so drag the corners out to the drip edge (often 1 to 2 ft). Draw a porch, garage or dormer at another pitch as its own area.
2. **Set the pitch.** **Set the pitch** opens the pitch picker: pick a common pitch, read it free from lidar where the US has flown it, or measure it with a phone. See [Measure yards and roofs](https://crewtavo.com/docs/measuring/measure-yards-and-roofs/#set-a-roofs-pitch).
3. **Mark the edges.** Pick **Eaves**, **Rakes**, **Ridges**, **Hips** or **Valleys**, then draw along each of those edges and double-click to finish each one. Drip edge, ridge cap, valley flashing and ridge vent price from these.
4. **Save and price it.** Check the **Waste**: about 10% for a plain gable roof and 15% with hips or valleys. Then click **Save the roof**, and **Next: Estimate**.
## 3. The estimate
The package goes on the estimate by itself, priced from the roof. Anything with nothing to measure on this roof (like valley flashing on a roof without valleys) is left off, and the estimate says so.
The estimate is one list:
- **The roof · from the measurements**: the shingles, tear-off and edges. Tear-off has **−** and **+** for layers. **−** takes a measured line off.
- **Everything else**: things you count, like pipe boots and a dumpster, each with **−** and **+**. Taking one down to nothing takes it off.
- **Add to the estimate**: your quick adds, one tap each, and a search of your whole price list.
**Notes for** the salesperson are for the team only: what the homeowner told you, the dog in the back yard. **Your numbers** shows the cost, profit and margin, which the homeowner never sees.
**Change** next to the package name starts the estimate over from another package, after asking, if you priced the wrong kind of roof. It can also take two or three packages, to offer them as options.
With options, each one is priced from its own package once the roof is measured. Pick an option above the list to see and change its lines, its materials and **Your numbers**. When you add something, choose **Only on** that option or **On every option**. See [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
### Exact material costs from ABC Supply
With [ABC Supply installed](https://crewtavo.com/docs/connections/abc-supply/), open **Materials for this roof** below the estimate: each line's shingles, underlayment, drip edge and the rest, in whole bundles, rolls and pieces, at your own prices at your ABC branch. Pick a line's materials once and every roof after is priced the same way. Each line's cost becomes its materials plus **Labor and the rest**, so the cost, profit and margin use today's material prices, on the iPad too.
Roofing also gets a **Catalog** tab, after **Projects** and **Packages**: ABC's items at your branch with your price on each, what your account usually buys, and every material in your price list checked with ABC in one click. See [Browse ABC's catalog](https://crewtavo.com/docs/connections/abc-supply/#browse-abcs-catalog).
## 4. Send the range
The card beside the estimate shows the range the homeowner will see: the estimate rounded down, to the estimate plus your room on top, rounded up (an $18,304 estimate goes out as $18,300 to $21,050). With options, it runs from the lowest option to the highest plus the room on top, and the bar marks each option's price. Pick who goes out under **Site visit by**, then click **Send the range to** the homeowner, by email, text or a link you copy.
They see the range, what's included and what could change the price (like rotten decking at your price a sheet), and two buttons: **Yes, send someone out** and **I have a question**. With options, they see each one with its own range and can tap **I'm leaning toward this one**. When they say yes, the office gets a notification to book the visit, and the step says when they said yes. Their exact price never reaches their screen until it's set on site.
Did they say yes on the phone, by text or in person? Click **… said yes on the phone** (before you've sent the range) or **… said yes another way** (after). In the "Did … say yes to the range?" box, pick **Which one are they leaning toward?** if there are options, add **How they said yes** if you like, and click **Yes, they agreed**. Nothing is sent to them; the team is told to book the visit, the same as if they'd tapped yes.
:::note
Want to skip the range? **Send the exact price instead** sends the full estimate for them to sign online, the way any quote works.
:::
## 5. The site visit, on an iPad
On the iPad, open the project and click **Start the site visit**. The screen fills the iPad, without the app's menus. Held sideways, it shows what to change on the left and the paper on the right: the estimate in your [document style](https://crewtavo.com/docs/sales/estimate-templates/), with your letterhead and contract, the way the homeowner will sign it. "What … will sign. It changes as you do." Each change lights up on the paper as it lands, and tapping a line on the paper opens it to change. The price and **Review and sign** sit along the top.
On a narrower screen (under 1000 pixels wide, like most iPads held upright), the paper fills the screen, with the price and **Review and sign** along the bottom. **Make changes** opens the left side as a sheet over the paper, and **See the estimate** closes it.
The left side has three tabs:
- **Add items**: picture tiles to tap onto the estimate. **For this roof** has the package's quick adds, then come your price list's categories, and **Search your price list** finds the rest. A tile already on the estimate shows how many, with **−** and **+**.
- **Line items**: the estimate the office made. **−** and **+** fix anything they guessed, **−** takes a line off, and **Found something else?** adds what you find, like chimney flashing. Each change is marked **Added**, **Changed** or **Taken off**. Tap a line to change **How many**, the **Price for one** and the words **Under the name on the estimate**. **Does the roof match?** has **Fix measurements**. Below it, **Your notes**, with **Take a photo**, are for the office and crew; a note from the office shows at the top.
- **Price**: the range the homeowner said yes to and whether you're inside it. Type a price under **Set the price**, move it with **−$500**, **−$100**, **+$100** and **+$500**, or tap **Round to** a round figure or **Use** the estimate as it is. Your margin at today's prices stays hidden until you tap **Show margin**, since the homeowner can see the screen. **You changed** lists every change since the office's estimate.
With options, **Line items** shows each one. Tap **They chose this one** on the homeowner's pick: the price is set for that one, and **Review and sign** waits until it's marked.
:::tip
The tiles show your own pictures. Add one to any service in the **Picture** column of **Settings → Price list**; without one, the tile shows a drawing.
:::
Click **Review and sign**. Hand the iPad over: the homeowner sees the estimate in your document style, types their name and signs with a finger. If your contract asks for initials, they draw them once under **Your initials** and tap **Add my initials** on each section that asks. Your saved signature goes on your company's line; the first time, sign once and keep **Save my signature for next time** ticked. If there's an email address for them, tick **Email … a copy** to send them the signed estimate. Then click **Sign and finish**.
**Signed. Nice work** then offers **Print a copy** (to any AirPrint printer nearby). Emailing a copy and texting them a link show there too, when your Crewtavo can send email and texts. The office gets a notification, and the project moves to **Schedule**.
## 6. Schedule and invoice
Back in the office, the **Site visit** step shows what the salesperson changed on site, their notes and photos, and **The signed estimate** with both signatures, to open or print. Click **Schedule the job**: the estimate's lines become the job's scope. With options, the chosen option's lines and the ones on every option come along. The deposit button, like **Bill the 30% deposit, $5,400**, makes the deposit invoice.
Under **Invoice**, **Create an invoice** opens the job's invoice options: a deposit, progress or final invoice. Clients pay online from their link.
## Projects
**Roofing** lists your open projects with their package, the price (or the range, while that's what the homeowner has seen) and the stage, such as **Range sent**, **Wants a visit** or **Signed**. **All** shows lost and finished ones too.
For how Crewtavo's roof measuring compares with EagleView and Hover reports, see [Free roof measuring](https://crewtavo.com/free-roof-measuring/). Everything else Crewtavo does for a roofing company is on [Roofing software](https://crewtavo.com/roofing-software/).
Source: https://crewtavo.com/docs/measuring/roofing-estimates/ (last updated 2026-11-04)
---
# Bid a paving job from the aerial
> The Paving section takes a parking lot or driveway from an address to a signed proposal, a scheduled job and a paid invoice, with a takeoff on the aerial.
The **Crewtavo - Paving** app adds a **Paving** section to the menu. It walks one job through five steps on one page: **Takeoff**, **Estimate**, **Proposal**, **Schedule** and **Invoice**. Each step uses the same quote, job and invoices as the rest of Crewtavo, so nothing is typed twice.
:::tip
Don't see **Paving** in the menu? An owner or admin can open **Apps**, choose **Crewtavo - Paving** and choose **Install**. Any business can install it, whatever its trade, and Roofing too: your trade in **Settings → Company** only picks your starter prices and terms. **Uninstall** takes Paving out of the menu and keeps every takeoff and estimate. See [Install and manage apps](https://crewtavo.com/docs/connections/apps/).
:::
## 1. Start a takeoff
1. Open **Paving** and click **New takeoff**.
2. Pick the client, or type a new name and choose **Create … as a new client**.
3. Pick the property, or choose **Add an address**.
4. Give the project a name if you like, such as "Lot sealcoat and restripe", and click **Start the takeoff**.
The measuring map fills the page at the property, ready to find the paving (see below), with **Takeoff items**, **Shapes** and the totals in the panel on its right. The arrow at the top of the panel hides it for more map; **Takeoff** in the corner brings it back. On a phone the panel is under the map.
## 2. Measure the lot
Pick an item in **Takeoff items**, then draw it on the map. Everything you draw is that item until you pick another one, and each item has its own color.
- **Pavement:** **Asphalt**, **Concrete** and **Gravel** are areas. Click each corner, then the first one again to close it.
- **Sealcoat and repair:** **Sealcoat area** (only when part of the lot is being sealed; otherwise all the asphalt is), **Patch**, **Mill and overlay** and **Crack seal** (draw along the cracks).
- **Striping:** a **Stall row** is a line along the front of a row of stalls. It counts one stall every 9 ft and the 18 ft lines between them, so a row of 40 stalls is one line, not 40 taps. Tap single **Stall** and **ADA stall** spaces, draw **White**, **Yellow**, **Blue** and **Red lines**, **Crosswalks** and **Stop bars**, and tap **Arrows** and **Stencils or symbols**.
- **Curb and site:** **Curb** is a line; **Wheel stops**, **Bollards**, **Speed bumps** and **Drains** are counts. **All items** shows the ones that aren't listed yet.
Use **Cut out** to leave islands and buildings out of the asphalt. Each item's total shows in the list, in square feet or square yards (**SF** and **SY**). To change what a shape is, pick another item in its row under **Shapes**.
### Let Find paving outline it
**Find paving** outlines the pavement for you, free and with no account. It's the first tool on the left of the map (**Find**, with the sparkle, or press B), and a new paving takeoff opens on it:
1. Click two corners of a box around the lot. The map still moves as usual between clicks.
2. Drag the box's corners to fit, if you like.
3. Press **Outline**, on the map under the box (or press Enter). The outline follows the lot's edges inside the box, parked cars included, with buildings left out.
It outlines as the item shown on the banner over the map (**Asphalt** unless you picked another), and the banner has what you need to get the outline right:
- **Add**: tap anything it missed, and it's added to the same outline. For a drive or sidewalk, a tap on it is often all you need.
- **Take out**: tap an island, a building or anything else that doesn't belong, and it's cut out. Holding Option (Alt on Windows) while you tap does the same.
- **Box**: put another box round a lot; **Clear box** takes one away to start again.
- **Smaller** and **Bigger** swap the last tap for the model's next guess.
- **New outline** finishes this one, so the next box or tap starts another.
- **Done** (or Esc) finishes and switches to **Edit**, so you can drag any corners that are off.
**Find paving** under **Takeoff items** starts it too. Under it, **Find everything in view with fal.ai** outlines all the asphalt and concrete on the map at once and counts stalls, at about half a cent per thing it finds. See [Find paving with fal.ai](https://crewtavo.com/docs/connections/fal/).
Where OpenStreetMap has the parking lot mapped, one tap outlines the whole lot, and buildings mapped there are cut out of every outline (a grey roof looks a lot like pavement). Find paving runs on your own computer, tablet or phone, so the aerial isn't sent anywhere; it only asks OpenStreetMap what's mapped around the view. The first time, it downloads a model of about 60 to 75 MB once your first box is drawn, and the model then stays in the browser.
:::note
Find paving is quickest in a browser that can use the graphics card (WebGPU): Chrome, Edge, and Safari 26 or later. There, each box takes under a second. In other browsers it runs on the processor instead and takes about 10 seconds for each, and the banner says so.
:::
Check every outline against the imagery. A row of cars parked along a curb can end up just outside the outline, and a cluster of parked cars can come out as a cutout: tap it with **Add** to put it back, or drag the corners.
Click **Save measurement**. The saved picture becomes a **takeoff sheet**: the drawing on the aerial with a graphic scale bar marked in feet, a north arrow, your business, the project and address, the date, the imagery credit, and a legend with every item's quantity. The scale bar stays true however the sheet is printed. Then click **Next: Estimate**.
## 3. Price the estimate
The **Estimate** step lists the services in your price list whose formula reads what the takeoff measured, each with its quantity and price.
1. Under **What's the asphalt getting?**, choose **Sealcoat it**, **Pave it** or **Neither**, so sealcoat or new hot-mix (and its stone base) is suggested, not both. For paving, set the **Depth (in)**.
2. Tick each service to put it on the estimate, or click **Add all … to the estimate**.
The estimate shows each line's quantity, price, cost, total and margin, then the cost, price, profit and margin of the whole job. If the takeoff changes, click **Update quantities from the takeoff**. For discounts, optional add-ons, deposits and notes, click **Adjust on the quote**.
:::note
Each service prices from a formula in **Settings → Price list**, like `sealcoat_sqft` for sealcoat or `stripe_ft` for striping. **Paving → Price book** adds the standard paving services your price list is missing, with starting prices and costs to change to your own. **Using formulas** on the price list shows every value a takeoff gives.
:::
### Offer two or three options
Once the estimate has lines, you can offer packages side by side, like a sealcoat and restripe next to a mill and overlay. Click **Offer options** in the bar above the services and pick packages you've set up under **Settings → Packages**. The estimate as it is becomes option 1, and each package becomes another. See [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/).
Each option is then a tab. The services you tick go on the option you're looking at: beside "What you tick goes", choose **Only on** that option or **On every option**. The totals are for the option you're looking at.
## 4. Send the proposal
Turn on **Show the takeoff sheet on the proposal** so the client sees exactly what you're bidding. **Preview what the client sees** opens it as they will. Click **Send the proposal**: the client opens it on any phone or computer, chooses one of the options if you offer them, picks any optional items and signs, with no account needed.
## 5. Schedule and invoice
Once it's signed, click **Create the job**. The estimate's lines become the job's scope; with options, the lines of the option the client chose. If a client with options said yes another way, click **mark it approved on the quote** and pick their option first. **Schedule the visits** puts it on a crew's day.
Under **Invoice**, **Create an invoice** opens the job's invoice options: a deposit, progress or final invoice. Clients pay online from their link, and each invoice shows here with its status.
## Projects
**Paving** lists your open projects with what was measured, the price and the stage: **Estimate**, **Ready to send**, **Proposal sent**, **Changes requested**, **Won**, **Job** or **Done**. **All** shows lost and finished ones too. A project that offers options shows how many, and its price from the cheapest one ("From $12,400") until the client chooses.
For how these takeoffs compare with paid aerial takeoffs, see [Free paving takeoffs](https://crewtavo.com/free-paving-takeoff/). Everything else Crewtavo does for a paving company is on [Paving and sealcoating software](https://crewtavo.com/paving-software/).
Source: https://crewtavo.com/docs/measuring/paving-takeoffs/ (last updated 2026-11-04)
---
# Create a job or recurring service
> Make a one-off job or a recurring service like weekly mowing, set its days, season, visit time and billing, then follow its visits, costs and invoices on the job page and mark the work complete.
A job (work order) is the work you've agreed to do for a client. Its visits, line items, costs and invoices all live on the job's page. Most jobs come from an approved quote (see [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/)), but you can also make one straight away for work that doesn't need a quote, like a phone booking or a weekly mowing service.
A quote that says how often the work repeats becomes a recurring job when you convert it, with its schedule and season already set and its visits on the schedule. See [Quote recurring work](https://crewtavo.com/docs/sales/quotes/#quote-recurring-work).
## Who can do what
- **Create, change, finish and archive jobs:** owners, and admins, office staff and estimators whose role has **Quotes and sales**.
- **Delete a job:** owners, and admins and office staff whose role has **Quotes and sales**.
- **Add visits and mark them complete:** people who schedule. That's anyone whose role has **Schedule the whole team**, and crew leads for their own crew's visits.
- **Invoices** on a job: owners, admins and office staff whose role has **Invoices and payments**. **Job costing** and **Expenses** need **Job costs and profit**.
- **Crew leads** see every job, and **field crew** see the jobs they have visits on. Neither sees prices: instead of the line items they get a **Scope of work**, with what to do and how much.
See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## Create a job
1. Open **Jobs** and choose **New job**.
2. Pick the **Client**, then the **Property**.
3. Give it a **Title**, like "Driveway repair" or "Weekly mowing".
4. Pick a **Crew** if you know who'll do it, or leave **No crew yet**.
5. Choose **One-off job** or **Recurring job** (see below).
6. Choose **Create job**.
The job opens. A one-off job has no visits yet: choose **Add visit** to book when the crew will do the work. See [Run the schedule day to day](https://crewtavo.com/docs/jobs/run-the-schedule/). If the client was still a lead, they're marked active.
## Set up a recurring service
Choose **Recurring job** in **New job** and fill in the schedule:
- **Repeats every**: a number of days (up to 30), weeks (up to 8) or months (up to 12), like 2 weeks.
- **On**: the days of the week, for weekly service. Pick two days for twice-a-week service. For monthly service, pick **A date** (1 to 28) or **A weekday**, like the **Last** **Friday**.
- **First visit**: the day it starts.
- **Ends**: **Never**, **On a date** (then the **Last day**), or **After a number of visits** (then how many **Visits**).
- **Season**: the months it runs, like **Apr** to **Oct** for mowing. Leave them all off for year-round.
Under the schedule, **Next visits:** shows the next five dates so you can check them. If it says "none in the next year", the dates or the season leave no visits.
When you choose **Create job**, Crewtavo says "Recurring job created and visits scheduled" and puts the visits on the schedule, on the crew you picked. **New job** also asks how a recurring job is billed: **Per visit** and **After each visit** to start with. See [Billing](#billing-po-permit-retainage-and-warranty) below.
A recurring job made from a quote gets the quote's schedule. Its first visit is the quote's **First visit**, or the day you convert it if that date has passed.
### Give the visits a time and length
**New job** doesn't ask for a time, so the first visits are anytime that day. To set one, open the job, choose **⋯** then **Edit details and schedule**, and fill in:
- **Visit time**: leave it empty for anytime.
- **Minutes per visit**: any whole number, like 20 or 50.
- **Keep this time when routes are organized**: for a client who needs that time. See [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
Then choose **Save**.
:::note
When you change the **Title**, **Visit time**, **Minutes per visit** or **Default crew** and visits are already on the schedule, saving asks "Change the 8 upcoming visits too?". **Change them too** gives them the new ones, and **Only new visits** leaves them as they are. Visits that are done or started stay as they are either way.
:::
### How far ahead visits are made
Crewtavo keeps the next 60 days of visits on the schedule and adds more every day as the dates come up. It does this while the job is **Active** and not paused.
- **Delete one visit** (the client's away, a holiday): it stays deleted, and Crewtavo doesn't put it back. To bring it back, use **Add visit** on the job.
- **Move a visit** or change who's on it: it stays the way you left it.
- **Change the days, dates or season** in **Edit details and schedule**: when you save, visits that are still **Scheduled** on dates the new schedule doesn't have come off, and visits for the new dates are added. Visits that are under way or done stay, and so do visits covered by sub or crew pay that's done or paid.
:::tip
Recurring visits get the job's crew, but nobody is ticked under **People**. Field crew only see visits they're on, so tick people on those visits, or they won't see them on **My day**. Crew leads see their crew's visits either way. See [Set up crews and checklists](https://crewtavo.com/docs/jobs/crews-and-checklists/).
:::
### End or pause a service
- **For the winter:** set the **Season**, so the months off get no visits.
- **For a while** (a vacation, say): choose **⋯ → Pause job**, and set **Resume on**, or leave it empty to resume it yourself. Upcoming visits come off the schedule, and no visits, monthly invoices or plan charges are made while it's paused. Visits with work logged stay. The job says "Paused since …" with **Resume**, and **⋯ → Resume job** does the same.
- **For good:** in **Edit details and schedule**, set **Ends** to the last day and choose **Save**. The visits after it come off the schedule. Then mark the work complete or archive the job (below).
:::note
Marking the work complete, closing or archiving a recurring job stops new visits, but leaves the ones already on the schedule. Set **Ends** first, while the job is still active, to take them off.
:::
## Billing, PO, permit, retainage and warranty
Open the job's **⋯** menu and choose **Edit details and schedule**, or choose **Edit** on the **Details** card.
**Billing** is how you plan to invoice the job. A one-off job asks **When do you invoice?**: **When the job is done** (one invoice once the work is marked complete) or **Progress billing** (for big jobs billed in stages, with **Progress payment** invoices).
A recurring job asks two questions. **How is it priced?**
| Choice | What it means |
| --- | --- |
| **Per visit** | Each visit is billed at the job's price. |
| **Fixed price** | The job's price covers each invoice, however many visits. |
And **When do you invoice?**
| Choice | What it does |
| --- | --- |
| **After each visit** | Each finished visit is ready to invoice: the job says "2 completed visits are ready to invoice." with **Invoice visits**, and it's on the list of jobs ready to invoice under **Invoices**. Not offered with **Fixed price**. |
| **Monthly** | On the **Invoice day** (the last day of the month, or a day from the 1st to the 28th), the job says "November 2026 needs its invoice." with **Invoice November**. Each month's invoice covers the days since the last one. |
| **As needed** | No reminders. Invoice whenever you like with **Create invoice**. |
The same form has:
- **Default crew**: who new visits go to.
- **Instructions for the crew**: shown on every visit for this job, on the crew's phone too.
- **PO, permit, retainage and warranty** (open it to see the fields):
- **PO number**: shows on the job's invoices.
- **Permit number**: kept on the job.
- **Retainage %**: "Held back from each invoice until the work is accepted." You bill it at the end with a **Retainage** invoice.
- **Warranty until**: the day the warranty runs out.
They all show on the job's **Details** card. Choose **Save** when you're done.
### Charge the client's saved card (autopay)
Once you take [autopay](https://crewtavo.com/docs/billing/autopay/), the **Details** card has **Autopay**, with a **Charge their saved card** switch, for owners, admins and office staff whose role has **Invoices and payments**. It works on recurring jobs billed **Per visit** and **After each visit**, where each completed visit is charged, monthly plans (**Fixed price**, invoiced **Monthly**), and one-off jobs billed **When the job is done**, charged once the work is marked complete. Other billing can't use it: "Autopay works with recurring jobs billed per visit or at a fixed price monthly, or one-off jobs billed when the work is done."
Recurring jobs for a client on autopay can start with it on, depending on your settings. One-off jobs start with it off. Under the switch, the job says if something's holding the charge up, like "Charges start once Jane Smith agrees to autopay."
While a charge is waiting, the job says when it goes ("Charged automatically tonight."), and it isn't on the list of jobs ready to invoice. When you [require a card on file](https://crewtavo.com/docs/billing/autopay/#require-a-card-on-file), a job for a client who hasn't added one shows **Card not set up** under the title.
## What's on the job page
At the top are **Add visit**, **Create invoice**, **Mark work complete** (on a one-off job) and the **⋯** menu. Under the title: the job number, its status, how often it repeats, the client, and the address (tap it for directions).
- **Visits**: the next 12, then "4 more upcoming", and **Show 9 past visits** for the rest. Each shows when it is, the crew, "overdue" in red when its day has passed, "invoiced", and any weather warning. If you schedule, click a visit to change it, or its check button (**Mark complete**) to complete it.
- **Line items**: what you're doing and charging, for the office and estimators. They can be changed while the job is **Active** or **Requires invoicing**, with **Add from price list** or **Custom item**.
- **Change orders**: extra work, priced as a quote the client approves. Start one with **⋯** then **New change order**. See [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/).
- **Plans and files**: plan sets, specs and permits. See [Upload and manage plans for a job](https://crewtavo.com/docs/jobs/plans-and-files/).
- **Materials used**: tons, gallons or loads, with ticket numbers and photos. Crews log them from the visit on their phone, and **Log material** adds one here. People who see job costs also see what they cost.
- **Expenses**: materials, dump fees, rentals and other costs, with receipt photos. **Add expense** asks for a **Category**, **Vendor**, **Amount** and **Date**. Receipts crews add from a visit land here too.
- **Sub and crew pay**: what you pay a sub, or your own people by the job. See [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/) and [Track time, breaks and where people clock in](https://crewtavo.com/docs/team/timesheets-and-pay/).
- **Invoices**: every invoice for the job. **Create invoice** offers the kinds that fit the job, like a deposit, a progress payment, the final invoice or the completed visits. See [Create an invoice and get paid](https://crewtavo.com/docs/billing/invoices/).
On the side:
- **Job costing**: the price, line item costs, labor (the hours clocked on the job at each person's **Labor cost / hr** from **Settings → People**), sub and crew pay, expenses, and the profit and margin. See [See your money and how the business is doing](https://crewtavo.com/docs/billing/finance-and-metrics/).
- **Details**: the contract amount, billing, **Autopay** (once you take it), how it repeats, the crew, PO, permit, retainage, warranty, and the quote it came from.
- **Client**: their phone number and **Directions**.
## Mark the work complete, close or archive a job
A job goes from **Active** to **Requires invoicing** to **Completed**, and can be **Archived** at any point. The **Jobs** list has tabs for **Active**, then **Late**, **Today**, **Upcoming** and **Unscheduled** (the active jobs, by when their next open visit is), **Paused**, **Requires invoicing**, **Completed** and **Archived**. It also has a search ("Search by title, client or #number"), and a menu for **One-off and recurring**, **One-off only** or **Recurring only**.
| Choose | When | What happens |
| --- | --- | --- |
| **Mark work complete** (one-off, at the top) or **⋯ → Mark work complete** (recurring) | The work's finished | "Job marked complete". It moves to **Requires invoicing** and shows "Ready to invoice." with **Create invoice**. Automations for "A job is completed" run. On a one-off job charged by autopay, Crewtavo asks first, saying when the client's card is charged, and you choose **Mark complete**. |
| **⋯ → Close job** | It's been invoiced | It moves to **Completed**. While it's in **Requires invoicing**, creating its final invoice, or the invoice for its completed visits, closes it for you. |
| **⋯ → Archive job** | You want it out of the way: the client cancelled, or you've stopped servicing them | It moves to **Archived**. Nothing is deleted, but you can't add visits or invoices until you reopen it. |
| **⋯ → Reopen job** | There's more to do | It goes back to **Active**. |
Marking the work complete doesn't complete the job's visits. Complete those from the visits list, or the crew does it on their phone.
To follow up automatically when a job is done, like a thank-you or a review request, see [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
### Ask for a review
**⋯ → Ask for a review** emails the client asking them to review you, or texts them (**Ask for a review by text**) when they have a phone number but no email address. It's there once Marketing is turned on, and greyed out when the client can't be asked: no way to reach them, they're archived, or they've opted out of review requests or marketing. A client who already left you a Google review shows **Already left a Google review** instead. It needs your Google review link first: otherwise it says "Add your Google review link in Marketing → Reviews first." See [Ask for Google reviews](https://crewtavo.com/docs/clients/reviews/).
### Delete a job
Owners, and admins and office staff whose role has **Quotes and sales**, can choose **⋯ → Delete job**. Crewtavo asks "Delete job #12?": "Its visits, line items and checklists are deleted too. Logged time and expenses are kept. This can't be undone." For a job with more than five visits, type "delete" to confirm.
- Once a job has an invoice, even a void one, **Delete job** isn't offered. Archive it instead.
- A job with pay on record for a sub or your crew can't be deleted either: "This job has pay on record for a sub or the crew. Archive the job instead, or cancel that pay first."
Source: https://crewtavo.com/docs/jobs/jobs-and-recurring-service/ (last updated 2026-11-04)
---
# Schedule visits and organize mowing routes
> Book visits of any length, see who's on each one, get directions in your maps app, and put each crew's day in the shortest driving order, by hand or for you.
The **Schedule** works like Google Calendar: drag a visit to move it, drag its bottom edge to change how long it takes, and click an open time to book one. On top of that, Crewtavo can put each crew's day in the shortest driving order, which is what lawn mowing routes need.
## Book a visit for any length
When you add or edit a visit, set **Starts** and **Ends** to any minute, like 9:00 to 9:50. The length shows under the end time. Moving the start keeps the length, as in Google Calendar.
For a recurring job (weekly mowing, say), open the job, choose **Edit details and schedule** from its menu, and set **Minutes per visit** to any whole number, like 20 or 50.
Dragging on the schedule snaps to 5 minutes, like Google Calendar's phone app. To change that, an admin opens **Settings → Schedule and routes** and picks another **Time steps**: **1 minute (exact)**, **5 minutes** or **15 minutes**. Typed times can always be any minute.
## See who's on each visit
There's one schedule for the whole business. Every visit shows the people on it: their photo if they've [added one](https://crewtavo.com/docs/getting-started/invite-your-team/#add-photos), or else their initials in the color they picked under **Settings → Profile → Color on the schedule**. You have a green ring. Visits with room also list first names, like "You, Luis".
To put people on a visit, open it, choose **Edit**, and tick them under **People**. Picking a **Crew** brings that crew's people along.
Subcontractors with a sign-in are under **Subcontractors** in the same form, for people who schedule the whole team. The visit shows on the sub's phone with the address and the work, but not your prices, and not your client's phone or email unless you allow it on their page. When a sub takes a job offer, or you agree their pay, they're put on the visits it covers for you. See [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/).
To see one person's visits, use the **Person** filter at the top (it starts on **Everyone**):
- **You**: the visits you're on.
- A person's name: the visits they're on.
- **Nobody assigned**: visits still waiting for someone. Shown to people who schedule.
Crewtavo remembers your choice on that device. Field crew (the **Employee** role) only ever see the visits they're on, so they don't get this filter. On **Day** and **Week**, **People** gives each person a row of their own instead of each crew a lane.
:::tip
On a phone, the hours on the schedule are twice as tall, so even a 30-minute visit has room for its time and name.
:::
## See everything about a visit
Click or tap a visit on the schedule to open it. You see the day and time, the address and gate code, the client and their phone number, the crew and people on it, equipment, weather holds and the instructions for the crew.
Nothing changes until you choose **Edit**, which opens the visit form. From the same view you can **Call** or **Text** the client, open the job, or get **Directions**.
## Get directions in your maps app
Tap an address or **Directions** anywhere in Crewtavo (a visit, a job, a client, or **My day** on a phone). Crewtavo asks which app to open:
- **Apple Maps** on an iPhone, iPad or Mac
- **Google Maps**
- **Waze**
- **Other app** on Android, which shows Android's own list of the maps apps on that phone
- **Copy address**
Tick **Always use this app on this device** to skip the question next time. To change it later, open **Settings → Profile** and pick under **Directions**.
:::note
A web app can't see which apps are installed on a phone, so iPhones always show the same three. If you pick one that isn't installed, its website opens instead.
:::
## Organize a crew's route
1. Open **Schedule** and switch to **Day**, with **Crews** picked.
2. In a crew's column, choose **Plan route**.
3. Crewtavo shows the crew's stops in the shortest driving order, starting from your shop, with a time for each stop. It counts how long each visit takes plus the drive between stops. You also see a small sketch of the route, the miles of driving, and when the crew will be done.
4. Choose **Save route**. The schedule shows the new times and stop numbers, and the crew sees them on **My day**. **Undo** puts everything back.
To set the order yourself, use the up and down arrows next to each stop before you save. **Use shortest route** goes back to Crewtavo's order. A day you ordered by hand is never reordered automatically.
On today's route, stops a crew has already started or finished stay as they are, and the rest are ordered from where the crew is now.
:::tip
Routes start (and end) at your shop. Add its address in **Settings → Company** if you haven't. Until then, routes start at the first stop.
:::
## Open the whole route in Apple Maps or Google Maps
Crewtavo can hand a crew's day to Apple Maps or Google Maps in one go: your shop, then every stop in order, then back to the shop.
- **On the schedule:** switch to **Day** and choose the map button at the top of a crew's column, next to **Plan route**. To open only your own stops, pick **You** under **Person** first.
- **On a phone:** open **My day** and choose **Open route in maps**.
The stops go in the order the schedule shows, so [organize the route](#organize-a-crews-route) and save it first if you want the shortest drive. Once the day is under way (a stop is **On the way**, started or done), the route starts from where you are and only has the stops still to do. Whether it ends back at the shop follows **End the day back at the shop** in **Settings → Schedule and routes**.
Crewtavo asks which app to open, with the same **Always use this app on this device** choice as directions. Waze and Android's **Other app** take one place at a time, so they aren't offered for routes, and on Android the route opens in Google Maps.
:::note
A maps app takes only so many stops from a link: 10 in Google Maps and 12 in Apple Maps. A longer day opens in parts, like **Part 1 · 8 stops** and **Part 2 · 7 stops, then the shop**. Each part starts where the last one ended, so open the next part when you finish one.
:::
:::note
Routes with stops need iOS 18.4 or macOS 15.4 or later for Apple Maps. Google Maps' website only takes a few stops on a phone, so crews who use Google Maps should install its app.
:::
### Keep a customer's time
Some customers need a set time, like a gate that opens at 9:00 or a school lot that has to be done before 7:00. Open the visit, choose **Edit**, and turn on **Fixed time**. Organizing the route keeps that time and plans the other stops around it. If a crew can't make it in time, the route says so.
For a recurring job with a set **Visit time**, turn on **Keep this time when routes are organized** in the job's **Edit details and schedule**, so every visit keeps it.
### Who can organize routes
People who schedule the whole team can organize any crew's route. A foreman (crew lead) can organize their own crew's route. Field crew see their stops in order, with times, on **My day**, but can't change the order.
## Organize routes automatically
An admin can have Crewtavo do this every day. Open **Settings → Schedule and routes** and turn on **Organize routes automatically**.
- Each crew's next 7 days are put in the shortest order once.
- A new visit added later with no set time is fitted into the route where it adds the least driving.
- A day someone ordered by hand is left alone, and so is today, since crews may be partway through it.
## Route settings
In **Settings → Schedule and routes**:
| Setting | What it does |
| --- | --- |
| **Give each stop a time** | On: each stop gets a start time. Off: stops are only numbered, and left as anytime that day. |
| **End the day back at the shop** | Counts the drive back to the shop in the miles and finish time. |
| **Average driving speed (mph)** | Used to estimate drive times. Around 25–35 mph in town. |
| **Unload and load at each stop (minutes)** | Time added between stops for trailers and mowers, on top of each visit's length. |
:::note
Drive times are estimates from the distance between addresses, so no map account or key is needed. A stop whose address can't be found on the map goes last, with a note to check the address on the client.
:::
Source: https://crewtavo.com/docs/jobs/schedule-and-routes/ (last updated 2026-11-04)
---
# Run the schedule day to day
> Switch between Day, Week, Month, List and Map, show one crew or person, drag visits on and off the Unscheduled list, book multi-day work, find an open time, spot double bookings, move a rain day, and act on weather warnings.
The **Schedule** (calendar, dispatch board) is where you book and move the team's work. This page covers the everyday jobs on it. For how long a visit takes, who's on it, **Fixed time** and organizing routes, see [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
## Who can change the schedule
Everyone on your team sees **Schedule**. What they can change depends on their role:
- Owners, and admins, office staff, estimators and crew leads whose role has **Schedule the whole team**, can add, move and change any visit.
- **Crew leads without it**, like the starter **Foreman** role, see the whole schedule but only change their own crews' visits: the crews they're on.
- **Field crew** only see the visits they're on, and can't move them.
Subcontractors see their own visits on **My day** instead. See [Your jobs and paperwork as a subcontractor](https://crewtavo.com/docs/field/subcontractor-guide/).
## Day, Week, Month, List and Map
Pick **Day**, **Week**, **Month**, **List** or **Map** at the top right. Use the arrows to go back and forward, and **Today** to come back. Crewtavo remembers your view on each device, and starts phones on **Day**.
- **Day** has a column (a lane) for each crew, plus **No crew** for visits without one. From today on, a lane has **Plan route** and a map button for that crew's day.
- **Week** runs Monday to Sunday. Click a day's heading to open it in **Day**.
- **Month** shows up to three visits a day, then "+2 more". Click a date to open it in **Day**.
- **List** lists the visits day by day. **Range** picks a day, a week or a month.
- **Map** shows a day's visits as numbered pins. Visits with no map location yet are listed under it.
On **Day** and **Week**, **Crews** and **People** switch between a lane for each crew and a row for each person, plus **Nobody assigned**. A business with no crews starts on **People**.
Visits with no set time sit in the **Anytime** row above the hours. Each visit has its crew's color, and **Week** and **Month** show which color is which crew. On **Day** and **Week**, a task or event has a dashed edge.
Changes other people make, like a crew finishing a visit, show up within about 20 seconds.
### Show one crew or one person
- **Crew** (when you have more than one crew) shows one crew's visits. In **Day** you then see just that crew's lane.
- **Person** (it starts on **Everyone**) shows your own visits (**You**), one person's, or **Nobody assigned**. See [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
A crew hidden in **Settings → Crews** has no lane, and its visits show under **No crew**. See [Set up crews and checklists](https://crewtavo.com/docs/jobs/crews-and-checklists/).
## Add a visit, task or event
1. Choose **New visit** at the top right. Or click an open time on the calendar (it books an hour from there, in that crew's lane on **Day**), or **+** in an empty spot of the **Anytime** row.
2. Pick what it is:
| Type | What it's for |
| --- | --- |
| **Visit for a job** | Work on a job. Search for the job ("Search by job, client or number"); its title and crew fill in. |
| **Assessment** | A look at a site before you quote. For a request, book it from the request instead, so the request shows it's booked. See [Take a request and book an assessment](https://crewtavo.com/docs/sales/requests/). |
| **Task** | Anything else the team does, like dropping off an estimate or a supply run. |
| **Event** | A meeting, training or anything else on the calendar. |
3. Fill in the **Title**, **Date**, **Starts** and **Ends**, or turn on **Anytime that day**.
4. Pick the **Crew** and **Status**, tick the **People** and any **Equipment**, and add **Instructions for the crew** if there are any.
5. Choose **Schedule**.
You can also add a visit from a job with **Add visit**, or from **Create** with **Visit or task**. Times are in your company's time zone, which the form shows at the bottom. Only visits for a job count toward the job's invoices.
### Work that takes several days
When you add a visit, **How many days** (up to 14) turns it into one visit per day, linked together, each at the same time with the same people and equipment. The hint under it lists the days. **Skip weekends** is on to start with.
On the schedule each day shows "day 2/5", and each one is started and completed on its own. If you change day 2's date in its form, **Also move days 3–5 by the same amount** (ticked to start with) moves the days after it onto the next work days, keeping their times. Dragging a day on the calendar moves only that day.
### Find an open time
In the visit form, with **Anytime that day** off, set how long the visit takes and pick the crew, then choose **Find a time**. Crewtavo lists up to 10 open times in the next 7 days, from the visit's date, within your workday (**Workday starts** and **Workday ends** in **Settings → Company**). It counts the crew's other visits and busy time on their calendars. With no crew picked, it counts everyone's visits.
Click a time to use it. If nothing fits, it says "No open slots in the next 7 days during working hours."
## Drag visits to move them
- Drag a visit to another time or day. On **Day**, drag it into another crew's lane to give it to that crew.
- Drag its bottom edge to change how long it takes.
- Drag it into the **Anytime** row to take its time off.
- On **Month**, drag it to another day. It keeps its time.
Each change shows a message with **Undo**. On a phone or tablet, press and hold for a moment before you drag, so a normal swipe still scrolls.
Visits that are completed or cancelled don't move, and you can only drag visits you're allowed to change. A visit you move to another day leaves its place in the route, and loses any weather warning until the new day is checked.
## The Unscheduled list
**Unscheduled** holds visits that don't have a date yet. The list opens by itself when something's waiting, unless you've hidden it with **×**. While it's hidden, **Show unscheduled** at the top brings it back, with a count of what's waiting.
- Drag a visit from the list onto the calendar to schedule it.
- Drag a visit from the calendar onto the list to take it off the calendar. Its date and time are cleared.
- To add one straight to the list, set **Status** to **Unscheduled (no date yet)** in the visit form and choose **Add to unscheduled**.
## Double bookings
A visit gets a red outline when its crew is booked twice at once. Point at it to see why:
- "This crew is booked for another visit at the same time"
- "This crew's calendar shows them busy at this time" (from a calendar you connected for that crew)
Only visits with a set time are checked, and not ones that are completed or cancelled. It checks crews, not people, so someone on two crews' visits at the same time isn't flagged.
For equipment, the visit form warns when a machine is already out, like "Skid steer is also booked on Lot repair (9:00 AM–1:00 PM)." Equipment that's in the shop shows "(in the shop)" and can't be picked.
Neither stops you saving. They're there so you can fix it.
## Open, change or delete a visit
Click a visit to see everything about it. **Edit** opens the form, if you can change the visit.
From there, owners, admins, office staff and estimators get **Open job**, which opens the job's page. Crew leads and field crew get **Open visit**, the visit's own page with its checklist, photos, materials and notes. The office sees the checklists the crew filled in on the visit's form (**Edit**), and on the job's page under **Checklists**, with the visit photos under **Photos**.
In the form:
- **Status**: **Scheduled**, **On the way**, **In progress**, **Completed**, **Cancelled** or **Unscheduled (no date yet)**. You can also complete a visit with its check button on the job page.
- **Delete** asks "Delete this visit?" ("Time logged against it is kept.") and **Delete visit** removes it. A visit you delete from a recurring job stays deleted. To keep a record that it was called off, set it to **Cancelled** instead.
People on a visit hear when they're added to it or taken off, or when it's moved or cancelled. See [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
## Move a rain day
1. Choose **⋯** (**More scheduling tools**) next to **New visit**, then **Rain day: move a day's visits**.
2. Pick the day to move **From**, the day to move **To**, and the **Crew**, or **All crews**.
3. Choose **Move visits**.
Every visit on that day that isn't completed or cancelled moves, keeping its start time and length. Anytime visits stay anytime. Weather warnings on them are cleared. Crewtavo says "Moved 12 visits to Thu, Oct 30", or "No open visits on that day".
A crew lead without **Schedule the whole team** moves their own crew's day only.
:::caution
There's no undo for a rain day. Moving the visits back the same way also moves anything that was already booked on that day. The later days of a multi-day job don't move with it either.
:::
## Add a visit to many jobs
For a snow day or storm cleanup:
1. Choose **⋯** (**More scheduling tools**), then **Add a visit to many jobs**.
2. Pick the **Date**, and a **Crew** or **Each job's default crew**.
3. Tick the jobs (**Filter jobs** narrows the list, **Select all** ticks them all). Only active jobs are listed.
4. Choose **Add 14 visits**.
Each job gets an anytime visit on that day, named after the job. It's there for people with **Schedule the whole team**.
## Weather warnings
Crewtavo checks the forecast for visits today and the next two days, every six hours, against your trade's weather rules. When a visit's weather is a problem, it says why, like "Weather: Weekly mow: 80% chance of rain":
- On the visit on the schedule (with ⚠), in its details, and on the job page.
- On **Home**, under today's visits and in **Needs attention** as "Weather hold: …".
- On the crew's **My day** and on the visit.
**Nothing moves on its own.** You decide: drag the visit, or move the whole day with a rain day. Moving a visit to another day clears its warning, and the new day is checked next time. If the forecast gets better, the warning goes away at the next check.
The rules come with your trade preset. To add, change or delete them, open **Settings → Weather rules** (owners, and admins and office staff whose role has **Price list, checklists, crews and booking forms**). Each rule is for a price list item, or **Every job**, with limits for rain, temperature, wind or dry hours. Each trade starts with these:
| Trade | Rules |
| --- | --- |
| **Lawn & Exterior Maintenance** | **Weekly mow** above a 70% chance of rain. **House power wash** when the low is under 40°F. |
| **Paving & Sitework** | **Hot-mix asphalt surface** when the low is under 50°F or above a 40% chance of rain. **Sealcoat** when the low is under 50°F, or when rain is likely in its 24-hour dry time. |
| **Roofing & Exteriors** | **Architectural shingle roof** and **Standing-seam metal roof** above a 40% chance of rain. |
| **Landscaping & Hardscaping** | **Paver patio** above a 50% chance of rain, or when rain is likely in its 24-hour dry time. **Block retaining wall** above a 60% chance of rain. |
| **Pest Control** | **Mosquito yard treatment** above a 50% chance of rain. |
| Every other trade | None to start with. |
A visit isn't checked when:
- It's not on a job, like a task, an event or an assessment for a request.
- The job has none of the items your rules are for. Rules follow their item, so renaming **Weekly mow** in your price list keeps its rule.
- Its property isn't on the map yet (the client's page says "Not on the map yet").
- It's already **On the way** or **In progress**.
The forecast comes from Open-Meteo, so there's nothing to set up. If it can't be reached, warnings stay as they were until the next check.
## Events from your other calendars
If you've connected Google Calendar or another calendar, its events show on the schedule in that calendar's color, so nobody books over a supplier meeting or a day off. On **Day**, a crew's own calendar shows in its lane. **Hide calendars** hides them, and **Show calendars** brings them back.
Click an event to see it. **Open in its calendar** opens it there, and **Add to schedule** starts a new visit with the event's time and details. Change the event in its own calendar: the schedule catches up within 15 minutes. See [Google Calendar and other calendars](https://crewtavo.com/docs/connections/google-calendar/).
Source: https://crewtavo.com/docs/jobs/run-the-schedule/ (last updated 2026-11-04)
---
# Set up crews and checklists
> Group your people into crews (teams) with a color for the schedule, and build the checklists crews fill in on a visit, with checkboxes, numbers, choices, photos and signatures.
Crews (teams) group the people who work together, so you can book a visit to "Mowing crew 2" instead of ticking four names every time. Checklists are the forms a crew fills in on a visit: a quality check, safety steps, a sign-off from the client. Both are under **Settings**, in the **Team** group.
## Who can set them up
Owners, and admins and office staff whose role has **Price list, checklists, crews and booking forms**, see **Settings → Crews** and **Settings → Checklists**. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## Add a crew
1. Open **Settings → Crews**.
2. Type the crew's name in the box ("New crew name, e.g. Mowing crew 2") and choose **Add crew**. It gets a color of its own.
3. On the crew's card, tick the people on it. Everyone on your team is listed, with their role. Someone can be on more than one crew.
Changes save as you make them. To rename a crew, click its name, type, and click away. To change its color, click the color square next to the name.
If nobody's listed, invite your team first under **Settings → People**. See [Invite your team and set roles](https://crewtavo.com/docs/getting-started/invite-your-team/).
## What crews do
- **The schedule:** on **Day**, each crew has its own lane, and every visit has its crew's color. The **Crew** filter shows one crew at a time. See [Run the schedule day to day](https://crewtavo.com/docs/jobs/run-the-schedule/).
- **Visits:** picking a **Crew** on a visit ticks its people under **People**, if nobody's been picked yet.
- **Jobs:** a job's **Default crew** gets the job's new visits, including every visit of a recurring service. See [Create a job or recurring service](https://crewtavo.com/docs/jobs/jobs-and-recurring-service/).
- **Routes:** each crew's day is put in driving order on its own. See [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
- **Crew leads:** someone with the **Crew lead** access level (like the starter **Foreman** role) schedules and staffs the crews they're on, and approves their crew's time on **Timesheets** if their role has **Approve timesheets (crew leads: their crew's)**. They see their crew's visits on **My day**.
- **Equipment:** a machine given to a crew shows on its people's **My day**. See [Track equipment and maintenance](https://crewtavo.com/docs/jobs/equipment/).
- **Team chat:** if you've installed Team chat, each crew has its own channel, and a crew you add later gets one too. See [Talk to your team with Team chat](https://crewtavo.com/docs/connections/team-chat/).
:::caution
Field crew (the **Employee** role) only see visits they're on under **People**, not every visit for their crew. Picking the crew in the visit form ticks its people for you. But a recurring job's visits, and visits from **Add a visit to many jobs**, only get the crew, so tick the people on them too, or your field crew won't see them.
:::
## Hide or delete a crew
Open the **⋯** menu on the crew's card:
- **Hide from the schedule** takes the crew's lane off the schedule and out of the crew pickers, for a crew you only use in summer, say. Its visits show under **No crew**, and its card is faded. **Show on the schedule** brings it back.
- **Delete crew** asks "Delete Mowing crew 2?": "Visits assigned to this crew keep their people but lose the crew." Jobs that had it as their **Default crew**, and equipment given to it, lose it too.
## Build a checklist
Your trade preset starts you with a checklist or two, like "Weekly mow standard". To make your own:
1. Open **Settings → Checklists** and choose **New checklist**. It starts with one item, "Work completed as described".
2. Give it a **Checklist name**. Under **Use on jobs with** (optional), add the price list items it goes with: it then comes up by itself on visits for jobs with any of them. With none, crews can pick it on any job.
3. For each item, type what the crew should check or record, and pick its type:
| Type | What the crew does |
| --- | --- |
| **Checkbox** | Ticks it. |
| **Text** | Types a few words. |
| **Number** | Types a number, like a depth or a reading. |
| **Choice** | Picks one answer. Type the answers under it, separated by commas (it starts with "Yes, No"). |
| **Photo** | Takes photos with the item's **Add photos** button. They're saved with the visit's photos. |
| **Signature** | Has the person sign with their finger and type their printed name. |
4. Tick **Required** on the items that have to be filled in before the checklist can be marked done.
5. Use the arrows (**Move up**, **Move down**) to change the order, the bin (**Remove item**) to take one out, and **Add item** for more, up to 60.
6. Choose **Save checklist**. **Discard changes** puts it back the way it was.
**Crews can use this checklist** decides whether crews see it. Turn it off (and choose **Save checklist**) for one you're still writing, and it's listed as "hidden".
:::note
A **Photo** item isn't a check: it's never counted as missing, even when it's **Required**. The photos go under **Photos** on the visit.
:::
## How a checklist gets onto a visit
Every visit shows a checklist when at least one has **Crews can use this checklist** on:
- A checklist whose **Use on jobs with** items are on the visit's job comes up by itself, under its own name. A visit can have more than one.
- The crew can pick one more from the rest under **Choose a checklist…** (on a card called **Another checklist** when some came up by themselves). With just one checklist on, and none that came up by itself, it's already picked.
Checklists are filled in fresh on each visit, so a weekly mowing job gets new ones every week. The crew's side is in [Your day in the field](https://crewtavo.com/docs/field/your-day-in-the-field/): answers save themselves as the crew goes, and **Complete visit** marks the checklist done once every required item is filled in. **Mark done** only shows once they are, and not while the visit is in progress. It works with no signal and sends later.
Anyone working the visit can fill it in: the people on it and the people on its crew. Once it's done it's locked, and a crew lead can choose **Reopen checklist** to change it.
### If the crew completes the visit first
While required items are empty, **Complete visit** shows how many are left, like "2 required left". The first tap takes the crew to the first one. Tapped again, Crewtavo asks "The checklist isn't done", listing what's still needed: "The office will see the checklist is unfinished." **Complete anyway** completes the visit and leaves the checklist as it is, not done. **Keep working** goes back to it. If no checklist is picked, there's no question.
### Where to see the answers
Crew leads and field crew see the answers, and the visit's photos, on the visit's own page. They open it from a visit on the schedule with **Open visit**, or from **My day**.
Owners, admins, office staff and estimators get **Open job** there instead. The job's page lists every checklist filled in on its visits under **Checklists**, each with its visit, who filled it in, and **Done** or **Unfinished**, and the visit photos under **Photos**. A visit's own checklists are also in its form on the schedule (**Edit**).
## Change or delete a checklist
A change shows on every visit that uses the checklist, including ones already filled in: an item you remove no longer shows its answer there. Choose **Delete** to remove a checklist: "Checklists already filled in on visits are kept."
:::caution
A visit only shows checklists that are on now. If you turn off **Crews can use this checklist** or delete a checklist, the answers already given on it stop showing on those visits.
:::
Source: https://crewtavo.com/docs/jobs/crews-and-checklists/ (last updated 2026-11-04)
---
# Upload and manage plans for a job
> Keep plan sets, specs and permits on requests, quotes, jobs and properties, open and mark them up in Crewtavo, replace sheets with new versions, and lay a site plan over the map to measure on.
**Plans and files** holds the plan sets, specs, permits and addenda that come with a job: a general contractor's drawings, a city's work order, a bid package. Each file is kept on the request, quote or job and on the property, so next year's sealcoat or restripe at the same lot already has the striping plan.
With [Drive](https://crewtavo.com/docs/connections/drive/) installed, every one of these files also shows in **Drive**, under **Clients**, next to your company's own folders.
## Add plans
Open a request, a quote, a job or a client and find **Plans and files**. Choose **Add files**, or drag files onto the card. PDFs and pictures of plans are the usual ones, but any file works, up to 200 MB each.
- **On a request:** files the client sent with the request, or ones you add. They go on the quote you make from the request (and on the job if you convert the request straight to a job).
- **On a quote:** add the bid documents. When the quote becomes a job, its files go on the job too. A change order's files go on the job once the change order is approved.
- **On a job:** add plan sheets, specs or permits for the work.
- **On a client:** files kept with one of their properties. With more than one property, **Add files** asks which one.
Each file is named after its file name. Choose **⋯** then **Edit details** to rename it, add the **Revision** printed on the plans (like "Rev B" or "Issued for construction"), or leave **Notes for the crew** such as which sheets are for paving.
A job also shows the files kept with its property from earlier work, under **At this property**.
Files go up in small pieces, so a big plan set gets through on a slow or patchy connection, and carries on where it stopped if the connection drops. You can move on to another screen while it uploads. Its progress shows at the bottom of the screen: press it to see each file, with **Cancel**.
## Open and mark up files
Choose a file, or **Open** in its **⋯** menu, to see it in Crewtavo. PDFs, Word documents (.docx) and pictures open right there. Anything else can be downloaded.
To mark up a PDF or fill in its form, or to change a Word document, choose **Edit** in the file's menu. The office and crew leads can edit. PDFs get **Highlight**, **Text** and **Draw**. When you're done, choose **Save as new version**. The edit becomes the current version and the one you opened is kept underneath it, so nothing is ever written over.
## Let clients send plans with a request
A general contractor or a city can attach their plan set when they ask for a bid. Add a question for it to a booking form:
1. Open **Settings → Online booking**, then a form's **⋯** menu and **Edit form**.
2. Choose **Add question**, name it (for example "Site plans, if you have them") and pick **Files (plans, PDFs)** as the answer type. **Photos** takes pictures only.
3. Choose **Save form**.
The form then has an **Add files** button (or **Add photos**), and people can drop files on it too: up to 10 files a request, 200 MB each. The request goes in first, then the files upload while the page shows how far along they are. If a file doesn't come through, the request still does, and the page asks them to email that file instead.
The files show on the request under **Plans and files**, and the request's answers list which files came with each question.
## New versions
When the general contractor sends revised sheets, open the file's **⋯** menu and choose **Upload a new version**. The new file becomes the current one and the old one is kept underneath it: choose **older versions** to open or download it.
Crews only ever see the current version, so nobody paves to an old set. If you upload a version by mistake, choose **Move this version to Trash** in the file's menu, and the version before it becomes the current one again.
:::tip
Everyone on an upcoming visit for the job is told when a new file or version is added, in their schedule notifications.
:::
## Who sees what
- **The office** (owners, admins, office staff and estimators) sees every file and every version.
- **Crew leads** see the current files marked for the crew, and can add files, new versions and edits from the job.
- **Crews** see the current files marked for the crew on the jobs and properties they have visits at, including a request's files when they're on its assessment visit.
To keep a file from the crew, like a bid form with your prices on it, choose **⋯** then **Make it office only**. **Archive** puts away a file nobody needs anymore without deleting it.
## Delete a file
Choose **⋯** then **Move to Trash**. The file goes to the Trash with all its versions. If the crew could see it, they stop seeing it straight away. **Undo** in the message puts it back. After that, anyone who can see it in the Trash can restore it for 30 days. See [The Trash](https://crewtavo.com/docs/connections/drive/#the-trash).
The office can move any file to the Trash. A crew lead can move a file they added while it has just one version, or take back a version they added with **Move this version to Trash**.
## On the crew's phone
A visit shows its **Plans** under the work to do. **Open** shows the plan in Crewtavo on the phone, and the download button saves it to the phone, so it can be opened at a site with no signal from the phone's Files or Downloads.
## Put a plan on the map
On a new site, the aerial picture still shows a field or the old building, so there's nothing to measure. Lay the site plan over the map instead and draw on it:
1. From the file's **⋯** menu, choose **Put on the map**. Or open **Measure** from the property or quote and pick a plan under **Plan on the map**. For a PDF with several sheets, choose the **Page**.
2. Line it up. **Measure** walks you through four taps: a spot on the plan you can also find on the aerial, like a building corner, curb corner or the end of a drive; the same spot on the aerial; then a second spot far from the first, on the plan and on the aerial.
3. Check the scale. Crewtavo shows the scale the plan lined up at, like "Lined up at 1 in = 30 ft". It should match the scale printed on the plan. If it's off, choose **Line it up again** with spots farther apart.
4. Draw with **Area**, **Line** and **Count** as usual. Sizes come from the map, so they're right once the plan is lined up.
**See-through** fades the plan. **Show the white paper** turned off shows just the plan's lines on the aerial. The plan and where it lines up are saved with the drawing, and the picture saved with it shows the plan too.
## Large files
Each file can be up to 200 MB. A file bigger than your Crewtavo accepts shows a message saying so. Because files go up in pieces, a proxy in front of your Crewtavo that caps a request at 100 MB, like Cloudflare's free plan, doesn't stop a big plan set. Big plan sets are often easier to work with split into a few smaller PDFs, and most PDF readers can save a range of pages as their own file.
Crewtavo instances set up before October 2026 accept files up to 50 MB. On Railway, an owner or admin who adds a file that's too big sees **Raise the limit** in the message. Choose it, then **Raise to 200 MB**: Crewtavo changes the setting on Railway for you and restarts file storage, which takes about a minute. It needs Crewtavo's connection to Railway; if that isn't set up, the button says to connect it first under **Settings → Web address** (one press of **Allow** on Railway).
To do it by hand on Railway instead:
1. Open your Crewtavo project on Railway and choose the **storage** service.
2. Open **Variables**, and set `FILE_SIZE_LIMIT` to `209715200`.
3. Choose **Deploy** to apply the change. Storage restarts in under a minute.
With Docker, update your copy of Crewtavo and run `npm run instance` again: the new limit comes with it.
:::note
Files share space with photos and receipts. On Railway's Hobby plan, the file storage volume holds 5 GB; the Pro plan starts at 50 GB. A Railway bucket has no size to outgrow and costs a tenth as much, and Crewtavo can move your files there for you. When your company's storage limit is reached, new plan files are turned away until there's room, but crews' visit photos and receipts always go through. See [Manage storage space](https://crewtavo.com/docs/hosting/storage/).
:::
Source: https://crewtavo.com/docs/jobs/plans-and-files/ (last updated 2026-11-02)
---
# Track equipment and maintenance
> Keep a list of your trucks, mowers, machines and tools, set maintenance schedules by engine hours, miles or dates, and let crews log hours and mark service done from their phone. Crewtavo tells you when maintenance is coming due.
**Equipment** (fleet maintenance) keeps track of your trucks, trailers, mowers, machines and tools: what maintenance each one needs next, its hours or miles, and every service, repair and receipt. Crews log hours and mark service done from their phone, and Crewtavo tells the people who look after the equipment when something's coming due.
## Who can do what
- Everyone on your team sees **Equipment** and can log work on any machine: hours or miles, maintenance, repairs and notes. They can delete their own entries.
- Owners, and admins, office staff, estimators and crew leads whose role has **Manage equipment and maintenance**, add, change, retire and delete equipment and its maintenance schedules, and can delete anyone's entries. Office staff, estimators and crew leads have it to start with, and so does the starter **Foreman** role.
- What equipment costs (the price paid and upkeep) is only for owners, and admins and office staff whose role has **Job costs and profit**.
Subcontractors don't see your equipment. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## Add equipment
1. Open **Equipment** and choose **Add equipment**.
2. Give it a **Name**: what the crew calls it, like "Truck 2" or "Skid steer".
3. Pick its **Type**: **Truck or vehicle**, **Trailer**, **Mower**, **Machine**, **Small tool** or **Other**.
4. Check what it **Tracks**: **Engine hours**, **Miles** or **Dates only**. The type picks one for you (miles for a truck, hours for a mower or machine, dates only for the rest), and you can change it.
5. Type the **Hour meter now** or **Odometer now**, if you know it.
6. Pick a **Crew**, or leave **No crew (shared)**.
7. Under **Maintenance to track**, tick the starter schedules you want. They're "Counted from today", at the reading you typed. Change them to match the manual any time.
8. Open **Make, model, serial and notes** for the **Make**, **Model**, **Year**, serial number (or VIN), **Plate** for trucks and trailers, **Bought on**, **Price paid** (only people who see job costs see it), **Notes** (oil type, filter part numbers, where the keys are) and **Add a photo**.
9. Choose **Add equipment**.
The starter schedules for each type:
| Type | Starter maintenance |
| --- | --- |
| **Truck or vehicle** | **Oil change** every 5,000 miles or 6 months, **Rotate tires** every 7,500 miles, **Inspection and registration** every year |
| **Trailer** | **Check tires, lights and brakes** every 3 months, **Grease wheel bearings** every year |
| **Mower** | **Oil and filter** every 100 hours or 1 year, **Sharpen blades** every 25 hours, **Grease fittings** every 50 hours, **Air filter** every 200 hours |
| **Machine** | **Engine oil and filter** every 250 hours, **Grease fittings** every 10 hours, **Hydraulic filter** every 500 hours |
| **Small tool** | **Tune-up** every year |
On a machine that tracks **Dates only**, a starter schedule that only counts hours or miles becomes once a year.
## Set up maintenance schedules
A schedule is one job that comes due again and again, like an oil change. On the machine's page, choose **Add schedule** under **Maintenance** (or **⋯ → Add maintenance schedule**):
1. Pick a starter one from the buttons at the top, or type **What's done**.
2. Set how often:
- **Every so many hours** (or miles): for machines that track them.
- **Or every** so many **days**, **weeks**, **months** or **years**.
Fill in one or both. With both, it's due at "whichever comes first", like "Every 100 hours or 1 year".
3. **Last done**: the date it was last done, and the reading then, so Crewtavo knows when it's next due. It's only asked until the first time it's logged.
4. Add **Notes** (parts, fluids, steps) if you like, then choose **Add schedule**.
Each schedule shows how often it's due, when it was last done, and when it's next due, like "Due in 5 days", "Due in 40 hours", "Due today" or "3 days overdue". It turns to **Due soon** in the last quarter of the time (at most 14 days before) or the last 10% of the hours or miles, and to **Overdue** once the date or reading passes.
A schedule's **⋯** menu has **Edit schedule**, **Pause** and **Remove**. Paused schedules are listed at the bottom with **Turn back on**. Removing one keeps its past maintenance in the history.
## Log work
On the machine's page:
- **Log hours** (or **Log miles**) saves a new hour meter or odometer reading.
- **Log work** marks maintenance done. **Done** next to a schedule does the same with that schedule picked. Pick **What was done**, or **Something else** and type it.
- **⋯ → Log a repair** records something you fixed, like "Replaced deck belt".
- **⋯ → Add a note**, like "Pulls left, check tire pressure".
Each has a **Date**, the reading (for maintenance and repairs it starts at the last one), and **Notes**. For maintenance and repairs, **Add what it cost** takes the **Cost**, **Where** it was done or bought, a receipt photo, and **I paid with my own money (reimburse me)**. The cost goes in as an "Equipment upkeep" expense. Choose **Mark done** (or **Save**).
Logging maintenance starts that schedule's countdown again from that day and reading. A reading lower than the last one asks first: "Save it anyway? Only if the meter was replaced or the last reading was wrong."
Everything shows under **History**, newest first, with who logged it, and what it cost for people who see costs. To take one back, choose **⋯ → Delete entry** on it. Deleting a maintenance entry puts its schedule back to when it was last done before.
## For the crew: Your equipment on My day
Equipment given to a crew shows on **My day** for the people on that crew, under **Your equipment**: each machine's reading and what's due next, with **Due soon** or **Overdue** when it's close.
- Tap **Hours** (or **Miles**), type the reading and choose **Save**. A quick reading at the end of the day keeps the hours-based schedules right.
- Tap **Done** when you've done the maintenance that's due, then **Mark done**.
- **All equipment** opens the full list.
Crews can also open any machine from **Equipment** to log a repair or add a note. See [Your day in the field](https://crewtavo.com/docs/field/your-day-in-the-field/).
## In the shop, back in service, retired
From the machine's **⋯** menu:
- **Mark in the shop** while it's being fixed. Its page says "In the shop. Crews know not to count on it.", and it can't be put on new visits.
- **Back in service** when it's ready again.
- **Retire** when it's sold or scrapped: "Its history stays and its maintenance stops coming due." It moves to the **Retired** tab, and **Back in service** brings it back.
- **Delete** removes it with its history: "To keep the history, retire it instead."
## Put equipment on a visit
People who schedule can tick **Equipment** in a visit's form, so the crew sees it under **Bring** on the visit. If a machine is already booked on another visit at the same time, the form says so. See [Run the schedule day to day](https://crewtavo.com/docs/jobs/run-the-schedule/).
## Find what needs maintenance
- **Equipment** lists everything with its crew (or **Shared**), its reading and its next maintenance. The tabs are **In use**, **Needs maintenance**, **In the shop** and **Retired**, and you can search by name, make, serial or crew. When something's overdue it says "2 machines are overdue for maintenance." with **Show them**.
- **Home** lists overdue and coming-due maintenance under **Needs attention**, for the people who manage equipment.
- **Cost to own**, on a machine's page, adds the price paid and the upkeep logged, for those who see equipment costs.
## Maintenance notifications
When a schedule comes due, Crewtavo sends a notification once, like "Oil change is coming due on Truck 2", with when it's due ("Due Nov 4 or at 5,000 miles"). It sends another if it goes overdue. It checks every hour.
They go to owners, and admins, office staff and estimators whose role has **Manage equipment and maintenance**, and to crew leads with it who are on the crew that has the machine. Logging the maintenance starts it over.
They're in the bell, and pushed to your phone unless you turn it off. To get them by email or text too, or to stop them, choose **Equipment maintenance** under **Notifications** in **Settings → Profile**. See [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
Source: https://crewtavo.com/docs/jobs/equipment/ (last updated 2026-10-28)
---
# Your day in the field: My day and working a visit
> For crews on a phone. My day lists your visits in order. Tap On my way, Start visit and Complete visit as you go, and fill in the checklist, materials, photos and notes on each visit. It all works with no signal too.
This page is for crew leads and field crew. It covers your day in Crewtavo on your phone: where your visits are, what each button does, and what to fill in on the job. Subcontractors, see [Your jobs and paperwork as a subcontractor](https://crewtavo.com/docs/field/subcontractor-guide/) too.
## Get Crewtavo on your phone
1. Your office invites you by email. Open the email on your phone and tap the link.
2. On **Set your password**, type a password (at least 8 characters) twice and tap **Save password**.
3. Crewtavo opens on **Home**.
The invite link works once, within a day. If it has run out, ask the office to send a new one. To sign in later, see [Sign in, reset a password and get back in](https://crewtavo.com/docs/team/sign-in/).
:::tip
Set a password even though **Skip for now** is there. On an iPhone, Crewtavo on your Home Screen keeps its own sign-in, separate from Safari's, and a password is the easy way in there.
:::
Next, put Crewtavo on your Home Screen and turn on notifications, so you hear when your schedule changes. On **Home** and **My day**, a card shows how: **Add Crewtavo to your Home Screen** on an iPhone, or **Get the Crewtavo app**, with an **Install the app** button, on Android. The full steps are in [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
## Home and My day
At the bottom of your phone you'll see **Home**, **My day**, **Schedule**, **Clients** and **More** (and **Chat**, if your business uses team chat).
- **Home** shows today's appointments and how many are complete. Its **My day** button takes you to your day.
- **My day** is where you work. It shows only your visits for today, in order, with a button for each step, plus your clock.
Tap any visit on either screen to open it.
## Your clock
The clock sits at the top of **My day**. It says **Clock is off**, or what you're on and for how long ("Clock running · 1h 05m").
- **Start timer** clocks you in. Pick **Driving**, **Shop time**, **On break**, **Other work**, or a visit that's under way.
- **Switch** moves the clock to something else without stopping it, like back onto a visit after a break.
- **Stop** clocks you out.
You don't have to use the clock for visits: **Start visit** clocks you onto a visit, and **Complete visit** clocks you off it. If your office keeps track of where people clock in, your clock says "Clocking in and out saves where you are, for the office." The first time, your phone asks to share your location. If you say no, the clock still works.
### Crew clock (crew leads)
A crew lead with two or more people sees a **Crew clock** card under their own clock. **Clock everyone in** puts the whole crew on a visit, **Driving** or **Shop time** in one tap. **Switch** moves everyone at once, like **On break** for lunch, and **Clock everyone out** stops everyone's clock. Each row has buttons to clock one person in (**In**) or out.
For breaks, approvals and pay, see [Track time, breaks and where people clock in](https://crewtavo.com/docs/team/timesheets-and-pay/).
## Your visits on My day
Each visit is a card. The labels at the top tell you about it:
| You see | What it means |
| --- | --- |
| **Stop 3** | Its place in today's order. The office or your crew lead set the order. |
| **8:00 AM** | The time it starts. |
| **Anytime** | No set time. Fit it in during the day. |
| **Day 2 of 3** | A job that runs over several days. This is the second. |
| **Assessment**, **Task** or **Event** | It's not a regular job visit. |
| **Scheduled**, **On the way**, **In progress** | Where the visit stands. |
| "Weather: …" | Crewtavo flagged the weather for this visit from the forecast, with the reason. |
The visit you're working on has a green outline. Below the visit name are the client and the street address.
Under each card:
- **Directions** opens the address in your maps app.
- **On my way**, **Start visit** or **Complete visit**, depending on where the visit stands (see below).
More on **My day**:
- **Open route in maps** (when you have two or more stops) opens all of today's stops in Apple Maps or Google Maps, in order. A long day opens in parts: open the next part when you finish one. See [Open the whole route](https://crewtavo.com/docs/jobs/schedule-and-routes/#open-the-whole-route-in-apple-maps-or-google-maps).
- The green bar fills up as you finish visits.
- **Done today (3)** lists the visits you've finished. Tap it to show them.
- **Tomorrow** lists tomorrow's visits, so you know what to load up.
- **Your equipment** lists the trucks and machines your crew has, with what's due. Tap **Hours** (or **Miles**) to log a reading, or **Done** when you've done the maintenance. See [Track equipment and maintenance](https://crewtavo.com/docs/jobs/equipment/).
If there's nothing for you, you'll see "Nothing assigned to you today". Ask the office if that's wrong.
## On my way, Start visit, Complete visit
Tap these as you go. Each one tells the office where you are on the schedule.
1. **On my way** when you leave for the visit. You'll see "On your way".
2. **Start visit** when you get there. Your clock starts on the visit: "Visit started, your clock is running".
3. **Complete visit** when you're done. Your clock stops: "Visit completed".
You can tap **Start visit** without tapping **On my way** first. The visit screen has the same buttons.
:::note[Does On my way text the client?]
Only if your office turned on the automation **Text the client when the crew is on the way**. It starts off. When it's on, the client gets a text like "Our crew is on the way to 12 Oak St now." Tapping **Start visit** without **On my way** sends no text. See [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
:::
If a crewmate already started or finished the visit, your tap still counts for your own clock: "Your crew already moved this visit on, your time is saved". If the office cancelled it, you'll see "The office cancelled this visit."
Steps only go forward. If you tapped **Complete visit** too early, ask the office to change it back.
## On the visit screen
Tap a visit to open everything about it. From the top:
- **Its status and time**, **Day 2 of 3** for a job over several days, and **You: 1h 05m**, the time you've been clocked onto this visit.
- **On my way**, **Start visit** or **Complete visit**.
- **Call** and **Text** call or text the client, when there's a phone number.
- **Directions**. Tapping the address does the same.
- **Gate code**, **Lockbox** and **Alarm** codes, and how to get in, under the client's name and address. Notes about the property show here too.
- **Instructions**: what the office wrote on the job, or what the client asked for on an assessment.
- **The work**: what you're doing, with quantities and notes. No prices. On a one-off job, **Add work** adds extra work or a part from the price list: pick **What** and **How many**, then tap **Add**. The office's price applies, and they see you added it.
- **Plans**: plan sheets and files for the job. **Open** shows one on your phone, and the download button saves it to your phone for a site with no signal. See [Upload and manage plans for a job](https://crewtavo.com/docs/jobs/plans-and-files/#on-the-crews-phone).
- **Bring**: the equipment to take to this visit.
Below that you fill in the checklist, materials, photos and notes.
### Fill in the checklist
If your business uses checklists, each one shows how many items are done ("3 of 5"). Items with a red * are needed before it's done. A checklist that goes with the job's work comes up by itself, and a visit can have more than one. To pick one, use **Choose a checklist…**.
- Tick boxes, type numbers or words, or pick from a list.
- A **signature** item: have the person sign with their finger and type their **Printed name**. **Clear** starts over.
- A **photo** item has its own **Add photos** button. The photos go under **Photos**, below.
Your answers save themselves as you go. While the visit is in progress, **Complete visit** says how many required items are left, and completing the visit marks the checklist done. At other times, **Mark done** shows once every item with a red * is filled in.
If items with a red * are still empty, the first tap on **Complete visit** takes you to the first one. Tap it again and Crewtavo asks "The checklist isn't done", with what's still needed. Choose **Complete anyway** to finish the visit, or **Keep working**. The checklist stays unfinished, so tell the office what you couldn't finish in **Notes for the office**.
Once it's done, the checklist is locked. A crew lead can tap **Reopen checklist** to change it. To set up checklists, see [Set up crews and checklists](https://crewtavo.com/docs/jobs/crews-and-checklists/).
### Log material
**Materials used** is for what you put down: tons of asphalt, gallons of sealer, loads of stone. It's there on job visits.
1. Tap **Log material**.
2. Pick the **Material**, or choose **Something else (type it below)** and type **What was it**.
3. Fill in **How much** and the **Unit** (ton, yd³, gal, load, bag, ea, lf or sq yd).
4. Add the **Ticket number** and **Supplier or plant** if you have them.
5. Tap **Add a photo of the ticket** to snap the plant ticket.
6. Tap **Log it**.
It shows as "12.5 ton · Surface mix" with the ticket number. To fix a mistake, tap the trash can and log it again. You can remove your own entries for a day after you log them. Crew leads and the office can remove any.
### Add photos
Tap **Add photos** to take pictures with your camera. You can add several at once. They're saved with the visit. To remove a photo you added, tap its × and then **Remove**.
### Notes for the office
Type what the office should know: extra work the client asked about, damage you noticed, materials used. Your notes save themselves as you type.
:::caution
This box shares its words with the visit's **Instructions for the crew**, so if the office wrote instructions on the visit, they're already in here. Add your notes below them rather than deleting them.
:::
### Add a receipt
Bought something for the job? Tap **Add a receipt** (under the notes):
1. Fill in the **Amount** and **Date**, and the **Vendor** if you like.
2. Pick a **Category**: **Materials**, **Fuel**, **Dump fees**, **Supplies** and so on.
3. Tap **Add a receipt photo** to snap the receipt.
4. If you paid with your own money, tick **Paid with my own money (reimburse me)**.
5. Tap **Add expense**. You'll see "Receipt sent to the office".
Once it's sent, only the office can change or delete it.
### Invoice and take cash or check
Owners, and admins and office staff whose role has **Invoices and payments**, can bill a visit on site once it's completed. The **Invoice** card has **Create invoice**: the job's final invoice, or for a recurring job billed per visit, its completed visits. Then it shows the **Total**, with **Send to client** and, while something's owed, **Record cash or check**. Pick **Cash** or **Check**, fill in the **Amount** (and the **Check number**), and tap **Record**, like **Record $120.00**. There are no card payments on site.
The card doesn't show when autopay charges the job, or for a fixed price, which the office bills by the month.
## Work with no signal
Crewtavo keeps your day on your phone, so a job site with no signal doesn't stop you. When there's no signal, a **No signal** note shows at the top of **My day**.
These are saved on your phone and sent, in order, when you have signal:
- **On my way**, **Start visit** and **Complete visit**, with the time you tapped them. Your clock goes by those times.
- The checklist, and **Mark done**.
- **Notes for the office**.
- **Add work**.
You'll see "Saved on this phone": "It sends when you have signal." The note at the top counts what's waiting ("3 updates are saved on this phone and will send when you have signal."), then says "Sending your updates…" once you have signal.
These need signal:
- **Add photos**, **Log material** and **Add a receipt**.
- The visit's invoice and **Record cash or check**: "Invoicing and payments need signal."
- The clock card's **Start timer**, **Switch** and **Stop**, and the **Crew clock**. With no signal they only wait while Crewtavo stays open. On a site with no signal, use the visit's **Start visit** and **Complete visit** instead.
- **Reopen checklist**.
- Opening a plan you didn't save to your phone.
Tips for a site with no signal:
- Open each of today's visits once while you still have signal. Your phone keeps what you've opened.
- Save the plans you'll need to your phone. With no signal, they're in your phone's Files or Downloads.
- Updates send while Crewtavo is open on your screen. If you put the phone away, they go when you open Crewtavo again. On Android, a notification says "3 updates are waiting to be sent. Open Crewtavo to send them."
- Don't sign out with updates waiting. Crewtavo warns you ("2 updates haven't sent yet"), and signing out deletes them.
## What crew leads can do
Crew leads see and do a little more than field crew:
- See the whole schedule, and change their own crew's visits, like moving one or putting them in order. See [Run the schedule day to day](https://crewtavo.com/docs/jobs/run-the-schedule/).
- Use the **Crew clock** to clock the whole crew in and out.
- See their crew's time on **Timesheets**, and approve it if their role allows.
- **Reopen checklist** after it's marked done.
- Remove anyone's material entries.
- Add or update plans from the job (**Add or update** on a visit's **Plans**).
Field crew see only their own visits and their own time. Nobody in the field sees prices. For everything each role can do, see [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## If something isn't right
- **No gate code?** Codes show on the visits you're on for today and tomorrow, until the visit is complete. If you still don't see one, ask the office to put you on the visit by name.
- **A visit is missing from My day?** My day shows the visits you're on today (and for a crew lead, their crew's visits too). Ask the office to add you to the visit.
- **Your clock is still running?** Tap **Stop** on **My day**. A clock left on for hours sends a reminder, and Crewtavo stops it at the end of the day if you forget.
- **A photo didn't go up?** It shows an error with the file name. Try again once you have signal.
Source: https://crewtavo.com/docs/field/your-day-in-the-field/ (last updated 2026-11-04)
---
# Your jobs and paperwork as a subcontractor
> For subs. Sign in with the link the office texts you (or a code by text on a new phone), accept or decline job offers in My jobs, see what you're owed and paid, and send your W-9 and insurance from Paperwork.
A business that hires you can give you a Crewtavo sign-in. With it, you see the visits they put you on, accept or decline their job offers, see what you're owed, and send your W-9 and insurance from your phone. There's no password and nothing to download.
Running the office? See [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/) to set a sub up.
## Sign in the first time
The office texts or emails you a link. The text reads something like "here's your link to sign in and see your jobs with us. It works once, within a day".
1. Tap the link on your phone. It opens in your phone's browser.
2. You're in, on **My day**. You stay signed in on that phone until you sign out.
The link works once, within a day. If you see "That link has expired or was already used.", ask the office for a new one, or sign in with a code (below). Whoever opens your link is signed in as you, so don't pass it on.
Already have your own Crewtavo sign-in? Then you sign in the way you always do, and the business shows up there.
## Sign in on a new phone
You don't need a new link. Get a code instead:
1. Open Crewtavo at the same web address your link went to.
2. Tap **Subcontractor? Get a sign-in code by text**.
3. Type your **Mobile phone** with the area code and tap **Text me a code**.
4. On **Enter your code**, type the 6-digit code from the text. Many phones fill it in for you. Tap **Sign in**.
A code works once, for 10 minutes, and you get 5 tries. **Send a new code** works again after a minute.
Codes only go to the phone number or email the office has for you. The screen says "We texted a code to (540) 555-0101 if it belongs to a subcontractor's sign-in." If nothing comes, ask the office to check your number, or for a new sign-in link.
- **No phone on file? Get a code by email instead** emails the code to the address the office has. Check your spam folder if it doesn't show up.
- If the business can't send texts, the link reads **Subcontractor? Get a sign-in code by email**, and the button **Email me a code**.
- If it says "On a new phone? Ask the office to text you a new sign-in link.", codes aren't set up, so ask for a link.
- Outside the US and Canada, start your number with + and your country code. The office may need to allow your country first.
Your **Profile** tab has a **Signing in** card that says which way works for you.
## Put Crewtavo on your Home Screen
Crewtavo can sit on your Home Screen and open like any other app.
- **iPhone:** in Safari, tap Share, then **Add to Home Screen**. Open Crewtavo from your Home Screen and sign in there with a code: tap **Subcontractor? Get a sign-in code by text** (or by email). The Home Screen app has its own sign-in, separate from Safari's, and a link from the office always opens in Safari.
- **Android:** on **My day**, tap **Install the app**. You stay signed in.
On an iPhone, Crewtavo only shows the Home Screen steps when you can get a code there, which takes a phone number or email on file with the office. If you don't see them, ask the office to add yours. For notifications and more, see [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
## Your four tabs
At the bottom of your phone:
| Tab | What's there |
| --- | --- |
| **My day** | Today's visits you're on, in order, and tomorrow's. |
| **My jobs** | Job offers, the work you've taken, what you're owed and what you've been paid. A green number means offers are waiting for your answer. |
| **Paperwork** | Your W-9 and insurance: what the business needs, and sending it. |
| **Profile** | Your name, phone, photo, notifications and how you sign in. |
On a computer, they're down the side, and **Paperwork** reads **My paperwork**. Your picture at the top right has **Your profile** and **Sign out**, and the bell shows your notifications.
## Accept or decline a job offer
When the office offers you a job, you get a notification, and a text unless you've turned that off. It opens the offer in **My jobs**, under **Waiting for your answer**.
The offer shows:
- **New job offer**, and **Answer by** with the deadline, or **No deadline**.
- One line with the job, its days, the town, the main amount and your total, like "Smith roof · Tue Nov 3 · Springfield · 24 squares · $2,040".
- **When**: each day, with times if they're set. "The office will set the days." means no days yet.
- The town only: "You'll see the address once you take it."
- **The work** and any **Notes from the office**.
- **Your price**: each line, with its quantity and rate, and the **Total**.
To take it, tap **Accept**. You'll see "It's yours." and the job's visits show on **My day**, with the address.
To turn it down:
1. Tap **Decline**.
2. On **Decline this job?**, add **Why** if you like, like "Booked that week". The office sees it.
3. Tap **Decline**. You'll see "Declined. We've told the office." **Keep it** goes back without declining.
Good to know:
- **Answering needs signal.** With no signal, it says "No signal. You can accept or decline this job once you have signal." Your answer isn't saved to send later, so the office knows right away.
- **After the deadline**, it says "This offer ran out. Call the office if you'd still like the work."
- **If your insurance has run out**, or ends before the work does, the offer says so, with a link to **My paperwork**. You can still accept.
- **The office can take an offer back.** It then shows **Withdrawn by the office**.
### When the office changes the price
A changed price shows as **New price**: "The office changed the price: $2,200, was $2,040. If you decline it, you keep the job at $2,040."
- **Accept** takes the new price.
- **Decline** asks **Decline the new price?** You keep the job at the price you agreed.
If you don't answer in time, the price you agreed stays.
## See what you're owed and paid
**My jobs** keeps your work in sections:
| Section | What's in it |
| --- | --- |
| **Waiting for your answer** | Offers to accept or decline, soonest deadline first. |
| **Coming up** | Work you've taken, with the days, town and your price. Tap one to open its next visit. |
| **Done, waiting to be paid** | Finished work. The total you're owed is beside the heading, like "$2,210.00 owed". |
| **Paid** | What you've been paid, with the day. Beside the heading is this year's total, like "$54,210.00 in 2026". |
| **Offers that are over** | From the last 30 days: offers you declined (**Declined**), that ran out (**Ran out**) or that were taken back (**Withdrawn by the office**). |
This year's total goes by the day you were paid and counts every payment. Card and payment-app payments don't count toward your 1099, since they're reported on a 1099-K. Once your total reaches the amount that needs a 1099, it says to ask the business for yours.
Crewtavo doesn't send money. The business pays you its usual way, then marks the work paid.
On a visit, **Your price** shows your lines and total, marked **Agreed**, **Work done** or **Paid**. If the office sent a new price, it shows **New price** and "Accept or decline it in My jobs".
## Send your W-9 and insurance
The business needs three things on file from you: a **W-9**, **Liability insurance** and **Workers' comp** (a certificate, or an exemption).
### From the Paperwork tab
Open **Paperwork**. The top says "You're all set" or how many things are needed. Each one is under **Needed**, **Waiting for the office to check** or **OK**:
| Label | What it means |
| --- | --- |
| **Needed** | They don't have one on file. |
| **Expired** | The one they have ran out. Send the new one. |
| **Ends in 12 days** | The one they have ends within 30 days. Send the new one when you get it. |
| **Waiting to be checked** | You sent one, and the office hasn't checked it yet. |
| **OK** | On file and current, "Good until" the date it ends. |
To send one:
1. Tap **Send it** (or **Send another**).
2. For workers' comp, pick **Certificate** or **I'm exempt**.
3. Tap **Take a photo** or **Choose a file**. Send a PDF or a photo (JPG, PNG or HEIC). A PDF can be up to 15 MB.
4. For insurance, fill in **Ends on**: the expiration date on it.
5. Tap **Send**. You'll see "Sent." and the business checks it.
For a license or anything else, tap **Send something else**, pick **License** or **Other**, and add **What it is**.
**What you've sent** lists it all, each marked **Checked** or **Waiting to be checked**. Only the business sees what you send. You can't change or delete it once it's sent: ask the office.
### From a paperwork link
The office can also text or email you a link to send paperwork without signing in, and reminders before your insurance runs out include one.
1. Open the link. It says "Hi" and your business name, then what's needed and why.
2. For each, tap **Take a photo** or **Choose a file**, and fill in **Ends on** for insurance.
3. To add something else, open **Send something else**.
4. Tap **Send** (or **Send 2 documents**), and keep the page open until it's done.
You'll see "Thanks, it's in". The link takes files up to 200 MB and works for 30 days. If it says "This link has expired or isn't valid. Ask for a new one.", ask the office.
## Work a visit
Your visits on **My day** work like the crew's. [Your day in the field](https://crewtavo.com/docs/field/your-day-in-the-field/) explains **On my way**, **Start visit** and **Complete visit**, the checklist, photos and notes, and working with no signal.
What's different for you:
- Each visit shows **Your price**.
- **Call** and **Text** show only if the office lets you contact their clients. Otherwise you see the client's name.
- There's no clock unless the office keeps your hours. If they do, the clock is at the top of **My day**, and **Start visit** and **Complete visit** clock you in and out.
- **Log material**, **Add work**, **Add a receipt** and **Your equipment** are for the business's own crew, so you don't see them.
- You can remove only the photos you added.
- You can move a visit along and leave notes. For anything else, ask the office.
## What you can't see
Your sign-in shows only your own work. You don't see:
- The business's other clients, jobs, quotes, invoices or prices.
- Its team, its crews, or who else is on your visits.
- Its messages, team chat or guides.
- A job's address or client before you accept it.
- The client's phone or email, unless the office allows it.
- The notes the office keeps about you.
## Notifications
On your **Profile** tab, under **Notifications**, choose how you hear about:
- **My jobs**: job offers, and what you're owed and paid. On by text, email and this phone to start with.
- **My schedule changes**: added to or taken off a visit, moved or cancelled. By email and this phone to start with.
- **My paperwork**: when your insurance is about to run out.
- **Clock reminders**, if the office keeps your hours.
Texts go to the **Mobile phone** on your profile, or to the number the business has if you leave it empty. Email goes to the address the business has for you. If they don't have one, it says to ask them to add it. See [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
## Sign out
Tap your picture at the top right, then **Sign out**. **Sign out?** explains how to get back in, with a code or a new link. Tap **Sign out**, or **Stay signed in** to change your mind.
If you work for more than one business here, tap the business name at the top to switch. A link to an offer from the other one says "This job offer is from" that business, with **Switch to it**.
Source: https://crewtavo.com/docs/field/subcontractor-guide/ (last updated 2026-11-04)
---
# Create an invoice and get paid
> Create invoices from finished jobs (or several at once), bill deposits, progress payments and retainage, send them by email, text or link, record payments, refund card payments, charge saved cards, and let past-due reminders go out by themselves.
This page covers billing your clients: turning finished work into invoices (bills), sending them, recording what comes in, and following up on what's late. Owners, admins and office staff can do all of it. Estimators and crews don't see **Invoices**, and a custom role can have **Invoices and payments** switched off (see [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/)).
## Find your invoices
Open **Invoices** in the sidebar. Across the top:
- **Awaiting payment**, **Past due** and **Collected** (the past 30 days), each with how many invoices or payments it covers and a chip with the change: from 30 days ago for the first two, and from the 30 days before for **Collected**. Click one to see those invoices.
- The tabs: **Awaiting payment** (sent and not paid yet, past due ones included), **Past due**, **Draft**, **Paid**, **Written off** and **Void**. Each shows how many it holds.
- **Search by client, subject or #number**. Type a number on its own to find that invoice number.
The bottom of the list adds up what's billed and what's still owed on the tab you're on. **⋯** at the top right has **Stripe deposits** (see [Deposits from Stripe](#deposits-from-stripe)), **Download as spreadsheet**, which saves the invoices on that tab as a CSV file, and, once you take autopay, **Charge cards** (see [Invoices charged automatically](#invoices-charged-automatically-autopay)).
With autopay on, the top of **Invoices** also says when automatic charges failed ("2 autopay charges failed: …", each name opening its invoice) or are waiting for you ("1 charge needs your OK." with **Review**).
## Invoice the jobs that are ready, all at once (batch invoicing)
When work is done, someone chooses **Mark work complete** on the job (a button at the top of a one-off job, in the **⋯** menu of a recurring one), and the job shows "Ready to invoice." Jobs billed after each visit are ready once a visit is completed. All of these collect at the top of **Invoices** as "3 jobs are ready to invoice." Jobs that [autopay](https://crewtavo.com/docs/billing/autopay/) is about to bill and charge aren't on the list. To invoice them in one go:
1. Choose **Invoice them**.
2. Untick any job you don't want to invoice yet. Each job gets its own invoice, less any deposits or progress payments already billed on it.
3. To send them straight away, turn on **Email each client their invoice now**. (It's only there once [email is connected](https://crewtavo.com/docs/connections/email/).)
4. Choose **Create 3 invoices** (or **Create and send 3 invoices**).
Without the switch, the new invoices are drafts until you send them. With it, any client without an email address on file gets theirs as a draft, and Crewtavo says how many weren't emailed.
## Create an invoice for a job
Open the job and choose **Create invoice**. Pick what you're billing:
| Choice | What it bills |
| --- | --- |
| **Final invoice** | All the job's line items, less what was already billed as deposits or progress payments. A job has one final invoice; to bill it again, void that one first. |
| **Completed visits** | Each completed visit that isn't invoiced yet, with the job's line items once per visit. Offered on recurring jobs, and on any job with completed visits not yet invoiced. |
| **Deposit** | An amount up front. If the quote asked for a deposit, that amount is filled in. Deposits aren't taxed. |
| **Progress payment** | Part of the contract now, by **Percent** of the contract or an **Amount**. Each one is numbered as a pay application ("Pay application 2"). It isn't offered once the final invoice is made. |
| **Retainage** | What was held back on earlier invoices (see below). Only offered when something is held. |
Choose **Create invoice**, and the draft opens for you to check and send. A deposit or progress payment can't add up to more than the job's contract: Crewtavo says "That's more than the $… left to bill".
Making the **Final invoice** or **Completed visits** invoice for a job marked work complete closes the job.
### Deposits and progress payments come off the final invoice
The final invoice lists the job's line items, then a line for each deposit and progress payment already billed, such as "Less deposit (invoice #1012)" and "Less progress billing (invoice #1015)". The client only pays what's left. Voided deposits and progress invoices don't count.
### Hold back retainage
On commercial work, the client may hold back part of each bill until the job is accepted. To set this up, open the job, choose **⋯ → Edit details and schedule**, open **PO, permit, retainage and warranty** and fill in **Retainage %**.
Progress and final invoices then show "Retainage held (10%)" under the total, and the balance due leaves it out. Set it before you create the job's first invoice: each invoice keeps the percentage the job had when it was made. When the work is accepted, choose **Create invoice → Retainage** to bill everything held back. Deposits, completed-visits invoices and the retainage invoice itself don't hold anything back.
## Make an invoice that isn't for a job
For a product sale or a one-time charge, choose **New invoice** on **Invoices** (or **Invoice** in the **Create** menu). Pick the **Client**, add a **Subject** if you like, and choose **Create invoice**. Then add its line items.
## Check and edit a draft
While an invoice is a draft you can change everything on it:
- **Line items**: **Add from price list**, or **Custom item** for anything else. Click a line to change it, and untick **Taxable** for anything that isn't taxed. The **⋯** on a line moves, duplicates or removes it.
- **Subject**, shown at the top of the invoice, and **Note to client**, for a thank-you or payment instructions.
- **Discount**, an amount off, and **Add promo code** for one of your [promo codes](https://crewtavo.com/docs/clients/marketing/).
- **Tax**: the rate the client approved on the quote, or your default sales tax from **Settings → Company**. Change it here for this invoice. A client marked tax exempt (see [Edit a client](https://crewtavo.com/docs/clients/clients-and-properties/#edit-a-client)) gets no tax: their invoices show **Tax exempt**, with their exemption number if you added one.
- **Issued** and **Due** dates. **On receipt**, **Net 15**, **Net 30** and **Net 45** set the due date from the issue date. New invoices are due after the number of days in **Invoice due after (days)** in **Settings → Company**, or the client's own **Due after (days)** if they have one.
**As it prints** shows the invoice the way your client sees it, on your [estimate template](https://crewtavo.com/docs/sales/estimate-templates/) with its terms.
## Send the invoice
1. Choose **Send invoice**. It's greyed out until the invoice has a line item.
2. Pick how:
- **Email**: check **To** and **Subject**.
- **Text**: check the **Mobile number**. This needs [texting set up](https://crewtavo.com/docs/connections/texting-with-twilio/).
- **Copy link**: copies the link for you to paste into any message, and marks the invoice as sent.
3. Add a **Message** if you like. The link is added by itself. Without one, the client reads "Here's your invoice for $…. You can view and pay it online:".
4. Choose **Send email**, **Send text** or **Copy link**.
The link opens the invoice in the [Client Hub (your clients' portal)](https://crewtavo.com/docs/clients/client-hub/), where they can pay it if you [take payments with Stripe](https://crewtavo.com/docs/connections/stripe/). Emails and texts you send show in the client's conversation in [Messages](https://crewtavo.com/docs/clients/messages/).
Also in the invoice's **⋯** menu:
- **Preview as client** opens the client's view in a new tab, even for a draft.
- **Print or save PDF** opens it ready to print.
- **Mark as sent** for a bill you handed over in person, without emailing or texting it.
To send it again later, choose **Resend**.
### Change an invoice after it's sent
A sent invoice's lines, discount, tax and dates are locked. To change them, choose **⋯ → Move back to draft**, make the change and send it again. That's only possible before any payment is recorded on it. You can still change the **Note to client**, and add or remove a promo code until a payment is recorded.
## Record a payment
When a check, cash or a payment outside Crewtavo comes in:
1. Open the invoice and choose **Record payment**.
2. Check the **Amount**. It starts at the balance due and can't be more than that.
3. Add a **Tip** if the client added one. It's recorded with the payment and doesn't count toward the balance.
4. Pick the **Method** (**Check**, **Cash**, **Card**, **Bank transfer** or **Other**), the date it was **Received**, and a **Reference** such as the check number.
5. Choose **Record $…**.
Once nothing's left, the invoice is **Paid**. A partial payment leaves it **Partly paid** with the rest still owed. If the client paid a draft on the spot, choose **⋯ → Record payment** on the draft: it's marked sent and paid together.
Payments made online through Stripe are recorded by themselves.
:::caution
If a bank payment through Stripe is still clearing, the invoice says so, and Crewtavo asks before you record another payment ("A bank payment is still clearing"). Recording one anyway can mean the client pays twice.
:::
## Refunds and mistakes
Each payment you recorded has a **⋯** menu:
- **Record a refund** is for money you gave back. Enter the **Amount** (up to what's left of that payment), the date it was **Refunded on** and a **Note**, then choose **Record $… refund**. The balance goes back up by that much.
- **Remove payment** is for fixing a mistake, like a payment on the wrong invoice. It goes at once ("Payment removed"), with **Undo** on the message, and the balance goes back up.
### Refund a card or bank payment made through Stripe
A payment the client made through Stripe has its own **⋯** menu with **Refund**, which sends the money back through Stripe:
1. Choose **⋯ → Refund** on the payment.
2. In **Refund payment** ("The money goes back to their card. Stripe keeps its fee."), check the **Amount**. It starts at what's left to refund.
3. Leave **Take it off the invoice too** ticked so the client isn't asked to pay the refunded amount again: what the refund puts back on the invoice is written off. Untick it to have the balance go back up and the client asked for it.
4. Choose **Refund $…**. You'll see "Refund sent to Stripe".
A refund comes off the invoice's part of the payment first, then any tip. If other money is still owed on the invoice, nothing is written off: Crewtavo says "Refunded. The balance wasn't written off" and how much is still owed, and you can write it off from the invoice's **⋯** menu.
**Refund** needs a Stripe key that can make refunds. With an older key it's greyed out under "Needs a new Stripe key": see [Update your key for autopay and refunds](https://crewtavo.com/docs/connections/stripe/#update-your-key-for-autopay-and-refunds). You can still refund in your Stripe dashboard instead. Either way, the refund shows up on the invoice by itself, as a payment marked "Refunded in Stripe".
If a client ends up paying more than they owed, the invoice says "The client paid $… more than they owed. Record a refund, or keep it as a credit for their next invoice." Crewtavo doesn't carry a credit over by itself, so if you keep it, take it off their next invoice, for example as a **Discount**.
## Payment reminders
Reminders go out by themselves. The automation **Remind clients when an invoice is past due** is on for every new business: the day after an invoice's due date passes, it moves to the **Past due** tab and the client gets one email with the balance and their link to pay. To change the wording, send it later, or add a second reminder, see [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
To nudge someone yourself:
- **Send a reminder** on a past-due invoice (next to "12 days past due.") opens the same send options as **Send invoice**. Write your own **Message**: left empty, the client gets the usual "Here's your invoice for $…" wording, which doesn't say it's late.
- **Remind all**, on the **Past due** tab once email is connected, emails every client on that tab at once, after you confirm with **Send reminders**. Each gets a friendly note with their link.
**Remind all** skips an invoice with a bank payment on its way, and nothing reminds a client about an invoice you've written off. The past-due automation doesn't check for a bank payment, though: if one is still clearing when the due date passes, the reminder email still goes out.
The friendly reminder that **Remind all** sends, or that an [AI assistant](https://crewtavo.com/docs/connections/claude-and-chatgpt/) sends when you ask it to, says when the invoice is due. Before the due date has passed where your business is, it reads "…still owed on invoice #2051, which is due November 30." After that, it reads "which was due November 30".
## Late fees
Late fees are off to start. To charge one:
1. Open **Settings → Company** and find the **Defaults** card.
2. Under **Late fee**, pick **A flat amount** or **A percent of what's owed**.
3. Fill in the **Late fee amount** (or **Late fee (%)**) and the **Days after the due date** to wait. It starts at 7.
4. Choose **Save company settings**.
Once an invoice is still unpaid that many days after it's due, a **Late fee** line goes on it ("The invoice was due November 30, 2026"). Each invoice gets one, once. A percent is of what's owed at the time, and late fees aren't taxed. Until then, a past-due invoice says when its fee goes on: "A $25.00 late fee goes on Dec 8, 2026."
A late fee never goes on a draft, a paid, void or written-off invoice, a deposit, or an invoice made in Stripe. It waits while autopay is charging the invoice or a bank payment for it is on its way.
## Invoices charged automatically (autopay)
With [autopay](https://crewtavo.com/docs/billing/autopay/), a client's saved card is charged for each finished visit, or a one-off job's finished work, without you sending anything. Crewtavo makes the invoice the same way **Create invoice** would, marks it sent without emailing it, and charges the card. On the invoice:
- **While it waits**: "Charged automatically to Visa ending 4242 tonight." (or the day it goes).
- **While it's charging**: "Charging Visa ending 4242 now." **Send invoice** and **Record payment** wait until it's done.
- **Once it's paid**: "Paid automatically with Visa ending 4242 on Nov 3, 2026." The **Stripe** card says **Charged**: **Automatically**.
- **When it waits for your OK** (over your limit, work an AI assistant marked done, or visits autopay didn't queue): the invoice stays a draft, with why, and **Approve charge** or **Send it the usual way**.
- **When it failed**: "Autopay failed: … Jane Smith was sent the Pay link and a way to update their card." with the day it's tried again, or what the client needs to do, and **Send a reminder**.
### Charge a saved card from an invoice
For a client who saved a card and agreed to autopay, **Charge card** at the top of any unpaid invoice charges what's owed to that card now, after you confirm ("Charge $450.00 to Visa ending 4242?"). A draft is marked sent, without an email. To charge several at once, choose **⋯ → Charge cards** on **Invoices**. See [Charge a saved card now](https://crewtavo.com/docs/billing/autopay/#charge-a-saved-card-now).
## Referral credits on an invoice
When a client has earned a [referral credit](https://crewtavo.com/docs/clients/marketing/), it goes on their next invoice by itself, as a **Referral credit** line in the totals. While the invoice is unpaid, **Remove** takes it off ("Credit taken off this invoice. It goes on their next one."), and **Apply referral credit** puts an earned credit on. An invoice the credit covers in full says "Covered by a referral credit."
Credits can't go on or come off once a payment is recorded, while a bank payment is on its way, while autopay is charging the invoice, or on an invoice made in Stripe. Deposits and retainage invoices don't take one.
## Void, delete or write off
| Choose | When | What happens |
| --- | --- | --- |
| **Delete draft** | A draft you don't need, with no payments | It's gone for good. |
| **Void invoice** | A bill that shouldn't have gone out: a mistake or a duplicate | It stays on record as **Void** and isn't owed. Visits it covered can be invoiced again, and a job can get a new final invoice. It can't be undone. |
| **Write off** | A real bill the client won't pay | What's left stops counting as owed and the reminders stop. You can undo it. See [Write off an invoice that won't be paid](https://crewtavo.com/docs/billing/write-off-an-invoice/). |
All three are in the invoice's **⋯** menu. An invoice with payments on it can't be voided or deleted: refund or remove the payments first.
## If you take payments with Stripe
With [Stripe connected](https://crewtavo.com/docs/connections/stripe/), each sent invoice has a **Stripe** card on the right with its status there, **Open in Stripe**, and **Copy payment link** while it's waiting on payment, for sending Stripe's payment page on its own. If you turned on **Let clients add a tip when they pay online** in **Settings → Company**, clients can add a tip as they pay, and from the receipt after an automatic charge.
### Deposits from Stripe
Choose **⋯ → Stripe deposits** on **Invoices** to open **Deposits**: the money Stripe sent to your bank, what it kept in fees, and the payments in each deposit, so your bank statement matches your invoices. It shows:
- **Deposited, last 30 days**, **Stripe fees, last 30 days**, and **On the way**, with the date of the next deposit.
- Each deposit's date, status (**Deposited**, **On the way**, **Pending**, **Failed** or **Canceled**), the payments in it, the fees and what reached your bank. Click a deposit to see each payment, with its client, invoice and fee.
**⋯ → Download as spreadsheet** saves the list of deposits. Only owners, admins and office staff with **Invoices and payments** can open it. For totals over time, see [See your money and how the business is doing](https://crewtavo.com/docs/billing/finance-and-metrics/).
Source: https://crewtavo.com/docs/billing/invoices/ (last updated 2026-11-04)
---
# Charge clients' saved cards automatically (autopay)
> Clients save a card or bank account once from their Client Hub and agree to your terms. Each finished visit is then billed and charged to it, with a receipt. Set it up in Settings → Payments, invite clients, require a card on file, and see what happens when a charge fails.
With autopay, a client saves a card or bank account once, from their [Client Hub](https://crewtavo.com/docs/clients/client-hub/), and agrees to your terms. After that, each finished visit (or a one-off job's finished work) is billed and charged to it by itself, and the client gets a receipt. Nobody has to send an invoice or chase a payment. A charge that fails goes back to the way invoices work without autopay: the client gets the link to pay, and you're told.
Everything goes through your own Stripe account, so fees, deposits, refunds and your books work as they do for any [Stripe payment](https://crewtavo.com/docs/connections/stripe/). Crewtavo never sees the card number.
## Who can do it
| Who | What |
| --- | --- |
| Owners and admins whose role has **Invoices and payments** | Turn autopay on and change its settings in **Settings → Payments**. |
| Owners, admins and office staff whose role has **Invoices and payments** | See the **Autopay** card on a client's page, send invites, pause it, remove a card, switch it on or off for a job, approve charges, use **Charge card** and refund. |
| Owners only | Record that clients whose cards came in from Stripe agreed to be charged. |
| Crews | A visit on a job charged automatically shows an **Autopay** tag on their phone. They never see the amount or the card. Subcontractors don't see it. |
See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## What autopay needs
**Settings → Payments** starts with a checklist, **What autopay needs**:
- **Your own Stripe account**, connected on **Apps → Stripe**. See [Take payments with Stripe](https://crewtavo.com/docs/connections/stripe/).
- **A key that can save cards.** A Stripe key made before autopay can't save cards, charge them or refund. **Apps → Stripe** then says "Update your key to turn on autopay." Choose **Get a new key**, make it in Stripe the same way as the first one, and paste it in. See [Update your key for autopay](https://crewtavo.com/docs/connections/stripe/#update-your-key-for-autopay-and-refunds).
- **Stripe's own emails off.** In Stripe, turn off its emails about failed payments and receipts, so clients don't get two. Crewtavo sends its own.
## Turn autopay on
1. Open **Settings → Payments**.
2. Turn on **Charge clients' saved cards when the work is done**. It's greyed out until your Stripe key can save cards.
3. Read **Terms clients agree to**. It starts with wording for your trade. For lawn and exterior businesses it's "We charge the card on file after each visit is done, or once a month for a monthly plan, and for other invoices we send you. You'll get a receipt each time. Turn it off anytime from your client page or by calling us." Change it to suit you, or choose **Use the suggested wording** to go back.
4. Pick **When to charge**: **Right away**, **At the end of the day** (where you start) or **Days after**, with **Days after each visit** from 1 to 14. Clients read it under your terms, as "We charge at the end of the day of each visit." A wait lets you catch a visit marked done by mistake.
5. Set **Most to charge without asking**, if you like. A charge over it waits for your OK. Leave it blank for no limit. It starts at $500.
6. Choose the switches:
- **Require a card on file**: see [Require a card on file](#require-a-card-on-file). Off to start.
- **Email a receipt after each charge**, "With a link to change their card or turn autopay off." On to start.
- **Turn on autopay for new recurring jobs of clients on autopay**. With it on, a recurring job billed per visit for a client on autopay is charged automatically from the start, and a client's active ones are switched on when they agree. On to start for lawn and exterior, cleaning, pool service and pest control businesses.
7. Choose **Save payment settings**.
Changing the terms, or when you charge, only changes what clients agree to from then on. Clients who already agreed keep the words they agreed to.
The **Tips** card below says whether **Tips are on** or **Tips are off**. Tips follow the one switch in **Settings → Company**: see [Tips](#tips).
## Which jobs are charged
Autopay charges three kinds of job:
- **Recurring jobs priced Per visit and invoiced After each visit**: each visit once it's completed.
- **Monthly plans**: recurring jobs at a **Fixed price**, invoiced **Monthly**. Each month is charged on its invoice day. It's charged without asking you only when the terms the client agreed to mention a monthly plan, as the starter terms do; otherwise it waits for your OK.
- **One-off jobs billed When the job is done**: once the work is marked complete.
Jobs billed any other way, like **As needed** or **Progress billing**, can't use it. See [Create a job or recurring service](https://crewtavo.com/docs/jobs/jobs-and-recurring-service/#billing-po-permit-retainage-and-warranty).
Each job's **Details** card has **Autopay**, with a **Charge their saved card** switch. Recurring jobs follow the **Turn on autopay for new recurring jobs of clients on autopay** setting. One-off jobs start with it off: turn it on for each job you want charged. Under the switch, the job says what's holding it up, like "Charges start once Jane Smith agrees to autopay." or "Autopay is paused for Jane Smith."
## Invite a client
Clients set up autopay themselves, from a link. To send one:
- **One client**: on their page, choose **⋯ → Send autopay invite by email** or **Send autopay invite by text**. The **Autopay** card on their page has the same, under **Send autopay invite**.
- **Many clients**: on **Clients**, choose **⋯ → Send autopay invites**. Under **Who**, pick **All active clients not on autopay**, or the active clients with one tag, and under **Send by**, **Email** or **Text**. Choose **Send 12 invites** (with your count), then **Send invites**. Clients already on autopay, anyone invited in the last 7 days and clients without an email address (or phone number) are skipped, and Crewtavo says how many went.
- **With a quote**: a quote for work priced per visit lets the client choose **Approve and set up autopay**. See [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/#approve-and-set-up-autopay).
- **By automation**: the action **Invite to autopay** sends the same link. See [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
The email, "Set up autopay with Acme Lawn", thanks the client, explains that you keep a card on file and charge it after each visit, and has a **Save your card** button. The text says the same in a line. Sending by email needs [email connected](https://crewtavo.com/docs/connections/email/), and by text needs [texting set up](https://crewtavo.com/docs/connections/texting-with-twilio/).
:::note[Clients who texted STOP]
Autopay never texts a client who texted STOP: not the invite, the copy of their agreement or a failed-charge notice. **Send autopay invite by text** is greyed out for them, and an invite sent to many skips them ("Jane Smith texted STOP, so texts to them are off.").
:::
You can send up to 200 invites an hour.
## What the client does
The link opens **Pay automatically** in their Client Hub, in three steps: **How it works**, **Add a card** and **Agree**.
1. **How it works** says when they're charged, the price of a visit when they have one recurring job ("Each visit is $45.00."), their next visit, that each charge is on its own invoice, and that they can turn it off anytime. Your terms are under it. They choose **Continue**.
2. **Add a card or bank account** opens Stripe's secure page. It offers whatever you've turned on in your Stripe dashboard that can be saved for later: cards, Apple Pay and Google Pay, Link and US bank accounts. Their bank may ask them to confirm the card. A card whose security code or ZIP code the bank couldn't confirm is turned down ("Your bank couldn't confirm the card's security code or ZIP code."), and they choose **Try another card**.
3. **Agree and finish** shows the card ("Visa ending 4242") and your terms. They tick **I agree to these terms** and choose **Finish**.
They see "Autopay is set up" ("Visa ending 4242 is set up. We'll charge it after each visit."). A bank account says "Almost done" instead: Stripe checks it first, which takes a few days, and charges start once it's checked.
Crewtavo keeps the agreement word for word, with when they agreed, and emails the client a copy ("Autopay is set up with Acme Lawn"), with what they agreed to and a link to turn it off. A client without an email address gets it by text.
On the client's page, the **Autopay** card now says **Active**, with the card, "Agreed Oct 31, 2026 on their client page" and "Charged from Crewtavo since Oct 31, 2026". The automation trigger **Autopay is set up** runs.
## Require a card on file
For a business that won't do the work without a card on file, turn on **Require a card on file** in **Settings → Payments** and save. Then:
- **Quotes ask for a card.** A quote for a client not on autopay says "A card on file is required for service. After you sign, you'll add yours on Stripe's secure page." Its one button is **Approve and add your card**. The signature is saved first, so the quote is approved even if the client stops on Stripe's page. Price ranges and change orders don't ask.
- **The client's page says so.** Until they've agreed, their account page has "Finish setting up: add your card" under **Waiting on you**, with **Add your card**.
- **You see who hasn't.** **Clients** gets a **Card not set up** tab: active clients with no card they agreed to that can be charged (a removed card, or one saved but not agreed to, counts). Their jobs show **Card not set up** under the title.
Nobody is stopped from doing the work, and crews still never see cards.
## When the work is done
1. A crew completes a visit, or someone marks a one-off job's work complete. The charge is queued for when **When to charge** says. Until then the job says "Charged automatically tonight." (or the day it goes), and it isn't on the list of jobs ready to invoice.
2. When it's due, Crewtavo makes the invoice, the same one **Create invoice** would, with every finished visit on the job not billed yet. It's marked sent without emailing it, and Stripe charges the saved card.
3. When it's paid, the invoice is **Paid** ("Paid automatically with Visa ending 4242 on Nov 3, 2026."), and the client gets an email, "Receipt for invoice #2051", with what was charged to which card, a **Manage autopay** button to change their card or turn autopay off, and "Add a tip for the crew?" when you take tips.
A visit reopened before the charge goes isn't charged. A visit completed on a phone with no signal is charged once it syncs. Marking a one-off job's work complete asks first: "Jane Smith's Visa ending 4242 is charged automatically at the end of the day." Choose **Mark complete**.
If you invoice the visits yourself before the charge goes, autopay leaves them alone: send that invoice the usual way, or use [Charge card](#charge-a-saved-card-now). An amount under Stripe's 50¢ minimum isn't charged, and you're told to send it the usual way.
### When a charge waits for your OK
The invoice is made, but waits as a draft, when:
- It's more than **Most to charge without asking**: "$650.00 is over your $500 limit, so it waits for your OK."
- **An AI assistant marked the work done.** A visit an assistant completed, or one-off work it marked complete, always waits, whatever the amount: "An AI assistant marked the work done, so it waits for your OK." The assistant can't approve it. Work a person marks done is charged as usual. See [Connect Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/).
- It includes visits autopay didn't queue itself: "It includes visits from before autopay started" or "It includes visits autopay didn't queue (finished while it was off, or from a voided invoice)".
You get a notification ("Approve a $650.00 charge for Jane Smith"), **Invoices** says "1 charge needs your OK." with **Review**, and **Home** lists it under **Needs attention**. On the invoice:
- **Approve charge** charges it in the next few minutes.
- **Send it the usual way** leaves the draft for you to send, with the Pay link.
## When a charge fails
| What happened | What happens |
| --- | --- |
| The card is declined | The invoice is owed as usual. The client gets an email, "We couldn't charge your card for invoice #2051", with the link to pay it and a link to update their card, and the day it's tried again. Crewtavo tries once more 3 days later. |
| It's declined again | Autopay pauses for that client until they update their card. The client is told, and their **Autopay** card says **Needs a new card**. |
| A bank payment bounces | It isn't tried again. Autopay pauses until they update how they pay. |
| The bank wants the client to confirm (3D Secure) | The client gets "Please confirm your payment for invoice #2051", which opens the invoice to confirm it. |
| A bank payment is on its way | The invoice says "A bank payment of $45.00 from Chase ending 6789 is on its way through Stripe". It usually clears in a few business days. **Record payment** waits until it clears or bounces. |
| The card was removed in Stripe | Autopay pauses for that client, and you're told ("Jane Smith's card was removed"). |
| The bank sent new card details | The new expiry or last four is saved by itself. |
A notice goes by email, or by text to a client with no email address. When the client adds or updates their card, a charge that was waiting on them is tried on the new card straight away.
You hear about a failure in several places: a notification to owners, admins and office staff with **Invoices and payments** ("Autopay failed: Jane Smith"), the top of **Invoices** ("2 autopay charges failed: …"), **Needs attention** on **Home**, and the invoice itself ("Autopay failed: … Jane Smith was sent the Pay link and a way to update their card."), with **Send a reminder**. The automation trigger **An autopay charge fails** runs too.
## Charge a saved card now
For a client who saved a card and agreed, you can charge any unpaid invoice to it, not only the ones autopay makes:
- **One invoice**: choose **Charge card** on the invoice. Crewtavo asks "Charge $450.00 to Visa ending 4242?". Choose **Charge $450.00**. It works on a draft too, which is marked sent without an email.
- **Several**: on **Invoices**, choose **⋯ → Charge cards**. **Charge saved cards** lists the unpaid invoices whose client has a card they agreed to. Tick them (or **Select all**) and choose **Charge 3 invoices · $…**. One with a charge already under way says what it's doing, like "Waiting for your OK" or "Bank payment on its way", and can't be ticked.
These go past **Most to charge without asking**, since you pressed it. If what's owed changed before the charge goes, nothing is charged: "The amount changed. Check it and try again". A declined **Charge card** isn't tried again by itself: the client is sent the Pay link and a way to update their card at once, and it doesn't pause their autopay. **Charge card** isn't offered while a bank payment is on its way, or for an invoice made in Stripe.
## Tips
Tips follow **Let clients add a tip when they pay online** in **Settings → Company**. With it on, the receipt after each automatic charge asks "Add a tip for the crew?" with a link to the invoice. There the client picks **10%**, **15%**, **20%** or **Other** and chooses **Add a $6.75 tip to your Visa ending 4242**. The tip is charged to the card that paid, as its own small charge: at least 50¢, up to the invoice's total, and one per invoice. It's recorded with the invoice's payments, and a note says "Tip added".
A tip on the saved card only works from the client's own link, like the one in their receipt, and only on a card (not a bank account). With tips off, there's no tip choice anywhere and no tip is charged. See [The client's own links](https://crewtavo.com/docs/clients/client-hub/#the-clients-own-links).
## Referral credits while a charge runs
A [referral credit](https://crewtavo.com/docs/clients/marketing/) doesn't go on or come off an invoice while autopay is charging it, because Stripe charges the amount the invoice had when the charge started. The credit goes on another invoice instead, or waits.
## Pause, stop or change a card
On the client's page, the **Autopay** card has:
- **Pause**: nothing is charged until you choose **Turn back on**. Invoices go out with the Pay link meanwhile. The client's page says "Autopay is paused. Contact us to turn it back on."
- **Remove card**: Crewtavo asks "Remove Visa ending 4242?". If it's the card they agreed to, autopay turns off, and they add a card again from their client page to turn it back on. The card is removed from Stripe too, unless it was brought in from Stripe.
- **Recent charges**: the last few, with where each stands (**Paid**, **Needs your OK**, **Failed**, "Charges tonight"…). Click one to open its invoice.
The client can choose **Change card** or **Turn off autopay** on their own page anytime. When they turn it off, you're told: "Jane Smith turned off autopay. Their invoices go out with the Pay link again." To start again, they save a card again on Stripe's page.
To stop charging one job, turn off **Charge their saved card** on it. To stop for everyone, turn off **Charge clients' saved cards when the work is done** in **Settings → Payments**. Clients who agreed then see "Charges are on hold for now. Until they start again, invoices come to you to pay.", and can still turn it off.
Whatever was waiting to be charged is called off when autopay stops. If that leaves an invoice unsent or unpaid, you're told ("Send invoice #2051 to Jane Smith the usual way").
## Cards already saved in Stripe
If you've been charging clients by hand in Stripe, **Bring in your Stripe history** on **Apps → Stripe** brings in the card each client saved there too. **Settings → Payments** then lists them: "14 clients have a card saved in Stripe." They aren't charged from Crewtavo until they agree. Two ways to move them over:
- **Send Confirm autopay links**: by email, or by text for clients without an email address. The email, "Confirm autopay with Acme Lawn", says "We have your Visa ending 4242 on file. Tap below to confirm we can charge it after each visit", with a **Confirm autopay** button. They see the card and your terms, and agree with one tap. Anyone sent one in the last 7 days is skipped.
- **These clients agreed to be charged automatically** (owners only): for clients who already agreed with you some other way. Tick them and choose it. It's kept as their agreement, in your name, with today's terms ("Recorded by Pat on …").
Stop charging each client by hand in Stripe from the day they move over. Their page says when: "Charged from Crewtavo since Nov 3, 2026".
## If you switch Stripe accounts
Saved cards belong to one Stripe account, and to test or live mode. When you connect another account, or your live key after a test one, Crewtavo stops using the cards saved in the old one (they stay in that Stripe account), autopay stops for those clients, and you're told which need to set it up again ("Autopay needs setting up again for 3 clients"). Send them a new invite.
## If something's off
**The autopay switch is greyed out.** It says why: "Connect your own Stripe account on the Apps page to use autopay." or "Update your Stripe key on the Apps page to turn on autopay."
**"Your Stripe key can't charge saved cards anymore, so invoices go out with the Pay link."** The key on **Apps → Stripe** was replaced with one that can't save cards. Update it, or turn autopay off.
**"Stripe isn't sending Crewtavo every update it needs."** Connect the key again on **Apps → Stripe**.
**A visit was completed but nothing was charged.** Check the job's **Charge their saved card** switch, and the client's **Autopay** card: it may be paused, need a new card, or be waiting on a bank account check. Also check whether the charge is waiting for your OK on the invoice.
**The client got two emails about one charge.** Turn off Stripe's own emails about failed payments and receipts in your Stripe dashboard.
Source: https://crewtavo.com/docs/billing/autopay/ (last updated 2026-11-04)
---
# Write off an invoice that won't be paid
> When a client is never going to pay, Write off takes what's left off what you're owed and stops the reminders. You can undo it, and a late payment still counts.
Sometimes a client just isn't going to pay, and you take the loss. Writing the invoice off takes it off your list of what you're owed, so it stops showing up on your home screen every time you sign in.
## Write off an invoice
1. Open the invoice.
2. Choose **⋯** at the top right, then **Write off**.
3. Check the amount in "Write off invoice #…?" and choose **Write off**.
The invoice now shows **Written off** where it said **Balance due**, with a note saying when it was written off.
You can write off any invoice that was sent and still has something owed on it, including one that was partly paid. Only what's still owed is written off; the payments already made stay on it.
:::note
**Write off** is greyed out while a bank payment for the invoice is on its way. Wait for it to clear or bounce first.
:::
## What changes
A written-off invoice no longer counts as money you're owed:
- It's not under **Awaiting payment** or **Past due** on your home screen or the **Invoices** page, and not in **Receivables** or **Needs attention**.
- No more payment reminders go out for it, including ones that were already waiting to be sent.
- Your client's page no longer counts it in **Balance owing**. It shows what you've written off for them underneath instead, which is good to know before you take on more work for them.
- The client's Client Hub no longer lists it under things to pay.
The work still counts as done and billed: the invoice still counts toward what you've invoiced, and its visits stay billed, so the job doesn't come back asking to be invoiced again.
To see every written-off invoice, open **Invoices** and choose the **Written off** tab. The total at the bottom is what you've written off.
## If they pay after all
Record the payment on the invoice as usual with **Record payment**. Once nothing's left on it, the invoice is marked paid. If they pay part of it, it stays written off for what's still left.
The client can still open their link to the invoice, and pay it there if you take payments with Stripe.
## Undo a write-off
Open the invoice and choose **Undo write-off**. It's owed again, and past due if its due date has passed. Undoing it doesn't send a reminder straight away.
## Write off or void?
- **Write off** is for a real bill the client won't pay. The work was done, so it still counts as invoiced.
- **Void invoice** is for a bill that shouldn't have been sent at all, like a mistake or a duplicate. A void invoice doesn't count as invoiced, its visits can be invoiced again, and it can't be undone. An invoice with payments on it can't be voided.
## If you use Stripe
Stripe calls a written-off invoice "uncollectible", and Crewtavo keeps the two in step:
- If you mark an invoice **uncollectible** in Stripe, Crewtavo writes it off too.
- If you write off an invoice that was made in Stripe, Crewtavo marks it uncollectible in Stripe.
- For an invoice made in Crewtavo, its Stripe payment page is closed when you write it off, the same as when an invoice is paid. If the client pays later from their link, Crewtavo makes a new one.
Undoing a write-off in Crewtavo doesn't change the invoice in Stripe, because Stripe can't reopen an uncollectible invoice.
:::tip
Writing an invoice off in Crewtavo doesn't change it in QuickBooks Online or Zoho Books. If you keep your books there, record the bad debt there too, or ask your accountant how they'd like it handled.
:::
You can also ask Claude or ChatGPT to write off an invoice, or to undo a write-off, if you've connected them to Crewtavo.
Source: https://crewtavo.com/docs/billing/write-off-an-invoice/ (last updated 2026-10-20)
---
# See your money and how the business is doing
> Finance shows what you collected, what's owed and late, every payment and profit by job. Metrics covers quotes, visits, your team's hours and clients.
Two pages in the sidebar hold your numbers:
- **Finance**: money in, money owed and profit.
- **Metrics**: quotes and lead sources, visits and requests, your team's hours, and clients.
Both use the **Date range** button at the top right: **This month** (the default), **Last month**, **Last 30 days**, **Last 90 days**, **This quarter**, **This year**, **Last year** or **Custom**. The range is part of the page's address, so you can bookmark a view or send it to someone on your team.
## Finance
### Overview
The top of **Overview** shows one figure for the range, with a line of how it built up day by day (or week by week, or month by month, for longer ranges). The dashed line is the **Previous period**: the same number of days just before, so you can see whether you're ahead. Pick the figure from the menu above the number:
- **Collected**: payments received, less refunds. Tips aren't included.
- **Net after fees**: collected, less card and bank processing fees. Roughly what reaches your bank.
- **Invoiced**: invoices issued, not counting drafts or voided invoices. [Written-off invoices](https://crewtavo.com/docs/billing/write-off-an-invoice/) still count.
Under the line:
- **Owed to you**: what's on open invoices today.
- **Past due**: the part of that past its due date.
- **On the way to your bank** (or **Last deposit**): Stripe deposits, if you take payments with Stripe. **View** opens the deposits page.
Beside it is the year's revenue goal. An admin sets it with **Set a revenue goal**, along with an optional target job margin. The card shows how far along you are, where an even pace would put you today, and what you're on track for.
**Performance** has a card for each figure, each with a link to the details:
| Card | What it shows |
| --- | --- |
| **Payments** | What came in, split by card, bank transfer, cash, check and other. Refunds are listed on their own. |
| **Collected** and **Net volume** | Each period's total, with the change from the period before. |
| **Unpaid invoices** | What's owed today, split by how late it is. |
| **Invoiced** | Invoices issued in the range. |
| **Past due** | The oldest late invoices and how many days late each is. |
| **Top clients by spend** | Who paid you the most in the range. |
| **Time to get paid** | The average days from an invoice being issued to being paid, and how much was paid within a week, a month and longer. |
| **Quotes won** | The value of quotes sent in the range that were approved. |
Hold the pointer over the small **i** next to a card's name to see what it counts. At the bottom, **Recent payments** lists the latest payments.
### Payments
**Payments** lists every payment and refund in the range, newest first, with its method, the invoice it paid, the client and the time. Click a row to open the invoice. The buttons above the list filter it to **Card**, **Bank transfer**, **Cash**, **Check**, **Other** or **Refunds**, and **Download** saves what's shown as a spreadsheet.
Above the list are the range's totals: **Collected**, **Refunded**, **Processing fees**, **Net after fees**, **Tips** and **Sales tax billed**. Below it, **Client balances** lists who owes you, with their oldest due date.
If you [wrote off](https://crewtavo.com/docs/billing/write-off-an-invoice/) any invoices in the range, the totals also show **Written off**: what's still unpaid on them, counted by the day you wrote them off, not the day they were issued. That's the bad debt you took for the period, the figure your accountant will ask for. The number of invoices under it opens the **Written off** tab on the **Invoices** page, which lists every written-off invoice, not just the ones in this range.
### Profit
**Profit** shows jobs completed in the range and what they brought in. **Job profitability** sets each job's labor, sub and crew pay, expenses and materials against its contract total, lowest margin first, and flags jobs under your target margin.
**Sub and crew pay** is what you pay [subcontractors](https://crewtavo.com/docs/team/subcontractors/) on the job, and your team's [piece pay](https://crewtavo.com/docs/team/timesheets-and-pay/#piece-pay), once it's agreed, done or paid. A job's own page shows the same costs under **Job costing**. Once a job has labor of its own (time at a pay rate, or sub and crew pay), its line items count their materials only, so the labor estimated in your prices isn't counted twice.
:::note
**Job profitability** shows only for roles with **Job costs and profit** turned on.
:::
### Services
**Services** shows what each item on your [price list](https://crewtavo.com/docs/sales/price-list/) brought in, from invoices issued in the range, paid or not. Across the top are **Service revenue**, **Items billed** and **Service profit**. **Top services** has a card for each of your best sellers, with a line over time. **Revenue and profit by service** lists every service with its **Category**, **Times billed**, **Revenue**, **Costs**, **Profit** and **Margin**. Lines not from the price list count as **Other**, and deposits and progress payments count once the final invoice lists the work.
A service's costs are its price list cost plus its share of the job's labor and expenses. Roles without **Job costs and profit** see **Revenue by service**, without costs or profit.
## Metrics
- **Sales**: quotes sent, won and lost, conversion, days to approval, why quotes were lost, and results by salesperson and by lead source.
- **Work**: visits completed and requests received.
- **Team**: **Paid hours**, time on visits, hours awaiting approval and labor cost, by person. Breaks your business doesn't pay for are left out, as set in [Choose how breaks are paid](https://crewtavo.com/docs/team/timesheets-and-pay/#choose-how-breaks-are-paid).
- **Clients**: new clients, how they found you, and clients with no work in over a year, with a button to start a win-back campaign.
Every table sorts by any column, and **Download** saves it as a spreadsheet.
## Who can see them
Owners, admins and office staff see both pages. To change that for a role, open **Settings → Roles**: **Metrics** needs **Finance and metrics** turned on, and **Finance** needs **Invoices and payments** as well. Estimators and crews don't see either.
:::tip
Old links to the Reports page still work: they open the matching Finance or Metrics tab.
:::
Source: https://crewtavo.com/docs/billing/finance-and-metrics/ (last updated 2026-11-04)
---
# Add clients and properties
> Add a client (customer) and their service addresses in Clients, keep gate codes, contacts and notes on their page, and archive or delete clients you no longer work with.
Every request, quote, job and invoice belongs to a client (customer), and usually to one of that client's properties (service addresses). **Clients** lists them all, and each client's page keeps their addresses, gate codes, other contacts, notes and all the work you've done for them.
## Add a client
1. Open **Clients** and choose **New client**. You can also choose **Create → Client** in the sidebar, or **New client** under **More** on a phone.
2. Fill in **Name**. Everything else is optional:
- **Company**, for a business client.
- **Email** and **Phone**. Quotes, invoices, reminders and review requests go to these.
- **Lead source**: how they found you. Pick a suggestion (Referral, Google, Website, Facebook, Yard sign, Repeat client, Door hanger, Nextdoor) or type your own. **Metrics** counts your leads by source.
- **Status**: **Lead**, **Active client** or **Archived**. A new client starts as a lead.
- **Tags**: type a tag and press Enter or a comma. Tags you've used before are suggested. Use them for anything you'd like to pick clients out by, like a neighborhood or "Commercial".
3. Under **Service address**, enter the **Street address**, **City**, **State / Province** and **ZIP / Postal code**. You can leave it empty and add properties later.
4. Choose **Create client**. Their page opens.
If you've typed something in the search box on **Clients**, **New client** starts with that as the name.
:::tip[Already in Crewtavo?]
When another client already uses the email you type, "Already used by" and their name appear under **Email**. Open the link to check before you make a second record. It's only a warning, so you can still save.
:::
You don't have to leave what you're doing to add someone. When you start a request or a quote and the person isn't there, type their name and choose "Create “…” as a new client". They're added as a lead with only a name, so fill in the rest from their page later.
A lead becomes an **Active** client by itself once they have a job: when you convert one of their quotes to a job, or create a job for them. See [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/).
## Find a client
**Clients** lists everyone except archived clients, 50 at a time. **Load more** shows the next 50.
- Type in the search box to find a name, company, email or phone number.
- **All**, **Leads**, **Active** and **Archived** filter by status, each with its count. **All** leaves out archived clients, so choose **Archived** to see them. When you [require a card on file](https://crewtavo.com/docs/billing/autopay/#require-a-card-on-file), owners, admins and office staff with **Invoices and payments** also get **Card not set up**: active clients with no card they agreed to that can be charged.
- **Any tag** narrows the list to one tag. It appears once you've tagged a client.
- Sort by **Name A–Z** or **Newest first**.
"No clients match" means the filters left nobody: choose **Clear filters** to start over. To find a client from any screen, use search at the top. See [Find anything with search](https://crewtavo.com/docs/getting-started/find-anything/).
## Import or download your client list
Owners, admins, office staff and estimators have these in the **⋯** menu on **Clients**:
- **Import from a spreadsheet** brings in clients and their properties from a CSV file, like Jobber's Clients and Properties exports. Clients already in Crewtavo get the new properties instead of a duplicate. See [Switch from Jobber](https://crewtavo.com/docs/getting-started/switch-from-jobber/) for the steps.
- **Download as spreadsheet** saves every client, archived ones too, as a CSV file: name, company, email, phone, one service address, status, lead source, tags and the date they were added.
To download everything in Crewtavo at once, see [Back up and export your data](https://crewtavo.com/docs/hosting/backups/).
## The client's page
At the top are the client's status, company and tags, then **New request**, **New quote** and the **⋯** menu. Below that:
- **Properties**: their service addresses.
- **Requests**, **Quotes**, **Jobs** and, for the office, **Invoices**: all the work for this client, each with a count. Choose a row to open it.
- **Plans and files**, once they have a property. See [Upload and manage plans](https://crewtavo.com/docs/jobs/plans-and-files/).
- **Notes and messages**.
Down the side: **Details** (email, phone, what they owe, **Lead source**, **Referred by** for a client who came from a referral link, **Client since**, the billing address, their payment terms and tax, the marketing switches and your internal notes) and **Other contacts**.
## Edit a client
Choose **⋯ → Edit client**. Along with the fields you filled in when you added them, there are:
- **Internal notes**, shown under **Details** on their page. They're for your team.
- **Billing address**, for a client who gets their bills somewhere else. Leave it empty if it's the same as the service address.
- Under **Invoices**, **Due after (days)**: when their invoices are due, in place of your usual terms. Leave it empty for yours; 0 means due on receipt.
- **Tax exempt: no tax on their quotes and invoices**, with an **Exemption number or note** if you like. Their drafts lose their tax straight away; quotes and invoices already sent keep theirs.
Choose **Save changes**. Their terms and tax show under **Details** on their page.
## Add a property
1. Under **Properties**, choose **Add property**.
2. Fill in the **Street address**. **Label** is optional and handy for a client with several places ("Main office, Lot B, Rental #2…"), and so is **Apartment, suite or unit**. Then **City**, **State / Province** and **ZIP / Postal code**.
3. Owners, admins and office staff also see **Access**: **Gate code**, **Lockbox code** and **Access instructions**, like "Dog in the back yard; park on the street".
4. Add any **Property notes**, then choose **Add property**.
When you save an address here, Crewtavo puts it on the map, so routes and weather checks know where it is. A property it couldn't place says "Not on the map yet". Check the street, city and ZIP, and save it again. An address you typed in with **New client** isn't placed straight away, so it says "Not on the map yet" too: open **Edit property** and choose **Save property** to place it.
Each property has **Directions**, which opens it in your maps app, and a **⋯** menu:
- **Edit property** changes the address, codes or notes.
- **Measure on the map** opens **Measure** at that property. See [Measure a yard or a roof](https://crewtavo.com/docs/measuring/measure-yards-and-roofs/).
- **Remove property** (owners, admins and office staff) asks "Remove this property?". Requests, quotes and jobs at that address keep their history but lose the address.
### Who sees gate and lockbox codes
The codes are kept apart from the rest of the property, so they don't travel further than they need to.
| Who | When they see the codes |
| --- | --- |
| Owners, admins and office staff | Always, on the client's page and on every visit. They're the only ones who can add or change them. |
| The people put on a visit there (field crew, a crew lead or a subcontractor) | On that visit, the day before and the day of. For a visit at a set time: from 24 hours before it starts until 12 hours after. Once the visit is completed or cancelled, they're hidden again. |
| Everyone else, estimators included | Never. A crew lead who isn't on the visit doesn't see them either. |
An estimator can edit a property's address, but doesn't see the **Access** fields, and saving doesn't change the codes.
## Other contacts
A spouse, a property manager or a bookkeeper can go under **Other contacts**:
1. Choose **Add**.
2. Enter their **Name**, and if you like a **Role** ("Spouse, property manager…"), **Email** and **Phone**.
3. Tick **Primary contact** to mark them **Primary**. A client has one primary contact, so ticking it for someone else moves it.
4. Choose **Add contact**.
To change or remove someone, use the **⋯** beside their name.
:::note
**Gets emailed reminders and receipts** and **Gets text reminders** are saved with each contact, but at the moment Crewtavo sends quotes, invoices and reminders only to the client's own email and phone. If someone else should get them, put their email or phone on the client itself.
:::
## Notes and messages
Type in "Add an internal note: gate quirks, preferences, history…" and choose **Add note**, or press Ctrl+Enter (⌘+Enter on a Mac). Notes are for your team; the client never sees them.
The same list shows, newest first, the emails and texts you've sent the client (with **Failed** on any that didn't go out), texts they've sent back, and messages they've sent from their Client Hub (**From client**). **Show older** goes further back.
Anyone who can open the client's page can add a note, crews included. You can delete your own notes with the trash icon; owners, admins and office staff can delete anyone's. Emails and texts stay.
To text or email the client from Crewtavo, see [Text and email clients from Messages](https://crewtavo.com/docs/clients/messages/).
## What's owed and marketing
Owners, admins and office staff also see these under **Details**:
- **Balance** adds up what the client still owes on invoices that are out, partly paid or past due. Anything you've written off shows as **Written off**. See [Write off an invoice](https://crewtavo.com/docs/billing/write-off-an-invoice/).
- **Marketing** has **Gets campaigns, review and referral asks**. Turn it off and the client gets no campaigns, review asks or referral asks, and their page shows **Unsubscribed from marketing**. It turns off by itself when a client uses the **Unsubscribe** link in any of those emails. (Texting STOP turns off texts only.) Quotes, invoices and reminders still go out. See [Unsubscribes and opt-outs](https://crewtavo.com/docs/clients/marketing/#unsubscribes-and-opt-outs).
- **Reviews** has **Gets review asks**, to stop only review asks. It's off while they're unsubscribed from marketing, and once they've left you a Google review ("Left a Google review, so not asked"). See [Ask for Google reviews](https://crewtavo.com/docs/clients/reviews/).
- **Photos** has **Can be posted on social pages**. Turn it off and photos of their property aren't offered for social posts. See [Social posts](https://crewtavo.com/docs/clients/social-posts/).
## Autopay
Once you take [autopay](https://crewtavo.com/docs/billing/autopay/), owners, admins and office staff whose role has **Invoices and payments** see an **Autopay** card on the client's page. It says whether the client is **Not set up**, **Active**, **Paused**, **Needs a new card** or has a **Bank account being checked**, with:
- The card or bank account ("Visa ending 4242 · expires 08/28"), how they agreed ("Agreed Oct 31, 2026 on their client page") and "Charged from Crewtavo since …".
- **Send autopay invite** (**By email** or **By text**) for a client not on autopay, or **Send Confirm autopay link** for one whose card came in from Stripe.
- **Pause** (or **Turn back on**) and **Remove card**.
- **Recent charges**: each with its invoice, amount and where it stands. Click one to open the invoice.
To invite many clients at once, choose **⋯ → Send autopay invites** on **Clients**. See [Invite a client](https://crewtavo.com/docs/billing/autopay/#invite-a-client).
## Share links and ask for a review
From **⋯** on the client's page:
- **Copy Client Hub link** copies the link to the client's own page, where they see their visits, quotes and invoices and can ask for more work. "Client Hub link copied. Send it to your client." It's your copy of their link, which can't add a tip to their saved card or agree to a card already on file. See [The Client Hub](https://crewtavo.com/docs/clients/client-hub/#the-clients-own-links).
- **Send autopay invite by email** or **Send autopay invite by text** sends the client a link to save a card and agree to autopay. They're there once you take autopay, for owners, admins and office staff with **Invoices and payments**. **Send autopay invite by text** is greyed out for a client who texted STOP. See [Charge clients' saved cards automatically](https://crewtavo.com/docs/billing/autopay/).
- **Ask for a review by email** or **Ask for a review by text** sends your review message with a link to your Google review page. Add that link under **Marketing → Reviews** first. Each one is greyed out when the client has no email or phone, and texts need [Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/).
- **Copy referral link** copies a link the client can share with friends. Whoever books through it comes in as a new lead with **Referral** as the lead source and **Referred by** set to this client.
## Archive, restore or delete a client
Owners, admins and office staff can do these from **⋯**:
- **Archive client** takes them off the main **Clients** list (they're under **Archived**) and out of the client search when you start a request or quote, but keeps everything on record. Their page says "This client is archived." A new campaign goes to active clients, so an archived client only gets one when the campaign's **Client status** includes archived clients or has none picked. Turn off **Gets campaigns, review and referral asks** too if they should never get one.
- **Restore client**, or **Restore** on an archived client's page, brings them back as an active client, even if they were a lead before. Change it back to **Lead** with **Edit client** if you need to.
- **Delete client** erases them for good. If they have quotes, jobs or invoices, Crewtavo asks "Archive … instead?" and offers **Archive client**, because deleting would erase that history. Otherwise it asks "Delete …?": their properties, requests, notes and contacts are deleted too, and it can't be undone.
## If the same client shows up twice
When someone fills in your [booking form](https://crewtavo.com/docs/sales/booking-form-on-your-website/), Crewtavo looks for the client by email, then by phone, and puts the request on them, adding the address as a new property if they don't have it. Their details aren't changed from the form: what they typed is on the request. Someone new comes in as a lead with **Website form** as the lead source. [Website Forms](https://crewtavo.com/docs/connections/website-forms/) work the same way.
A client can still end up twice, for example from a referral link, an import or a typo. To find them, choose **⋯ → Possible duplicates** on **Clients**. It lists clients who share an email, a phone or an address, with why (**Same email**, **Same phone** or **Same address**). For each pair, choose **Merge**, or **Not duplicates** to stop it showing.
To merge a client you've spotted yourself, open their page and choose **⋯ → Merge into another client**, then pick the other client.
In **Merge clients**, pick which one to **Keep**. Crewtavo says what moves over (properties, requests, quotes, jobs, invoices, payments, notes and more), what the kept client gets that they're missing, like an email or phone, and the tags it adds. Choose **Merge into …**. The other client is then deleted, and this can't be undone. Invoice totals and payments don't change.
Merging is for owners, admins and office staff with **Invoices and payments**, because it moves invoices and payments.
## Who can see and change clients
| Role | Clients |
| --- | --- |
| Owners, admins and office staff | Every client. Add, edit, import and download clients; see codes, invoices and what's owed; archive and delete. |
| Estimators | Every client. Add, edit, import and download clients and their properties, without gate codes, invoices or archiving. |
| Crew leads | Every client, to look at. They can add notes. |
| Field crew | Only the clients they've been put on a visit for, to look at. They can add notes. |
| Subcontractors | None. They see the client's name on their own visits. |
**New request**, **New quote**, **⋯** and the buttons to add properties and contacts need the **Quotes and sales** area in the person's role. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
Source: https://crewtavo.com/docs/clients/clients-and-properties/ (last updated 2026-11-04)
---
# Text and email clients from Messages
> Messages keeps one conversation per client with every email and text Crewtavo sent them, their texts back, their Client Hub messages and your team's notes. Reply by email or text, or add a note.
**Messages** is where you talk to clients: one conversation per client, with every email and text Crewtavo sent them (quotes, invoices, reminders, automations and your own messages), the texts they send back, what they write in the Client Hub, and notes your team leaves for each other.
## Open Messages
On a computer, or a tablet held sideways, choose the **Messages** button (a speech bubble) at the top of the screen, next to **Search**. On a phone, or a tablet held upright, tap the search button and type "Messages". A notification about a new text opens that client's conversation straight away.
The list on the left has one row per client, with their latest message and how long ago it came in. Initials in a green circle and a dot mean the latest message is from the client, so it's probably waiting on you. "You:" means the latest one is from your business, and "Note:" that it's a note.
To narrow the list:
- **All**: every conversation.
- **From clients**: messages clients sent you, which are their texts and their Client Hub messages.
- **Email**: emails Crewtavo sent.
- **Texts**: texts both ways.
**Search conversations** finds a client by name, or by the words in their latest message.
## Read a conversation
Choose a client to open their conversation. Messages are grouped by day, newest at the bottom, and each one says whether it was an **Email**, a **Text** or an **Internal note**, and when. One that couldn't go out says **Not delivered**.
At the top are the client's name (choose it to open their client page), their phone and email, and a phone button to call them from your phone. On a phone, the back arrow takes you to the list again.
Messages updates by itself within about half a minute, so a reply shows up without reloading.
## Reply to a client
At the bottom of the conversation:
1. Pick **Text**, **Email** or **Note**. It starts on **Text** if the client has a phone number and texting is set up, otherwise on **Email** if they have an email address and email is connected, otherwise on **Note**.
2. For an email, check the subject. It starts as "A note from" and your business name.
3. Write your message and choose the send button (or press ⌘ + Enter, or Ctrl + Enter on Windows).
A text is sent from your business's Twilio number, without your business name added, so sign it if the client might not know the number. Over 160 characters, Crewtavo shows how many texts it goes as ("sends as 2 texts"); a text can be up to 1,600 characters. An email goes out from your business's email with your logo, the way your quotes do.
If something's missing, the composer says so instead of sending: "No phone number on file for this client.", "No email address on file for this client.", "Texting isn't turned on yet." or "Email isn't turned on yet." Add the client's details on their client page, or set up [texting](https://crewtavo.com/docs/connections/texting-with-twilio/) or [email](https://crewtavo.com/docs/connections/email/).
If the email or text provider refuses a message, Crewtavo says why, and the message stays in the conversation marked **Not delivered**, so you can try again or reach them another way.
### Leave a note for your team
Choose **Note** to write something only your team sees, like "Gate code changed" or "Prefers texts after 5". The client never sees notes. Notes also show on the client's page under **Notes and messages**.
## Start a new conversation
Choose **New message**, then pick the client. Their conversation opens, ready to write. The client has to be in Crewtavo already; to add someone, see [Add clients and properties](https://crewtavo.com/docs/clients/clients-and-properties/).
## What comes into Messages
| From | How it shows |
| --- | --- |
| A text the client sends to your Twilio number | In their conversation, as a **Text**. |
| **Message us** in the [Client Hub](https://crewtavo.com/docs/clients/client-hub/) | With the subject "Message from the client portal". |
| **Ask to change** on a visit in the Client Hub | With the subject "Asked to change the visit on" the visit's date and name. |
| **Request changes** on a quote in the Client Hub | With the subject "Changes requested". |
Everything in this table counts under **From clients**.
:::caution[There's no email inbox]
Crewtavo sends email but doesn't receive it. When a client replies to an email from Crewtavo, the reply goes to the **Email** in **Settings → Company** (or the address your emails are sent from, if that's empty), not into **Messages**. Answer it from your own email, and add a note here if the team should know.
:::
### Texts from numbers Crewtavo doesn't know
An incoming text is matched to a client by the **Phone** on their client record (the last 10 digits, so the format doesn't matter). A text from a number that isn't on any client is dropped: it doesn't show up anywhere in Crewtavo. That includes the phone numbers of a client's other contacts: only the client's own **Phone** counts. If a client texts from a new phone, update their phone number and ask them to send it again.
If two clients have the same phone number, a text from it shows in both conversations.
Only the words of a text come in. A text with just a picture doesn't show up.
## Who's told about new messages
When a client texts your number, every owner, admin and office person gets a notification, "New text from a client", that opens the conversation. Each person chooses whether that also comes as a push, an email or a text under **Messages from clients** in their notification settings (see [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/)).
A quote's **Request changes** notifies the office through the automation **Tell the office when a client asks for changes** (see [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/)).
:::note
**Message us** and **Ask to change** from the Client Hub don't send anyone a notification: they wait in **Messages** under **From clients**, so check there regularly.
:::
## Who can see and send messages
- **Owners, admins, office staff and estimators** can open every conversation, start new ones, and send emails and texts.
- **Crew leads** see conversations and can add notes.
- **Field crew** only see the clients they're working for, and can add notes.
- Emails and texts about invoices show only to people who can see invoices, and ones about quotes and jobs only to the office and estimators.
See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## If texting or email isn't set up
Until then, Messages says "Email and texting aren't turned on yet. You can still add notes." Email is set up under **Settings → Email** (see [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/)). Texting needs a Twilio account and three settings on your server: see [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/).
Source: https://crewtavo.com/docs/clients/messages/ (last updated 2026-10-28)
---
# The Client Hub (your clients' portal)
> The Client Hub is where your clients open the links you send. They approve and sign quotes, pay invoices, save a card for autopay, see their next visit, ask for more work and message you, with no account or password.
The Client Hub is the page your clients see when they open a link from you. There they approve and sign quotes, pay invoices, save a card to pay automatically, check when you're coming, ask for more work and send you a message. They don't need an account or a password: the link is the way in.
To send your clients a plain guide to it, see [Your account with your service company](https://crewtavo.com/docs/clients/for-your-clients/).
## How clients get to it
- **Quotes and invoices you send.** Every quote and invoice you send by email or text carries a link to it in the Hub. In an email it's a **View online** button. See [Create and send a quote](https://crewtavo.com/docs/sales/quotes/) and [Create an invoice and get paid](https://crewtavo.com/docs/billing/invoices/).
- **Automatic emails.** The quote follow-up and the past-due reminder have a link to the quote or invoice in them too. See [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
- **Autopay emails.** The autopay invite, each receipt, a failed-charge notice and the copy of their autopay agreement carry a fresh link to their account page, with a **Manage autopay** button in emails. A client on autopay always has one that works. See [Charge clients' saved cards automatically](https://crewtavo.com/docs/billing/autopay/).
- **Their account page.** On the client's page, choose **⋯**, then **Copy Client Hub link**. You'll see "Client Hub link copied. Send it to your client." Paste it into a text or email, for example in their conversation in [Messages](https://crewtavo.com/docs/clients/messages/). There's no button that emails this link for you.
- **From any quote or invoice.** Your business name at the top of a quote or invoice says **Your account** under it, and there's a **Your account** link under that. Either one takes the client to their account page.
:::caution[Anyone with the link can open it]
A Hub link works for whoever has it, so send it only to the client. The bottom of Hub pages says "Private link for Jane Smith. Keep it to yourself."
:::
## See what your client sees
Open a quote or invoice, choose **⋯**, then **Preview as client**. It opens the Hub with "Preview: this is what your client sees." across the top. A preview works for a day, shows drafts too, and can't approve, pay or send a message, so you can click around safely.
## The account page
The account page says "Hi Jane" with their address, then shows what needs them first.
### Waiting on you
Everything the client still has to do:
- **A quote to answer**: "Quote #1042 · valid until Nov 30, 2026" with its total and **Review and approve**. A quote for recurring work shows its price per visit ("$55.00 per visit"). A quote with options says how many and the lowest price ("3 options, from $8,400") with **See your options**. A roofing estimate sent as a price range shows "Between $18,000 and $21,000" with **See your estimate**. If they've asked for changes, it says "you asked for changes".
- **An invoice with a balance**: "Invoice #2051 · due Nov 15, 2026" and **Pay $450.00**. Once it's past due, it says "was due" in red. An invoice being charged to their saved card isn't listed. One whose automatic charge failed says "We couldn't charge your card for this one." with **Update your card**.
- **A card to add**, when you [require a card on file](https://crewtavo.com/docs/billing/autopay/#require-a-card-on-file): "Finish setting up: add your card" with **Add your card**.
When nothing's waiting, the heading says **All caught up** and "Nothing needs your attention right now."
### Pay automatically (autopay)
When you take [autopay](https://crewtavo.com/docs/billing/autopay/), the account page has an autopay card under **Waiting on you**:
- **Not on autopay**: **Pay automatically after each visit**, "Save a card once, and we charge it at the end of the day of each visit.", with **Pay automatically**.
- **On autopay**: **Paid automatically · Visa ending 4242**, with when the next charge goes ("Next charge tonight"), **Change card** and **Turn off**.
- **A step left or something to know**: a card saved but not agreed to ("Visa ending 4242 is saved", with **Finish setting up**), "Your bank account is being checked", "Autopay is paused" ("Contact us to turn it back on."), or "Your card needs updating" with **Update card**.
- **On hold**, when you've turned autopay off or your Stripe key can't charge cards: "Autopay is on hold · Visa ending 4242" ("Charges are on hold for now. Until they start again, invoices come to you to pay."), with **Turn off**.
Each opens **Pay automatically**, where the client saves a card or bank account on Stripe's secure page and agrees to your terms in three steps (**How it works**, **Add a card**, **Agree**). They tick **I agree to these terms** and choose **Finish**. Crewtavo never sees the card number, and the client gets a copy of what they agreed to by email (or by text, without an email address). See [What the client does](https://crewtavo.com/docs/billing/autopay/#what-the-client-does).
Once on, the same page shows the card, since when, when it expires and the next charge, with **Change card** and **Turn off autopay**. Turning it off asks "Turn off autopay? We'll send invoices to pay instead." with **Turn off autopay** and **Keep it on**. To turn it back on, they save a card again.
### Next visit
The next visit on the client's jobs, with its date, name, address and the first names of the crew on it. The time comes from the visit's start on your schedule and the **Arrival window** in **Settings → Company**:
- With an arrival window, like 2 hours: "Arriving between 8:00 AM and 10:00 AM".
- With none (**None: the start time**): "Starting at 8:00 AM".
- An anytime visit: "Time to be confirmed".
The visit's end time isn't shown: it's how long the work takes, not when the crew arrives.
The card says **On the way** once the crew taps **On my way**, and **Working now** once they start. See [Your day in the field](https://crewtavo.com/docs/field/your-day-in-the-field/).
Under the visit:
- **Reschedule** and **Cancel**, on a visit from tomorrow on that hasn't started. See below.
- **Add to calendar** downloads the visit for the client's phone or computer calendar.
- **Message us** opens "Ask to change a visit", with a message started for them ("Could we move the … visit on …?"). On a visit today, or one that's started, it's **Ask to change** instead, with "To change this visit, call (555) 555-0123." (or "message us" without a phone number).
- **All visits** opens **Visits**: everything **Coming up**, and the last few visits under **Done**.
:::note
Only visits on the client's jobs show here. An assessment booked from a request doesn't. Anything else on a job's schedule does, tasks included (like a task an automation makes on the job), so name those as if the client will read them.
:::
#### Reschedule and Cancel
**Reschedule** shows the open days and times in the next 3 weeks, on your workdays and hours, when the visit's crew isn't busy. The client picks a **Day** and, for a visit at a set time, a time (an **Arrival window** if you set one), or chooses "None of these work? Tell us what suits you" and writes it, then **Send request**. **Cancel** asks **Why?** (optional) and has **Ask to cancel**.
Either one is a request: "Nothing changes until Acme Lawn confirms." The visit says **Change requested** and "We'll let you know by email." A new request takes the place of one still waiting.
Owners, admins and office staff who can schedule, and the lead of the visit's crew, get a notification ("Jane Smith asked to move Lawn mowing"), and it's under **Needs attention** on **Home**. Open the visit on the **Schedule** and choose **Approve** (**Approve and cancel it** for a cancel), or **Decline** with a note for the client if you like. When the client wrote what suits them instead of picking a time, change the visit's date and time and save: that approves it. Approving moves or cancels the visit; for a recurring job, only that visit. Either way, the client is emailed if [email is connected](https://crewtavo.com/docs/connections/email/) and they have an address.
### Request work, Message us and Refer a friend
Under the visit are **Request work** and **Message us**, and **Refer a friend** once referrals are set up:
- **Request work** opens a short form: **What do you need?** (the categories on your [price list](https://crewtavo.com/docs/sales/price-list/) to tick, and **Something else**), **Where?** if they have more than one property, **Tell us about it**, **When would you like it done?** (**As soon as possible**, **In the next month** or **I'm flexible**) and a **Promo code**. **Send request** shows "Request sent" with a reference number.
- **Message us** opens "Message Acme Lawn" ("They'll reply by email or text."). The message button at the top of every Hub page does the same, and the phone button calls you if your business has a phone number.
- **Refer a friend** shares the client's referral link. It only shows once you've set a credit or an offer in **Marketing → Referrals**. Once they've earned credit, it says "You have $25.00 in referral credit. It goes on your next invoice." See [Referrals and referral credits](https://crewtavo.com/docs/clients/referrals/).
### Recent
The last few things that happened: payments ("Payment on invoice #2051", or "$45.00 charged automatically to Visa ending 4242"), finished visits, quotes they approved, and requests you haven't finished with. A payment or quote opens when they tap it.
## Quotes in the Hub
From a quote, the client picks an option if there are several, ticks any add-ons, reads the agreement (adding their initials where it asks), then types their name, signs with a finger or mouse and chooses **Approve quote**. They can choose **Request changes** instead at any step. Once signed, the quote shows "Signed on Nov 3, 2026" with **Print or save PDF**, and the signed copy stays there for them.
A quote for recurring work shows **Total per visit** and **How often** ("Every 2 weeks, Tuesday, April to October"). With autopay, a quote for work priced per visit also offers **Approve and set up autopay**, which goes straight on to saving a card, and a business that requires a card on file has **Approve and add your card** instead. See [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/#approve-and-set-up-autopay).
What happens next is in [When the client says yes](https://crewtavo.com/docs/sales/when-a-quote-is-approved/). For options side by side, see [Offer Good, Better and Best options](https://crewtavo.com/docs/sales/good-better-best-options/). For roofing estimates sent as a price range, where the client chooses **Yes, send someone out**, see [Roofing estimates](https://crewtavo.com/docs/measuring/roofing-estimates/).
Clients can add a promo code to a quote that's waiting for an answer, with **Have a promo code?** under the subtotal.
## Paying an invoice
The invoice shows what's on it, any payments, and the **Balance due**. With [Stripe connected](https://crewtavo.com/docs/connections/stripe/), the client chooses **Pay $450.00 by card or bank** and pays on Stripe's page for that invoice. The payment shows on the invoice once Stripe reports it. A bank payment shows "Your bank payment is on its way" until it clears, which usually takes a few business days.
With autopay, the invoice says how it's being paid instead:
- "Charging your Visa ending 4242 now", with no **Pay** button, so they can't pay twice.
- "Paid automatically with Visa ending 4242 on Nov 3".
- When the charge failed: "We couldn't charge your Visa ending 4242. We'll try again in a few days, or you can pay now." with **Update your card**, and **Pay** stays.
- Paid by hand, with no card saved yet: "Paid. Pay automatically next time?" with **Save a card**.
Without Stripe, the invoice says "To pay, contact Acme Lawn at (555) 555-0123." Record their payment yourself when it comes in.
### Let clients add a tip
1. Open **Settings → Company** and find the **Defaults** card.
2. Turn on **Let clients add a tip when they pay online**.
3. Choose **Save company settings**.
Invoices then ask "Add a tip for the crew?" with **No tip**, **10%**, **15%**, **20%** and **Other**, and the pay button adds the tip to the total. Invoices made in Stripe don't offer a tip. Only owners and admins can change this setting.
A client can also add a promo code to an invoice with **Have a promo code?**, as long as nothing's been paid on it yet and it isn't being charged to their card.
### Tip on a saved card
With tips on, the receipt after an automatic charge asks "Add a tip for the crew?" and links to the invoice. There the client picks **10%**, **15%**, **20%** or **Other** and chooses **Add a $6.75 tip to your Visa ending 4242**. It's charged to the card that paid the invoice: at least 50¢, up to the invoice's total, once per invoice. They see "Your $6.75 tip is on its way to the crew." A bank account can't take a tip this way, and only the client's own link can add one (see below).
## Where client actions show up in Crewtavo
| The client… | It shows up | Who's told |
| --- | --- | --- |
| Approves a quote | The quote is **Approved** | Owners, admins and office ("Quote #1042 approved") |
| Chooses **Request changes** | The quote is **Changes requested**, and their note is in [Messages](https://crewtavo.com/docs/clients/messages/) with the subject "Changes requested" | Owners, admins and office |
| Says yes to a price range | The estimate in Roofing | Owners, admins, office and estimators ("Jane Smith wants a visit") |
| Pays an invoice | The payment on the invoice | Owners, admins and office, once it's paid in full |
| Sets up autopay | The **Autopay** card on their page says **Active** | Nobody, unless you add an automation for **Autopay is set up** |
| Turns off autopay | The **Autopay** card on their page | Owners, admins and office with **Invoices and payments** ("Jane Smith turned off autopay") |
| Sends **Request work** | [Requests](https://crewtavo.com/docs/sales/requests/), from "Client Hub" | Owners, admins and office ("New request from Jane Smith") |
| Asks to **Reschedule** or **Cancel** a visit | The visit on the **Schedule**, marked **Change requested**, and **Needs attention** on **Home** | Owners, admins and office, and the crew's lead ("Jane Smith asked to move Lawn mowing"). It isn't an automation, so it always goes. |
| Sends **Message us** or **Ask to change** | Messages, under **From clients**, with the subject "Message from the client portal" or "Asked to change the visit on …" | Nobody: check Messages |
| Shares their referral link, and a friend fills it in | A new lead and request, and **Marketing → Referrals** | Owners, admins and office, as a new request |
The notifications come from your starter automations, so you can change who gets them or turn them off. See [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/).
## Your logo and colors
The Hub shows your business name, logo and phone number at the top of every page. Without a logo it shows your initials on your brand color. To add one, see [Add your logo](https://crewtavo.com/docs/getting-started/add-your-logo/).
Your **Brand color**, in **Settings → Company**, colors the Hub's buttons and highlights. Pick one of the swatches or your own color, then choose **Save company settings**. The text on your color switches between white and dark by itself, so it stays readable. Times and dates in the Hub follow your business's time zone, wherever the client is.
## The client's own links
Every Hub link you send to the client's own email or phone on file is **their own link**: quotes and invoices you send them, the autopay invite, receipts and notices, the copy of their autopay agreement, and an automation's email or text to them. Links they reach from one of those are their own too.
Links that someone on your team gets are **your copy**: **Copy Client Hub link**, **Copy link** when sending, a send typed to an address that isn't the client's, and the links in what your team reads (the copy on the client's timeline, notifications, notes, tasks and an automation's preview).
Your copy opens the same pages and can approve, sign, pay and save a card through Stripe's page. It can't do two things that need the client:
- **Add a tip to their saved card.**
- **Agree to a card that's already on file**: one brought in from Stripe, or one the client saved through another link. Only a card saved through that same copy can be agreed to there.
So for those, send the client their own link: an autopay invite or a **Resend** does it. Links sent before autopay came to Crewtavo work like your copy for these two things.
## When a link stops working
Client links expire, so an old link in someone's inbox doesn't open their account forever:
| Link | Works for |
| --- | --- |
| A quote | 60 days |
| An invoice | 90 days |
| The account page | 120 days |
| A signed copy sent after signing on the iPad | A year |
| A review request's link | A year |
| A referral link, or a campaign's unsubscribe link | Ten years |
| **Preview as client** | A day |
Each link counts from when it was made: when you sent or copied it, or when an automatic email went out. Links inside the Hub are made fresh each time a page opens, like the quotes and invoices on the account page and the **Your account** link on a quote. So a client who still has one working link can get to everything, but a link they saved or got in an email still runs out on time.
When a link has run out, the client sees **This link isn't working** with "This link has expired or isn't valid. Ask for a new one." They also see this page, with another line under the heading, for a quote you've moved back to draft ("This quote isn't ready yet.") or a voided invoice ("This invoice was cancelled. Contact us with any questions.").
### Send a fresh link
- **A quote still waiting for an answer**: open it and choose **Resend**.
- **An invoice**: open it and choose **Resend**.
- **Anything else**, like a signed quote or their visits: on the client's page, choose **⋯**, then **Copy Client Hub link**, and send them that. Their account page links to all their quotes and invoices.
In **Resend**, **Copy link** gives you the link to paste into your own message.
## Who can share Client Hub links
Owners, admins, office staff and estimators whose role has **Quotes and sales** can copy a client's Hub link, preview quotes as the client, and send quotes. Sending and previewing invoices is for owners, admins and office staff whose role has **Invoices and payments**. See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
Source: https://crewtavo.com/docs/clients/client-hub/ (last updated 2026-11-04)
---
# Your account with your service company
> For clients of a business that uses Crewtavo. How to open your link, pay an invoice, approve and sign a quote, see when the crew is coming, ask for changes or more work, and get a new link if yours stops working.
:::tip[Send this page to your clients]
Business owners: this page is written for your clients. Send them `crewtavo.com/docs/clients/for-your-clients/` with their first quote or invoice, or put it on your website. For how the Hub works on your side, see [The Client Hub](https://crewtavo.com/docs/clients/client-hub/).
:::
Your service company sends you quotes, invoices and visit times through a page made just for you. This guide explains how to use it.
**Crewtavo is the software your service company uses.** Questions about your service, your bill or your appointment go to the business itself, not to Crewtavo. The people who make Crewtavo can't see your account, change a visit or help with a payment. The business's name is at the top of every page they send you, with a button to message them (and one to call them, if they've added a phone number).
## Open your link
The business sends you a link by email or text. In an email, it's the **View online** button.
- There's no account to make and no password. The link is how you get in.
- It works on a phone, tablet or computer.
- The page shows the business's name and logo at the top. Tap the name to get to **Your account**, where everything they've sent you is in one place.
- The link is just for you. Please don't post it or pass it on, because anyone who has it can open your page.
Tip: bookmark **Your account**, or keep the latest email from the business, so you can find it again.
## Pay an invoice
1. Open the invoice from its email or text, or choose **Pay** next to it on **Your account**.
2. Check what's on it and the **Balance due**.
3. If the business asks "Add a tip for the crew?", choose **No tip**, a percent, or **Other** to type an amount.
4. If the business takes payments online, choose **Pay** (it shows the amount, like **Pay $450.00 by card or bank**), and pay on the secure payment page. Which ways you can pay, card or bank account, depends on what the business takes.
You'll see "Thank you!" back on the invoice, and get a receipt by email. A bank payment takes a few business days to clear, and the invoice says "Your bank payment is on its way" until it does.
If there's no pay button and it says "To pay, contact" the business, they don't take payments online. Call them to pay another way.
Have a promo code? Choose **Have a promo code?** on the invoice, type it in and choose **Apply**, before you pay.
## Approve a quote and sign it
1. Open the quote from its email or text, or choose **Review and approve** on **Your account** (**See your options** if it offers a few to choose from).
2. If there are options, compare them and tap the one you want (**Choose this one**). Tick any add-ons you'd like. The total updates as you go. Then choose **Review the agreement**.
3. Read the agreement. If a section asks for your initials, draw them once under **Your initials**, then choose **Add my initials** on each section that asks.
4. Choose **Continue to sign**. Type **Your full name**, sign with your finger or mouse, and tick the box that says you approve.
5. Choose **Approve quote**. If the quote asks for a deposit and the business takes payments online, the button is **Approve and pay deposit**, and you pay the deposit next, by card or bank, on the secure payment page.
Not every quote has all these steps: one without options starts at the agreement, and one without an agreement goes straight to signing.
The page then says when you signed, and **Print or save PDF** gives you a copy to keep. The business will be in touch to schedule the work. If you still owe the deposit, **Pay the $… deposit** is there to pay it. If they don't take payments online, they'll send you an invoice for it.
Not quite right? Choose **Request changes** at any step, say what you'd like changed, and choose **Send request**. The business will follow up with an updated quote.
If the quote's valid-until date has passed, you can still approve it, and the business will confirm the price.
### A price range instead of a price
Some estimates come as a range, like "Between $18,000 and $21,000", before someone comes out to check. Choose **Yes, send someone out** to have the business book a visit, or **I have a question** to message them. Saying yes doesn't commit you to anything: you'll sign once you've seen the exact price.
## See your next visit
**Your account** shows your **Next visit**: the day, what's being done, the address and who's coming. The time reads like this:
- "Arriving between 8:00 AM and 10:00 AM" if the business gives an arrival window, or "Starting at 8:00 AM".
- "Time to be confirmed" if the business hasn't set a time yet.
When the crew heads your way, the visit says **On the way**. Once they start, it says **Working now**. Some businesses also text you when the crew is on the way, or email you the day before.
Choose **All visits** to see everything coming up, and the visits that are done.
## Add a visit to your calendar
Choose **Add to calendar** under the visit. It downloads the visit, and your phone or computer offers to add it to your calendar.
## Reschedule or cancel a visit
For a visit from tomorrow on, choose **Reschedule** or **Cancel** under it.
- **Reschedule**: pick a **Day** the business has open in the next 3 weeks, and a time if the visit has one, then choose **Send request**. None of them work? Choose "None of these work? Tell us what suits you" and write it.
- **Cancel**: say why if you like, then choose **Ask to cancel**.
Nothing changes until the business confirms. The visit says **Change requested** until they do, and they'll let you know by email.
For a visit today, or one that's started, the visit says to call the business, and **Ask to change** sends them a message instead: say what works better for you and choose **Send**. They'll reply by email or text.
## Ask for more work
1. On **Your account**, choose **Request work**.
2. Tick what you need, or type it under **Something else**. If you have more than one property, pick which one.
3. Add any details, choose when you'd like it done, and add a promo code if you have one.
4. Choose **Send request**.
You'll see "Request sent" with a reference number. The business will get back to you with a quote or a time to come look.
## Send the business a message
Choose **Message us** on **Your account**, or the message button at the top of any page, write your message and choose **Send**. The business will reply by email or text. If they've added a phone number, the phone button at the top calls them.
## Refer a friend
If the business has a referral offer, **Your account** has **Refer a friend** and **Share my link**. Send the link to a friend, and they can ask the business for a quote, with you named as the one who sent them. Any reward is up to the business.
## Stop marketing emails
Every marketing email from the business, like a seasonal offer, has an **Unsubscribe** link at the bottom. Open it and you're unsubscribed straight away: "You're unsubscribed". Changed your mind? Choose **Subscribe again** on the same page.
Unsubscribing stops marketing emails only. You'll still get your quotes, invoices, any reminders and other messages about your work.
## If your link isn't working
If a page says **This link isn't working** and "This link has expired or isn't valid. Ask for a new one.", the link has run out. Links stop working after a while to keep your account private: a quote's link after about two months, an invoice's after about three, and **Your account** after about four.
**Ask the business for a new link.** Call, text or email them, and they can send you a fresh one in a moment. Crewtavo can't send you one.
You might also see:
- "This quote isn't ready yet." The business is still working on it.
- "This invoice was cancelled. Contact us with any questions."
- "This quote is no longer open." Contact the business if you still want the work.
## Questions
For anything about your service, your bill, a payment or a visit, contact the business directly: use the call or message button at the top of any page they've sent you, or reply to their email.
Source: https://crewtavo.com/docs/clients/for-your-clients/ (last updated 2026-11-04)
---
# Automate reminders and follow-ups
> Automations send emails, texts, notifications and tasks for you when something happens, like a quote going unanswered, an invoice going past due or a visit tomorrow. Turn the starter rules on or off, change their words and timing, or build your own.
An automation (a rule, or what other apps call a workflow) does something for you when something happens: emails a client who hasn't answered a quote, reminds them about a past-due invoice, texts them that the crew is on the way, or tells the office a quote was approved. Every business starts with a set of rules, most of them on.
## Find Automations
Open **Settings** and choose **Automations**, under **Automate and connect**. You can also go straight to `/automations` on your Crewtavo address, or search for "automations".
Owners, and admins and office staff whose role has **Automations**, can see and change rules. Rules that start from subcontractors' job offers also need **Subcontractors**, and rules about autopay need **Invoices**.
The top of the page shows **Active rules**, **Done in the last 7 days**, **Waiting to run** (follow-ups with a wait that haven't gone yet) and **Failed in the last 7 days**. Choose the failed count to see what went wrong.
## The starter rules
| Rule | What it does | Starts |
| --- | --- | --- |
| **Tell the office when a quote is approved** | Notifies owners, admins and office: "Quote #1042 approved". | On |
| **Tell the office when a client asks for changes** | Notifies owners, admins and office when a client chooses **Request changes** on a quote. | On |
| **Tell the office when a client says yes to a price range** | Notifies owners, admins, office and estimators to book the site visit. | On |
| **Tell the office about new online requests** | Notifies owners, admins and office about requests from your booking and website forms, the Client Hub and referrals. | On |
| **Tell the office when an invoice is paid** | Notifies owners, admins and office when an invoice is paid in full, if anything was paid on it (not one a referral credit covered whole). | On |
| **Follow up on quotes after 3 days** | Emails the client three days after you send a quote, if it's still waiting for an answer, with their link to it. | On |
| **Remind clients when an invoice is past due** | Emails the client the balance and their link to pay, the day after the invoice's due date. | On |
| **Remind clients the day before a visit** | Emails the client the day before each scheduled visit or assessment. | Off |
| **Text the client when the crew is on the way** | Texts the client when a crew taps **On my way**. Needs [texting](https://crewtavo.com/docs/connections/texting-with-twilio/). | Off |
| **Ask for a Google review after a job** | Sends your review link a day after a job is completed (not recurring work). Set it up in **Marketing → Reviews**. | Off |
| **Ask for a Google review on recurring work** | Sends your review link a day after a recurring job reaches the visit you chose in **Marketing → Reviews**, once for each job. | Off |
| **Ask for referrals after a job** | Emails the client their referral link a week after a job is completed (not recurring work). Set it up in **Marketing → Referrals**. | Off |
| **Re-engage past clients** | Emails clients a year after their last visit, once each time they go quiet. An automated campaign in **Marketing → Campaigns**. | Off |
| **Win back lost quotes** | Emails the client 30 days after a quote is marked lost, if it still is. An automated campaign in **Marketing → Campaigns**. | Off |
Each rule in the list shows a sentence saying what it does, like "When an invoice becomes past due: email the client.", and how many times it's run.
The review, referral and campaign rules are set from Marketing, and you can change them here too. They're skipped while [Marketing](https://crewtavo.com/docs/clients/marketing/) is uninstalled, except **Follow up on quotes after 3 days**, which Marketing shows as **Close pending quotes**. A rule that's an automated campaign says so at the top, with a link to **Marketing → Campaigns**: its emails to clients count opens and clicks, and Re-engage and Win back go as marketing emails with an unsubscribe link.
## Turn a rule on or off
Use the switch at the left of the rule. You'll see "Rule turned on" or "Rule turned off".
- Turning a rule off cancels the follow-ups it has waiting.
- Turning a rule on works from then on. It doesn't go back for quotes sent or visits finished before.
Inside a rule, the same switch is at the top (**On** or **Off**). Choose **Save changes** after flipping it there.
## Duplicate or delete a rule
From a rule's **⋯** menu in the list:
- **Duplicate** makes a copy, opens it, and says "Rule copied. It's off until you turn it on." Use it to make a second reminder from one that works.
- **Delete** removes the rule. Follow-ups it has waiting are cancelled, and its history is deleted. Inside a rule, it's **⋯** then **Delete rule**.
To start from nothing, choose **New rule**.
## Edit a rule
Choose a rule to open it. The sentence at the top says what it will do as you change it. Give it a **Rule name** and, if you like, a **Description**. Then it reads in four steps.
### When
What starts the rule:
- **Clients**: **A client is added**, **A client hasn't had a visit in a while**, **A client earns a referral credit**
- **Requests**: **A request comes in**
- **Quotes**: **A quote is sent**, **A quote is approved**, **A client asks for changes to a quote**, **A client says yes to a price range**, **A quote is marked lost**
- **Jobs**: **A job is created**, **A job is completed**, **A recurring job reaches the visit set in Marketing**
- **Visits**: **A visit is tomorrow**, **A crew is on the way**, **A visit starts**, **A visit is completed**, **A client asks to reschedule**, **A client asks to cancel**
- **Invoices**: **An invoice is sent**, **An invoice becomes past due**, **An invoice is paid in full**, **A payment is received**
- **Subcontractors**: **A job is offered to a sub**, **A sub takes a job offer**, **A sub turns down a job offer**, **A job offer to a sub runs out**
- **Autopay**: **Autopay is set up**, **An autopay charge fails**, **A saved card expires next month**. See [Autopay](https://crewtavo.com/docs/billing/autopay/).
**A visit is tomorrow** goes out from 8 in the morning, your time, the day before a scheduled visit or assessment (not tasks).
**A client hasn't had a visit in a while** is checked each morning at 10. Say how many days under **Only if**, with **Days since their last visit** (30 to 730). It's what **Re-engage past clients** in **Marketing → Campaigns** runs on.
**A recurring job reaches the visit set in Marketing** fires once for each recurring job, after the visit you pick under **Recurring work** in **Marketing → Reviews** (the 3rd, to start with). A recurring job stays active, so **A job is completed** doesn't fire for it.
**A client earns a referral credit** fires for the client who referred a friend, once the friend pays their first invoice. See [Referrals and referral credits](https://crewtavo.com/docs/clients/referrals/).
**A client asks to reschedule** and **A client asks to cancel** fire when a client asks from their Client Hub. Nothing moves until someone approves it. See [Reschedule and Cancel](https://crewtavo.com/docs/clients/client-hub/#reschedule-and-cancel).
### Wait
**Run right away**, or **Wait first** and set how many minutes, hours or days. Not every trigger can wait: a client going without a visit, changes requested, visits tomorrow, on the way and starting, clients asking to reschedule or cancel, payments received, autopay charges failing, and subs turning down or missing an offer run right away.
### Only if (optional)
With no conditions, the rule "Runs every time." **Add condition** to narrow it:
- **Its status (when the rule runs)**: the quote, invoice, visit or other record's status, like **Awaiting response** or **Past due**.
- **Client tags**, **Client status** and **Client lead source**.
- **Total** and **Line items**, for quotes, jobs and invoices.
- **Where the request came from**, for requests: **Booking or website form**, **Client Hub**, **Referral**, **Phone**, **Email**, **Entered by staff** or **AI assistant**.
- **Type**, for jobs and visits: **One-off job**, **Recurring job**, **Job visit**, **Assessment** or **Task**.
- **Job type**, for visits and invoices: the job they're on, **One-off job** or **Recurring job**.
- **Invoice type**: **Standard**, **Deposit**, **Progress billing** or **Visits**.
- **Amount paid**, for invoices. An invoice a referral credit covered whole was paid $0.00.
- **Days since their last visit**, for clients.
- **On autopay**: **Yes** or **No**, for clients, jobs and invoices.
Conditions are checked when the rule runs, after the wait. That's what makes a follow-up safe: "Its status is Awaiting response" means a quote the client approved in the meantime gets no follow-up. All the conditions have to be true.
### Then
What the rule does, one or more actions in order (**Add action**):
- **Notify my team**: a notification for the people you pick under **Who** (**Owners**, **Admins**, **Office**, **Estimators**, **Crew leads**, **Field crew**, and on visit rules **People on the visit**, or on job rules **People on its next visits**), with a **Title** and **Details**.
- **Email the client**, with a **Subject** and **Message**.
- **Text the client**, up to 640 characters. Over 160 characters goes as more than one text.
- **Add a client tag** or **Remove a client tag**.
- **Add a note to the client**: a note only your team sees.
- **Create a task** on the schedule, **Due** the **Same day**, the **Next day**, or in 2, 3, 5, 7, 14 or 30 days.
- **Ask for a Google review**, **Send by** **Email**, **Text message** or **Text and email**. It uses your review link, messages and reminders from **Marketing → Reviews**, and asks each client at most once every 6 months. See [Ask for Google reviews](https://crewtavo.com/docs/clients/reviews/).
- **Ask for referrals**: emails the client their referral link, at most once every 6 months. The message is in **Marketing → Referrals**. See [Referrals and referral credits](https://crewtavo.com/docs/clients/referrals/).
- **Change the status**, for quotes (**Mark lost** or **Archive**) and requests (**Archive**).
- **Invite to autopay**, by email or text: a link to save a card and agree to automatic charges. See [Autopay](https://crewtavo.com/docs/billing/autopay/).
**Ask for a Google review** and **Ask for referrals** are skipped while Marketing is uninstalled ("Marketing is off, so this action is skipped."), and for clients who unsubscribed from marketing.
Rules about subs' job offers can only notify the office and create tasks.
Emails and texts a rule sends show in the client's conversation in [Messages](https://crewtavo.com/docs/clients/messages/).
### Fill in names and links
Under each message are the names and links you can fill in. Choose one to put it where your cursor is. It goes in as a `{{variable}}` and is filled in for each client:
| Choose | Puts in | Becomes |
| --- | --- | --- |
| **Client first name** | `{{client.first_name}}` | Jane (a business name stays whole) |
| **Client name** | `{{client.name}}` | Jane Smith |
| **Your company** | `{{company.name}}` | Acme Lawn |
| **Your phone** | `{{company.phone}}` | Your business phone |
| **Number** | `{{number}}` | The quote, invoice, job or request number |
| **Title** | `{{title}}` | Its title |
| **Total** | `{{total}}` | Its total. A price range shows the range, and a quote with options says "3 options from $8,400" |
| **Balance due** | `{{balance}}` | What's still owed on an invoice |
| **Client Hub link** | `{{link}}` | Their link to the quote or invoice in the [Client Hub](https://crewtavo.com/docs/clients/client-hub/). On a rule about a client, the Hub's home, where they can ask for work |
| **Last visit date** | `{{last_visit}}` | The client's last completed visit, on a rule about a client |
| **Visit date** | `{{date}}` | Thursday, October 29 |
| **Visit time** | `{{time}}` | " at 9:00 AM", or nothing for an anytime visit |
| **Arrival time** | `{{eta}}` | While a crew is on the way, " and should arrive in about 20 minutes", or nothing when that isn't known |
| **Address** | `{{address}}` | The property's address |
In an email, a **Client Hub link** on a line of its own becomes a **View online** button (**Request work** in Marketing's Re-engage and Win back emails). In a notification, note or task for your team, and the copy of an email kept on the client's timeline, it's the office's copy of the link (as **Copy Client Hub link** on the client's page makes), so nobody on the team can use it to act as the client.
**A client earns a referral credit** also has **Friend's first name**, **Their credit** and **Invoice the credit went on**. **A client asks to reschedule** has **Time they asked for** and **What suits them**, and **A client asks to cancel** has **Their reason**. **What suits them** and **Their reason** aren't offered in a task, because the crew sees tasks on the schedule.
You only see the ones that fit what starts the rule. Rules about subs' job offers also have **Sub's name**, **Their price** and, when they turn one down, **Their reason**; the price and reason go only in the office's notifications, never in a task, because the crew sees tasks on the schedule.
**Visit time** starts with " at", so put it straight after the date with no space: `on {{date}}{{time}}`.
When you're done, choose **Save changes** (or **Create rule** for a new one). If something's missing, the rule says what, like "Action 1: the email needs a subject and a message." Leaving with changes you haven't saved asks "Leave without saving?".
Changes to the conditions and actions apply to follow-ups already waiting too, since a rule runs as it is when its time comes. A new wait only applies to what happens from then on: a follow-up already waiting keeps the time it was given.
## Test a rule
**Test this rule**, at the side of the rule, tries it on your most recent quote (or invoice, visit, whatever the rule is about) without sending anything. Choose **Test with a recent quote**, or **Test** at the top. You'll see:
- Which record it used.
- "Conditions met: it would run", or "Skipped:" and the condition that isn't true.
- Each email, text or notification as it would read, filled in.
- Warnings, like a client with no email address, or email or texting not set up.
## See what your rules did
The **Activity** tab lists every run, newest first. Show **All**, **Failed** or **Waiting**. Each run says **Done**, **Failed**, **Skipped**, **Waiting**, **Running** or **Cancelled**, what each action did ("✓ Emailed jane@example.com"), and **Open quote** (or invoice, job…) to go to the record.
- **Retry** runs a failed run again. Actions that already worked are skipped, so nobody gets the same email twice.
- **Cancel** stops a waiting follow-up before it goes.
Inside a rule, **Recent runs** shows just that rule's.
## When a rule doesn't work
| You see | What to do |
| --- | --- |
| "Jane Smith has no email address." or "… has no phone number." | Add it to the client, then **Retry**. |
| "Email isn't set up yet. An admin can connect the company's email in Settings → Email." | [Connect your email](https://crewtavo.com/docs/connections/email/), then **Retry**. |
| "Text messaging isn't set up (TWILIO_*)." | Texting isn't set up for your Crewtavo. See [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/). |
| "Add your Google review link in Marketing → Reviews first." | See [Add your review link](https://crewtavo.com/docs/clients/reviews/#add-your-review-link). |
| **Skipped** on a review ask, referral ask or campaign email | Marketing is uninstalled, or the client unsubscribed, was asked lately or can't be asked. The run says which. See [Who isn't asked](https://crewtavo.com/docs/clients/reviews/#who-isnt-asked). |
| "No one on the team matches who this rule notifies." | Pick someone under **Who** who's on your team. |
| "There's no client on this record." | The rule can't email, text or tag anyone, like a task with no client. |
| **Skipped** with "Conditions not met: …" | Working as meant: a condition wasn't true when it ran. |
| **Cancelled** with "Rule turned off" | The rule was turned off while the follow-up was waiting. |
When a rule that sends emails or texts is on but email or texting isn't set up, the Automations page says so at the top. Notifications, tags and tasks still work.
## Examples
### Text clients the day before a visit
1. Open **Remind clients the day before a visit**.
2. Under **Then**, choose **Add action**, then **Text the client**.
3. Write the text, for example: `Hi {{client.first_name}}, this is {{company.name}}. We'll be at {{address}} on {{date}}{{time}}. Questions? Call {{company.phone}}.`
4. To text only, remove the **Email the client** action with its bin (**Remove action**) button. To send both, keep it.
5. Turn the rule **On** and choose **Save changes**.
It goes out from 8 AM the day before, for scheduled visits and assessments. To leave out assessments, **Add condition**: **Type** **is not** **Assessment**. Clients need a phone number that gets texts on their client record, and texting has to be [set up](https://crewtavo.com/docs/connections/texting-with-twilio/).
### Remind about a past-due invoice again after 14 days
**Remind clients when an invoice is past due** sends one email, the day after the invoice's due date. For a second one two weeks later:
1. In the list, choose **⋯** on **Remind clients when an invoice is past due**, then **Duplicate**.
2. Rename it, like "Second past-due reminder".
3. Under **Wait**, choose **Wait first** and set **14** **days**.
4. **Add condition**: **Its status (when the rule runs)** **is** **Past due**, so a client who's paid meanwhile isn't reminded.
5. Change the subject and message if you like. Keep `{{balance}}` and `{{link}}` in it, so they see what's owed and can pay.
6. Turn it **On** and choose **Save changes**.
Want a third? Duplicate this one and wait 28 days. Writing an invoice off calls off its waiting reminders (see [Write off an invoice](https://crewtavo.com/docs/billing/write-off-an-invoice/)).
### Ask for a review after a job
The easiest way is **Ask automatically** in **Marketing → Reviews**, which sets this rule and the one for recurring work for you. See [Ask for Google reviews](https://crewtavo.com/docs/clients/reviews/#ask-automatically). To change the wait, do it here:
1. Paste your Google review link in **Marketing → Reviews** and choose **Save**. See [Add your review link](https://crewtavo.com/docs/clients/reviews/#add-your-review-link).
2. Open **Ask for a Google review after a job**.
3. It waits a day after a job is completed. Change the wait if you'd like it sooner or later.
4. To text instead of email, change **Send by** to **Text message**, or **Text and email** for both.
5. Turn it **On** and choose **Save changes**.
Each client is asked automatically at most once every 6 months, however many jobs you finish for them, and reminders follow as set in **Marketing → Reviews**. It shows each request there, and whether they opened the link.
Source: https://crewtavo.com/docs/clients/automations/ (last updated 2026-11-04)
---
# Marketing: campaigns and promo codes
> Marketing is a built-in app for winning more work from the clients you have. It sends automated and one-off email campaigns and shows what each brought in, makes promo codes, asks for Google reviews and referrals, and posts to your social pages.
**Marketing**, in the sidebar, is where you turn happy clients into more work:
- **Campaigns**: emails that send by themselves (to past clients, lost quotes and quotes nobody has answered), and one-off emails to the clients you pick, with the opens, clicks and work each brought in. Both are on this page.
- **Promo codes**: a percent or dollar amount off, on this page.
- **Reviews**: ask clients for a Google review, with reminders. See [Ask for Google reviews](https://crewtavo.com/docs/clients/reviews/).
- **Referrals**: a link for every client to share, and a credit on their next invoice when a friend becomes a client. See [Referrals and referral credits](https://crewtavo.com/docs/clients/referrals/).
- **Social**: post job photos and your best reviews to Facebook, Instagram and Google. See [Post to Facebook, Instagram and Google](https://crewtavo.com/docs/clients/social-posts/).
## Marketing is an app
Marketing is one of Crewtavo's built-in apps, listed in **Apps** as **Crewtavo - Marketing**. Every business has it installed to start with. Owners, and admins whose role has **Connect apps**, install and uninstall it.
**Apps → Crewtavo - Marketing** says "Marketing is on" once it's installed, with buttons to its **Reviews**, **Referrals**, **Campaigns** and **Social** tabs. Two more apps work inside Marketing, and need it installed first:
- [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) brings your Google reviews into **Marketing → Reviews**, so you can reply to them there.
- [Facebook & Instagram](https://crewtavo.com/docs/connections/facebook-and-instagram/) lets you post to your Facebook Page and Instagram from **Marketing → Social**.
### Uninstall Marketing
1. Open **Apps → Crewtavo - Marketing** and choose **Uninstall**.
2. Read what stops and what keeps working, then choose **Uninstall**.
Marketing leaves the sidebar for everyone, and every automatic message it sends to clients stops:
- Review asks and their reminders. Reminders that were due aren't sent later.
- Referral asks.
- Campaigns: scheduled ones go back to drafts, and one that's sending stops where it is.
- Automated campaigns. Win-back emails that are waiting are cancelled and aren't sent later. Past clients still due a re-engage email get it once Marketing is back.
- Bringing in Google reviews, and replying to them.
- Social posts: scheduled ones go back to drafts, and one that's posting stops before its next network.
These keep working:
- Review, referral and campaign links already sent.
- Promo codes on quotes and online booking.
- Referral credits clients have earned, or earn later from links already shared, on their invoices.
- Photo links already sent to Facebook, Instagram and Google, until they expire.
- Following up on sent quotes (**Close pending quotes**), which isn't marketing, while its rule is on in [Automations](https://crewtavo.com/docs/clients/automations/).
Your campaigns, promo codes, review requests, referrals, Google reviews and social posts are kept, and come back when you install it again. While it's uninstalled, the Marketing page says "Marketing is off", with **Install Marketing** for those who can.
## Who can use Marketing
Owners, and admins and office staff whose role has **Marketing**, can open it. Some settings take more:
- Only owners and admins change the review link and messages, and the referral credit, offer and email. Everyone else sees "Only owners and admins can change these."
- Turning automatic asks and automated campaigns on and off, and changing their emails, is for owners and admins whose role also has **Automations**. Office staff see whether each one is on, and what it brought in.
See [What each role can see and do](https://crewtavo.com/docs/team/roles-and-permissions/).
## The overview
Across the top of Marketing:
- **Emails sent (30 days)**, split into automated and one-off campaigns, with how many clients have unsubscribed.
- **Revenue from campaigns**: paid work from people who clicked a campaign, before tax. It shows "Needs the Invoices area" if your role can't see invoices.
- **Review requests (30 days)**, with how many opened the review link.
- **Referrals**, with how many became jobs and what they've paid.
- **Referral credits earned**: credit clients have earned that isn't on an invoice yet.
The tabs are **Campaigns**, **Social**, **Promo codes**, **Reviews** and **Referrals**, plus **Website** if you've installed [Website Analytics](https://crewtavo.com/docs/connections/website-analytics/).
## Campaigns
**Campaigns** has two parts: **Automated campaigns**, which send by themselves to each client at the right time, and **One-off campaigns**, which you write and send yourself.
Campaigns need your email connected. Until it is, the tab says "Email isn't connected yet, so campaigns can't be sent." See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/).
### Automated campaigns
There are three, each a card with its own switch:
| Campaign | What it does | Starts |
| --- | --- | --- |
| **Re-engage past clients** | Emails clients who haven't had a visit in a year, on the day they reach it. | Off |
| **Win back lost quotes** | Emails the client 30 days after a quote is marked lost, if it's still lost. | Off |
| **Close pending quotes** | Emails the client 3 days after you send a quote they haven't answered. This is the **Follow up on quotes after 3 days** rule every business has. | On |
Each card says when it goes, how many emails are waiting, and what it's brought in so far, like "120 sent · 46% opened · 9% clicked · 3 bookings". **See who got it** opens its results. **Who gets it** says who it leaves out:
- **Re-engage past clients** isn't sent to clients you're working with (recurring work, a job or visit still to do, an open request, or a quote approved or waiting on them), or anyone sent a quote in the last 6 months, which **Win back lost quotes** looks after. Nor to anyone emailed it in the last 6 months, or whose last visit was over 3 years ago. It sends up to 100 a day, those who passed the mark most recently first.
- **Win back lost quotes** isn't sent if the quote isn't lost anymore, or the client has since approved another quote, had a job, sent a request or been sent a newer quote. It goes once for each quote.
- **Close pending quotes** follows up a quote the client asked for, so it isn't a marketing email: it keeps going while Marketing is uninstalled, reaches clients who unsubscribed from marketing, and has no unsubscribe link.
#### Turn one on or off
Use the switch on its card. You'll see, for example, "Re-engage past clients turned on".
- Turning on **Win back lost quotes** or **Close pending quotes** starts with quotes marked lost (or sent) from then on.
- Turning on **Re-engage past clients** when some past clients already qualify asks **Turn on Re-engage past clients?** first, with how many and how long they'd take at 100 a day. Choose **Email them too** (or **Email them too, 100 a day**), or **Only clients who reach it from now on**. Turning it off and on again later asks again.
- Turning off **Win back lost quotes** or **Close pending quotes** with emails waiting says how many. Choose **Turn off** to cancel them (turning it back on won't send them), or **Leave it on**.
#### Change the email or the timing
1. Choose **Edit email** on the card.
2. Pick the timing: **No visit in** (1 month to 2 years) for Re-engage, **After a quote is marked lost** for Win back, or **After a quote is sent** for Close pending quotes.
3. Change the **Subject line** and **Message**. Choose a name or link under the message to put it in, like **Client first name** or **Client Hub link**. **Preview** shows how it reads.
4. **Send a test** sends it to you (or any address).
5. Choose **Save**. Saving never turns the campaign on or off.
For Re-engage and Win back, **Client Hub link** goes to the client's [Client Hub](https://crewtavo.com/docs/clients/client-hub/), where they can ask for work: on a line of its own it becomes a **Request work** button. For Close pending quotes it's **Quote link (View online)**, the quote's own page, which becomes a **View online** button. Keep a link in the email, or the card warns "Add a link so clicks and bookings can be counted."
A new wait for Win back or Close pending quotes moves the quotes already waiting too. Lowering Re-engage's months while it's on says first how many more clients that brings in.
Each automated campaign is a rule in [Automations](https://crewtavo.com/docs/clients/automations/) underneath (**See it in Automations**). If someone changes the rule there into something the card can't show, the card says "You changed … in Automations, so only the switch above turns it on and off here," with **Open the rule**.
### One-off campaigns
A one-off campaign is one email to many clients, sent now or at a time you pick.
#### Write one
1. Under **One-off campaigns**, choose **New campaign**. A draft opens, named for today's date. Click the name at the top to change it.
2. Start from **Templates** (**Seasonal reminder**, **We miss you** or **Thank you**), or choose **Write with AI**, or write your own.
3. Fill in the **Subject line** and **Message**. Choose **First name**, **Full name**, **Your company**, **Your phone** or **Client Hub link** under the message to fill those in for each client.
**Client Hub link** is each client's own link to their [Client Hub](https://crewtavo.com/docs/clients/client-hub/), where they can ask for work. On a line of its own it becomes a **Request work** button. Add it (or any link) so clicks and bookings can be counted.
The draft saves as you type ("Saved" at the top). **Preview**, beside the email, shows how it reads for the first client on your list. Your business address and an **Unsubscribe** link are added at the bottom of every campaign email.
**Write with AI** shows when AI is on for your business (see [Ask a question](https://crewtavo.com/docs/team/knowledge-base/#ask-a-question) for adding a Claude key). Say **What's this email for?**, like "Remind past sealcoating clients to book before June", pick **Friendly**, **Professional** or **Urgent**, and choose **Write draft**. It replaces the subject and message, and puts a Client Hub link in. Read it over before you send it.
#### Choose who gets it
The **Audience** card at the side picks the clients:
- **Client status**: **Active clients**, **Leads**, **Archived**, or any mix. None selected means every status. New campaigns start with **Active clients**.
- **Has any of these tags**: only clients with at least one of these tags.
- **But none of these tags**: leaves out clients with any of these.
- **City**: from their properties or billing address.
- **Had any of these services**: on jobs that are done, or have had a visit.
- **Recurring work**: **Any**, **Has an active recurring job**, **Recurring job ends in the next 30 days** or **No active recurring job**.
- **No completed visit in the last**: **3 months**, **6 months**, **12 months** or **2 years**, for clients you haven't worked for lately.
It shows how many "clients will get this" and the first few names. Only clients with an email address who haven't unsubscribed are counted, and two clients with the same email get one copy. A campaign can go to up to 5,000 people.
#### Send a test
Choose **Send test**, check the address under **Send to** (yours to start with), and choose **Send test**. The subject starts with "[Test]". The **Unsubscribe** link in a test doesn't unsubscribe anyone.
#### Send now or schedule
1. Choose **Send**.
2. Pick **Send now**, or **Schedule** and set a **Date** and **Time**.
3. Choose **Send to 42** (the number of clients) or **Schedule**.
The audience is set when you send or schedule, so clients you add or tag later aren't included. Emails go out about 25 a minute, so a long list takes a while. The campaign shows a progress bar and "12 of 40 sent…" while it's sending.
#### Stop or unschedule
- **Unschedule** on a scheduled campaign makes it a draft again, to change or send another time.
- **Stop sending** on one that's going out stops the rest. "Emails already sent can't be recalled." It then shows as **Stopped**.
#### Copy or delete one
On a campaign's page, **⋯** has **Duplicate**, which makes a new draft with the same email and audience, and **Delete**. In the list, **⋯** has **Edit** (or **View**) and **Delete**, with **Undo** for a moment after. A campaign can't be deleted while it's sending.
### What a campaign brought in
A sent campaign, and each automated one, shows:
- **Sent**, **Opened** and **Clicked**, as a share of the emails sent.
- **Bookings**: requests and approved quotes from people who clicked a link, within 30 days. A request and the quote made from it count once.
- **Revenue**: what that work has been paid so far, before tax.
Opens are approximate: Apple Mail and some others load images to protect privacy, so some emails show as opened when they weren't.
**Recipients** lists everyone it went to, newest first, with **Everyone**, **Opened**, **Clicked** and **Booked** to narrow it. Each person shows **Sent**, **Opened**, **Clicked**, **Failed** or **Skipped** and why, like "Unsubscribed" for someone who unsubscribed after you sent it, with when they opened or clicked and any booking.
## Promo codes
A promo code takes a percent or a dollar amount off. Clients can enter one on your booking form, on a quote or invoice in the [Client Hub](https://crewtavo.com/docs/clients/client-hub/), when they ask for more work there, or on your website's own form. You can also add one to a quote or invoice yourself (see [Create and send a quote](https://crewtavo.com/docs/sales/quotes/)). Making codes needs **Marketing**, but anyone who makes quotes can put a code on one.
### Make a code
1. On **Promo codes**, choose **New promo code**.
2. Type the **Code**, like SPRING10: 3 to 24 letters, numbers or dashes.
3. Under **Discount**, pick **Percent off** or **Dollars off**, and the amount.
4. Fill in what you need:
- **What clients see**, like "Spring cleanup special", shown next to the discount.
- **Starts** and **Ends**: the dates it works.
- **Minimum order**: the least the order has to come to.
- **Total uses allowed**: leave it empty for no limit.
- **Each client can use it once** (on to start with) and **New customers only**.
- **Take it off every visit of recurring work** (off to start with). See below.
5. Choose **Create code**.
Each code in the list shows its uses, how much it's taken off so far, its rules, and **Active**, **Paused**, **Ended**, **Used up** or **Starts later**.
### Promo codes on recurring work
A code comes off once per job to start with: on weekly mowing, a 10% code takes 10% off the first mowing's invoice, and later mowings are full price. Turn on **Take it off every visit of recurring work** and it comes off every visit's invoice instead.
The discount isn't lost or doubled. If the invoice it's on is voided or deleted, it goes on the job's next invoice. A quote keeps the rule the client approved it with.
When you change this on a code that jobs already use, Crewtavo asks whether to change those jobs too: **Change it too** (or **Change them too**), or **Only new jobs**.
### Where clients use a code
- **Your booking form**: **Have a promo code?** under the questions. To share a code, choose **⋯** on it, then **Copy booking link with this code**: a link to your booking form with the code already filled in, for an email or a social media post. It's there once you have a booking form turned on. The booking form on your own website fills in a code from the page's address too, like `yoursite.com/quote?promo=SPRING15`. See [Put a booking form on your website](https://crewtavo.com/docs/sales/booking-form-on-your-website/).
- **Your website's own form**, with [Website Forms](https://crewtavo.com/docs/connections/website-forms/): a field called promo, promo_code, coupon or similar is read as a code. A code that doesn't work still makes the request, and says why.
- **A quote or invoice in the Client Hub**: **Have a promo code?** under the subtotal, while the quote is waiting for an answer, or before anything's paid on the invoice.
- **Request work in the Client Hub**: the **Promo code** box.
A code entered on a form or with **Request work** isn't taken off by itself. It shows on the request, and when you make the quote, the quote says "The client entered SPRING10 when they booked." with **Apply**.
When a code doesn't work, the client sees why, like "That code isn't valid. Check the spelling and try again.", "That code has already been used up." or "That code is for new customers."
An invoice takes one promo code. Promo codes from Crewtavo don't stack with coupons set up in your Stripe dashboard.
### Pause, edit or delete a code
From a code's **⋯** menu:
- **Edit** changes it.
- **Copy code** copies just the code.
- **Pause** stops new uses. **Turn back on** starts them again.
- **Delete** removes it, with **Undo** for a moment after. Quotes and invoices that used it keep their discount. To keep its history, pause it instead.
## Unsubscribes and opt-outs
Every campaign email, review ask email and referral ask email has an **Unsubscribe** link. It opens a page on your Crewtavo address (`/u/…`) that unsubscribes the client as soon as it opens: "You're unsubscribed" and "You won't get marketing emails or review requests from" your business. **Subscribe again** there undoes it. Email apps' own unsubscribe buttons work the same way.
An unsubscribed client gets no campaigns, review asks or referral asks. Everything else still goes to them: quotes, invoices, emails you send from Messages, and emails and texts from your [automations](https://crewtavo.com/docs/clients/automations/) like reminders and follow-ups (including **Close pending quotes**).
On the client's page, owners, admins and office staff have three switches:
- **Marketing**: **Gets campaigns, review and referral asks**. It turns off when the client unsubscribes, and the page shows **Unsubscribed from marketing**. Switch it back on for a client who asks you to, or off for one who asks you to stop.
- **Reviews**: **Gets review asks**. Off shows **No review asks**. It's off by itself for a client who left a Google review.
- **Photos**: **Can be posted on social pages**. Off shows **No social photos**, and photos of their property aren't offered for posts.
A client who texts STOP gets no more texts from Crewtavo, and their page shows **Texts off**. Texting START turns them back on.
## Tell your clients how it works
[Your account with your service company](https://crewtavo.com/docs/clients/for-your-clients/) is a page written for your clients, about paying, approving quotes, visits and unsubscribing. Send them the link.
Source: https://crewtavo.com/docs/clients/marketing/ (last updated 2026-11-02)
---
# Ask for Google reviews
> Marketing → Reviews asks clients for a Google review after a job, a visit or a paid invoice, by email, text or both, with up to two reminders. With Google Business Profile connected, your Google reviews show there too, and you can reply to them.
**Marketing → Reviews** asks your clients for a Google review: automatically after the work, or by hand whenever you like, with reminders for anyone who hasn't opened the link. Connect [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) and your Google reviews show here too, with your rating and replies.
Reviews is part of the Marketing app. See [Marketing](https://crewtavo.com/docs/clients/marketing/) for who can open it.
## Add your review link
Nothing is sent until Crewtavo has your Google review link.
1. Under **Your review link**, paste your **Google review URL** (choose **Where to find it** for Google's help). It starts with https://.
2. Change the **Message** if you like. Keep `{{link}}` in it: that's where your review link goes.
3. Change the **Reminder message** too, if you like. It goes to anyone who hasn't opened the link, with the same link.
4. Choose **Save**.
With Google Business Profile connected, Crewtavo offers Google's own review link for your location, as **Google's review link for** your business. Choose **Use this link** to save it, or **Keep mine**.
Clients get the message by email (the subject is "How did we do? A quick favor from" your business, with a **Leave a review** button) or by text. A text ends with "Reply STOP to opt out." unless your message already says STOP. The link goes through Crewtavo first, so you can see who opened it. A link preview or a mail scanner doesn't count as opening it.
## Ask automatically
**Ask automatically** asks each client after the work, at the right moment. Owners and admins whose role has **Automations** set it.
1. Turn the switch at the top **On**.
2. Under **Ask when**, pick **A job is completed** (when a job moves to Requires invoicing or Completed), **A visit is completed** (each visit of a one-off job, not assessments or tasks) or **An invoice is paid in full** (not deposits or progress billing).
3. Under **Send by**, pick **Email**, **Text** or **Both**.
4. Under **Recurring work**, leave **Ask after the** ticked and pick which visit, like **3rd visit**. A recurring job, like weekly mowing, is asked once, after that visit. Untick it to leave recurring work out.
5. Set the reminders (below).
6. Choose **Save**.
The line under the form says when it goes, like "Goes out a day after a job is completed." A few rules keep asks polite:
- Each client is asked automatically at most once every 6 months.
- Between 9pm and 9am, your time, the first ask goes by email. If a text is the only way to reach them, it waits until 9am.
- Clients who opted out, unsubscribed from marketing, are archived or already left a Google review aren't asked. See [Who isn't asked](#who-isnt-asked).
**Ask automatically** is two rules in [Automations](https://crewtavo.com/docs/clients/automations/) underneath, with links to them under the form: one for jobs, visits or invoices, and **Ask for a Google review on recurring work**. If someone changes one there into something the form can't show, the form says so, with **Open the rule**, and only the switch works here.
## Reminders
**Reminders** follow every ask, automatic or by hand, to anyone who hasn't opened the link. Pick **None**, **One** or **Two**, and how many days after the ask each goes (like **3 days after** and **5 days after**, the starting choice). Choose **Save**.
Reminders go at 1:30pm, your time, by the same way the ask went. They stop when the client opens the link, and when they opt out, unsubscribe, are archived or leave a Google review. A client who texts STOP gets no more text reminders. Changing the days moves the reminders still to come. Choosing fewer reminders says first how many waiting reminders it stops for good.
## Ask a client now
1. Under **Ask a client now**, pick the client. It says when they were last asked.
2. Choose **Email**, **Text**, **Both** or **Copy link**.
3. Choose **Ask for a review** (or **Copy review link**, to send it yourself).
An ask by hand goes right away, whatever the time and however lately they were asked. It still counts toward the 6 months for automatic asks. A copied link doesn't count until it's opened. If the client can't be asked, it says why, like "Ana Smith has no phone number." or "Ana Smith texted STOP, so texts to them are off."
You can also ask from:
- A client's page: **⋯**, then **Ask for a review by email**, **Ask for a review by text** or **Ask for a review by text and email**.
- A job's page: **⋯**, then **Ask for a review**.
## Recent requests
**Recent requests** lists each ask, newest first, with how it went and **Left a review**, **Opened link**, **Sent**, **Link copied** or **Failed**. Under each one: why it failed, how many reminders went, when the next one is due, or why reminders stopped, like "Reminders stopped: they texted STOP".
## Who isn't asked
A client isn't asked for a review, automatically or by hand, when:
- **Gets review asks** is off on their page (**No review asks**).
- They unsubscribed from marketing (**Unsubscribed from marketing**).
- They're archived.
- They already left a Google review that's matched to them (see below). Their page shows it, like "Left a 5-star Google review".
A client who texts STOP gets no more texts from Crewtavo. Texting START turns them back on. See [Unsubscribes and opt-outs](https://crewtavo.com/docs/clients/marketing/#unsubscribes-and-opt-outs).
## Your Google reviews in Marketing
With [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) installed, **Marketing → Reviews** also shows your Google reviews. Until it's connected, a **Google reviews** card says what it adds, with **Connect Google Business Profile** for owners and admins.
Across the top:
- **Average rating** and **Reviews**, as Google shows them.
- **Response rate**: reviews in the last 12 months with a reply.
- **Time to reply**: how long a reply usually takes.
- **Asks that led to a review**, of your asks in the last 12 months.
**Reviews each month** charts the last year, with how many reviews need a reply.
**Your Google reviews** lists them, newest first, with when they last came in and **Sync now**. Show **All**, **Needs a reply**, a number of stars, **Matched** or **Not matched**. New reviews come in every 30 minutes on their own. **Sync now** checks Google right away, at most once every two minutes.
### Reply to a review
1. Choose **Reply** under the review.
2. Write your reply, or choose **Suggest a reply** for Claude to draft one from what they wrote. With words in the box, it's **Rewrite**.
3. Choose **Post reply**, then **Post reply** again. Everyone can read it on Google.
A reply shows who posted it and when, with **Edit** and **Delete**. **Delete** takes it off Google. The review stays. Replies made in Google's own app show here too.
**Suggest a reply** needs AI on for your business: an owner or admin adds your Anthropic key on **Apps → Claude** (see [Ask a question](https://crewtavo.com/docs/team/knowledge-base/#ask-a-question)).
### Match a review to a client
Crewtavo matches each review to the client who left it, by name, when only one client fits ("Matched by name"). A matched client isn't asked for reviews again, and their reminders stop.
- **⋯ → Match to a client…** (or **Match to another client…**) picks the client. **Names that fit** come first. Choose **Match**.
- **⋯ → Not this client** undoes a match, so asks can go to them again. **Undo** is there for a moment.
Anonymous reviews aren't matched.
### Post a review on social
**⋯ → Post on social** on a 4 or 5-star review with words starts a post of it in **Marketing → Social**. See [Post to Facebook, Instagram and Google](https://crewtavo.com/docs/clients/social-posts/).
### Hear about new reviews
New reviews notify owners, admins and office staff with **Marketing**, low ratings first. Only 1 and 2-star reviews also come by email. Turn **Google reviews** on or off under [Notifications](https://crewtavo.com/docs/team/your-profile-and-phone/#notifications).
Source: https://crewtavo.com/docs/clients/reviews/ (last updated 2026-11-02)
---
# Referrals and referral credits
> Every client has a referral link to share. Marketing → Referrals sets the credit a client earns when a friend becomes a client, asks clients for referrals by email, and tracks each referral until its credit lands on the client's next invoice.
A referral link lets a client send you a friend. Crewtavo keeps track of who sent whom, and once the friend pays their first invoice, the client gets a credit on their own next invoice, by itself.
Referrals are part of the Marketing app, on **Marketing → Referrals**. See [Marketing](https://crewtavo.com/docs/clients/marketing/) for who can open it.
## Set the credit, offer and email
Under **Credit, offer and email** (owners and admins):
1. **Credit for each friend who becomes a client**: pick **$ amount**, like $50, or **% of their first job**, like 10%. A percentage is of the friend's first job, after discounts and before tax.
2. **Offer shown to friends** (optional): written to the friend, like "10% off your first service". It's on their referral page, and quoted in the Client Hub and the referral email. Crewtavo doesn't take it off by itself: use a [promo code](https://crewtavo.com/docs/clients/marketing/#promo-codes) or a discount on their quote.
3. **Referral email**: what a referral ask says. `{{link}}` is the client's own link, and `{{rewards}}` says what they and their friend get.
4. Choose **Save**.
Friends already referred keep the credit they were offered when you change it. Once a credit or an offer is set, your clients can share their link from their [Client Hub](https://crewtavo.com/docs/clients/client-hub/) (**Share my link**).
## Give a client their link
Under **Ask for referrals**, pick the client, then:
- **Email their link** sends the referral email, with a **Your referral link** button. It goes by email only.
- **Copy link** copies their link for you to send yourself.
It says when they were last asked. **Recent asks** under it lists the last few, and whether each was automatic or failed.
From a client's page, **⋯** has **Ask for referrals by email** and **Copy referral link** too. A client who unsubscribed from marketing, is archived or has no email address can't be emailed. Their link keeps working for years.
## Ask automatically
**Ask automatically** emails each client their link a week after a job is completed, at most once every 6 months per client. It starts off: owners and admins whose role has **Automations** turn it on with the switch. It needs a credit or an offer set, and your email connected.
Recurring clients aren't asked automatically: ask them with **Ask for referrals**. The switch is the **Ask for referrals after a job** rule in [Automations](https://crewtavo.com/docs/clients/automations/), where you can change its wait.
## What the friend sees
The link opens a page on your Crewtavo address (`/refer/…`) with your logo, saying the client "thinks you'll like working with" your business, and your offer. The friend fills in **Your name**, an **Email** or **Phone**, **Address where you need the work** and **What do you need?**, and chooses **Request a quote**.
That adds them as a lead (lead source "Referral"), makes a request called "Referral from Jane Smith" in [Requests](https://crewtavo.com/docs/sales/requests/), and notifies the office.
A friend who turns out to be the client themselves, or someone who's already your client, doesn't earn a credit.
## When a credit is earned
The credit is earned when the friend pays their first invoice in full. A percentage credit is worked out then, from that first job.
If the friend's request is archived, or their quote is marked lost with nothing else open, the referral is **Lost** and its credit goes with it. If the work comes back (a quote sent or approved, the request restored), so does the referral. If the friend's payment is refunded or disputed, the credit is taken back while it can be.
Want a rule to tell the client? The [automation](https://crewtavo.com/docs/clients/automations/) trigger **A client earns a referral credit** fills in **Friend's first name**, **Their credit** and **Invoice the credit went on**.
## How a credit lands on an invoice
An earned credit goes on the client's next invoice by itself:
- Their open draft first, otherwise their oldest invoice awaiting payment or past due.
- Only an invoice with no payments on it yet. Not a deposit or a retainage invoice, not one made in Stripe or with a bank payment clearing, not one autopay is charging, and not one already in QuickBooks or Zoho Books.
- It comes off before tax, like a discount, and never more than what's left after discounts. What doesn't fit waits for the next invoice.
On the invoice it shows as **Referral credit** "for referring Maria", below the discount. **Remove** takes it off while the invoice is open and unpaid: the credit stays earned and goes on their next invoice instead. **Apply referral credit** puts an earned credit on an invoice that has room. An invoice a credit covers whole says "Covered by a referral credit."
If the invoice is voided or deleted before it's paid, the credit is given back and goes on the next one. See [Invoices](https://crewtavo.com/docs/billing/invoices/).
The client sees "You have $50 in referral credit. It goes on your next invoice." in their Client Hub, and their page in Crewtavo shows **Referral credit** with what's left.
## Track referrals
Across the top of **Referrals**:
- **Revenue from referrals**: what referred clients have paid, before tax.
- **Credits earned**: credit not on an invoice yet, with how many friends haven't paid yet.
- **Credits applied**: on clients' invoices.
- **Credits given**: given outside Crewtavo.
**Top referrers** lists the clients who've sent you the most.
The **Referrals** list shows each friend, who referred them, when, and what the credit is and where it went, like "$50 credit on invoice #1042" or "No credit: they referred themselves". The status says **New lead**, **Quoted**, **Won** or **Lost** until there's a credit, then **Earned**, **Applied** or **Given**.
From a referral's **⋯** menu:
- **Apply to an invoice…** picks one of the client's open invoices with room for it, and **Apply**.
- **Keep off invoices** stops it going on by itself. **Apply automatically again** turns that back on.
- **Mark given** is for a credit you gave another way, like cash or a gift card. **Undo** is there for a moment.
- **No credit for this one** gives none, after asking.
- **Give a credit anyway** is for one Crewtavo gave no credit, like a friend who was already a client.
## If Marketing is uninstalled
Credits clients have earned, or earn later from links already shared, still go on their invoices. Referral asks stop. See [Uninstall Marketing](https://crewtavo.com/docs/clients/marketing/#uninstall-marketing).
Source: https://crewtavo.com/docs/clients/referrals/ (last updated 2026-11-02)
---
# Post to Facebook, Instagram and Google
> Marketing → Social posts job photos your crew marks OK to share, your 4 and 5-star Google reviews as a picture, or words alone, to your Facebook Page, Instagram and Google Business Profile, now or later. New 5-star reviews can post by themselves.
**Marketing → Social** posts to your own Facebook Page, Instagram account and Google Business Profile: job photos, a good Google review as a picture, or an update in words. Post now or schedule it, and Claude can draft the caption.
Social is part of the Marketing app. Owners, and admins and office staff whose role has **Marketing**, can post. See [Marketing](https://crewtavo.com/docs/clients/marketing/).
## Connect where it posts
**Where it posts**, at the side of **Social**, shows each place and whether it's **Connected**:
- **Facebook** and **Instagram**: install [Facebook & Instagram](https://crewtavo.com/docs/connections/facebook-and-instagram/) in Apps.
- **Google Business Profile**: install [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) in Apps.
Owners and admins whose role has **Connect apps** set these up. Until something's connected, you can still write posts and use [Share elsewhere](#share-elsewhere) to put them anywhere yourself.
Meta and Google fetch the pictures from your Crewtavo address, so it has to be public on the internet. If it isn't, Social says so: words alone can still post.
## Mark photos OK to share
Only photos marked OK to share can be posted:
- **In the field**: on a visit's photos, tap the share badge in the corner of a photo (**OK to share**). It works without signal, and sends when the phone is back online. Subcontractors don't see it.
- **In the office**: on a job's or client's **Photos**, mark each one, or choose **Mark all OK to share**. **Post these photos** then starts a post with them.
Only JPEG and PNG photos can be posted: others show "Can't share". Photos of a client who asked not to be posted aren't offered (turn off **Can be posted on social pages** on their page). Photos go out as JPEGs without their location.
## Make a post
1. On **Social**, choose **New post**.
2. Pick what to post: **Photos**, **A review** or **Just text**.
- **Photos**: pick up to 10 of the photos marked OK to share, from all jobs or one. Check a photo doesn't show a house number, a car plate or people's faces.
- **A review**: pick a 4 or 5-star Google review with words. It posts as a square card in your brand color, with the reviewer's first name and last initial.
3. Write the **Caption** (or **What to post**, for just text), or choose **Suggest a caption** for Claude to draft one. With words in the box, it's **Rewrite**.
4. Under **Where it posts**, tick **Facebook**, **Instagram** and **Google**. One that can't take this post says why.
5. Pick **Post now**, or **Schedule** and set a **Date** and **Time** (your business's time zone).
6. Choose **Post now** (then **Post now** again: it's public), or **Schedule post**. **Save draft** keeps it to finish later.
**Preview** shows what posts: a review's card, or the photos as Instagram gets them.
**Suggest a caption** needs AI on for your business: an owner or admin adds your Anthropic key on **Apps → Claude** (see [Ask a question](https://crewtavo.com/docs/team/knowledge-base/#ask-a-question)).
## What each place takes
- **Facebook**: photos, a review card, or words alone.
- **Instagram**: needs a picture, so not **Just text**. Up to 2,200 characters and 30 hashtags. Photos are padded to fit Instagram's shapes, never cropped (in your brand color, or light grey). Several photos post as a carousel.
- **Google**: needs a caption, up to 1,500 characters, and no phone number in it (Google takes those posts down). Only the first photo shows.
Captions never name clients or give their address. A caption with a client's full name or street address isn't posted: "Take out the client's name or address before posting." A word that may be a client's last name is posted, with a note to check it.
## Scheduled posts, and how a post went
**Drafts and scheduled** lists posts still to go. **⋯** has **Edit**, **Cancel post** and, for drafts, **Delete**.
**Posts** lists the ones that went, newest first: **Posted**, **Partly posted**, **Failed**, **Cancelled** or **Unconfirmed**. Under each, every place it went to says how it went, with **View on Facebook** (or Instagram, or Google) once it's up, or what went wrong. **Post again** tries the places it didn't reach.
A post goes to each place at most once. If Crewtavo can't tell whether a post went up, it shows **Unconfirmed** with "May have posted. Check your Page." Look, then choose **It's on the Page** (or **It's on Instagram**, **It's on the profile**), or **It isn't there, post it**.
While your Meta app isn't Live, Facebook and Instagram posts are hidden from the public. See [Switch your app to Live](https://crewtavo.com/docs/connections/facebook-and-instagram/#switch-your-app-to-live).
## Post 5-star reviews automatically
**Post 5-star reviews automatically**, at the side, posts new 5-star reviews with words by themselves. It starts off.
1. Under **Post to**, tick where they go.
2. Turn the switch on.
They post at 10 AM, 1 PM or 4 PM, your time, at most 3 a day, from the next day (the same day for a review that came in before 8 AM). Each one waits in **Drafts and scheduled** marked **Automatic**, with the caption "Another 5-star review from a happy client. Thank you!", so you can change its caption, where it goes or when, or cancel it, before it goes.
Turning it off cancels the automatic posts still scheduled, after saying how many. Posts you made yourself stay. If none of the places ticked can post, it shows **Paused** until one can.
Turn the **Social posts** notification on under [Notifications](https://crewtavo.com/docs/team/your-profile-and-phone/#notifications) to hear about automatic posts coming up and posts that didn't go.
## Share elsewhere
**Share elsewhere**, in a post or its **⋯** menu, is for X, LinkedIn, Nextdoor or anywhere else: **Download** the pictures (without their location) and **Copy caption**, or **Share** on a phone.
## If Marketing is uninstalled
Nothing posts. Scheduled posts go back to drafts, and a post that's posting stops before its next place. Posts already made stay. See [Uninstall Marketing](https://crewtavo.com/docs/clients/marketing/#uninstall-marketing).
Source: https://crewtavo.com/docs/clients/social-posts/ (last updated 2026-11-02)
---
# Roles and permissions: what each person can see and do
> Each person's access level (Owner, Admin, Office, Estimator, Crew lead or Field crew) decides which clients, jobs and money they reach, and their role can switch areas off within it. What each level sees and does, the starter roles, and how to make and change roles.
Everyone on your team has a role, and every role is built on an access level. The access level decides which clients, jobs and money someone can reach at all. The role then switches areas on or off within that level, like **Invoices and payments** or **Approve timesheets (crew leads: their crew's)**. The database enforces both, not just the screens, so a role holds everywhere, in Claude and ChatGPT too.
To invite someone and give them a role, see [Invite your team and set roles](https://crewtavo.com/docs/getting-started/invite-your-team/). This page is the full reference.
## The access levels
There are six levels for your team. **Settings → Roles** lists them under **Built-in roles**, with what each one reaches:
| Access level | What Crewtavo says it reaches |
| --- | --- |
| **Owner** | "Everything, including billing and ownership" |
| **Admin** | "Everything" |
| **Office** | "All clients, jobs and money" |
| **Estimator** | "Clients, requests, quotes and the schedule. No invoices" |
| **Crew lead** | "Schedules and staffs their own crew, sees its time. Sees the whole schedule. No prices" |
| **Field crew** | "Only their own visits and time. No prices" |
A few things only an owner can do:
- Make someone else an owner, or change another owner's role or remove their access.
- Make a password reset link for an admin. (Nobody can make one for an owner: owners reset their own.)
- Download everything under **Settings → Your data**.
- Keep a key file for getting back in. See [Sign in, reset a password and get back in](https://crewtavo.com/docs/team/sign-in/#the-owners-key-file).
An owner always has every area, and no role can take one away. Admins can be limited by their role.
There's a seventh level, **Subcontractor**, for the businesses you hire. You don't give it out here: a sub gets it with a sign-in from their page under **Subcontractors**, and sees only their own jobs, their price on each and their paperwork. See [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/#give-a-sub-their-own-sign-in).
## The areas a role can include
These are the 15 areas (permissions) you switch on or off for a role, with the levels that can have each one. A role can only include areas its level allows.
| Area | What it opens | Levels that can have it |
| --- | --- | --- |
| **Quotes and sales** | Making and sending quotes, adding and changing requests and jobs, **Packages**, and seeing what a job is worth | Admin, Office, Estimator |
| **Invoices and payments** | **Invoices**, payments, Stripe deposits, refunds, the invoices on a job or client, and autopay: inviting clients, **Approve charge** and **Charge card**. Owners and admins with it also get **Settings → Payments**. Without it, invoices are hidden completely. | Admin, Office |
| **Job costs and profit** | A job's costs, expenses and profit, **Timesheets → Pay**, pay rates and piece rates, equipment costs, and labor cost in **Metrics** | Admin, Office |
| **Finance and metrics** | **Metrics**, and **Finance** (which also needs **Invoices and payments**) | Admin, Office |
| **Marketing** | **Marketing** once [Crewtavo - Marketing](https://crewtavo.com/docs/clients/marketing/) is installed (campaigns, reviews, referrals, social posts and promo codes), and **Website** if you edit your site from Crewtavo | Admin, Office |
| **Automations** | **Settings → Automations** and **Settings → Client notifications**. Owners and admins need it, with **Marketing**, to change automated campaigns and when clients are asked for reviews and referrals. | Admin, Office |
| **Schedule the whole team** | Booking, moving and assigning visits for every crew | Admin, Office, Estimator, Crew lead |
| **Approve timesheets (crew leads: their crew's)** | Approving time. Office staff approve everyone's, a crew lead their crew's. | Admin, Office, Crew lead |
| **Price list, checklists, crews and booking forms** | Changing the price list, **Weather rules**, **Document style**, **Contract terms**, **Custom fields**, **Online booking**, **Crews** and **Checklists**. Owners and admins with it also get **Settings → Storage**. | Admin, Office |
| **Write and edit guides** | Writing and changing guides in the **Knowledge base** | Admin, Office |
| **Manage people and roles** | **Settings → People** and **Settings → Roles** | Admin |
| **Connect apps** | **Apps**, **Settings → Calendars** and **Settings → Email** | Admin |
| **Manage equipment and maintenance** | Adding and changing equipment and its maintenance schedules | Admin, Office, Estimator, Crew lead |
| **Subcontractors, their paperwork and pay** | **Subcontractors** | Admin, Office |
| **Job applicants and hiring** | **Applicants**, once [Careers](https://crewtavo.com/docs/connections/careers/) is installed | Admin, Office |
Someone given an access level directly (under **Built-in** in the role picker) has every area that level allows. A **Field crew** role has no areas: "This level sees only their own visits and time."
Some areas only control changing things. Without **Quotes and sales**, someone at the Office or Estimator level can still open quotes but not change them. Without **Price list, checklists, crews and booking forms**, they can still see the price list and checklists.
## The starter roles
Every business starts with five roles. Change them, delete them or make your own.
| Starter role | Access level | Areas it starts with |
| --- | --- | --- |
| General manager | Admin | Every area except **Connect apps** |
| Office manager | Office | Every area Office can have |
| Operations manager | Office | **Quotes and sales**, **Job costs and profit**, **Finance and metrics**, **Schedule the whole team**, **Approve timesheets**, **Write and edit guides**, **Manage equipment and maintenance**, **Subcontractors, their paperwork and pay** |
| Foreman | Crew lead | Only **Manage equipment and maintenance** |
| Employee | Field crew | None |
What that means day to day:
- A **General manager** can't open **Apps** or **Settings → Calendars** until you switch on **Connect apps** for the role.
- An **Operations manager** doesn't see **Invoices**, **Finance**, **Marketing**, **Automations** or **Applicants**, and can't change the price list, crews or checklists.
- A **Foreman** schedules and staffs their own crew's visits and sees their crew's time, but can't move another crew's visits, and **can't approve time** out of the box. To let foremen approve their crew's time, edit the role and switch on **Approve timesheets (crew leads: their crew's)**.
- An **Employee** sees only the visits they're on.
## What each level sees in the sidebar
With every area its level allows:
| Sidebar | Owner, Admin | Office | Estimator | Crew lead | Field crew |
| --- | --- | --- | --- | --- | --- |
| **Home** | Yes | Yes | Yes | Yes | Yes |
| **My day** | No | No | No | Yes | Yes |
| **Schedule** | Yes | Yes | Yes | Yes | Their own visits |
| **Team chat** (once installed) | Yes | Yes | Yes | Yes | Yes |
| **Clients** | Yes | Yes | Yes | Yes | Only theirs |
| **Requests** | Yes | Yes | Yes | Yes | Only theirs |
| **Quotes** | Yes | Yes | Yes | No | No |
| **Jobs** | Yes | Yes | Yes | Yes | Only theirs |
| **Invoices** | Yes | Yes | No | No | No |
| **Drive** (once installed) | Yes | Yes | Yes | No | No |
| **Marketing** (once installed), **Website** | Yes | Yes | No | No | No |
| **Finance**, **Metrics** | Yes | Yes | No | No | No |
| **Timesheets** | Everyone's | Everyone's | Their own | Theirs and their crew's | Their own |
| **Applicants** (with Careers) | Yes | Yes | No | No | No |
| **Subcontractors** | Yes | Yes | No | No | No |
| **Equipment** | Yes | Yes | Yes | Yes | Yes |
| **Knowledge base** | Yes | Yes | Yes | Yes | Yes |
| **Apps** | Yes | No | No | No | No |
| **Settings** | Yes | Yes | Yes | Yes | Yes |
Once the Paving or Roofing app is installed, the business also has **Paving** or **Roofing**, for owners, admins, office staff and estimators with **Quotes and sales**. On a phone, everyone gets **My day** in the bar at the bottom. See [Find your way around](https://crewtavo.com/docs/getting-started/home-screen/).
## Which Settings tabs each level gets
| Settings tab | Owner | Admin | Office | Estimator | Crew lead, Field crew |
| --- | --- | --- | --- | --- | --- |
| **Profile**, **AI assistants**, **Terms and license** | Yes | Yes | Yes | Yes | Yes |
| **Company**, **Schedule and routes**, **Maps**, **Web address**, **Hosting** | Yes | Yes | No | No | No |
| **Payments** (autopay) | Yes | With **Invoices and payments** | No | No | No |
| **Storage** | Yes | With **Price list, checklists, crews and booking forms** | No | No | No |
| **Price list** | Yes | Yes | Yes | See only | No |
| **Packages** | Yes | Yes | Yes | Yes | No |
| **Weather rules**, **Document style**, **Contract terms**, **Custom fields**, **Online booking**, **Crews**, **Checklists** | Yes | Yes | Yes | No | No |
| **People**, **Roles** | Yes | Yes | No | No | No |
| **Email**, **Calendars** | Yes | Yes | No | No | No |
| **Automations**, **Client notifications** | Yes | Yes | Yes | No | No |
| **Your data** | Yes | No | No | No | No |
**Web address** and **Hosting** only show on a Crewtavo you run for your own business (Hosting only on Railway). A tab that needs an area disappears when the person's role switches it off.
## What each level can do
Owners can do everything. For the others, with every area their level allows:
| | Admin, Office | Estimator | Crew lead | Field crew |
| --- | --- | --- | --- | --- |
| **Clients and properties** | See all, add and change | See all, add and change | See all, can't change | Only the clients they have visits for |
| **Requests** | See all, add, book assessments | See all, add, book assessments | See all, can't change | Only ones they have a visit for |
| **Quotes (estimates)** | Make and send | Make and send | No | No |
| **Jobs** | See all, add and change, with prices | See all, add and change, with prices | See all, the work but no prices | Only the jobs they have a visit on, no prices |
| **Job costs and profit** | Yes | No | No | No |
| **Schedule** | Book, move and assign anyone | Book, move and assign anyone | See it all; book, move and staff their own crew's visits | See their visits, start and finish them, add notes; can't move them |
| **Invoices, payments and autopay** | Yes | No | No | No |
| **Drive** (once installed) | Yes | Yes | No | No |
| **Timesheets** | See and approve everyone's; pay | Their own | Their crew's; approve their crew's, not their own | Their own |
| **Equipment** | Add, change, log | Add, change, log | Add, change, log | See it, log hours, miles, service and repairs |
| **Price list** | Change | See only | No | No |
| **Marketing**, **Automations** | Yes | No | No | No |
| **Finance and Metrics** (reports) | Yes | No | No | No |
| **Knowledge base** | Read and write guides | Read | Read | Read |
| **People and roles** | Admin only | No | No | No |
| **Apps** | Admin only | No | No | No |
A crew lead's own crew means the crews they're on, set in **Settings → Crews**. With **Schedule the whole team** switched on, a crew lead schedules every crew, the way an office does. See [Set up crews and checklists](https://crewtavo.com/docs/jobs/crews-and-checklists/) and [Run the schedule day to day](https://crewtavo.com/docs/jobs/run-the-schedule/).
Gate codes and access instructions on a property show to owners, admins and office staff at all times. Anyone else sees them only while they're on an unfinished visit there, today or tomorrow.
Calendars added from Google, Outlook and others show on the schedule for everyone except field crew.
## Drive and the Trash
**Drive** is for owners, admins, office staff and estimators, once an owner or admin with **Connect apps** installs [Crewtavo - Drive](https://crewtavo.com/docs/connections/drive/). No area switches it on or off within those levels. Crew leads and field crew don't get Drive.
The [Trash](https://crewtavo.com/docs/connections/drive/#the-trash) keeps every file deleted anywhere in Crewtavo for 30 days, whether or not Drive is installed, and everyone on the team can open it (search for "Trash"). What each person sees there goes by who could see the file before:
- Owners, admins, office staff and estimators see Drive's files and folders, and the photos and other files deleted elsewhere.
- Receipts show to people with **Job costs and profit**, subs' paperwork to the office with **Subcontractors, their paperwork and pay**, and résumés to the office with **Job applicants and hiring**.
- Anyone else sees only what they deleted themselves.
- Only owners can **Delete forever** or **Empty Trash**. Everything else is deleted for good after its 30 days.
## Marketing
- **Marketing** is for owners, admins and office staff with the **Marketing** area, once an owner or admin with **Connect apps** installs [Crewtavo - Marketing](https://crewtavo.com/docs/clients/marketing/). They send campaigns, ask for reviews and referrals, reply to Google reviews, post to social media and make promo codes.
- Changing automated campaigns, and when clients are asked for reviews and referrals, also takes **Automations**, and only owners and admins can. Only owners and admins change your review link and the referral credit and offer.
- Anyone who makes quotes (owners, admins, office staff and estimators) can ask one client for a review or referrals from the client's or the job's menu, like **Ask for a review by email**, without the **Marketing** area.
- Connecting [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) and [Facebook & Instagram](https://crewtavo.com/docs/connections/facebook-and-instagram/) takes **Connect apps**, like any app.
## Autopay
- Owners, admins and office staff with **Invoices and payments** invite clients to [autopay](https://crewtavo.com/docs/billing/autopay/), pause it, take a saved card off, choose **Approve charge** on a charge that waits for an OK, use **Charge card** and make refunds.
- **Settings → Payments**, where autopay's terms, timing and limit are set, is for owners, and admins with **Invoices and payments**.
- Only an owner can record that clients whose cards came in from Stripe already agreed to be charged (**These clients agreed to be charged automatically**).
- A charge for work an AI assistant marked done always waits for the office's OK. See [Connect Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/#autopay-waits-for-your-ok).
## Storage
- **Settings → Storage**, which shows how much room your photos and files take, who's using it and your business's limit, is for owners, and admins with **Price list, checklists, crews and booking forms**. See [Manage storage space](https://crewtavo.com/docs/hosting/storage/).
- Only owners give one person, or everyone with a role, a storage limit of their own: with **Storage limit** under the person in **Settings → People**, or on a role in **Settings → Roles** (**Storage limit for everyone with this role**). A person's own limit comes before their role's. Owners are never limited.
- Owners and admins get a notice when storage reaches 80% and 95% of the limit.
- Crews always finish the job: visit and quote photos, receipts and subs' paperwork are never turned away, whatever the limits.
## Giving admin access asks for your password
Admin access is the **Owner** level, or the **Admin** level with any of **Connect apps**, **Price list, checklists, crews and booking forms** or **Manage people and roles**: what it takes to change Stripe, your business's email or who's on the team. Crewtavo asks for **Your Crewtavo password** whenever you:
- invite someone with admin access, or resend their invite;
- change someone's role to one with admin access ("This gives Sam admin access, including payments, email and who's on the team.");
- save a role that didn't have admin access and now does;
- make a password reset link for someone with admin access.
Every owner hears about it, in Crewtavo and by email. Signed in with Google or a link and have no password yet? Set one under **Settings → Profile** first, within 10 minutes of signing in. See [Change your password](https://crewtavo.com/docs/team/sign-in/#change-your-password). An AI assistant can't give anyone admin access.
## Make a role
Owners, and admins whose role has **Manage people and roles**, set up roles.
1. Open **Settings → Roles** and choose **New role**.
2. Type a **Name**, like "Salesperson".
3. Pick the **Access level**: **Admin**, **Office**, **Estimator**, **Crew lead** or **Field crew**. The line under it says what that level reaches. A role can't be an owner or a sub.
4. Under **Can use**, switch on the areas this role gets. A new role starts with everything its level allows, and picking another level starts again from that level's areas.
5. Choose **Create role**.
Each role shows as a card with its level, how many people have it and its areas, or "Their own work only" when it has none.
## Change or delete a role
To change one, choose the pencil on its card, change it, then choose **Save role**. It changes for everyone who has the role. If you pick another access level, the areas that still apply stay on, and everyone with the role moves to the new level.
To delete one, choose the bin on its card, then **Delete role**. If people have it, Crewtavo says so: "2 people have this role. They keep Crew lead access."
:::caution
People whose role you delete keep its access level with **every** area that level allows. For example, deleting **Foreman** leaves its people as a built-in **Crew lead**, who can schedule every crew and approve their crew's time. Give them another role first if that's more than you want.
:::
## Change someone's role
1. Open **Settings → People**.
2. In the **Role** column, pick their new role. Your own roles are under **Your roles**, and the access levels on their own under **Built-in**.
Crewtavo says "Role changed". A few limits:
- You can't change your own role.
- Only an owner can make someone an owner, or change an owner's role.
- To change the role of someone whose access you removed, choose **Restore** first.
## Why can't someone see or do something?
- **"You don't have access to this"** means the screen isn't part of their role. "Ask an admin if you need it."
- **No New job or New request button:** their role doesn't have **Quotes and sales**.
- **Can't move a visit:** without **Schedule the whole team**, a crew lead can only move their own crew's visits, and office staff and estimators can't move any.
- **Can't approve time:** their role needs **Approve timesheets (crew leads: their crew's)**. Nobody approves their own time as a crew lead.
- **Price list is greyed out:** they can see it but not change it. That needs **Price list, checklists, crews and booking forms**, which estimators can't have.
- **No prices on a job:** crew leads and field crew never see prices, invoices or pay rates.
- **No Drive or Marketing in the sidebar:** it isn't installed yet (an owner or admin installs it from **Apps**), or their level doesn't get it. Marketing also needs the **Marketing** area.
Claude and ChatGPT never get more than the person who connected them. See [Connect Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/). Team chat channels go by role too: see [who sees what in Team chat](https://crewtavo.com/docs/connections/team-chat/#who-sees-what).
Source: https://crewtavo.com/docs/team/roles-and-permissions/ (last updated 2026-11-04)
---
# Sign in, reset a password and get back in
> Sign in with your password, an emailed link or Google. Forgot your password? Send a reset link, ask an owner or admin for one under Settings → People, or, as the owner, use your key file when Crewtavo can't email you.
Everyone on your team signs in at your Crewtavo's web address with their email. This page covers the ways to sign in, what to do when you forget your password, and how the owner gets back in when email isn't set up yet.
## Sign in
On **Sign in**, enter your **Email** and **Password** and choose **Sign in**. Below the form there are other ways in:
- **Email me a sign-in link**: type your email and choose **Email me a link**. Crewtavo emails you a link that signs you in, with no password. If nothing comes, wait a minute and choose **Send again**.
- **Continue with Google**: there only if Google sign-in is turned on for your Crewtavo server. Use the Google account with the same email address your invite went to.
- **Subcontractor? Get a sign-in code by text** (or by email): for the businesses you hire, not your team. See [signing in as a subcontractor](#subcontractors-sign-in-with-a-code).
You can't make an account on your own: people join from the invite an owner or admin sends from **Settings → People**. See [Invite your team and set roles](https://crewtavo.com/docs/getting-started/invite-your-team/).
If it says "That email and password don't match. Check them, or reset your password.", check for a typo in your email first, then [reset your password](#forgot-your-password). After several tries in a row it says "Too many attempts. Wait a minute and try again."
## Join from an invite
The link in your invite opens **Set your password**. Type a **New password** of at least 8 characters, type it again under **Confirm password**, and choose **Save password**. You're signed in.
If you choose **Skip for now**, you're signed in without a password. Set one later under **Settings → Profile**, within 10 minutes of signing in with Google, an emailed link or a code (see [Change your password](#change-your-password)), or use **Email me a sign-in link** to get back in.
An invite link works once and runs out after a day. If yours has, ask whoever invited you to choose **Resend invite**.
## Forgot your password?
1. On the sign-in page, choose **Forgot password?** above the password box.
2. Type your email and choose **Send reset link**.
3. Open the email, then the link in it. On **Choose a new password**, type a **New password** and **Confirm password**, then choose **Save password**.
Choosing a new password signs you out on every other phone and computer, in case someone else had your old one.
Nothing in your inbox? Check your spam folder, then choose **Send again**. See [Emails aren't arriving](https://crewtavo.com/docs/troubleshooting/email-not-arriving/).
## If it says "We can't email you a link"
This shows when your Crewtavo isn't set up to send email yet, so it can't send a reset link or a sign-in link to anyone. There are two ways back in:
- **On the team:** ask the owner or an admin for a reset link. They make one under **Settings → People**, next to your name. See below.
- **The owner:** choose **I'm the owner: use my key file**. See [Get back in with your key file](#get-back-in-with-your-key-file).
Once the owner [connects email](https://crewtavo.com/docs/connections/email/), **Forgot password?** emails a link to everyone.
## Make a reset link for someone on your team
When someone on your team is locked out, an owner or admin can make them a one-time link to choose a new password.
1. Open **Settings → People** and choose **Reset password** under their name.
2. Choose **Make reset link**. Their current password keeps working until they choose a new one.
3. If your email is connected, Crewtavo emails it to them and says "Reset link sent". If not, it says "Reset link ready": choose **Copy reset link** and give it to them yourself, in person or by text.
4. Choose **Done**.
The link works once and stops working within a day. Whoever opens it can choose a new password for that account, so don't share it anywhere else. The person sees a note about it when they're back in, and it goes in your activity log.
Who you can make one for:
- **The owner** can make one for anyone but another owner.
- **An admin**, whose role has **Manage people and roles**, can make one for anyone below admin: office staff, estimators, crew leads and field crew. Only the owner can make one for an admin.
- **Not for yourself.** Change your own password under **Settings → Profile**.
- **Not for someone who hasn't joined yet.** They show **Invite pending**: choose **Resend invite** instead.
- **Not for a subcontractor.** A sub signs in with a link from their page under **Subcontractors**.
- **Not for someone who also uses Crewtavo with another business.** "This person also uses Crewtavo with another business, so they need to reset their password themselves."
## Restore someone's access
When you choose **Remove** next to someone in **Settings → People**, then **Remove access**, they're signed out of your business right away. They stay in the list, greyed out, with their visits, time and notes kept.
To let them back in, choose **Restore** on their row. Crewtavo says "Access restored", and they sign in with the same email and password as before. If they've forgotten the password, make them a [reset link](#make-a-reset-link-for-someone-on-your-team) once they're restored.
## The owner's key file
Until your Crewtavo can send email, nobody can email the owner a reset link. The key file is the owner's way back in instead: a small text file called `crewtavo-key-file.txt` with 8 spare keys in it, like the backup codes some websites give you.
You save it when you create the owner account, on **Save your key file**:
1. Choose **Download key file** and keep it somewhere you won't lose it, like your phone's Files app, Google Drive or your password manager. To keep paper instead, open **Rather keep it on paper? See the keys** and choose **Print the keys**.
2. Tick **I saved my key file somewhere safe**, then choose **Continue**.
You won't see the keys again. Anyone who has the file can get into your account, so don't share it.
:::note
The key file only works while Crewtavo can't email you. Once your email is connected, **Forgot password?** sends you a link instead. See [Create your owner account and business](https://crewtavo.com/docs/getting-started/first-sign-in/).
:::
### Get back in with your key file
1. On the sign-in page, choose **Forgot password?**, type your email and choose **Send reset link**.
2. On "We can't email you a link", choose **I'm the owner: use my key file**.
3. Choose **Upload key file** and pick `crewtavo-key-file.txt`.
4. On **Choose a new password**, type your new password twice and choose **Save password**.
Each upload uses up one key, so the file works 8 times. No file, but you printed the keys? Choose **No file? Type a key from your printout**, enter your **Email** and one **Spare key** (like 7K4M-PQ2X-9DRF; dashes and capitals don't matter), then choose **Continue**.
If it says "That didn't work.", check the email and the key: each key works once, and only while email isn't set up. After several wrong tries it asks you to wait an hour.
### See how many uses are left, or get a new file
The owner's **Settings → Profile** has a **Key file** card. It says how many uses the file has left (for example "Good for 7 more uses (of 8)"), or "Your key file is used up. Get a new one and save it."
To replace it, choose **Get a new key file**, enter **Your password** and choose **Get new key file**. Save the new one the same way, then choose **Done**. Your old file, and any keys you printed, stop working straight away.
### If you lost the key file too
Whoever runs your Crewtavo server can let you in by proving they control it:
1. In Railway, open your project, then the **crewtavo** service, then **Variables**. (With Docker, use the `.env.instance` file.)
2. Add `CREWTAVO_RECOVERY_EMAIL` with the owner's email, and `CREWTAVO_RECOVERY_CODE` with a phrase you make up, at least 12 characters long. Deploy the change when Railway asks (with Docker, run `npm run instance` again).
3. Within the next hour, on the sign-in page, go to **I'm the owner: use my key file**, then **No file? Type a key from your printout**. Type the owner's email and that phrase as the **Spare key**, choose **Continue**, then choose a new password.
4. Delete both variables.
The phrase works once, and only in the hour after the server starts with it. See [Optional settings](https://crewtavo.com/docs/hosting/settings/) for more on server variables.
## Change your password
1. Open **Settings → Profile**.
2. In **Change password**, type your **Current password**, then your **New password** (at least 8 characters), and type it again under **Confirm new password**.
3. Choose **Change password**. The button shows "Password changed", and you're signed out everywhere else.
No password yet, because you sign in with Google or chose **Skip for now**? Leave **Current password** empty. That only works within 10 minutes of signing in with Google, an emailed link or a code. Otherwise Crewtavo says "Enter your current password. If you don't have one yet, sign out and in again, then set it within 10 minutes."
## Sign in on an iPhone Home Screen app
On an iPhone, Crewtavo added to the Home Screen keeps its own sign-in, separate from Safari. So after you add it, open it from the Home Screen and sign in there too, with your email and password.
Links from your email, like a sign-in link or a reset link, open in Safari, not in the Home Screen app. If you reset your password that way, go back to the Home Screen app afterwards and sign in with the new password. To add Crewtavo to your phone and turn on notifications, see [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/).
## Subcontractors: sign in with a code
Subs don't have a password. The office sends them a sign-in link, and on a new phone they get a 6-digit code instead:
1. On the sign-in page, choose **Subcontractor? Get a sign-in code by text**.
2. Type your **Mobile phone** and choose **Text me a code**.
3. Type the code under **Enter your code**. It runs out in 10 minutes.
**No phone on file? Get a code by email instead** sends the code by email. If your Crewtavo can't send texts, the link reads **Subcontractor? Get a sign-in code by email**. If nothing comes, ask the office for a new sign-in link. See [Your jobs and paperwork as a subcontractor](https://crewtavo.com/docs/field/subcontractor-guide/), and for the office, [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/#signing-in-on-a-new-phone).
## Sign out
Choose your photo or initials at the top right, then **Sign out**. Signing out clears your Crewtavo from that phone or computer.
If you've made changes with no signal that haven't gone out yet, Crewtavo asks first, for example "2 updates haven't sent yet". Signing out then deletes them, so choose **Sign out anyway** only if you don't need them. Otherwise wait until you have signal.
## Switch between businesses
If your account belongs to more than one business, your business's name at the top left is a list. Pick the other business to switch. Your role can be different in each one, and Crewtavo remembers your choice on that device.
Source: https://crewtavo.com/docs/team/sign-in/ (last updated 2026-11-04)
---
# Your profile, notifications and Crewtavo on your phone
> Settings → Profile holds your name, phone, schedule color, photo and signature, which notifications reach you on your phone or by email or text, how to add Crewtavo to your Home Screen, and per-device settings like dark mode and your maps app.
Everyone has their own profile: your name and photo, which notifications reach you, and a few settings for the phone or computer you're on. Nobody else changes these for you. A subcontractor's profile is their **Profile** tab, with a few differences ([below](#for-subcontractors)).
## Open your profile
- Tap your picture (or your initials) at the top right and choose **Your profile**.
- Or open **Settings** and choose **Profile**. On a phone, **Settings** is under **More**.
## Your name, phone, color and photo
- **Full name**: how your team sees you.
- **Mobile phone**: where Crewtavo texts you, if you choose texts under [Notifications](#notifications).
- **Color on the schedule**: pick one of the eight colors. It's behind your initials on the schedule and around Crewtavo.
Choose **Save profile**. The button shows "Saved". Your email shows under your name.
For your photo, choose **Add a photo**. On a phone you can take one or pick one from your photos. It saves straight away and shows wherever your initials did: the schedule, visits, timesheets and team chat. Crewtavo crops it to a square around the middle, so keep your face near the center. **Change photo** and **Remove photo** are in the same place. If you see "Crewtavo can't open that picture. Try a JPEG or PNG photo.", try a different photo.
## Your signature
Owners, and admins, office staff and estimators whose role has **Quotes and sales**, see **Your signature**. It goes on the estimates you sign for the business, beside the client's.
1. Sign in the box with your finger or mouse.
2. Choose **Save signature**.
To redo it, choose **Sign again**, or **Remove** to take it off. "Estimates you already signed keep the signature they were signed with." You can also save it the first time you sign an estimate on site. See [Create and send a quote](https://crewtavo.com/docs/sales/quotes/).
## Notifications
The bell at the top of Crewtavo always shows everything. **Notifications** is where you choose what also reaches you when Crewtavo isn't open.
### Turn on notifications for this phone
1. On your phone, open **Settings → Profile**. On an iPhone, do this in Crewtavo on your Home Screen ([add it first](#iphone-or-ipad)).
2. Tap **Turn on notifications**.
3. When your phone asks, allow notifications.
It then shows **On for this phone**. Tap **Send a test**: "Test sent. It should pop up in a few seconds." If nothing pops up, see [Fix blocked notifications](#fix-blocked-notifications).
Do this on each phone or computer you use. **Turn off** stops them on this one.
:::note
On an iPhone in Safari, you'll see **Get notifications on this iPhone** instead of the button: iPhones only show notifications from Crewtavo on the Home Screen.
:::
### Choose what reaches you
Under **Tell me about**, tick how you want to hear about each thing: **This phone** (a notification on each phone or computer where you turned them on), **Email** or **Text**. Changes save as you tick.
| Row | What it's about | Who has it |
| --- | --- | --- |
| **My schedule changes** | Added to or taken off a visit, moved or cancelled | Everyone |
| **Messages from clients** | Texts and Client Hub messages | The team |
| **Clock reminders** | When a clock has been running too long | The team, and subs whose hours are kept |
| **Equipment maintenance** | Service coming due or overdue | The team |
| **Subcontractors** | Insurance running out, paperwork a sub sends in, and answers to job offers | People with the subcontractors area |
| **Other alerts** | From your company's automations, like a quote being approved | The team |
| **Team chat** | When someone @mentions you or your role | When your business uses team chat |
| **Railway** | Before the trial runs out, or when the bill goes over the plan or storage fills up | Owners and admins of a Crewtavo on Railway |
| **My jobs** | Job offers, and what you're owed and paid | Subcontractors |
| **My paperwork** | When your insurance is about to run out | Subcontractors |
To start with, everything comes to **This phone**, and **My schedule changes** comes by email too. **Railway** also comes by email. A sub gets **My jobs** by email and text as well.
A greyed-out box means it can't reach you that way yet:
- "Add your mobile phone above to get texts." Add your **Mobile phone** and save.
- "Texts need texting turned on for the company." Your business hasn't set up texting. See [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/).
- "Email needs the company's email connected (Settings → Email)." See [Connect your email](https://crewtavo.com/docs/connections/email/).
## Put Crewtavo on your phone
Crewtavo runs in your phone's browser, and you can add it to your Home Screen so it opens like any other app, in its own window. There's nothing to get from an app store.
### iPhone or iPad
1. Open Crewtavo in Safari.
2. Tap the Share button, then **Add to Home Screen**, then **Add**.
3. Open Crewtavo from your Home Screen and sign in.
4. Turn on notifications in **Settings → Profile** ([above](#turn-on-notifications-for-this-phone)).
Crewtavo on your Home Screen keeps its own sign-in, separate from Safari's, so you sign in once more there. An emailed sign-in link opens in Safari, so use your password (or **Continue with Google**, if your business has it). Subcontractors sign in there with a code: see [Your jobs and paperwork as a subcontractor](https://crewtavo.com/docs/field/subcontractor-guide/#put-crewtavo-on-your-home-screen).
Crews see a card with these steps, **Add Crewtavo to your Home Screen**, on **Home** and **My day** in Safari. Tap its × to put it away for good on that phone.
### Android
Open Crewtavo in Chrome and tap **Install the app**, then confirm. Crews see it on **Home** and **My day** (**Get the Crewtavo app**), and everyone sees it in **Settings → Profile** under **Crewtavo app**. If there's no button, open Chrome's ⋮ menu and choose to install the app or add it to your Home screen.
Press and hold the Crewtavo icon for shortcuts, like **My day** and **Schedule**.
### On a computer
In Chrome or Edge, **Settings → Profile** shows **Crewtavo app** with **Install the app**. Crewtavo then opens in its own window from your app list or dock.
Once Crewtavo is installed, the install cards and buttons go away. The installed app doesn't pinch to zoom, like other apps. If you need things bigger, use your phone's own zoom or text size in its settings.
## Fix blocked notifications
If you said no when your phone asked, Crewtavo shows "Notifications are blocked for Crewtavo in this browser. Allow them in the browser's site settings, then come back here." Allow them on the phone, then come back to **Settings → Profile**, tap **Turn on notifications** and **Send a test**.
**iPhone or iPad:**
1. Open the iPhone's Settings app, then Notifications.
2. Find Crewtavo in the list and turn on Allow Notifications.
3. Check that a Focus, like Do Not Disturb or Sleep, isn't hiding them.
If Crewtavo on your Home Screen says "This browser can't show notifications.", update your iPhone: Home Screen apps need iOS 16.4 or later for notifications. Still nothing? Delete Crewtavo from your Home Screen, add it again, and turn notifications on.
**Android:**
1. Installed app: press and hold the Crewtavo icon, choose App info, then Notifications, and turn them on.
2. In Chrome: open Crewtavo, tap the icon to the left of the web address, and allow Notifications in the site's permissions.
3. Check that Do Not Disturb isn't on.
**Computer:** click the icon to the left of the web address and allow Notifications. On a Mac, also check System Settings → Notifications for your browser. On Windows, check Settings → System → Notifications.
If you see "This browser can't show notifications. Email and text still work.", that browser has no notifications. Tick **Email** or **Text** instead.
## Appearance
Pick **Light**, **Dark** or **System**. **System** follows your phone or computer's own light or dark setting. Your choice is saved on this device only, so set it on each phone or computer you use. Pages your clients see, like the Client Hub and booking forms, always stay light.
## Directions
Choose the maps app that opens when you tap an address or **Directions**: **Ask which app each time**, **Apple Maps** (on an iPhone, iPad or Mac), **Google Maps**, **Waze**, or on Android **Other app**, which lets you pick any maps app on your phone. It's saved on this device.
**Ask which app each time** shows a list to pick from, with **Copy address** and **Always use this app on this device**. A whole day's route opens in Apple Maps or Google Maps. See [Get directions in your maps app](https://crewtavo.com/docs/jobs/schedule-and-routes/#get-directions-in-your-maps-app).
## Measure map
For people who measure: the aerial imagery **Measure** opens on, like the **Team default** your business picked. "You can still switch any time from the Imagery button. Saved on this device." See [Measure yards and roofs](https://crewtavo.com/docs/measuring/measure-yards-and-roofs/) and [Map imagery](https://crewtavo.com/docs/connections/map-imagery/).
## Your schedule in your phone's calendar
Put your visits in Google, Apple or Outlook Calendar:
1. Choose **Get my calendar link**. If you can see the whole schedule, pick **My visits** or **Whole schedule** first.
2. Choose **Add to Google Calendar**, or **Apple or Outlook**. **Copy link** copies it for another calendar app.
Visits update on their own, but each calendar app checks on its own schedule, from about an hour to a day, so for a change made today, look in Crewtavo. Add it to Google on a computer: Google's phone app can't add calendars. Anyone with the link can see these visits, so keep it to yourself. **New link** stops the old one working, and **Turn off** stops it. See [Google Calendar](https://crewtavo.com/docs/connections/google-calendar/#show-your-visits-in-google-calendar).
## Key file (owners)
Owners see **Key file**: "If you forget your password while Crewtavo can't email you, uploading your key file gets you back in." It shows how many uses are left, like "Good for 6 more uses (of 8)".
To get a new one, choose **Get a new key file**, type **Your password**, and choose **Get new key file**. Save it somewhere safe. Your old key file, and any printed keys, stop working. Once your email is set up, **Forgot password** sends you a link instead. See [Sign in, reset a password and get back in](https://crewtavo.com/docs/team/sign-in/).
## Change your password
Under **Change password**, type your **Current password**, then a **New password** (at least 8 characters), type it again in **Confirm new password**, and choose **Change password**. The button shows "Password changed".
No password yet, because you chose **Skip for now** when you joined or sign in with Google? Leave **Current password** empty. That works within 10 minutes of signing in with Google, an emailed link or a code, so sign out and back in first if it's been longer. Forgot your password? See [Sign in, reset a password and get back in](https://crewtavo.com/docs/team/sign-in/).
## For subcontractors
A sub's **Profile** tab has the same **Full name**, **Mobile phone**, photo, **Notifications**, **Appearance** and **Directions**. It has no schedule color, signature, Measure map or calendar link, and no password unless you have your own Crewtavo sign-in:
- **Mobile phone**: "Texts about your jobs go here. Leave it empty to get them at the number" the business has for you.
- **Notifications**: **My schedule changes**, **My jobs**, **My paperwork**, and **Clock reminders** if the office keeps your hours. Email goes to the address the business has for you. If they have none, it says to ask them to add it.
- **Signing in**: there's no password. It says how to get back in on a new phone, with a code by text or email, or a new link from the office.
On an iPhone, notifications need Crewtavo on your Home Screen, and you sign in there with a code. If the office has no phone number or email for you, it says "On an iPhone, notifications need the app on your Home Screen. To sign in there, the office needs your phone number or email on file. Ask them to add it." See [Your jobs and paperwork as a subcontractor](https://crewtavo.com/docs/field/subcontractor-guide/).
Source: https://crewtavo.com/docs/team/your-profile-and-phone/ (last updated 2026-11-04)
---
# Track time, breaks and where people clock in
> Crews clock in on their phones, Timesheets shows each week's hours with breaks paid your way and where people clocked in, and Pay adds up hourly and piece pay for your payroll.
Your crew clocks in and out on their phones. **Timesheets** collects everyone's hours week by week, for a crew lead or the office to approve, and **Timesheets → Pay** adds up what each person is owed for your payroll service. You decide whether breaks are paid, and whether Crewtavo saves where people are when they clock in and out.
## Clock in and out
The clock is at the top of **My day**, and of **Timesheets** for the current week.
- **Start timer** clocks you in. Pick **Driving**, **Shop time**, **On break** or **Other work**, or on **My day**, a visit that's under way.
- **Switch** moves the clock to something else without stopping it. On **My day** it lists the visits under way, so you can clock back onto one after a break.
- **Stop** clocks you out.
Starting a visit (**Start** or **Start visit**) also clocks you onto it, and **Complete visit** clocks you off it.
A clock left running for hours sends a reminder. If it's still running much later, Crewtavo stops it at the end of that working day, and the entry shows **Check end time** until it's approved.
### Clock in the whole crew
A crew lead with two or more people sees a **Crew clock** card on **My day**:
- **Clock everyone in** puts the whole crew on a visit, **Driving** or **Shop time** at once. **Clock in 2 more** catches up anyone who isn't on yet.
- **Switch** moves everyone on the clock to something else, like **On break** for lunch, then back onto the visit after.
- **Clock everyone out**, or clock one person in or out from their row.
Each person's time lands on their own timesheet.
## Choose how breaks are paid
An owner or admin sets this for the whole business:
1. Open **Settings → Company** and find the **Time clock** card.
2. Pick under **Breaks**:
- **Paid if 20 minutes or less** (the default). A short rest break counts as paid time; a longer one, like lunch, doesn't. This follows federal rules.
- **Always paid**. Every break counts, lunch included.
- **Never paid**. No break counts as paid time.
3. Choose **Save company settings**.
On **Timesheets**, a break that isn't paid shows as "0.75 h unpaid", and each person's weekly total leaves it out and shows "+ 0.75 h unpaid breaks" beside it. **Timesheets → Pay** shows the unpaid breaks and says which rule it used, and **Metrics → Team** counts **Paid hours** only.
:::caution
Federal rules say rest breaks of 20 minutes or less must be paid, so check before choosing **Never paid**. Your state may have its own rules on breaks and meal periods. This isn't legal advice: check with your state's labor department or your accountant.
:::
## See where people clock in and out
Crewtavo saves where each phone is at the moment someone clocks in and out, and nowhere in between. It's on unless you turn it off: an owner or admin can switch **Save where people are when they clock in and out (the office and crew leads see it on Timesheets)** in the **Time clock** card under **Settings → Company**.
Your crew sees "Clocking in and out saves where you are, for the office." on their clock. The first time, their phone asks to share their location. If they say no, or the phone can't find itself within about 10 seconds, the clock still starts or stops, and the entry says why there's no place.
On **Timesheets**, each entry shows where it started and stopped:
| It says | What it means |
| --- | --- |
| "In: at the job" | Within about 200 meters (650 feet) of the visit's or job's address, allowing for the phone's accuracy. For shop time, it says "at the shop", going by your shop address in **Settings → Company**. |
| "Out: 2.1 mi from the job" | How far from the job (or the shop) they were. |
| "In: see map" | There was no job or shop address to compare with. |
| "(rough location)" | The phone was unsure of its location, by more than about 500 meters. |
| "location turned off" | They said no to sharing their location. |
| "no location found" | The phone couldn't find its location in time. |
| "phone can't share location" | The phone or browser can't share a location at all. |
| "(Luis's phone)" | Someone else clocked them in or out, like a crew lead clocking in the crew. |
Click a place to open it in Google Maps.
Who sees the places:
- Owners, and admins and office staff whose role has **Approve timesheets (crew leads: their crew's)**: everyone's.
- A crew lead: their crew's, but not their own.
- Everyone else: none, their own included.
A place is saved with the clock as it starts or stops, so time added by hand has none, and fixing an entry's times keeps the places it had. With the switch off, Crewtavo saves no new places.
## Review and approve time
**Timesheets** shows one week at a time, a card per person, with each day's hours and each entry. A total over 40 hours shows how much is over.
- **Approve all**, or **Approve** on one person, approves the week's finished entries. A crew lead whose role has the area approves their crew's time, but not their own. The starter **Foreman** role doesn't have it: add **Approve timesheets (crew leads: their crew's)** to it in **Settings → Roles** if your foremen should approve.
- **Add time** adds an entry by hand. An entry's menu has **Edit**, **Remove approval** and **Delete**.
- **Download as spreadsheet**, in the page's menu, saves the week with **Paid hours** beside **Hours**, and **Clock-in location** and **Clock-out location**. It's there for owners, admins and office staff with the area.
Forgot to clock in or out? Anyone can fix their own time: open **Timesheets**, choose **Add time**, or **Edit** on the entry, as long as it isn't approved yet. A crew lead can do the same for their crew. Once time is approved, only the office can change it.
Everyone sees their own time on **Timesheets**. Crew leads also see their crew's, and owners, admins and office staff see everyone's.
## Pay your team
**Timesheets → Pay** shows each person's pay for a pay period: **Last week**, **This week**, **Last 2 weeks**, **This month**, **Last month**, or any dates. It's for owners, admins and office staff whose role has **Job costs and profit**.
- Approved hours at each person's **Labor cost / hr**, set in **Settings → People**. Unpaid breaks show beside their hours.
- Hours over 40 in a week show for your payroll service. The amounts are at straight time.
- Piece pay for work done on jobs in the period, if they have any (below).
- Time not approved yet, and clocks still running, are flagged.
**Download** saves the period as a spreadsheet, with **Hourly pay at their rate**, **Piece pay** and **Total pay** for each person, ready for your payroll service.
Once you've paid people, choose **Mark paid** and pick **How they were paid**: **Direct deposit**, **Payroll service**, **Check**, **Cash** or **Other**. Crewtavo doesn't send money. Everyone's time has to be approved first. Their time and piece pay in that period are then locked, so what was paid stays on record. **Take back paid** unlocks it.
### Piece pay
Someone on your team can earn per square, per job or per day as well as, or instead of, by the hour.
1. In **Settings → People**, choose **Piece rates** under the person's **Labor cost / hr**, then **Add a rate**: **Per square or unit**, **Per job** or **Per day**. It's there for owners, and for admins whose role has **Job costs and profit**.
2. On a job, under **Sub and crew pay**, choose **Add pay**, then **Someone on your team**. Their rates fill in the lines, and you can change them.
3. Choose **Agree to this pay**. It's marked done by itself once the visits it covers are complete, or with **Mark work done**.
Work done goes into their pay period for the day it was finished, as **Piece pay** under **Timesheets → Pay**. Piece pay also counts in the job's costs. For paying the businesses you hire, see [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/).
:::note
A subcontractor whose page has **Uses the clock** on shows on **Timesheets** for your records, but never under **Pay**: they're paid by the job.
:::
Source: https://crewtavo.com/docs/team/timesheets-and-pay/ (last updated 2026-10-28)
---
# Write guides for your crew in the knowledge base
> Keep your how-to guides (SOPs) in the Knowledge base, sort them into categories, give guides and categories a cover photo, make some required reading and see who has read them, and search for answers.
The **Knowledge base** holds your business's how-to guides, also called SOPs: how to sealcoat a driveway, how to fuel the mowers, what to do when a client isn't home. Everyone on your team can read them, on a phone too. You can make a guide required reading and see who has read the latest version.
The trade you picked when you set up your business started you off with a few categories (see [Choose a trade preset](https://crewtavo.com/docs/getting-started/trade-presets/)).
## Who can do what
- **Everyone** can read published guides, search them, print them and confirm required reading.
- **Writing, editing and deleting** guides takes the **Write and edit guides** permission. Owners, admins and the office have it to start with. Change it for a role under **Settings → Roles** (only roles on the Owner, Admin or Office access level can have it).
- **People who can write guides** also see drafts, the revision history and who still has to read a required guide.
## Write a guide
1. Open **Knowledge base** and choose **New guide**.
2. Give it a title, like "Sealcoat application", and write the steps.
3. On the right, add a **Cover photo** if you like (see [below](#add-a-cover-photo)), and choose its **Category**, whether it's **Published** or a **Draft**, and any **Tags**.
4. Choose **Publish**, or **Save draft** for a draft. **⌘S** on a Mac or **Ctrl S** on Windows saves too.
The toolbar has headings, bold, italics, underline, numbered steps, bulleted lists, checklists, quotes, callouts, tables, links, videos and dividers. You can also type a shortcut at the start of a line, followed by a space: `#` for a heading, `##` for a subheading, `1.` for numbered steps, `-` for a bulleted list, `[]` for a checklist, `>` for a quote and `---` for a divider.
### Steps, checklists, callouts and tables
- **Numbered steps** show each number in a green circle, so someone reading on a phone keeps their place.
- **Checklist** makes a list with a box beside each line, for what to load on the truck or check before leaving. Tick a box in the editor to show it already ticked.
- **Callout** (the speech bubble with an exclamation mark) puts the line you're on in a colored box with a label: choose **Tip**, **Important** or **Warning**. Choose it again to switch the kind, or **Remove callout**.
- **Table** (the grid) has **Insert table**, which adds a table with a header row. With the cursor in a table, the same button has **Add row below**, **Add column to the right**, **Header row on or off**, **Delete row**, **Delete column** and **Delete table**.
To put a training video in a guide, see [Add a YouTube or Vimeo video to a guide](https://crewtavo.com/docs/team/videos-in-guides/).
To change a guide, open it and choose **Edit**, then **Save**. If someone else saved it while you were editing, you'll see "Someone else saved this guide while you were editing. Copy your changes, reload the page, and apply them again."
## Add a cover photo
A cover photo makes a guide easy to spot in the list: a photo of the sealcoat rig, the mower, the finished job. Anyone who can write guides can add one.
1. Open the guide and choose **Edit**, or start a **New guide**.
2. On the right, under **Cover photo**, choose **Add a cover photo** and pick a photo. On a computer you can also drag a photo onto it.
3. Choose **Save** (or **Publish** for a new guide). The photo is saved with the guide, so it's not kept if you leave without saving.
To swap it, choose **Change photo**. To take it off, choose **Remove**. Then choose **Save**. Once you save, the old photo goes to the [Trash](https://crewtavo.com/docs/connections/drive/#the-trash) for 30 days.
Where it shows:
- **On the guide's card** in the **Knowledge base**, in a category and under **Recently updated**, above the title. On a phone it's a small picture beside the title, so the list stays short. A guide without a cover shows a book there.
- **Across the top of the guide**, above the text. A guide without a cover has nothing there.
- **In search results**, as a small picture beside the guide.
It doesn't print.
### Photo sizes
- Any JPEG or PNG works. Crewtavo turns it into a JPEG up to 1,600 pixels on its longest side, so a full-size phone photo is fine and loads quickly.
- The card shows the photo wide (16 by 9) and the top of the guide wider still, cropping it to fit. Keep what matters near the middle. Landscape photos work best.
- See-through parts of a picture turn white.
- If you see "Crewtavo can't open that picture here. Try a JPEG or PNG.", your browser can't open that kind of picture (like an iPhone's HEIC photo on some computers). Save it as a JPEG and try again.
A cover isn't part of the guide's revisions. Adding or changing one doesn't make a new revision, so nobody has to read a required guide again, and **Restore this version** keeps the cover the guide has now. Deleting a guide puts its cover in the Trash too.
### Can I put a photo inside the steps?
Not yet. There's no button to add a photo inside a guide's text, only the one cover photo. To show how something's done, you can:
- Add a training video from YouTube or Vimeo. See [Add a YouTube or Vimeo video to a guide](https://crewtavo.com/docs/team/videos-in-guides/).
- Link to a photo, or a page with photos, with the toolbar's **Link** button.
A picture copied in from a web page, along with its text, still shows in the guide. It stays on that website, though, so it disappears if the site removes it.
## Read a guide
A guide shows in a column sized for easy reading. When it has two or more headings:
- **On this page**, beside the guide, lists its headings. Choose one to jump there; the part you're reading is highlighted as you scroll. On a phone, or in a narrow window, **On this page** sits above the guide instead: tap it to open the list.
- Point at a heading and choose the **#** beside it to copy a link to that part of the guide, for example to send in team chat. The link opens the guide at that heading.
A guide's tags show at the top, next to when it was last updated.
## Drafts
A draft is only visible to owners, admins and the office. It shows "Draft · only the office can see this" at the top. When it's ready, choose **⋯** then **Publish** on the guide, or switch **Visibility** to **Published** in the editor and save.
To take a guide down without losing it, switch it back to **Draft**.
## Required reading
For guides everyone has to know, like safety rules, turn on **Required reading** in the editor. Under **Who has to read it**, choose any of **Office**, **Estimator**, **Crew lead** and **Field crew**, or leave them all off: "None selected means everyone." These are access levels, so a role of your own counts as the level it's built on.
Once it's published:
- Everyone who has to read it sees "You have 1 required guide to read" at the top of the **Knowledge base**, and the guide shows **Required** until they've read it.
- They open the guide and choose **I've read this**. It then shows **You've read this**, and **Read** in the list.
- **Read this revision**, beside the guide, shows who has confirmed it and when. People who can write guides also see **Still to read**.
:::note
Changing a required guide's title or text makes a new revision, and everyone has to read it again. Changing only its category, tags, cover photo or who has to read it doesn't.
:::
:::tip
Crewtavo doesn't send a notification when a guide becomes required reading, so let people know, for example in [team chat](https://crewtavo.com/docs/connections/team-chat/).
:::
A required guide needs something in it before you publish it. Otherwise you'll see "Add some content before making this required reading."
## Find a guide
- Type in the search box at the top of the **Knowledge base**. Results show as you type. Guides whose title, tags or category match come first, even from part of a word ("seal" finds "Sealcoat application") or with a small typo. A moment later, guides that have every word you typed somewhere in their text join the list, with a line from the guide, so a few key words like "sealer cure" work best.
- Choose a tag on a guide to search for it.
- Browse by category, or look under **Recently updated**.
- The search at the top of every screen finds guides too. See [Find anything with search](https://crewtavo.com/docs/getting-started/find-anything/).
Only owners, admins and the office see drafts, in search and everywhere else.
### Ask a question
When AI is on for your business, the search box says "Search or ask a question" and has an **Ask** button. Type a question in your own words, like "How long does sealer need to dry before cars drive on it?", and choose **Ask**. Crewtavo picks the guides that best match the words in your question and answers only from them, with numbered links to the guides it used. If none of them covers it, you'll see "I couldn't find a guide that covers that. Try different words, or ask the office."
To turn on **Ask**, an owner or admin adds your business's own Anthropic key:
1. Create an API key in your Anthropic account. Anthropic bills your business for what Crewtavo's AI uses.
2. In Crewtavo, open **Apps** and choose **Claude**.
3. Paste the key under **Your own Anthropic key (optional)** and choose **Save**.
**Ask** shows up for you right away, and for the rest of your team the next time they open Crewtavo. The same key powers Crewtavo's writing help too, like **Polish with AI** on a quote and **Write with AI** on a campaign.
If whoever runs your Crewtavo server added a Claude key in its hosting settings (`ANTHROPIC_API_KEY`), **Ask** is already on, and a key your business adds is used instead. See [Optional settings](https://crewtavo.com/docs/hosting/settings/).
## Categories
Choose **Categories** on the **Knowledge base** to sort your guides:
- **Add one:** type its name in the box at the bottom and choose **Add**.
- **Rename one:** click its name, type, and press **Enter**.
- **Reorder:** use the up and down arrows.
- **Remove one:** choose the trash can. No guides are deleted: "Its 3 guides move to Uncategorized. Nothing is deleted."
- **Give one a cover photo:** see [below](#category-cover-photos).
Changes save as you make them. Choose **Done** when you're finished.
On the **Knowledge base**, each category is a card, like a guide's: its cover photo over its name and how many guides it has. A category without a photo shows a green book instead, and **Uncategorized** a grey one.
### Category cover photos
Anyone who can write guides can give a category a cover photo.
1. Open **Knowledge base** and choose **Categories**.
2. Choose the small picture at the start of the category's row and pick a photo. It saves straight away: "Photo saved".
3. To swap it or take it off, choose the photo, then **Change photo** or **Remove photo**.
The photo works like a guide's: any JPEG or PNG, made into a JPEG up to 1,600 pixels on its longest side, and shown wide (16 by 9) on the card, so keep what matters near the middle. See [Photo sizes](#photo-sizes).
## Revision history
Every saved change is kept. On a guide, choose **⋯** then **Revision history**, and pick a revision to see it as it was. **Restore this version** brings it back as the newest revision, so nothing is lost. On a required guide, that counts as a change, and everyone reads it again.
## Print or delete a guide
- **Print:** choose **⋯** then **Print**. The page prints without the side panels.
- **Delete:** choose **⋯** then **Delete guide**. "It's removed for everyone, along with its revision history and read receipts." To take a guide down but keep it, make it a draft instead.
## Let Claude or ChatGPT write guides
With your Crewtavo connected to Claude or ChatGPT, you can ask the assistant to write a guide or update one, in plain words. It can use numbered steps, checklists and callouts too. A guide it writes starts as a draft, so you can check it before your crew sees it. It needs the **Write and edit guides** permission like anyone else. See [Connect Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/).
Source: https://crewtavo.com/docs/team/knowledge-base/ (last updated 2026-11-02)
---
# Add a YouTube or Vimeo video to a guide
> Put a training video in a knowledge base guide with the Video button, or by pasting its link on an empty line. It plays right in the guide, on phones too.
Guides in the [Knowledge base](https://crewtavo.com/docs/team/knowledge-base/) can show YouTube and Vimeo videos, so your crew can watch how a job is done right next to the written steps. The video plays inside the guide, on a phone too.
Owners, admins and office staff who can edit guides can add videos.
## Add a video
1. Open **Knowledge base**, open a guide and choose **Edit**, or choose **New guide**.
2. Click where the video should go.
3. Choose the **Video** button in the toolbar (the camera), paste the video's link and choose **Add video**.
The video goes on a line of its own: the line you were on if it's empty, otherwise just below it. Choose **Save** to keep it (**Publish** or **Save draft** on a new guide).
:::tip[Quicker: paste the link]
Paste a YouTube or Vimeo link on an empty line and it turns into the video by itself. Pasted in the middle of a sentence, it stays as text. The embed code from YouTube's or Vimeo's **Share → Embed** works too, wherever you paste it.
:::
## Which links work
Copy the link from the video's page or its **Share** button. These all work:
- **YouTube:** `youtube.com/watch?v=…` and `youtu.be/…` links, Shorts, live videos and playlists. A start time in the link (like `?t=90`) is kept, so the video starts there.
- **Vimeo:** `vimeo.com/…` links, including unlisted ones (the link with an extra code after the number), and links from showcases, channels and groups.
Anything else gets "That isn't a YouTube or Vimeo link. On the video's page, choose Share, copy the link and paste it here."
:::note
Only YouTube and Vimeo videos can go in a guide; other websites can't be embedded. YouTube videos play in YouTube's privacy-enhanced mode, and Vimeo videos with Vimeo's tracking turned off.
:::
## Unlisted and private videos
- **Unlisted** videos work. Anyone who can read the guide can watch them, which suits training videos you don't want on a public channel.
- **Private** YouTube videos won't play for your crew. Make the video unlisted instead.
- If the video's owner turned off playing it on other websites, the player says so and offers to open it on YouTube or Vimeo. For your own Vimeo videos, check that the video's embed privacy setting in Vimeo allows your Crewtavo web address, or anywhere.
## Remove a video
In the editor, click the video to select it (it gets a green outline) and press **Backspace** or **Delete**. Pressing **Backspace** at the start of the line just below the video works too. Right after adding one, **Undo** takes it out.
## Guides an AI assistant writes
When Claude or ChatGPT writes a guide for you (see [Connect Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/)), a YouTube or Vimeo link on a line of its own becomes the video in the same way.
Source: https://crewtavo.com/docs/team/videos-in-guides/ (last updated 2026-10-20)
---
# Work with subcontractors: paperwork, sign-in, pay and job offers
> Keep each sub's W-9 and insurance current, let them sign in to see only their own jobs, offer them work at a price, mark them paid, and pull year-end totals and your workers' comp audit.
**Subcontractors** keeps the businesses you hire for jobs in one place: their W-9 and insurance certificates, what you pay them on each job, and what you owe them. A sub can also sign in to see only the jobs you give them, take or turn down a job offer, and send you their paperwork from their phone. Everything works for a sub who never signs in, too.
## Who can use it
**Subcontractors** is in the sidebar, in the group with **Timesheets** and **Equipment**, for:
- Owners, always.
- Admins and office staff whose role has **Subcontractors, their paperwork and pay**. The Admin and Office access levels have it, and so do the General manager, Office manager and Operations manager starter roles. Turn it on or off for a role under **Settings → Roles**.
Estimators, crew leads and field crew never see the **Subcontractors** page, a sub's paperwork or what you pay them.
## Add a sub
1. Open **Subcontractors** and choose **Add a sub**.
2. Enter their **Business name**, as it's written on their W-9. It's the only thing you need.
3. Add what else you have: **Trade**, **Contact name**, **Mobile phone**, **Email** and **Tax classification** (box 3 on their W-9). **Mailing address and notes** holds their address and notes only the office sees.
4. Choose **Add sub**.
Write a phone number with the area code. For a sub outside the US and Canada, start with + and the country code, like +52 55 1234 5678.
## Keep their paperwork current
Every sub needs three things on file: a **W-9**, **Liability insurance** and **Workers' comp** (a certificate, or an exemption). The **Subcontractors** list shows each one's status:
| Chip | What it means |
| --- | --- |
| **OK** | On file and current. |
| **Expires in 12 days** | Ends within 30 days. It says **Expires tomorrow** or **Expires today** at the end. |
| **Expired** | The one on file has run out. |
| **Missing** | Nothing on file. |
| **Not verified yet** | The sub sent one and nobody has checked it. |
The **Needs attention** tab lists every sub with anything expiring, expired, missing or not checked yet. **Active** lists them all.
### Upload it yourself
1. Open the sub. Under **Paperwork**, choose **Upload** (or **Replace**) next to the W-9, liability insurance or workers' comp.
2. Choose the PDF or photo. For workers' comp, pick **Workers' comp certificate** or **Workers' comp exemption**.
3. For insurance, add the **Insurance company**, **Policy number**, **Starts** and **Ends**. A certificate needs its end date, since that's what the reminders go by. For a W-9, you can add the day it was **Signed on**.
4. Choose **Add** (or **Replace**).
What you upload counts as checked. The one it replaces moves to **Replaced**, kept for your records and audits. Licenses, signed agreements and anything else go under **Other documents → Add**.
### Have them send it
1. Open the sub and choose **Send upload link**.
2. Tick **Text** or **Email** (or both), check the message, and see **What they'll get**.
3. Choose **Send text**, **Send email** or **Send text and email**. Or choose **Copy link** and send it your own way.
The link works for 30 days. No account is needed, and anyone with it can send paperwork for that sub but can't see anything. On their phone or computer, they see what you still need, choose **Take a photo** or **Choose a file**, and add the date a certificate ends. It takes a PDF, JPG, PNG, HEIC or WEBP file, up to 200 MB.
### Check what they send
Paperwork a sub sends shows **Not verified yet**. Open the sub, open the file, check it's the right document and the dates match, then choose **Verify**. Until you do, the certificate you checked before keeps counting, and keeps reminding.
:::note
Only certificates you've verified count in the [workers' comp audit](#year-end-totals-and-the-workers-comp-audit).
:::
### When insurance runs out
A sub whose liability or workers' comp has run out, or isn't on file, gets a warning on their page with **Ask for it**, which opens **Send upload link**. It's only ever a warning: you can still give them work. Without current certificates, though, your insurance company may charge you for their work at your workers' comp audit.
Crewtavo reminds you 30 days and 7 days before a certificate ends, and on the day it ends. With **Remind subs when their insurance is about to expire** on (it is unless you turn it off), the sub gets the same reminders by email or text, with a link to send the new one. The switch is in the card at the bottom of the **Subcontractors** page.
## Give a sub their own sign-in
A sign-in is optional. With one, a sub sees the visits you put them on and their own paperwork, takes job offers, and sends paperwork from their phone. There's no password: they tap a link once and stay signed in on that phone.
1. Open the sub. In the **Sign-in** card, choose **Text sign-in link** (it needs their mobile number) or, if you have their email, **Email sign-in link**.
2. To send it your own way, choose **Copy sign-in link** from the card's menu.
If this Crewtavo can't send texts, **Text sign-in link** offers **Open Messages**, to send the link from your own phone with the text filled in.
A link works once, within a day. Whoever opens it signs in as that sub, so send it only to them. The card's menu also has **New sign-in link** (the old one stops working) and **Remove sign-in** (it stops working right away, and their phone is signed out). A sub who already has their own Crewtavo sign-in shows **Own sign-in** and needs no link.
Two switches in the card set what their sign-in shows. Both start off:
- **Can contact clients**: they see the client's phone and email on their visits, to call or text them. Off, they see the client's name only.
- **Uses the clock**: they clock in and out on their visits, like your crew, and their hours show on **Timesheets** for your records. They're still paid by the job, never through a pay period.
### What a sub sees
A signed-in sub has **My day**, **My jobs**, **My paperwork** and **Profile** (on a phone, the bottom tabs read **My day**, **My jobs**, **Paperwork** and **Profile**), and nothing else: not your other clients, your prices, your team or your invoices.
- **My day** shows the visits you've put them on, like your crew's, with the address, gate code, notes and checklist.
- **My jobs** lists **Waiting for your answer**, **Coming up**, **Done, waiting to be paid** and **Paid**, with this year's total.
- **My paperwork** shows what you need from them, and lets them send it.
To put a sub with a sign-in on a visit yourself, use the visit's **Subcontractors** picker. See [who's on each visit](https://crewtavo.com/docs/jobs/schedule-and-routes/#see-whos-on-each-visit).
### Signing in on a new phone
On the sign-in page, a sub chooses **Subcontractor? Get a sign-in code by text**, types their number and chooses **Text me a code**, then types the code under **Enter your code**. A code has 6 digits, works once within 10 minutes, and allows 5 tries.
- **No phone on file? Get a code by email instead** sends the code by email. When this Crewtavo can't text, the link reads **Subcontractor? Get a sign-in code by email**, and **Email me a code** sends it.
- Codes only go to the phone number or email on the sub's record here, so keep those current.
- Codes by text need [texting set up](https://crewtavo.com/docs/hosting/settings/), and codes by email need [your email connected](https://crewtavo.com/docs/connections/email/). The **Sign-in** card says which ways a sub can get a code.
- Your team doesn't use codes. They sign in with a password, an emailed link or Google.
Texts cost money, so codes only go to US and Canadian numbers unless you add a country. Under **Sign-in codes by text** at the bottom of the **Subcontractors** page, type the country's calling code (like 44 for the UK) and choose **Add a country**. You can add up to 20.
## Set their rates
Rates fill in a sub's pay on a job, so you don't work it out each time. Open the sub, and under **Rates** choose **Add a rate**:
- **Per square or unit**: a rate times a price-list service's quantity on the job. For a service sold by the square, pick **The job's squares (what the client pays for)** or **Roof squares without waste**.
- **Per job**: the rate once.
- **Per day**: the rate times the days of the visits it covers.
You can still change the amounts on each job.
## Offer a sub a job
1. Open the job. Under **Sub and crew pay**, choose **Add pay**.
2. Choose **A sub**, then the sub. Subs with their paperwork in order come first, and the rest say what's wrong, like "Workers' comp expired".
3. Tick the **Visits it covers**, check **What their rates come to**, and choose **Add pay**. It's saved as a draft, which the sub doesn't see, and opens so you can change the lines.
4. Choose **Send offer**.
5. Pick when **They answer by**: **No deadline**, **In 2 hours**, **End of today**, **Tomorrow at noon** or **Pick a time** (up to 90 days away).
6. Choose **Send offer**.
They get it in Crewtavo, and by email or text as their notification settings allow. Until they take it, they see the town, the days, the work and their price, not the address or the client. They choose **Accept** or **Decline**, and can say why they declined. Accepting puts them on the visits it covers.
If their insurance has run out, is missing, or ends before the work does, the offer shows **Check their insurance** and the button reads **Send anyway**. It never stops you. The offer notes the warning for your audit.
For a sub who doesn't sign in, or who said yes on the phone, choose **Agree to this pay** (or **Agree and put them on the job**) instead of sending an offer.
### What happens next
A sub's pay shows one of these on the job:
| Status | What it means |
| --- | --- |
| **Draft** | Not agreed yet. The sub doesn't see it. |
| **Offered, waiting for an answer** | Sent. You can still **Withdraw offer**. |
| **Accepted** | They took it, or you agreed it for them. |
| **Declined** | They turned it down. **Offer someone else** starts it again for another sub, for the same visits. |
| **No answer in time** | Their time to answer ran out. You get a notification. |
| **Withdrawn** | You took the offer back. They're told. |
| **New price waiting** | You sent a new price with **Change price**. If they decline it or don't answer in time, the price they agreed stays. |
| **Work done** | Their visits on the job are complete, so they're owed. It's marked by itself, or with **Mark work done**. |
| **Paid** | You marked it paid. |
| **Cancelled** | Called off. It stays on the job. |
## Mark subs paid
Crewtavo doesn't send money. Pay the sub your usual way, then record it:
- On the job, open their pay and choose **Mark paid**.
- On the sub's page, under **Pay**.
- On the **Subcontractors** page, the **Owed** card lists all work that's done and not paid yet. Tick several and mark them paid at once.
Fill in **Paid on**, **How you paid** (**Check**, **Bank transfer**, **Cash**, **Card or payment app**, **Payroll** or **Other**) and a **Reference**, like a check number. Paying one job, you can change the amount. To undo it, open the pay and choose **Take back paid**.
Sub pay that's agreed, done or paid counts in a job's costs as **Sub and crew pay**. See [Finance](https://crewtavo.com/docs/billing/finance-and-metrics/#profit).
## Year-end totals and the workers' comp audit
**Year-end totals** (at the top of the **Subcontractors** page) shows what you paid each sub in a calendar year, by the day you paid them, for their 1099-NEC. It opens on last year in January and February, and on this year after that.
- Each sub shows their total, number of payments, tax classification, and whether a 1099-NEC is **Needed** or **Not needed**.
- Corporations are flagged as usually not getting a 1099.
- Card and payment-app payments are left out: the card company or app reports those on a 1099-K.
- Payments through payroll count, but your payroll service may already file that 1099. Check before you send one.
- Tax ID numbers aren't kept in Crewtavo. Your bookkeeper takes them from each sub's W-9.
**Download CSV** saves the list for your bookkeeper.
**Workers' comp audit** answers the auditor's question: what you paid subs for work during the policy period (or agreed to pay, where it isn't paid yet), and whether each one had their own workers' comp. Pick **Last 12 months**, this year, last year, or your policy's dates. Each job shows the days worked, the amount, **Covered**, **Partly covered** or **Not covered**, and the certificates on file for those days. **Download CSV** saves it for the auditor.
:::caution
These pages help you get organized. They aren't tax or legal advice. The amount that makes a 1099-NEC necessary changes, so check the [IRS's instructions for Form 1099-NEC](https://www.irs.gov/forms-pubs/about-form-1099-nec) for the year, or ask your accountant.
:::
## Notifications and automations
People with the Subcontractors area get notifications about insurance running out, paperwork a sub sends in, and answers to job offers. Each person chooses how under **Settings → Profile**, in the **Subcontractors** topic.
Automations have four triggers for subs: **A job is offered to a sub**, **A sub takes a job offer**, **A sub turns down a job offer** and **A job offer to a sub runs out**. They're for people with the Subcontractors area, and only ever notify the office.
## Turn off or delete a sub
From the **⋯** menu on a sub's page:
- **Turn off**: they leave the list, stop getting reminders and can't sign in. Their paperwork stays, and **Turn back on** brings them back.
- **Delete**: their paperwork is deleted too, and their sign-in is removed. To keep their paperwork for your records, turn them off instead.
Source: https://crewtavo.com/docs/team/subcontractors/ (last updated 2026-11-04)
---
# Install and manage apps (integrations)
> Owners and admins turn on Crewtavo's built-in apps (Team Chat, Drive, Marketing and more) and connect Google reviews, Facebook and Instagram, calendars, QuickBooks, Zoho Books, Stripe, Claude, texting and more from Apps. Install, open, uninstall or reconnect each one, and see every app Crewtavo works with.
**Apps** is where you turn on the extras built into Crewtavo, like Team chat, Drive and Marketing, and connect the tools you already use: your Google reviews, Facebook and Instagram, your calendars, QuickBooks Online or Zoho Books, Stripe, Claude and more. It works like a phone's app store: open an app, choose **Install**, and follow its steps.
## Who can use Apps
**Apps** is in the sidebar for owners, and for admins whose role has **Connect apps**. Anyone else who opens it sees "You don't have access to this".
The starter **General manager** role doesn't have **Connect apps**. If your manager should set up apps, switch it on for the role under **Settings → Roles**. See [Roles and permissions](https://crewtavo.com/docs/team/roles-and-permissions/).
Claude and ChatGPT are each person's own: anyone on your team can connect them from **Settings → AI assistants**, without opening Apps. See [Connect Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/).
## Find an app
**Apps** groups everything the way it's used: **Built into Crewtavo**, **Marketing**, **Calendars**, **AI**, **Accounting**, **Payments**, **Material prices**, **Messaging** and **Your website**. A check on an icon means it's installed, and a warning mark means it needs attention.
Open an app to see its page. Under the name are its buttons and a strip with its **Category**, **Made by**, **Connects with** and **Status**. Further down are **What it does**, **About**, and **Information**, which lists what **Crewtavo can** see and do in the app. Other apps of the same kind are at the bottom, like **More calendars**.
Two connections aren't on the Apps page: email is under **Settings → Email** (see [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/)), and measuring maps under **Settings → Maps** (see [Map imagery for measuring](https://crewtavo.com/docs/connections/map-imagery/)).
## Install an app
1. Open **Apps** and choose the app.
2. Choose **Install**.
**Install** turns into a ring, like an app store's, then **Open** and **Uninstall** take its place. What happens in between depends on the app:
- **Built into Crewtavo** (Team Chat, Website Analytics, Website Forms, Careers, Drive, Marketing, Paving and Roofing): the ring fills and it's on straight away. Signing up as a paving or roofing business installs Paving or Roofing for you. On a Crewtavo that runs on Railway, installing Drive first makes a storage bucket for its files in your Railway project; if it can't, Drive isn't installed and its page says what to do. See [Drive](https://crewtavo.com/docs/connections/drive/).
- **Google Business Profile and Facebook & Instagram:** install **Crewtavo - Marketing** first. Until then **Install** is greyed out and the page says "Install Crewtavo - Marketing first", because your Google reviews show in **Marketing → Reviews** and posts are made in **Marketing → Social**. Then the steps open below **Install**: Google approves your access to reviews first, and Facebook & Instagram connects through a Meta app you make for your business. See [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) and [Facebook & Instagram](https://crewtavo.com/docs/connections/facebook-and-instagram/).
- **QuickBooks Online and Zoho Books:** Crewtavo takes you to their sign-in. When you come back, the page says, for example, "QuickBooks Online is installed." If your server has no app of its own there, you first make one: see [use your own QuickBooks or Zoho Books app](#use-your-own-quickbooks-or-zoho-books-app).
- **Apps that need something from you:** a key for Stripe, fal.ai or Twilio, a calendar's link, your website's address for Sveltia CMS, your ABC Supply keys, or Claude or ChatGPT connecting. The ring spins and the steps open below it. Once you've done them, the ring fills and the app shows as installed.
While the ring spins, the square in its middle stops installing. If a sign-in doesn't work, the page says why, or "QuickBooks Online couldn't be installed. Try again."
Once it's installed, **Open** takes you to where the app does its work: **Team chat**, **Drive**, **Marketing**, **Paving**, **Roofing**, **Marketing → Reviews** for Google Business Profile, **Marketing → Social** for Facebook & Instagram, the **Schedule** for a calendar, **Messages** for Twilio, **Website** for Sveltia CMS, or the other app's own website, like your Stripe dashboard. Marketing and its two apps have no **Open** for an admin whose role doesn't include **Marketing**: they can set the apps up, but not open Marketing.
## Uninstall an app
1. Open the app and choose **Uninstall** at the top.
2. Crewtavo says what it takes away. Choose **Uninstall** to go ahead.
Uninstalling never deletes what's already in Crewtavo, and you can install the app again any time. What it stops:
| App | What uninstalling does |
| --- | --- |
| Team Chat | "Chat disappears for everyone on your team. Every channel and message is kept, and comes back if you install it again." |
| Website Analytics | Stops counting visits. What's been counted stays. |
| Website Forms, Careers | Your website's forms stop sending to Crewtavo. Requests, applicants and each form's address stay. |
| Drive | "Drive leaves the sidebar for everyone. Your files stay on their clients and jobs, and your company folders come back if you install Drive again." The Trash keeps working. |
| Paving | "Paving leaves the sidebar for everyone. Every takeoff and estimate stays, and comes back if you install it again." The paving items leave the measuring map too. |
| Roofing | "Roofing leaves the sidebar for everyone. Every roof estimate, package and price range stays, and comes back if you install it again." The roof tools leave the measuring map too. |
| Marketing | Marketing leaves the sidebar for everyone, and every automatic message it sends clients stops: review asks and reminders, referral asks, campaigns (scheduled ones go back to drafts), automated campaigns, Google reviews coming in, and social posts. Promo codes, referral credits clients earned, and links already sent keep working. Everything is kept for when you install it again. The confirmation lists it all. |
| Google Business Profile | Reviews stop coming in, and replies can't be posted from Crewtavo. Your reviews on Google aren't changed. Tick the box to also remove the reviews brought in; kept, they still keep their clients from being asked again. |
| Facebook & Instagram | Posts stop going to your Page and Instagram, and Crewtavo's access is removed at Meta. Scheduled posts don't go there. Posts already made stay, and your Meta app's keys stay, so installing it again is one sign-in. |
| A calendar app | Its calendars come off the schedule. The calendars themselves aren't changed. For Google with Google sign-in, the visits calendar Crewtavo made is removed from your Google account. |
| QuickBooks Online, Zoho Books | Syncing stops. Nothing already synced is deleted, and your own app's keys stay. |
| Stripe | Crewtavo's webhook comes out of your Stripe account, and new invoices and payments stop showing up. Crewtavo asks for **Your Crewtavo password** first. There's no **Uninstall** when Stripe was set up for your whole server. |
| ABC Supply | Estimates stop getting prices from ABC, and your ABC app's keys are removed. Prices already on estimates stay. |
| fal.ai | Find paving stops working, and your fal.ai key is removed. Shapes it already found stay. |
| Twilio | The key saved on its page is removed. The confirmation says texts stop, but texting runs from your server's Twilio settings, so it keeps working until those are removed (see [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/)). |
| Sveltia CMS | **Website** comes out of the menu. Your website stays as it is. |
| Claude, ChatGPT | Your own connection stops working. Everyone else on your team who connected keeps theirs. |
:::caution[Uninstalling Claude also removes your business's Anthropic key]
If your business added its own Anthropic key on **Apps → Claude**, **Uninstall** removes it too, even if you only meant to disconnect your own Claude. That turns off **Ask** in the knowledge base and Crewtavo's AI writing help for everyone on your team, unless your server has its own key. To disconnect only yourself, choose **Disconnect** next to your connection instead, on the app's page or under **Settings → AI assistants**.
:::
## When an app needs attention
An app shows **Needs attention**, with a warning mark on its icon, when something stopped working:
- **A sign-in ran out or was taken back** (QuickBooks Online, Zoho Books, or Google Calendar with Google sign-in). Its page says so, like "QuickBooks Online needs to be reconnected", with the reason, and **Reconnect** takes the place of **Open**. Choose **Reconnect** and sign in again.
- **A calendar can't be read.** Its row on the app's page says why in red, like "No calendar at that link. It may have been turned off or replaced; copy the link again." Copy the calendar's link again and add it, then remove the old one. See [Google Calendar and other calendars](https://crewtavo.com/docs/connections/google-calendar/#if-a-calendar-stops-updating).
- **ABC Supply turned down your keys.** Its page shows what ABC said. See [Price roof materials from your ABC Supply account](https://crewtavo.com/docs/connections/abc-supply/).
Google Business Profile and Facebook & Instagram have a few more: **Paused** while Crewtavo - Marketing isn't installed, **Waiting on Google** until Google approves your access to reviews, **Not syncing** while Google has trouble (Crewtavo keeps trying), and **Not Live yet** until your Meta app is Live. Their pages say what to do. See [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) and [Facebook & Instagram](https://crewtavo.com/docs/connections/facebook-and-instagram/).
## If it says "Not available yet"
A greyed-out **Install** and **Not available yet** mean your server isn't set up for that app. The page says, for example, "Ask whoever set up Crewtavo to turn on Twilio.", and **Setup details** has a **Setup guide** link (for Twilio, that's Twilio's own documentation). Today this only happens with Twilio, on a server without a Twilio account. See [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/).
Google Calendar always works by secret address, and QuickBooks Online and Zoho Books with your own app's keys, so they're never stuck on this.
## Use your own QuickBooks or Zoho Books app
QuickBooks Online and Zoho Books connect through an app you make at Intuit or Zoho, for your business only. It's free. If your server doesn't have one, **Install** opens **Set up QuickBooks Online** (or **Set up Zoho Books**) with the steps:
1. Make the app. The steps give every address Intuit or Zoho asks for, each with **Copy**. For Zoho, first pick where your Zoho account is: the address in Zoho Books shows it, like **books.zoho.eu** for Europe.
2. Paste its **Client ID** and **Client Secret**, then choose **Save keys**. For a QuickBooks sandbox company, tick **These are development keys**.
3. Crewtavo says "Last step: sign in to QuickBooks Online and pick your company." Choose **Sign in to QuickBooks Online** (or **Sign in to Zoho Books**).
Intuit asks you to answer its app assessment questionnaire, even for an app only your business uses. Your production keys unlock once it's reviewed, which can take a few days.
Afterwards, **Your Intuit app** (or **Your Zoho app**) shows the end of its Client ID. **Change keys** swaps in another app's keys: paste the secret again, and you sign in again with the new app. **Remove keys** uninstalls the app, and installing it again needs the keys. The secret is stored encrypted on your server and never shown again. See [Sync with QuickBooks Online](https://crewtavo.com/docs/connections/quickbooks/) and [Sync with Zoho Books](https://crewtavo.com/docs/connections/zoho-books/).
## Every app
| App | What it does | Guide |
| --- | --- | --- |
| **Crewtavo - Team Chat** | Channels for the whole team, each crew and the office, with photos and @mentions | [Team chat](https://crewtavo.com/docs/connections/team-chat/) |
| **Crewtavo - Website Analytics** | Who visits your website, where they came from and which pages bring in requests, without cookies | [Website Analytics](https://crewtavo.com/docs/connections/website-analytics/) |
| **Crewtavo - Website Forms** | Your website's own contact form sends each message to **Requests** and your inbox | [Website Forms](https://crewtavo.com/docs/connections/website-forms/) |
| **Crewtavo - Careers** | Your website's Apply form sends each application and résumé to **Applicants** | [Careers](https://crewtavo.com/docs/connections/careers/) |
| **Crewtavo - Drive** | Every file in one place: company folders, the files on each client and job, PDF and Word editing, versions, a 30-day Trash and import from Google Drive | [Drive](https://crewtavo.com/docs/connections/drive/) |
| **Crewtavo - Marketing** | Review and referral asks, email campaigns (automated ones too), social posts and promo codes, with opens, clicks and the work they bring in | [Marketing](https://crewtavo.com/docs/clients/marketing/) |
| **Crewtavo - Paving** | A **Paving** section for parking lots and driveways: the takeoff on the aerial map, the estimate, proposal, schedule and invoice in one place | [Paving takeoffs](https://crewtavo.com/docs/measuring/paving-takeoffs/) |
| **Crewtavo - Roofing** | A **Roofing** section for roof estimates: roof tools on the measuring map, Good, Better and Best packages priced by the square, and a price range to send first | [Roofing estimates](https://crewtavo.com/docs/measuring/roofing-estimates/) |
| **Google Business Profile** | Your Google reviews in **Marketing → Reviews**, with replies, and posts to your Business Profile. Needs Crewtavo - Marketing | [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/) |
| **Facebook & Instagram** | Job photos and 4 and 5-star reviews posted to your Facebook Page and Instagram from **Marketing → Social**, with your own Meta app. Needs Crewtavo - Marketing | [Facebook & Instagram](https://crewtavo.com/docs/connections/facebook-and-instagram/) |
| **Google Calendar** | Your Google calendars on the schedule, and your visits in Google Calendar | [Google Calendar](https://crewtavo.com/docs/connections/google-calendar/) |
| **Zoho Calendar** | Zoho calendars on the schedule, from their private ICS link | [Other calendars](https://crewtavo.com/docs/connections/google-calendar/#outlook-apple-zoho-and-other-calendars) |
| **Outlook** | Outlook.com, Microsoft 365 and Exchange calendars on the schedule, from a published ICS link | [Other calendars](https://crewtavo.com/docs/connections/google-calendar/#outlook-apple-zoho-and-other-calendars) |
| **Apple Calendar** | iCloud calendars on the schedule, from their public calendar link | [Other calendars](https://crewtavo.com/docs/connections/google-calendar/#outlook-apple-zoho-and-other-calendars) |
| **Other calendars** | Any calendar with an ICS or webcal link, like Yahoo, Fastmail, Proton or Nextcloud | [Other calendars](https://crewtavo.com/docs/connections/google-calendar/#outlook-apple-zoho-and-other-calendars) |
| **Claude** | Use Crewtavo from Claude, and add your own Anthropic key for **Ask** and AI writing help | [Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/) |
| **fal.ai** | Find paving outlines the asphalt, concrete and stalls on an aerial for you, with your own fal.ai account | [fal.ai](https://crewtavo.com/docs/connections/fal/) |
| **ChatGPT** | Use Crewtavo from ChatGPT | [Claude and ChatGPT](https://crewtavo.com/docs/connections/claude-and-chatgpt/) |
| **QuickBooks Online** | Sends clients, invoices and payments to QuickBooks | [QuickBooks Online](https://crewtavo.com/docs/connections/quickbooks/) |
| **Zoho Books** | Sends clients, invoices and payments to Zoho Books | [Zoho Books](https://crewtavo.com/docs/connections/zoho-books/) |
| **Stripe** | Clients pay invoices by card or bank, and invoices made in Stripe come in too, with fees and deposits | [Stripe](https://crewtavo.com/docs/connections/stripe/) |
| **ABC Supply** | Your own ABC Supply prices on roofing estimates, and ABC's catalog in **Roofing** | [ABC Supply](https://crewtavo.com/docs/connections/abc-supply/) |
| **Twilio** | Visit reminders, on-my-way texts and two-way texting in **Messages** | [Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/) |
| **Sveltia CMS** | Edit your website's pages and posts from **Website** in Crewtavo | [Sveltia CMS](https://crewtavo.com/docs/connections/sveltia-cms/) |
Source: https://crewtavo.com/docs/connections/apps/ (last updated 2026-11-04)
---
# Take payments with Stripe
> Make a key for Crewtavo in Stripe with one button, paste it on the Apps page, and clients pay invoices by card or bank from the Client Hub. The same key lets you refund from Crewtavo and charge saved cards with autopay.
Crewtavo takes card and bank payments through your own Stripe account, so the money goes straight to you. Connecting takes one key, which Stripe makes for you: Crewtavo sets up everything else in Stripe. The same key lets you refund payments from Crewtavo and charge clients' saved cards with [autopay](https://crewtavo.com/docs/billing/autopay/).
## Connect Stripe
1. In Crewtavo, open **Apps → Stripe**, click **Install**, then **Get a key from Stripe**. Sign in to Stripe if it asks.
2. Stripe opens a new key named Crewtavo, with what Crewtavo needs already set. Most of the list stays at **None**: that's expected, so leave it as it is.
3. Scroll to the bottom of Stripe's page, click **Create key** and enter the code Stripe sends you.
4. Copy the key Stripe shows you and paste it into Crewtavo.
5. Type **Your Crewtavo password** ("To make sure it's you. No password yet? Set one under Settings → Profile.") and click **Connect**.
Crewtavo checks the key and adds the webhook it needs to your Stripe account, so there's nothing else to set up. Stripe then shows as installed, with a check on the Apps page. The key can only do what Crewtavo needs, not everything in your Stripe account.
Stripe decides where your clients' payments go, so connecting, replacing or removing the key always asks for your password. It's kept in the activity, and every owner gets a notification about it, and an email once [email is set up](https://crewtavo.com/docs/connections/email/).
:::tip[Try it first with no real money]
A key from a Stripe sandbox (it starts with `rk_test_`) works the same way. Switch to your live key when you're ready by pasting it under **Stripe key** on **Apps → Stripe**.
:::
:::note[If Stripe opens an empty form]
Name the key Crewtavo and leave everything at **None** except: **Write** for webhook endpoints, customers, invoices, Checkout Sessions, SetupIntents, PaymentMethods, PaymentIntents and refunds, and **Read** for balance, balance transaction sources, charges, payouts and accounts. Your full secret key (`sk_live_`) also works, but a key made just for Crewtavo is safer: Crewtavo warns you as you paste a full secret key, and the Stripe card keeps asking you to swap it for one ("This is your full Stripe secret key, which can do anything in your Stripe account, including payouts.").
:::
## Update your key for autopay and refunds
Keys made before autopay can't save cards, charge them or make refunds. With one of those, **Apps → Stripe** says "Update your key to turn on autopay. Saving cards, charging them and refunds need a new key with more permissions." To update it:
1. Choose **Get a new key**. Stripe opens a new key named Crewtavo, with the added permissions already set.
2. Click **Create key** at the bottom of Stripe's page, and copy the key.
3. Back on **Apps → Stripe**, paste it under **Stripe key**, type **Your Crewtavo password** and click **Connect**.
Then turn autopay on in **Settings → Payments**: see [Charge clients' saved cards automatically](https://crewtavo.com/docs/billing/autopay/). Once your key can charge cards, the Stripe card also reminds you: "In Stripe, turn off emails about failed payments and receipts, so clients don't get two." Crewtavo sends its own receipts and notices.
## Getting paid
- **Sending an invoice** also creates it in Stripe. Crewtavo still emails or texts the client, as before; Stripe doesn't. The **Pay** button in the Client Hub opens Stripe's page for that invoice, and a client can't pay it twice.
- **Bank payments** show as on their way until they clear. Meanwhile **Remind all** skips the invoice and the invoice asks before you record another payment, so the client isn't charged twice. The past-due automation doesn't check, so if the due date passes while one is clearing, its reminder still goes out.
- **A check you record** replaces the Stripe invoice with one for what's still owed.
- **A few cents left over**, less than Stripe can charge (50¢), aren't put in Stripe. Collect them another way.
- **Stripe's payment page** shows the logo and color from your Stripe account (**Settings → Business → Branding** in Stripe), not the logo in Crewtavo. Add it there too so the page looks like yours.
- **Tips**: to let clients add one, an owner or admin turns on **Let clients add a tip when they pay online** under **Defaults** in **Settings → Company**, then chooses **Save company settings**. The Client Hub then asks "Add a tip for the crew?" before the client pays, with **No tip**, **10%**, **15%**, **20%** or **Other**, and the receipt after an automatic charge asks too. Invoices made in Stripe don't offer one. Tips are recorded with the payment, with their fees, and don't count toward the invoice's balance. They aren't sent to QuickBooks or Zoho Books, since they aren't on the invoice there; **Finance → Payments** shows them.
- **Autopay**: a client saves a card or bank account on Stripe's page, from their Client Hub, and agrees to your terms. Each finished visit is then billed as a Stripe invoice that Stripe charges to that card straight away. Cards stay in your Stripe account, saved to the client's customer there. See [Charge clients' saved cards automatically](https://crewtavo.com/docs/billing/autopay/).
## Fees, deposits and refunds
Each payment records the fee Stripe kept. To see what reached your bank, open **Invoices** and choose **⋯ → Stripe deposits**. The page, **Deposits**, shows each payout to your bank, what Stripe kept in fees and the payments in it, plus what's on the way.
**Refund a card or bank payment** from the invoice: choose **⋯ → Refund** on the payment, check the amount and choose **Refund $…**. Crewtavo sends the refund through Stripe, and Stripe keeps its fee. It needs a key that can make refunds: see [Update your key for autopay and refunds](#update-your-key-for-autopay-and-refunds). You can also refund in your Stripe dashboard, as before. Either way, the refund shows up on the invoice by itself, as a payment marked "Refunded in Stripe". A refund comes off the invoice's part of the payment first, then the tip. See [Refund a card or bank payment made through Stripe](https://crewtavo.com/docs/billing/invoices/#refund-a-card-or-bank-payment-made-through-stripe).
**Record a refund**, on payments you recorded yourself, is only for money you gave back outside Stripe. A payment made in a Stripe account you've since left is refunded in that account.
Failed bank payments and disputes show up on their own too. A dispute adds a note on the client's page with the amount and the date to respond in Stripe by. If the client's bank wins it, the money comes off the invoice like a refund.
## Invoices you make in Stripe
A one-off invoice you'd rather make in Stripe comes into Crewtavo by itself, matched to the client by email or added as a new client, and its payment is recorded when it's paid. Record payments on those invoices in Stripe, not in Crewtavo, since Stripe is the one asking the client to pay:
- Paid in full some other way: mark it paid in Stripe.
- Paid in part: issue a credit note in Stripe for what they paid, so Stripe asks for only the rest.
## Bring in your Stripe history
**Bring in your Stripe history**, on the Stripe card in **Apps**, imports past invoices, their clients and payments, and deposits, from a date you choose. History comes in quietly: no automations, reminders or notifications. Running it again only updates what's already there.
With a key that can save cards, it also brings in the card each client saved in Stripe, and says how many: "14 clients have a card saved in Stripe." Nothing is charged until each client confirms autopay, or an owner records that they agreed. See [Cards already saved in Stripe](https://crewtavo.com/docs/billing/autopay/#cards-already-saved-in-stripe).
## Replacing the key or uninstalling
A new key pasted under **Stripe key**, with your password, only takes over once Crewtavo has set up the webhook with the new key. If it can't, Stripe stays connected as it was.
When the new key is for another Stripe account, or it's your live key after a test one, Crewtavo stops using the old account: the open invoices Crewtavo made there are voided, and clients get a new Stripe invoice in the new account when they pay. **Uninstall**, at the top of **Apps → Stripe**, does the same, and asks for your password too. A bank payment still clearing in the old account is left alone, and a note on the client reminds you to record it once it clears.
Cards saved for autopay stay in the old account, so autopay stops for those clients, and you're told which need to set it up again.
Source: https://crewtavo.com/docs/connections/stripe/ (last updated 2026-11-02)
---
# Send email from Crewtavo
> Connect a free Resend account under Settings → Email (it works on every Railway plan), or your own business mailbox on Railway Pro or your own server.
Crewtavo emails quotes, invoices, reminders, team invitations, password resets and team notifications. Owners and admins set this up under **Settings → Email**, which offers two ways to send:
| Option | Works on | What you need |
| --- | --- | --- |
| **Resend** (**Recommended**) | Every Railway plan and your own server | A free Resend account and your own domain, like `yourcompany.com` |
| Your own mailbox: Gmail, Google Workspace, Zoho, Microsoft 365, Yahoo, iCloud or any SMTP server | Railway's Pro plan or your own server | An app password from your email provider |
Railway blocks outgoing mail servers (SMTP) on its trial and Hobby plans, so a mailbox can't send from there. Resend sends over the web instead, so it works everywhere. When Crewtavo runs on Railway, the screen reminds you of this.
## Connect Resend (recommended)
Resend is free for up to 100 emails a day (3,000 a month). Open **Settings → Email** and choose **Resend**. The screen walks you through four steps, each with a button that opens the right page in Resend:
1. **Create a free Resend account.** Sign up with your email or Google account.
2. **Add your domain.** In Resend, open **Domains**, press **Add Domain** and type your website's address, like `yourcompany.com`. Resend lists a few DNS records. Add them where you manage your domain (GoDaddy, Namecheap, Squarespace, Cloudflare and so on), then wait for Resend to show **Verified**. That's usually within 15 minutes.
3. **Create an API key.** Open **API keys** and press **Create API Key**. Name it Crewtavo, choose **Sending access**, and leave the domain on all domains so the key isn't tied to just one. Copy the key straight away: Resend only shows it once.
4. **Paste it below.** Back in Crewtavo, fill in **API key** and **Send from**, check the **Sender name**, then press **Connect**. **Send from** can be any address on the domain you added, like `office@yourcompany.com`. It doesn't need its own inbox, as long as replies go somewhere else (see [Where replies go](#where-replies-go)).
Crewtavo sends you a test email before saving, so you'll know straight away that it works.
:::tip
Resend keys start with `re_`. Resend can't send from a Gmail, Yahoo, Outlook or iCloud address, only from a domain you own. Crewtavo warns you about both before you press **Connect**.
:::
:::note
If you added a subdomain in Resend, like `mail.yourcompany.com`, send from an address on that exact subdomain (`office@mail.yourcompany.com`), or add your main domain too. Resend treats each one as a separate domain.
:::
## Connect your own mailbox (Railway Pro or your own server)
1. Open **Settings → Email**.
2. Under **Or send from a mailbox you already have**, choose your provider: Gmail, Google Workspace, Zoho, Microsoft 365, Yahoo, iCloud, or **Another email provider** for any SMTP server.
3. Fill in the **Email address**, then make an app password with your provider (the screen links to where each one makes it) and enter it.
4. Check the **Sender name** and press **Connect**.
Crewtavo signs in and sends you a test before saving. There are no DNS changes, no extra account and nothing to pay.
## Who your emails are from
**Sender name**, on the same form as the address, is the name clients see the email as coming from. It starts as your business name. Change it to something like "Jane at Acme Lawn Care" if you'd rather, or clear it to use your business name.
## Where replies go
When a client replies to a quote, invoice, reminder or any other email from Crewtavo, the reply goes to the **Email** in **Settings → Company**. If that's empty, it goes to the address emails are sent from. The email Crewtavo sends you when you connect says which: "Replies go to …".
So fill in **Email** in **Settings → Company** with an inbox someone reads, especially if you send from an address that has no inbox of its own, like a Resend address on your domain. Replies would be lost otherwise.
Crewtavo sends email but doesn't receive it, so replies never show up in **Messages**: answer them from your own email. See [Text and email clients from Messages](https://crewtavo.com/docs/clients/messages/).
## Send a test
Once email is connected, **Settings → Email** shows the address it sends from, the provider and **Connected**. Press **Send me a test** any time to check it still works: Crewtavo emails "Test email from" your business name to the address you sign in with, and says "Test email sent to …". If it doesn't go, the reason shows under the button.
**Change** updates the address, key or password, and **Disconnect** stops sending from it.
## If Resend refuses the connection
Crewtavo explains what Resend said and what to change. The usual ones:
| What Crewtavo says | What to do |
| --- | --- |
| "This Resend API key can only send from a different domain, not …" | The key was limited to one domain when it was made. Create a new key with **Sending access** for all domains and paste it in, or send from an address on the domain the key is for. |
| "… isn't verified in Resend yet." | In Resend, open **Domains**, check every DNS record is added, and wait until the domain shows **Verified**. |
| "Resend can't send from a gmail.com address." | Send from an address on your own domain instead. |
| "Resend didn't accept this API key." | The key was deleted or only partly copied. Create a new one under **API keys** and paste the whole key. |
| "This Resend account has reached its daily sending limit …" | The free plan sends 100 emails a day. Sending starts again after midnight UTC, or upgrade your Resend plan. |
If a connected Resend account stops working later, **Settings → Email** shows **Needs attention** with the same explanation. Fix it in Resend, then press **Connect again**.
## For whoever runs the server: a default sender
Whoever installed Crewtavo can also set `RESEND_API_KEY` and `EMAIL_FROM` on the server (on Railway, in the **crewtavo** service's **Variables**). That gives every company a default sender until it connects its own under **Settings → Email**. Most businesses don't need this: connecting Resend in **Settings → Email** does the same job without touching Railway.
## Until email is connected
Crewtavo keeps working. Team invites show a link to copy and text instead. If email still isn't arriving after setup, see [Emails aren't arriving](https://crewtavo.com/docs/troubleshooting/email-not-arriving/).
Source: https://crewtavo.com/docs/connections/email/ (last updated 2026-10-28)
---
# Connect Claude and ChatGPT
> Add your Crewtavo as a connector in Claude or ChatGPT. Each person signs in, the assistant sees only what they can, and you choose what it can change.
Every Crewtavo comes with a connector for Claude and ChatGPT, already turned on. Once connected, an assistant can look things up for you in plain words, or do the work: bring in your customers and recurring services, run the schedule, send quotes and invoices, read your money figures, manage your team, approve time and keep track of pay, set up how your estimates and invoices print, and run your marketing. It never gets more than your own permissions.
## Connect
1. In Crewtavo, open **Settings → AI assistants** and copy the connector address. It's your Crewtavo's address with `/mcp` on the end, like `https://crm.yourbusiness.com/mcp`.
2. Add it to your assistant:
- **Claude:** Settings → Connectors → Add custom connector.
- **ChatGPT:** Settings → Apps and connectors → Add (in developer mode).
3. Sign in to Crewtavo when asked, and approve the access.
Each person on your team connects with their own sign-in.
Owners and admins can also start from **Apps → Claude** or **Apps → ChatGPT**: **Install** shows the same address and steps, and once your connection is made the app shows as installed, with a check on the Apps page. **Uninstall** there disconnects your own connection; everyone else's stays. On **Apps → Claude**, if your business added its own Anthropic key there, **Uninstall** removes that key too, so **Ask** in the knowledge base and Crewtavo's writing help stop working for everyone, unless the server has its own `ANTHROPIC_API_KEY` (see [Optional settings](https://crewtavo.com/docs/hosting/settings/)).
## Choose what it can change
A new connection is **Read only**: it can look things up, and it sees whatever you can see, nothing more.
To let it do more, open **Settings → AI assistants**, find it under **Your connected assistants**, and press **Access**. Everyone has this setting, whatever their role. There are four choices:
- **Read only.** Looks things up. Can't add or change anything.
- **Choose what it can change.** Tick the areas it may add to and change. It can't delete anything.
- **Customers and work:** clients and properties, requests and notes, jobs and recurring services
- **Schedule and time:** the schedule, clocks and timesheets
- **Money:** quotes, invoices and payments, pay and pay rates
- **Marketing:** campaigns, reviews and social posts; promo codes
- **Setup:** company details, price list, estimate templates and contract terms, crews, checklists, online booking forms, guides, automations
- **Team:** people and roles
Areas your own role can't change are greyed out, with "Your role can't change this". Tick none and it stays read only.
- **Full access.** Everything you can change, including deleting, people and money. Crewtavo asks you to confirm first.
- **Full access, no money.** The same, except it can't change quotes, invoices, payments, pay or promo codes (a promo code is a discount, so it counts as money). It can still read your figures if your role sees them.
Whatever you choose, an assistant can never:
- change anyone's sign-in, password or spare keys, connected apps and keys, or its own access;
- give anyone admin access. That's done on **Settings → People**, which asks for your password (see [Roles and permissions](https://crewtavo.com/docs/team/roles-and-permissions/#giving-admin-access-asks-for-your-password));
- charge a client's card, approve an autopay charge, or refund or delete a payment;
- move money. Marking someone paid only records that you paid them through your own payroll or bank.
Some changes get extra care:
- A guide it writes starts as a draft, and an automation it makes starts turned off, until you say otherwise.
- When it invites someone, Crewtavo emails them the invitation itself. The assistant never sees the link.
- Owners get a notice whenever an assistant adds someone, changes a role or turns someone off. Only owners can make owners, there's always an owner, and no one can give more access than they have.
- Before it emails clients or posts anything in public, the assistant is told to check with you first: for a campaign, it says how many clients it reaches; for a social post or a reply to a Google review, it shows you the words.
- Work it marks done on a job with autopay waits for the office's OK before the client's card is charged. See [below](#autopay-waits-for-your-ok).
## Things to ask
Once it can change the areas involved, try:
- **Bring over your customers.** "Here's my customer export. Show me what you'd import first, then import them. Inactive customers should come in archived."
- **Recurring services.** "Set up every-other-week mowing for these 26 customers, starting the week of April 6, with the times and prices in this list."
- **The schedule.** "It's raining Tuesday. Move Tuesday's visits to Thursday." "Find me two hours for a cleanup next week." "Book a 50-minute mow at 12 Oak St on Tuesday at 9:00." "Organize the mowing crew's route for Friday, but keep the school at 7:00." Visits can be any length, and routes work as in [Schedule visits and organize mowing routes](https://crewtavo.com/docs/jobs/schedule-and-routes/).
- **Money.** "What did we invoice and collect last month, and who's more than 30 days overdue?" "Which jobs this year lost money?"
- **Quotes and invoices.** "Quote Sam Lee for a fall cleanup at $250 and text it to them." "Invoice every job finished this week." "Record a $120 check from Ana Diaz."
- **Team and time.** "Invite Jordan as a crew lead." "Who forgot to clock out?" "Approve last week's time."
- **Pay.** "What does everyone get paid for last week?" "Mark everyone paid by direct deposit."
- **Setup.** "Add these 12 services to my price list: …" "Make a booking form for spring cleanups that only takes requests from 24141 and 24073." "Set up a reminder text the day before every visit."
- **Estimates on paper.** "Add a warranty section to our contract terms and print it on every estimate." "Make our estimate template navy and print our license number on it." It can change everything in [Estimate template](https://crewtavo.com/docs/sales/estimate-templates/) and [Contract terms](https://crewtavo.com/docs/sales/contract-terms/) except the letterhead pictures: it can switch between your own letterhead and Crewtavo's, but your own is made from your stationery in Crewtavo.
- **Marketing.** "Draft a spring cleanup email for active clients in Roanoke and tell me how many it reaches." "Ask Ana Diaz for a review by text." "Write a reply to yesterday's Google review and show me before you post it." "Post the shared photos from the Lee patio job to Facebook and Instagram on Friday at 9." "Make a promo code SPRING10 for 10% off until May 31."
Campaigns, review and referral asks, and posts need [Crewtavo - Marketing](https://crewtavo.com/docs/clients/marketing/) installed, and go out the way Marketing's do: by your connected email and texting, to Google through [Google Business Profile](https://crewtavo.com/docs/connections/google-business-profile/), and to Facebook and Instagram through [Facebook & Instagram](https://crewtavo.com/docs/connections/facebook-and-instagram/). It only posts photos your crew marked OK to share, and a post can't name a client. Clients who opted out aren't asked. Automated campaigns are changed in Crewtavo, not by an assistant.
For imports, the assistant shows you what it would add first: who's new, who's already in Crewtavo, and anything it can't place. It only adds them once you agree. Running an import again doesn't make duplicates. It matches customers by the ID from your old system, then email, then name. Addresses are put on the map in the background.
The assistant reads what's there first. It asks before deleting, sending, posting, inviting or marking anyone paid, then tells you what it changed.
## Autopay waits for your OK
On a job the client pays for by [autopay](https://crewtavo.com/docs/billing/autopay/), work a person marks done is charged to the client's saved card by itself, unless it's over your autopay limit. Work an assistant marks done isn't: when it completes a visit, or marks a one-off job's work done, the charge waits for the office's OK, however small it is.
The invoice says "An AI assistant marked the work done, so it waits for your OK.", and the **Invoices** page says how many charges need your OK. Choose **Approve charge** to charge the card, or **Send it the usual way** to send the invoice instead. Approving takes an owner, admin or office person with **Invoices and payments**. An assistant can't approve it, whatever access it has.
## Pay
**Timesheets → Pay** shows each person's pay for any week or other stretch of dates: their approved hours at their rate, plus piece pay (per square, per job or per day) for work they finished on jobs in that period. Hours over 40 in a week show as overtime for your payroll service. Breaks are paid the way your business set in **Settings → Company**; by default, breaks of 20 minutes or less are paid and longer ones aren't. Time that hasn't been approved yet, and clocks still running, are flagged. Download the summary as a spreadsheet for your payroll service. See [Track time, breaks and where people clock in](https://crewtavo.com/docs/team/timesheets-and-pay/).
Once you've paid people, press **Mark paid** and choose how you paid them. You can add a check number or other reference. Time and piece pay in a period someone's been marked paid for are locked, so what was paid stays on record. To change it, take back the paid mark first. Pay is for owners, admins and office staff with **Job costs and profit**. An assistant can do the same with the pay area, piece pay included.
Subcontractors are paid by the job, from the **Subcontractors** page and each job, not here. Assistants can't manage subs, their paperwork or their pay, and a sub can't connect one. See [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/).
## For owners and admins
Under **Settings → AI assistants**, owners and admins also have two switches for everyone at the business:
- **Let my team use AI assistants with Crewtavo** turns the connector on or off.
- **Look things up only, whatever each person allows** keeps every assistant read only, whatever each person chose.
**Recent assistant activity** shows what each assistant did and when.
## For whoever runs the server
The database itself checks every change an assistant makes, through PostgREST's pre-request setting on the `authenticator` role, which Crewtavo's migrations set. If the database role that runs the migrations isn't allowed to change `authenticator`, the update log says so (`migrate: warning in 20261019001040_assistant_access.sql`) with the command to run as a superuser. After running it, run `notify pgrst, 'reload config';` or restart the `rest` service.
Source: https://crewtavo.com/docs/connections/claude-and-chatgpt/ (last updated 2026-11-02)
---
# Google Calendar and other calendars
> Show your Google Calendar on Crewtavo's schedule and your visits in Google Calendar, with nothing to set up. Outlook, Apple Calendar, Zoho Calendar and any ICS link work too, or upload a calendar file.
Crewtavo works with Google Calendar both ways without any Google setup:
- **Your Google Calendar on Crewtavo's schedule**, so nobody books over a supplier meeting or a day off. Crewtavo checks it every 15 minutes.
- **Your visits in Google Calendar**, so the day is on your phone next to everything else.
Do both on a computer. Google's phone app can't show calendar addresses or add calendars, but once they're set up, everything shows on your phone too.
## Show your Google Calendar on the schedule
1. In Crewtavo, open **Apps → Google Calendar** and choose **Install**.
2. Choose **Open Google Calendar settings**.
3. On the left, under **Settings for my calendars**, click your calendar.
4. Scroll down to **Integrate calendar** and copy the **Secret address in iCal format**.
5. Back in Crewtavo, paste it. The calendar is added as soon as you paste.
If your server has [Google sign-in](#instant-updates-with-google-sign-in) turned on, **Install** shows **Sign in with Google** first. Use that, or paste the address under **Or add a calendar by its secret address**.
Once a calendar is added, Google Calendar shows as installed. **Uninstall**, at the top of its page, takes its calendars off the schedule; your Google calendars themselves aren't changed.
Each Google calendar has its own secret address, so repeat this for every calendar you want to see. Then open a calendar's settings (the pencil) to give it a color, put it in one crew's lane, or show its events only as Busy.
Copy the **secret** address, not the public one, the calendar ID or the calendar's web link. Crewtavo says which one you pasted if it isn't the right one. Keep the secret address to yourself: anyone who has it can see the calendar. If it gets out, choose **Reset** next to it in Google and paste the new one.
Some Google Workspace accounts have secret addresses turned off by their admin. If you don't see one, [upload a calendar file](#upload-a-calendar-file) instead, or ask your Workspace admin.
## Show your visits in Google Calendar
1. In Crewtavo, open **Apps → Google Calendar** (step 2 on that page), or **Settings → Calendars**.
2. Choose **Get my calendar link**, then **Add to Google Calendar**.
3. Google Calendar opens and asks whether to add the calendar. Choose **Add**.
Your visits update in Google on their own, but Google decides how often to check, and that can be up to a day. For changes made today, look in Crewtavo. People who dispatch can choose to show the whole schedule instead of only their own visits.
Everyone on your team can do this for themselves under **Settings → Profile**. For Apple Calendar and Outlook, see [Show your visits in Outlook or Apple Calendar](#show-your-visits-in-outlook-or-apple-calendar).
## Upload a calendar file
If you'd rather not use links, or want to bring a calendar over once, upload a file:
1. In Google Calendar on a computer, open **Settings**, then **Import & export**, then **Export**. Google downloads a .zip file with all your calendars.
2. In Crewtavo, open **Settings → Calendars** (owners, and admins with **Connect apps**) and choose that .zip file. There's no need to unzip it. Each calendar in it is added separately.
From Apple Calendar on a Mac, click the calendar, then **File → Export → Export**. From Outlook for Windows, choose **File → Save Calendar**. Any .ics file works.
A file shows the calendar as it was when you exported it: its events from last month through the next year, including repeating events. It doesn't change when the calendar does. To catch up, export it again and choose the upload button next to the calendar in **Settings → Calendars**. To keep a calendar current on its own, add it by its secret address instead.
## Turn an event into a visit
If you schedule visits, click any calendar event on the schedule, from Google or another calendar, and choose **Add to schedule**. Crewtavo starts a new visit with the event's day, time, crew and notes. Pick the client or job, then save.
For regular customers, a recurring job is quicker than converting each weekly event: Crewtavo adds its visits for you.
## Outlook, Apple, Zoho and other calendars
Outlook, Apple Calendar (iCloud), Zoho Calendar and any other calendar with a subscribe link each have their own app: **Apps → Outlook**, **Apps → Apple Calendar**, **Apps → Zoho Calendar** and **Apps → Other calendars**. Each puts a calendar's events on Crewtavo's schedule, next to your visits. There's no sign-in: Crewtavo reads the calendar from its private link, called an ICS or webcal link. Owners and admins with **Connect apps** add them.
### Add one
1. Open **Apps**, choose the calendar's app, then **Install**.
2. Find the calendar's link with the steps below (they're on the app's page too), and paste it under **Calendar link**. It starts with `https://` or `webcal://`.
3. If you like, type a **Name** (otherwise it uses the calendar's own), and pick **Whose time is it?**: **The whole team**, or a crew, so it sits in that crew's lane and only blocks its time.
4. Leave **Show event names and details** on, or turn it off to show the events only as Busy, with no names, places or notes kept. That suits someone's personal calendar.
5. Leave **Count as busy in Find a time** on, so nobody gets booked over these events. Events marked free in the calendar never count.
6. Choose **Add calendar**.
Crewtavo says how many events it found, like "Office added · 42 events". Repeat for each calendar you want to see. The link is kept encrypted and never shown again.
### Find the link in Outlook
For Outlook.com, Microsoft 365 and Exchange calendars:
1. In Outlook on the web, open **Settings**, then **Calendar**, then **Shared calendars**.
2. Under **Publish a calendar**, pick the calendar and **Can view all details**, then **Publish**.
3. Copy the **ICS** link, not the HTML one.
### Find the link in Apple Calendar (iCloud)
1. On an iPhone, open Calendar and tap **Calendars** at the bottom.
2. Tap ⓘ next to the calendar and turn on **Public Calendar**.
3. Tap **Share Link**, then **Copy**.
On a Mac or at icloud.com, the share button next to the calendar has the same option. Anyone who has a public calendar's link can see the calendar, so keep it to yourself.
### Find the link in Zoho Calendar
1. In Zoho Calendar, open the calendar's settings: **Settings**, then **My Calendars**, or the ⋮ menu next to the calendar.
2. Under **Share** or **Publish**, turn on the private address.
3. Copy the private ICS link.
### Any other calendar
**Other calendars** takes any calendar with a subscribe link: Yahoo, Fastmail, Proton, Nextcloud, booking and rental tools, holiday and school calendars.
1. In your calendar app, look for **Share**, **Publish**, **Export** or **Subscribe**.
2. Copy the link that ends in `.ics` or starts with `webcal://`.
### What comes across, and how often
- Crewtavo reads each calendar again every 15 minutes, with repeating events, moved meetings and cancellations. To read one now, choose **Refresh now** (the arrows) on its row.
- It keeps the calendar's events from the last month through the next six months.
- It only reads. It can't add to or change the calendar, and what you change in Crewtavo (a calendar's name, color or crew) only changes Crewtavo.
- Events show on the schedule in the calendar's color, by day, week and month, for everyone on your team except field crew.
It's one way: the calendar's events come into Crewtavo. To see your visits in Outlook or Apple Calendar, see below.
### Change or remove a calendar
Each calendar is listed on its app's page under **Calendars on your schedule**, and with all the others under **Settings → Calendars**. Its row shows whose time it is, how many events it has and when it was last read.
Choose the pencil on its row to open **Change calendar**. There you can rename it, give it a **Color**, change **Whose time is it?** and the two switches, or turn off **Show on the schedule** to hide it for a while. **Remove** takes its events off the schedule. **Uninstall** on the app's page removes all of that app's calendars.
### If a calendar stops updating
The app shows **Needs attention** on the Apps page, and the calendar's row says what's wrong:
- "That calendar needs a sign-in. Use its private or secret ICS link (the one with a long code in it)."
- "That link opened a web page, not a calendar. Use the ICS link (also called the iCal, webcal, private or secret address)." In Outlook, that usually means the HTML link was copied instead of the ICS one.
- "No calendar at that link. It may have been turned off or replaced; copy the link again." The calendar was unpublished, or its link was reset.
- "Couldn't reach that calendar. Check the link, or try again in a few minutes."
You can't change a calendar's link, so copy the link again, add it as a new calendar, then remove the old one.
## Show your visits in Outlook or Apple Calendar
Your visits can go the other way too, into Outlook, Apple Calendar or any calendar app that subscribes by link:
1. Open **Settings → Profile**, or **Settings → Calendars**, and choose **Get my calendar link**.
2. Choose **Apple or Outlook** to open the calendar app on this computer or phone and subscribe. For another app, choose **Copy link** and add it there as a calendar from a link.
Each calendar app checks for changes on its own schedule, from about an hour to a day, so for a change made today, look in Crewtavo. Anyone with the link can see those visits, so keep it to yourself. **New link** makes a fresh one (the old one stops working), and **Turn off** stops it.
## Instant updates with Google sign-in
For most businesses the steps above are enough. If you run your own Crewtavo server, you can also turn on Google sign-in. Then people pick calendars from their Google account instead of pasting addresses, and visits reach a Google calendar Crewtavo makes within a few minutes.
It takes a Google Cloud project with an OAuth client. See [Google Calendar in server settings](https://crewtavo.com/docs/hosting/settings/#google-calendar) for the steps.
Source: https://crewtavo.com/docs/connections/google-calendar/ (last updated 2026-10-28)
---
# Talk to your team with Team chat
> Install Crewtavo - Team Chat from Apps for channels for the whole team, each crew and the office, with photos, @mentions and pushes to phones.
Team chat is built into Crewtavo. It gives your business channels to talk in, like a group text that stays organized: news for everyone, one channel per crew, and one for the office. It's off until an owner or admin installs it, and it costs nothing extra: messages and photos are stored in your own Crewtavo like everything else.
## Install it
1. Open **Apps** (in the menu on a computer, or under **More** on a phone) and choose **Crewtavo - Team Chat**, under **Built into Crewtavo**.
2. Click **Install**. The button turns into a ring that fills while it installs, then into a red **Uninstall**.
Crewtavo starts you with:
- **Announcements:** everyone reads it; owners, admins and the office post.
- **#general:** anything for the whole team.
- **A channel for each crew**, named after it (North Crew becomes **#north-crew**). Field crew only see their own crew's channel.
- **#office:** owners, admins, office and estimators.
Everyone on your team then has **Team chat** in the menu, and **Chat** in the bar at the bottom of their phone. A crew added later in **Settings → Crews** gets its own channel too.
## Talking
- **Send a message:** type it and press **Enter** on a computer, or tap the send button on a phone. **Shift + Enter** starts a new line.
- **Mention someone:** type **@** and pick a person or a role, like **@Field crew**. They get a notification in the bell and, unless they've turned it off, a push to their phone. Owners, admins and a channel's managers can also use **@everyone**.
- **Photos:** tap the camera to take a photo or pick up to six. They're shrunk before they upload, so they go quickly on a phone signal.
- **Link a job:** tap the job button and pick one. Everyone who can open that job sees a card that opens it; anyone who can't (another crew's job) just sees that a job was linked.
- **React, reply, edit and delete:** hover over a message on a computer, or tap it on a phone. React with **Thumbs up**, **On it** or **Seen**. You can edit and delete your own messages.
- **Pin a message:** people who manage a channel can pin important messages, like a gate code or a change of plan. Everyone finds them under the pin at the top of the channel.
Unread channels show in bold, and a red number counts messages that mention you. The member list on the right shows who's in the channel and who's online.
:::tip
Opening a mention's notification takes you straight to the message.
:::
## Who sees what
Channels follow your team's roles, the same roles as **Settings → Roles**. To give someone different access, change their role there.
Owners and admins choose what each role can do in **Chat settings** (the gear at the top of the channel list):
- **Can see**, **Can post** and **Can manage** for each channel. Manage means pinning messages, changing the topic and removing other people's messages.
- **Name color:** the color the role's names and @mentions show in.
- **Show separately in the member list:** people with the role get their own group, like "Crew lead — 2".
- **Anyone can @mention this role:** when it's off, only owners, admins, the office and a channel's managers can.
- **Crew channels: their own crew only:** someone on North crew sees **#north-crew** but not the other crews'. On for field crew to start with.
Change what you like, then click **Save changes**. A custom role follows its access level until you give it rules of its own; **Follow** puts it back.
Owners always see and can do everything.
:::note
These rules are kept by the database itself, not just the screen: someone whose role can't see a channel can't read its messages or photos any other way either.
:::
## Channels
On the **Channels** tab of **Chat settings**, owners and admins can:
- **Add a channel** for the whole team, as announcements, for the office, or for a crew.
- **Edit** a channel's name, category and topic. Channels are grouped by category in the list.
- **Move** a channel up or down.
- **Archive** a channel. It becomes read-only and only owners, admins and its managers still see it. **Restore** brings it back.
## Notifications
Mentions arrive in the bell right away. By push, email or text, they follow each person's choices in **Settings → Profile → Notifications**, under **Team chat** (push is on to start with). A push comes about a minute after the message, and not at all if the person has already read it.
Messages show up instantly for everyone who has Crewtavo open. Phones and browsers don't keep a web app running in the background, so someone with Crewtavo closed hears about mentions by push and catches up when they open it.
## Uninstall it
On **Apps → Crewtavo - Team Chat**, click **Uninstall**. Chat disappears from everyone's menu, and every channel and message is kept. Installing it again brings everything back as it was.
Source: https://crewtavo.com/docs/connections/team-chat/ (last updated 2026-10-20)
---
# Map imagery for measuring (Google, Esri and free)
> Measure works on free imagery with nothing to set up. Add an Esri or Google key for sharp imagery worldwide, and choose which map Measure opens on.
**Measure** draws on aerial imagery. Free imagery covers the whole US with nothing to set up. A key from Esri or Google adds sharp imagery almost anywhere in the world.
## Free imagery, nothing to set up
Measure opens on **Auto** unless you choose something else. Auto picks the sharpest free imagery for wherever the map is:
1. The state's own imagery, where the state publishes some (about 1 ft per pixel or better)
2. US aerial imagery (NAIP), every lower-48 state, about 2 ft per pixel
3. USGS imagery
Outside the US, Auto uses Esri if your business has added a key, and the street map if it hasn't. The map always names the imagery it's showing and gives its credit.
**Terrain**, **Slope** and **Contour lines** (every 2 ft of rise) come free from USGS across most of the US.
## Switch the map while you measure
On **Measure**, choose the imagery button at the top right of the map (it shows the name of the map you're on). Under **Choose yourself**, pick any free map. Under **Worldwide, with a key**, pick Esri or Google once your business has added a key.
Under **On top** in the same menu, turn on **Slope** or **Contour lines**, and turn **Street names** and **House numbers** on or off. House numbers show once you're zoomed in close, where OpenStreetMap has them (many towns and cities, fewer places in the country), and stay on or off on that device until you change them.
## Choose what Measure opens on
- **For the whole team:** owners and admins open **Settings → Maps** and choose a map under **What Measure opens on**.
- **Just for you:** open **Settings → Profile** and choose a map under **Measure map**. Or, on Measure, pick a map from the imagery button, open it again and choose **Open Measure on … every time**.
Your own choice comes first, then the team's, then **Auto**. Your own choice is saved on the device you set it on, like **Appearance** and **Directions**, so set it on your phone and your computer separately. To go back to the team's choice, pick **Team default** under **Measure map**.
A drawing you reopen still opens on the map it was made on. If Esri or Google is the default and its key is removed, Measure opens on **Auto** instead.
## Add Esri World Imagery (recommended for work outside the US)
Esri's free plan includes 2 million map tiles a month, enough for thousands of measurements. If a month ever runs past that, Esri pauses the imagery until the next month unless you turn on pay-as-you-go, so there are no surprise bills.
1. Make a free account at [ArcGIS Location Platform](https://location.arcgis.com/sign-up/).
2. In the dashboard, open **Developer credentials**, then **New developer credential**, and choose **API key credentials**.
3. Under privileges, open **Location services** and tick **Basemaps**.
4. Under referrers, add your Crewtavo's web address so the key only works there.
5. Copy the API key (it starts with `AAPT` or `AAPK`). In Crewtavo, open **Settings → Maps**, paste it under **Esri World Imagery** and choose **Check and save**.
## Add Google satellite (needs Google Cloud)
Google's satellite imagery works worldwide, but it takes a Google Cloud project with billing turned on. If you haven't used the Google Cloud console before, Esri is the easier choice. Google's Map Tiles API includes 100,000 tiles a month at no charge.
1. In the [Google Cloud console](https://console.cloud.google.com/), pick or create a project with billing turned on.
2. Under **APIs & Services**, enable the **Map Tiles API**.
3. Create an API key. Restrict it to the **Map Tiles API**, and to your Crewtavo's web address followed by `/*` (for example `https://crm.yourbusiness.com/*`).
4. In Crewtavo, open **Settings → Maps**, paste the key under **Google satellite** and choose **Check and save**.
Crewtavo tries each key before saving it and tells you what to fix if it doesn't work, such as a key limited to another website or an API that isn't turned on yet.
:::note
Google's terms don't allow keeping pictures of its imagery. When you save a drawing made on Google satellite, the picture that goes on the quote or invoice uses the best free imagery for that spot instead. Your shapes and measurements are the same either way.
The saved picture is a takeoff sheet: the drawing on the aerial with a graphic scale bar marked in feet and a north arrow, and under it your business, the drawing's name and address, the date, the imagery credit, and what was measured.
:::
:::tip
Whoever runs your Crewtavo server can also set a Google key for every business on it with the `GOOGLE_MAPS_BROWSER_KEY` variable. See [Optional settings](https://crewtavo.com/docs/hosting/settings/). A key added in **Settings → Maps** replaces it for your business.
:::
Source: https://crewtavo.com/docs/connections/map-imagery/ (last updated 2026-10-20)
---
# Sync with QuickBooks Online
> Make a free app at Intuit, paste its keys on the Apps page, and Crewtavo sends clients, invoices and payments to QuickBooks Online as they happen.
When QuickBooks Online is where your books live, Crewtavo sends your clients, invoices and payments there as they happen. Your bookkeeper works in QuickBooks, your team works in Crewtavo, and nobody types anything twice.
Crewtavo connects through an app you make at Intuit, for your business only. The app is free. Intuit asks some questions about it before it works with your real books, so allow a few days for that.
## Make your app at Intuit
Open **Apps → QuickBooks Online** in Crewtavo and click **Install**. It shows these steps with every address ready to copy.
1. Sign in to [Intuit Developer](https://developer.intuit.com/) with your Intuit account and create an app for **QuickBooks Online**. Name it Crewtavo and give it the **Accounting** permission.
2. In the app's **production** settings, fill in its details with the addresses Crewtavo shows: the host domain, the launch, disconnect and connect/reconnect URLs, and the end-user license agreement URL (your Crewtavo address followed by `/license`). For the privacy policy URL, use your website's privacy page, or your website's address if it doesn't have one.
3. Add the **Redirect URI** Crewtavo shows to the production redirect URIs. It ends in `/api/apps/quickbooks/callback`.
4. Answer Intuit's **app assessment questionnaire**. Intuit asks it even of an app only your business uses. Your production keys work once Intuit has reviewed it.
## Install
1. Copy the production **Client ID** and **Client Secret** from **Keys and credentials** at Intuit.
2. Paste them in Crewtavo under **Apps → QuickBooks Online** and click **Save keys**.
3. Click **Sign in to QuickBooks Online**, sign in to QuickBooks and pick your company. Back in Crewtavo, QuickBooks Online shows as installed, with a check on the Apps page.
The secret is stored encrypted on your own server and never shown again.
:::tip[Try it first with a sandbox company]
Intuit's development keys work right away, but only with a free QuickBooks sandbox company. Tick **These are development keys** when you paste them, and add the Redirect URI to the app's development settings too. When Intuit has reviewed your app, switch to the production keys with **Change keys**.
:::
## What syncs
- **Clients** become QuickBooks customers when their first invoice goes over, not on their own. A customer with the same name is used instead of adding another.
- **Invoices** arrive when they're sent, with their lines, discounts and tax.
- **Payments** are recorded against their invoice, including ones clients pay through [Stripe](https://crewtavo.com/docs/connections/stripe/).
Syncing goes one way, from Crewtavo to QuickBooks. Record payments in Crewtavo, or let Stripe record them: a payment entered only in QuickBooks doesn't show up in Crewtavo, so the client would still look like they owe it. Refunds aren't sent yet, so enter those in QuickBooks yourself.
## If something doesn't sync
**Apps → QuickBooks Online** shows when Crewtavo last synced, and anything QuickBooks turned down. A change that didn't go through is tried again on its own.
- **"Needs to be reconnected"**: QuickBooks stopped accepting the sign-in. Click **Reconnect**.
- **"Didn't accept the Client ID and secret"**: a key was pasted wrong. Click **Change keys** and paste them again.
- **Nothing syncs after connecting with development keys**: tick **These are development keys** under **Change keys**, since those keys only reach a sandbox company.
## Uninstalling
**Uninstall**, at the top of **Apps → QuickBooks Online**, stops syncing. Nothing already in QuickBooks is deleted. Your app's keys stay, so installing it again is one sign-in. **Remove keys** forgets them too.
Source: https://crewtavo.com/docs/connections/quickbooks/ (last updated 2026-11-04)
---
# Sync with Zoho Books
> Make a free app in Zoho's API Console, paste its keys on the Apps page, and Crewtavo sends clients, invoices and payments to Zoho Books as they happen.
When Zoho Books is where your books live, Crewtavo sends your clients, invoices and payments there as they happen, in whichever Zoho data center your account is in.
Crewtavo connects through an app you make in Zoho's API Console, for your business only. It's free and takes about five minutes.
## Make your app in Zoho
Open **Apps → Zoho Books** in Crewtavo and click **Install**. It shows these steps with every address ready to copy.
1. Pick where your Zoho account is. The address you see in Zoho Books shows it: `books.zoho.com` is the United States and `books.zoho.eu` is Europe, for example.
2. Click **Open Zoho API Console**, which opens the console for your data center. Click **Add Client** (or **Get Started**) and choose **Server-based Applications**.
3. Fill it in with what Crewtavo shows: **Crewtavo** as the client name, your Crewtavo address as the homepage URL, and the redirect URI, which ends in `/api/apps/zoho_books/callback`. Click **Create**.
## Install
1. Copy the **Client ID** and **Client Secret** Zoho shows.
2. Paste them in Crewtavo under **Apps → Zoho Books** and click **Save keys**.
3. Click **Sign in to Zoho Books**, sign in to Zoho and click **Accept**. Back in Crewtavo, Zoho Books shows as installed, with a check on the Apps page.
The secret is stored encrypted on your own server and never shown again. Crewtavo syncs with your default Zoho Books organization.
## What syncs
- **Clients** are added as Zoho Books customers when their first invoice goes over, not on their own.
- **Invoices** arrive when they're sent, with their lines and discounts.
- **Payments** are recorded against their invoice, including ones clients pay through [Stripe](https://crewtavo.com/docs/connections/stripe/).
Syncing goes one way, from Crewtavo to Zoho Books. Record payments in Crewtavo, or let Stripe record them: a payment entered only in Zoho Books doesn't show up in Crewtavo, so the client would still look like they owe it. Refunds aren't sent yet, so enter those in Zoho Books yourself.
## If something doesn't sync
**Apps → Zoho Books** shows when Crewtavo last synced, and anything Zoho turned down. A change that didn't go through is tried again on its own.
- **"Needs to be reconnected"**: Zoho stopped accepting the sign-in. Click **Reconnect**.
- **"Didn't accept the Client ID and secret"**: a key was pasted wrong. Click **Change keys** and paste them again.
- **Zoho says the client is invalid when you connect**: the app was made in another data center than the one picked in Crewtavo. Click **Change keys** and pick the right one.
## Uninstalling
**Uninstall**, at the top of **Apps → Zoho Books**, stops syncing. Nothing already in Zoho Books is deleted. Your app's keys stay, so installing it again is one sign-in. **Remove keys** forgets them too.
Source: https://crewtavo.com/docs/connections/zoho-books/ (last updated 2026-11-04)
---
# Edit your website from Crewtavo with Sveltia CMS
> Install Sveltia CMS from Apps, add your website's address, and Website in the menu opens your site's editor inside Crewtavo.
If your website has **Sveltia CMS**, the editor at your site's **/admin** page, you can open it right inside Crewtavo, next to your clients and schedule. Write a blog post, change your hours or a price, and save, the same as when you open the editor on its own.
It's for websites a web designer built with Sveltia CMS (or **Decap CMS**, once called Netlify CMS), usually kept on GitHub. If you sign in to your website's editor at an address like **greenlawn.com/admin**, it's for you. Websites made with Wix, Squarespace, WordPress or GoDaddy have their own editors; you can still [put a booking form on them](https://crewtavo.com/docs/sales/booking-form-on-your-website/).
## Install it
1. Open **Apps** (in the menu on a computer, or under **More** on a phone) and choose **Sveltia CMS**, under **Your website**.
2. Click **Install**, then type your website's address, like **greenlawn.com**, and click **Add**. If your editor isn't at **/admin**, type its whole address, like **greenlawn.com/cms**.
Crewtavo checks the editor is there and shows what it found: the editor's address, the repository it saves to, and how you sign in. **Website** then appears in the menu.
:::note
Only owners and admins can install it. Crewtavo only looks at your editor's page and its settings file. It never sees your sign-in and can't change your website.
:::
## Use it
Click **Website** in the menu (on a phone, it's under **More**). Your editor fills the screen, and you sign in to it the way you always do:
- **Sign In with GitHub** opens a small window to sign in. When you're done it closes and you're in.
- **Sign In Using Access Token** works too, if that's how your site is set up.
Even if you're signed in on your website itself, you sign in once more inside Crewtavo: browsers keep the two apart. After that, Crewtavo's **Website** remembers it.
:::note
In Safari (on iPhone, iPad and Mac), **Website** remembers your sign-in until Safari is closed. After that, tap **Sign In with GitHub** again: GitHub remembers you, so it's one tap.
:::
Everything you save goes to your website exactly as it does when you open the editor on its own, and your site updates the way it always has.
The bar above the editor has a reload button, and **Open in a new tab** for when you'd like the editor on its own.
:::tip
The editor follows your device's light or dark setting, just as it does in its own tab.
:::
## Who can open it
**Website** is in the menu for owners, admins and anyone whose role includes **Marketing**. To change who has it, edit the role under **Settings → Roles**. Field crew don't see it.
Everyone signs in to the editor with their own GitHub account, or however your website is set up, so your web designer still decides who can change the site.
## If it says it couldn't find Sveltia CMS
- **"Nothing at …"**: there's no page at that address. Check it's the address you sign in to your editor on.
- **"Couldn't find Sveltia CMS at …"**: the page opened, but Crewtavo couldn't see the editor on it. If you know it's the right address (some websites build the editor into their own code), click **Use this address anyway**.
- **"… asks for a password before it opens"**: your website's host has password protection on that page. Turn it off for the editor, then try again.
## If it opens in its own tab
Some websites don't let other sites show them. Crewtavo notices when it checks: **Website** then has a button that opens your editor in its own tab, and the **Sveltia CMS** page in **Apps** says what to change.
To show it inside Crewtavo, whoever looks after your website adds this header to the editor's page, with your own Crewtavo address at the end. **Copy** on that page fills it in for you.
```
Content-Security-Policy: frame-ancestors 'self' https://crm.greenlawn.com
```
On Netlify and Cloudflare Pages that goes in the site's **_headers** file; on Vercel, in **vercel.json**. Then click **Check again** on the **Sveltia CMS** page in **Apps**.
If signing in doesn't finish inside Crewtavo in your browser, use **Open in a new tab**: the editor works there exactly as before.
## Change or uninstall it
On **Apps → Sveltia CMS**:
- **Change address** if your editor moves.
- **Check again** after your website changes, to update what Crewtavo shows.
- **Uninstall** takes **Website** out of the menu. Your website, its editor and everything on it stay as they are.
Source: https://crewtavo.com/docs/connections/sveltia-cms/ (last updated 2026-10-20)
---
# Find paving with fal.ai
> Install fal.ai from Apps and Find paving outlines the asphalt and concrete on the aerial and counts stalls, on your own fal.ai account for about half a cent.
**Find paving** draws a takeoff for you. With fal.ai, its **Find everything in view** option outlines all the asphalt and concrete on the aerial at once, cuts the planted islands and buildings out of the lot, and counts the striped stalls. Everything it finds lands on the map as ordinary shapes, marked as their takeoff items, for you to check and fix before pricing.
It runs Meta's Segment Anything model (SAM 3) through **fal.ai**, on your own fal.ai account. fal.ai bills you directly: about half a cent for each thing Find paving looks for, so asphalt, concrete and stalls together cost about 1.5¢ a search, and $5 of credit covers hundreds of lots. Crewtavo doesn't charge for it.
:::tip
**Find paving** itself is free and needs no fal.ai account: put a box round a lot, press **Outline**, and it's outlined right in your browser. See [Bid a paving job from the aerial](https://crewtavo.com/docs/measuring/paving-takeoffs/).
:::
## Install it
It takes about two minutes, and an owner or admin does it once for the business.
1. In Crewtavo, open **Apps**, choose **fal.ai** (under **AI**) and click **Install**.
2. Click **Get a key from fal.ai**. Sign in with Google or GitHub, or make an account.
3. Click **Create Key**, name it Crewtavo, keep the **API** scope, and copy the key. fal.ai only shows it once.
4. Add a few dollars of credit under **Billing** on fal.ai.
5. Back in Crewtavo, paste the key and click **Save**. Crewtavo checks it with fal.ai before saving, at no cost, and says so if it's wrong.
The key is stored encrypted and never shown again. To use a different key, paste a new one on the same page.
## Use it
1. Open a takeoff on the map (from **Paving**, or **Measure**) and zoom until the lot fills the map.
2. Under **Takeoff items**, below **Find paving**, click **Find everything in view with fal.ai**.
3. Choose what to find: **Asphalt**, **Concrete** and **Stalls**, then click **Find**. It takes about 10 to 30 seconds.
4. Check every shape against the imagery. Drag corners that are off, delete anything that isn't pavement, and draw what it missed.
:::tip
Find paving looks at what's on the map at that moment, so zoom in on the lot first. Run it again after moving the map to do another part of a big site.
:::
Stall counting needs imagery sharp enough to see the striping, like the free state imagery many states publish (see [Map imagery](https://crewtavo.com/docs/connections/map-imagery/)). On the 2 ft US aerial, draw **Stall rows** instead. It counts up to 32 stalls a search.
## What fal.ai sees
When someone clicks **Find**, Crewtavo sends fal.ai a picture of the aerial in view, and nothing else: no client names, addresses, prices or drawings. If the map is showing Google satellite, the picture comes from the free imagery for that spot instead, since Google's terms don't allow sending it on.
## If something goes wrong
- **"Find paving needs fal.ai."** fal.ai isn't installed. An owner or admin installs it in **Apps**.
- **"fal.ai didn't accept that key."** Copy the whole key from fal.ai (it has a colon in the middle) and paste it again, or create a new one.
- **"Your fal.ai account is out of credit."** Add credit under **Billing** on fal.ai, then try again.
- **"Nothing found here."** Zoom in so the lot fills the map, check the map is on aerial imagery (not the street map or terrain), or draw it with the takeoff items.
## Uninstall it
Open **Apps → fal.ai** and click **Uninstall**. Find paving stops working and the key is removed from Crewtavo. Shapes it already found stay on your drawings. To stop the key working anywhere, delete it on fal.ai too.
Source: https://crewtavo.com/docs/connections/fal/ (last updated 2026-10-20)
---
# See who visits your website with Website Analytics
> Paste one line into your Wix, Squarespace, WordPress or GoDaddy site to see visitors, where they came from and which pages bring in requests, without cookies.
Website Analytics is built into Crewtavo. Paste one line into your website and Crewtavo counts its visits, like Google Analytics: how many people came, which pages they read, where they came from (Google, Facebook, Yelp, an email or your own campaign links) and whether they were on a phone or a computer. Booking requests from your website's form say which page and source brought them in, so you can see what actually brings in work.
It uses no cookies and keeps nothing that tells who a visitor is, and the numbers are stored in your own Crewtavo. It costs nothing extra.
## Install it
1. Open **Apps** (in the menu on a computer, or under **More** on a phone) and choose **Crewtavo - Website Analytics**, under **Built into Crewtavo**.
2. Click **Install**. The button turns into a ring that fills while it installs, then into a red **Uninstall**.
3. Under **Put this line on your website**, click **Copy**. The line looks like this, with your Crewtavo's address in it:
```html
```
It loads from your own Crewtavo, not from an analytics company, so fewer ad blockers stop it.
## Put the line on your website
The line goes on every page, in the part of the page called the **head**. Pick your website builder under **Your website is on** to see these steps on the app's page.
### Wix
1. In your site's dashboard, go to **Settings**, then **Custom Code** (under Development & integrations).
2. Click **+ Add Custom Code** at the top right and paste the line. Name it Crewtavo.
3. Under **Add Code to Pages**, choose **All pages** and **Load code once**. Under **Place Code in**, choose **Head**.
4. Click **Apply**.
Wix only allows this on a paid plan with your own domain connected.
### Squarespace
1. Open **Code Injection**: in the **Pages** panel, scroll down to **Website Tools** and click **Code Injection**. (On some accounts it's under **Settings**, then **Developer Tools**.)
2. Paste the line into **Header**, after anything already there.
3. Click **Save**.
Code injection needs the Core, Plus or Advanced plan (or Business or Commerce on older plans).
### WordPress
1. Go to **Plugins**, then **Add New**. Search for **WPCode** and install and activate **WPCode – Insert Headers and Footers**.
2. Go to **Code Snippets**, then **Header & Footer**.
3. Paste the line into **Header** and click **Save Changes**.
On WordPress.com, plugins need a Business (Creator) plan or higher. WordPress sites hosted anywhere else work as they are.
### GoDaddy
GoDaddy's website builder has no place for code on every page, so add the line to each page you want counted, starting with your home page. Choose **GoDaddy** on the app's page to get the line for it: it has `data-page="/"` in it.
1. In the editor, add a section near the bottom of the page, search for **HTML** and add it. Set its height to 1 so it doesn't show.
2. Paste the line into **Custom Code**. On each other page, change `data-page="/"` to that page's address, like `data-page="/services"`.
3. Publish.
GoDaddy runs custom code in a box of its own, so Crewtavo can't see where these visitors came from. Pages and visitors still count.
### Built by a developer
- **Astro:** paste the line into the `` of the layout every page uses, like `src/layouts/Layout.astro`. Astro leaves it as it is, and with view transitions each page people move to still counts.
- **Next.js:** add it with the Script component in the root layout (`app/layout.tsx`, or `pages/_app.tsx`), inside ``. The app's page has it ready to copy:
```tsx
import Script from "next/script";
```
- **Anything else:** paste the line into the `` of the template every page uses (Hugo, Eleventy, Jekyll, plain HTML), or of the app's `index.html` (React, Vue, Svelte). Apps that change pages without reloading count each page too.
:::note
Google Sites doesn't let a website add its own code to its pages, so Crewtavo can't count its visits. A box for code on just one page (an "embed" block) usually runs it in a frame of its own, where it doesn't count visits either: the line needs to be in the head of every page.
:::
## Check it's working
After you publish your website, go back to **Apps → Crewtavo - Website Analytics** and click **Check** under **Check your website**. Crewtavo opens your home page and looks for the line. The address starts as your website from **Settings → Company**; type another one if that's not it.
- **Installed on yourbusiness.com:** the line is there. From then on, only that website's pages count (with or without www., and its subdomains), so a copy of your site somewhere else doesn't add to your numbers.
- **The line isn't on yourbusiness.com yet:** paste it, publish your website, and check again.
- **Your website didn't let Crewtavo look at it:** some websites turn away anything that isn't a browser. If the line is on it, visits still show up.
The top of the app's page also says when the last visit was counted. Open your website in another tab: it shows up within a minute.
## See your visits
Once it's installed, **Marketing** has a **Website** tab, while [Crewtavo - Marketing](https://crewtavo.com/docs/clients/marketing/) is installed too. Pick a date range at the top, the same ranges as Finance and Metrics. It shows:
- **Visitors**, **Page views**, **Visits** and **Booking requests** for the range, each against the same length of time before it, and a chart of the one you pick with the period before as a dashed line.
- **Pages:** the pages people read. **Landings** are visits that started on the page; **Requests** are booking requests whose visit started there.
- **Where visits came from:** search, social sites, directories like Yelp and Angi, AI assistants like ChatGPT, email, your own campaigns, other websites, and **Direct** (a bookmark, a typed address or an app).
- **Sources:** each search engine, site or campaign source, with its visits, the booking requests it brought in and how many of its visits booked.
- **Devices:** phones, tablets and computers.
- **Campaigns:** links you tagged with a campaign name (see below).
**Home** also shows **Website visitors this week** against the week before, for the same people. Every table downloads as a spreadsheet with **Download**.
:::tip
Visitors count once a day: someone who comes back tomorrow counts again. That's what keeps it from needing cookies.
:::
## Which page brought in a booking
When someone sends your [booking form](https://crewtavo.com/docs/sales/booking-form-on-your-website/) after visiting your website, the request remembers the visit. The request's page shows **Came from** (like Google, or a campaign) and **First page** (where their visit started, and the page they booked from). Marketing's **Pages**, **Sources** and **Campaigns** count those requests, and **Metrics → Sales → Lead sources** splits **Website form** by where the visit came from, like **Website form · Google** (see [Finance and Metrics](https://crewtavo.com/docs/billing/finance-and-metrics/)).
A request matches a visit from the same phone or computer in the hours before. People who block the line, or asked websites not to track them, send requests without one.
## Campaign links
To see a flyer, a yard sign's QR code or a newsletter in **Sources** and **Campaigns**, add these to the link you share:
```
https://yourbusiness.com/?utm_source=yard-sign&utm_medium=qr&utm_campaign=fall-aeration
```
- `utm_source`: where the link is, like `yard-sign`, `newsletter` or `facebook`.
- `utm_medium` (optional): the kind, like `email`, `social`, `qr` or `cpc` for ads.
- `utm_campaign`: the campaign's name, the same on every link that belongs to it.
Clicks on Google and Microsoft ads count as **Ads** by themselves.
## Privacy
- **No cookies**, and nothing stored on visitors' phones or computers.
- **Nothing that tells who a visitor is.** Crewtavo never stores addresses or browser details. A visitor is a code made from them with a secret that changes every day and is then deleted, so nobody, Crewtavo included, can work out who someone was or follow them from one day to the next.
- **Only the other website's name** is kept for where a visit came from, never the whole address, and a page's address without anything after a `?`.
- **People who asked not to be tracked** (Do Not Track or Global Privacy Control in their browser) aren't counted. Neither are search engine robots, link previews or automated browsers.
- **Each page view is kept two days at most**, long enough to match a booking request; after that only each day's counts are kept.
Because of this, most businesses don't need a cookie banner for it. If your area has strict rules or you're not sure, check with whoever advises you.
## Who can see it
Owners and admins who can change apps install it, check it and uninstall it. Owners, admins and office staff with **Marketing** see the numbers on Home, and in Marketing while Crewtavo - Marketing is installed.
## Uninstall it
On **Apps → Crewtavo - Website Analytics**, click **Uninstall**. Crewtavo stops counting visits right away and the Website tab leaves Marketing. Every number counted so far is kept and shows again if you install it again. The line on your website does nothing until then; you can take it off too.
:::note
The numbers are a close count, not an exact one: visitors with ad blockers that stop the line, or who asked not to be tracked, aren't counted. Your own visits to your website count too.
:::
Source: https://crewtavo.com/docs/connections/website-analytics/ (last updated 2026-11-04)
---
# Price roof materials from your ABC Supply account
> Install ABC Supply from Apps and your roofing estimates price every bundle, roll and piece at your own ABC prices at your branch, and Roofing → Catalog shows ABC's catalog with your price on each item.
With **ABC Supply** installed, a roofing estimate shows exactly what its materials cost: the shingles, underlayment, drip edge and everything else, in whole bundles, rolls and pieces, at **your** prices at **your** ABC branch. The materials total sits next to the labor, the cost and the margin, so you know what a roof costs before you send the price. Roofing also gets a **Catalog**: ABC's items at your branch with your price on each, what your account buys most, and your materials kept current.
It works through an app you make in ABC Supply's developer portal, for your company only. ABC doesn't charge for it and neither does Crewtavo. Your prices stay between you and ABC.
:::note
Before you start, have your ABC account number (top left in myABCSupply, or on any ABC invoice) and a myABCSupply login that can see that account. No login yet? Sign up at myABCSupply or ask your branch. Without an account, you can still try it with ABC's sandbox test prices.
:::
## Install it
An owner or admin does this once. It takes about ten minutes, plus a business day or two for ABC to switch on your real prices.
1. In Crewtavo, open **Apps**, choose **ABC Supply** (under **Material prices**) and click **Install**.
2. Click **Open ABC's developer portal** and sign up with a work email you'll keep. ABC writes to it about your app. Confirm the email and set a password. When ABC asks for a **Developer Organization**, give it your company's name and click **Complete ABC API Developer Account**.
3. Click **Create New App** and fill it in with what Crewtavo shows you:
- **Application Name**: Crewtavo
- "Do you plan to integrate our APIs into a product or platform that will be used by multiple ABC customers?": **No**. The app is for your company only.
- **OAuth 2.0 Redirect URIs**: ABC fills in `https://localhost:4000` already. Leave it as it is: Crewtavo doesn't use it, but ABC's form needs one.
- **Description** and **Application URL** can stay empty.
Then click **Create App**. ABC sets it up in its sandbox, with test prices, right away.
4. Under **Manage Applications**, click **Manage** next to the app and copy its **Client ID** and **Client Secret**. Keep them private, like a password.
5. Back in Crewtavo, paste them, leave **Sandbox** ticked and click **Connect**. Crewtavo checks the keys with ABC before keeping them.
6. For your real prices, click **Manage** next to the app again, then **Production Request**. Give ABC your myABCSupply email and your account number (top left in myABCSupply, or on an ABC invoice) and click **Continue**. ABC usually approves it in a business day or two.
7. When ABC says it's approved, open **Apps → ABC Supply**, click **Change keys**, paste the app's keys again with **Sandbox** unticked, and click **Connect**.
:::caution
Answer **No** when ABC asks whether the app will be used by multiple ABC customers. An app made for a software company can't get prices without a sign-in page, and Crewtavo says so when you connect.
:::
The keys are stored encrypted on your server. Crewtavo only reads your account, ABC's catalog, your prices and ABC's list of what your account buys most: it can't place orders or see your invoices.
## Pick where prices come from
Under **Where prices come from**, Crewtavo starts with your account's home branch. Each ABC branch sets its own prices, so if you buy from another branch, pick the **ABC account** and **Branch** and click **Use these**.
Below it, **Your catalog** has **Open the Catalog**, which takes you to **Roofing → Catalog**, and a search to look up your price for one of any item.
## Browse ABC's catalog
Once ABC Supply is connected, **Roofing** has a third tab, **Catalog**, after **Projects** and **Packages**. It shows ABC's catalog at your branch, at your prices: the top of the page says "Your prices at" your branch, with "(ABC's sandbox test prices)" while you're still on the sandbox. **Roofing** is in the sidebar while **Crewtavo - Roofing** is installed (see [Install and manage apps](https://crewtavo.com/docs/connections/apps/)).
Owners, admins, office staff and estimators with **Quotes and sales** can browse it. Adding items to services, **Check with ABC** and **Replace** also take **Price list, checklists, crews and booking forms**, which estimators don't have to start with.
On the left:
- **What you usually buy**: the items your account buys again and again, from ABC's record of its invoices, most often first, at today's prices. Each says "On 6 invoices lately", or "Not at your branch" when your branch doesn't carry it.
- **Your materials**: every ABC item in your price list (see [Keep your materials current](#keep-your-materials-current)). The number beside it is how many need a look.
- **Categories**: **Shingles**, **Hip & ridge**, **Starter strip**, **Underlayment**, **Ice & water**, **Drip edge**, **Valley & flashing**, **Vents**, **Pipe boots**, **Nails & fasteners**, **Sealants** and **Metal roofing**.
Or type in "Search ABC's catalog: brand, product, color or item number". It searches once you've typed two letters.
A category or a search shows up to 60 items, like "48 items at" your branch. **Type** and **Brand** narrow them, each with how many there are; **All** shows them all again.
Each item is a card: ABC's photo of it, the brand and type, its name, item number and color, and your price for one, like "$38.50 / bundle". **In your price list** marks the ones you already use. The cards show at once and their prices fill in a second or two later; photos load as you scroll. When ABC is slow to answer, a note above the cards says "ABC Supply is slow to send prices right now. Still asking…" and the prices fill in when they come. An item ABC has no photo of shows a swatch of its color, which is a guess: "Approximate color, from its name. ABC has no photo of it." Items cut to length say "Pick a length to see its price."
:::note
**What you usually buy** needs your real prices. On the sandbox it says ABC has no purchases to go by. On a real account with nothing there yet, it explains that "ABC lists the items your account was invoiced for at least twice in the last 6 months." Either way, **Start from a category** below it opens a category in one tap.
:::
### Open an item
Click a card to see ABC's categories for it, its **Item number**, **Made by**, **Color**, **Sold by the** and **Lengths**, and "Your price for one, at" your branch.
- **Colors and sizes at your branch** lists the item's other colors and sizes with your price on each (**Other colors and sizes** when ABC only lists them). Tap one to open it.
- **Specs** lists what ABC says about it.
- **In your price list** shows the services it's in, how many go into each, and the packages those services are part of.
### Add an item to a service
Materials belong to the services in your price list, so you pick them once and every estimate with that service is priced the same way.
1. Open the item and click **Add to a service** (**Add to another service** once it's in one).
2. Under **Which service is it in?**, pick the service and click **Next**.
3. Check how many go into each unit with **Per square** or **One covers**, the same way as [on a roof](#add-materials-to-a-roof), and pick a **Length** for an item cut to length. Then click **Add to …**.
## Keep your materials current
**Roofing → Catalog → Your materials** lists every ABC item in your price list once, with the services it's in (how many go into each, and their packages), its last price and how long ago it was priced. Ones that need a look come first.
### Check with ABC
Click **Check with ABC** to look up every material at ABC and price it at your branch today. Your price list's costs, and the packages set to **Follow ABC prices**, move with the new prices.
- An item ABC renamed takes its new name.
- An item ABC doesn't carry any more, or doesn't sell by that unit any more, is flagged to replace.
- An item the branch couldn't price shows the branch's reason.
When it's done, Crewtavo says "Checked with ABC: everything is still carried and priced", or how many need a look. A flagged material keeps its last price, and its row says why, like "ABC Supply doesn't carry this any more. Until then, it counts at its last price."
### Replace a material
1. Click **Replace** on its row. It opens with ABC's catalog already searched for that kind of material.
2. Pick what to use instead. It changes in every service the old one is in.
3. Check **Priced by the** (when ABC sells it more than one way), the **Length** for an item cut to length, and how many go into each service. Crewtavo fills in the count from how ABC describes the new item.
4. Click **Replace in …**: the service's name, or **Replace in 3 services** when it's in three.
The services' costs and the packages that follow ABC are worked out again straight away. Estimates still open for changes are priced again the next time they're opened.
## Add materials to a roof
You can also pick a service's materials right from a roof estimate.
1. Open a roof in **Roofing** and go to the **Estimate** step. Below the estimate, open **Materials for this roof**. Each line on the estimate has **Add materials from ABC**.
2. Search ABC's catalog by brand, product and color, like **Timberline Charcoal** or **drip edge white**, or paste an ABC item number. Each item shows your price at your branch.
3. Pick the item. Crewtavo guesses how many it takes from how ABC describes it: **3 bundles per square** for shingles sold 3 bundles to a square, **one roll covers 10 squares** for a 10-square roll of underlayment, **one piece covers 10 ft** for 10 ft drip edge. Check it with **Per square** or **One covers**, and see what this roof would order.
4. Click **Add to …**. Add the rest the same way with **Add another material**.
For each material, the estimate shows what to order for this roof, rounded up to whole ones (28.8 squares of shingles at 3 bundles a square is 87 bundles), the price each and the total. The pencil changes how many go into a unit; the **×** takes a material out.
## Labor and the rest
When a service gets its first material, Crewtavo splits the cost already in your price list: what the materials don't explain becomes **Labor and the rest**, per unit. Change it to what the crew, equipment and disposal really cost you. The line's cost on the estimate is then its materials plus that, and the margin follows.
## Keeping prices current
The estimate prices itself whenever its lines, quantities or materials change, and shows when it was priced. Click **Update prices** for today's prices any time. Your price list keeps the newest prices too, so its costs stay current. On **Roofing → Packages**, **Update prices** on the **ABC Supply** card prices every package's materials at once.
When ABC won't price a material (the branch stopped pricing it, or ABC doesn't carry it any more), your price list keeps its last price instead of dropping to $0, so nothing it's in gets cheaper by itself. **Your materials** in the Catalog shows which ones, so you can replace them.
A package set to **Follow ABC prices** whose roof has a material your branch has never priced shows **A square, held**: the roof stays at its price a square instead of leaving that material out, until the branch prices it or you replace it. One ABC didn't price last time keeps its last price, and the package says so: "Check it in the Catalog."
Once a proposal is signed, its materials keep the prices it was signed with.
:::note
ABC's terms let you use your prices for your own estimates and orders, and don't allow putting them next to another supplier's prices. Crewtavo prices each material from the supplier you picked it from, and never compares suppliers.
:::
## If something goes wrong
- **"ABC Supply didn't accept that Client ID and secret for your real prices."** Copy both again from your app in ABC's portal. If you only just sent the Production Request, ABC may not have approved it yet; tick **Sandbox** until it has.
- **"ABC Supply accepted the keys, but no ABC account is linked to this app yet."** Send ABC the **Production Request** with your account number and myABCSupply email.
- **"ABC Supply won't give this app prices."** The app was made for a software company. Make a new app in ABC's developer portal, answer **No** when ABC asks if it will be used by multiple ABC customers, and paste its keys.
- **"ABC Supply's sandbox has no test accounts for this app."** Check the app was made for your own company (**No** to being used by multiple ABC customers), or ask ABC's API support.
- **"ABC Supply couldn't use that: …"** ABC turned the request down; the words after the colon are ABC's own reason. If it's about an item, pick another one or replace it in the Catalog. Otherwise, send the whole message to ABC's API support.
- **"call for price"** next to a material means the branch hasn't priced that item for your account. The materials total shows a **+**. Call the branch, or pick another item.
- **"Today's prices didn't come."** above the Catalog's cards, with **"Couldn't get today's price."** on each, means ABC didn't send the prices, often with "ABC Supply didn't answer in time. Try again in a minute." Click **Try again**, or open an item to ask for its price again.
- **"Connect ABC Supply to see its catalog"** ABC Supply isn't connected, or was uninstalled. An owner or admin can click **Set up ABC Supply**.
- **"ABC Supply didn't say which account your purchases are billed to, so it can't show what you usually buy."** or **"ABC Supply didn't share what you usually buy."** followed by ABC's reason: the rest of the Catalog still works. Browse by category or search instead.
- **"That's a lot of searches in a few minutes. Wait a little and try again."** The Catalog asks ABC for each search, category and price. Give it a minute.
- **"Your materials were just checked. Wait a few minutes and try again."** **Check with ABC** runs at most 10 times in ten minutes.
- **"Material prices come from ABC Supply. An owner or admin can install it on the Apps page."** ABC Supply isn't installed, or was uninstalled. The estimate keeps the last prices it had.
## Uninstall it
Open **Apps → ABC Supply** and click **Uninstall**. Estimates stop getting prices from ABC, the **Catalog** tab goes away, and your app's keys are removed from Crewtavo. The materials in your price list and the prices already on estimates stay. To stop the app working anywhere, delete it in ABC's developer portal too.
Source: https://crewtavo.com/docs/connections/abc-supply/ (last updated 2026-11-04)
---
# Connect your website's own form with Website Forms
> Point the contact or quote form your website already has at Crewtavo, like Formspree. Each message becomes a request and an email to your inbox.
Website Forms is built into Crewtavo and works like Formspree. You keep the form your website already has, in its own fonts and colors, and change one thing: where it sends. Each message then becomes a request in Crewtavo, and an email goes to the people you choose. Reply to that email and you're answering the customer.
It costs nothing extra, and the messages stay in your own Crewtavo.
:::tip[Website Forms or a booking form?]
Use **Website Forms** when your website already has a form, or you want one that looks like the rest of your site. Use a [booking form](https://crewtavo.com/docs/sales/booking-form-on-your-website/) when you want Crewtavo to build the form for you, with your services, photos and a service area check.
:::
## Install it
An owner, or an admin who can connect apps, does this once.
1. Open **Apps** (in the menu on a computer, or under **More** on a phone) and choose **Crewtavo - Website Forms**, under **Built into Crewtavo**.
2. Click **Install**.
A form called **Contact form** is ready right away. It has its own address, and it emails your business's email address from **Settings → Company** (or yours, if the business doesn't have one yet).
## Point your form at Crewtavo
On the app's page, under **Point your form at this address**, click **Copy**. In your website's form, set the `action` to that address and the `method` to POST:
```html
```
Paste it where the form should go, in your site builder's **HTML**, **Embed** or **Code** block. The steps for Squarespace, Wix, WordPress, GoDaddy and Google Sites are the same as for a [booking form](https://crewtavo.com/docs/sales/booking-form-on-your-website/).
:::note
Most site builders' own form blocks, like Wix Forms or Squarespace's Form block, send to the site builder and don't let you choose where. To send to Crewtavo, use your own form in an HTML block, like the one above.
:::
### Try it
Fill in your form on your website and send it. It shows up in **Requests** within seconds, and the app's page says **Taking messages** with the time of the last one. **See them in Requests** shows only the messages from your website forms.
## What happens to each message
- **It becomes a request.** In **Requests** it's marked **Website form**, and it's called by the form's name (or the form's `_subject`). The message is under **What they asked for**, with every other field listed below it.
- **It goes on the right client.** Crewtavo looks for a client with the same email address, and then the same phone number, however either was written. A message from someone you already have goes on their record, and their saved name, email and phone stay as they are: what they typed shows on the request instead. Anyone new becomes a lead, with **Website form** as their lead source.
- **The address becomes a property**, or the client's property with the same street address.
- **The people you chose get an email** called "New message from" and the person's name, listing everything they sent, with an **Open the request** button. Reply to it and you're answering whoever sent the message. This needs [email set up](https://crewtavo.com/docs/connections/email/) in Crewtavo.
- **The office is told** by the automation **Tell the office about new online requests**, the same as for booking forms.
- **The page that brought them in** shows on the request when [Website Analytics](https://crewtavo.com/docs/connections/website-analytics/) is installed.
- **They see a thank-you page** with your logo: "Thanks! Your message was sent." and "{Your business} will get back to you soon.", with a **Back to the website** button. You can send them to your own page instead (below).
## Each form's settings
Each form has its own card on the app's page.
- **Email each message to**: up to 5 email addresses, separated by commas. Leave it empty to only see messages in Requests.
- Under **More settings**:
- **Form name**: what each request from it is called.
- **After someone sends it**: **A thank-you page from Crewtavo**, or **My own page** with its address, like `https://greenlawn.com/thanks`.
- **Only take messages from**: your website, like `greenlawn.com`. A copy of your form on any other website can't send to Crewtavo then. Leave it empty to take messages from any website.
- **Get a new address**: the old address stops taking messages right away, so put the new one in your form's action straight after. Use it if bots have found your form.
- **Delete form**: its address stops taking messages. The messages it already sent stay in Requests.
Click **Save changes** when you're done. **Add a form** makes another one, like a quote form next to your contact form. Each gets its own address, and its name on each request.
## Moving from Formspree
Change your form's action from its formspree.io address to your Crewtavo form's address. Everything else stays as it is. Formspree's own fields work the same:
- `_gotcha`: the hidden field that keeps bots out. People leave it empty; when a bot fills it in, it's told the message went through and nothing is kept.
- `_subject`: the email's subject, and the request's name.
- `_next`: the page to go to after sending, instead of the thank-you page.
- `_replyto`: the email address to answer, when the form has no `email` field.
Other fields that start with `_` are ignored. Files aren't taken: if you need photos, use a [booking form](https://crewtavo.com/docs/sales/booking-form-on-your-website/) with a photos question. For job applications with résumés, use [Careers](https://crewtavo.com/docs/connections/careers/), which works the same way and puts each one in **Applicants**.
## Send with JavaScript
A form that sends with `fetch()` works too, from any website. Ask for JSON and you get JSON back instead of the thank-you page:
```js
const response = await fetch("https://crm.yourbusiness.com/f/3fa9c2d71b", {
method: "POST",
headers: { Accept: "application/json" },
body: new FormData(form),
});
const result = await response.json();
// Sent: { ok: true, next: "…" }
// Not sent: { ok: false, error: "Add an email or phone number so we can reach you." }
```
You can also send JSON, with `Content-Type: application/json`.
## Keep spam out
- Keep the hidden `_gotcha` field in your form. The ready-made form has it.
- One address can send 10 messages an hour, and your business takes 100 an hour from all its forms. After that people see "Too many messages. Try again later, or call us."
- Fill in **Only take messages from** with your website.
- If spam still gets through, use **Get a new address**.
## Uninstall
On the app's page, click **Uninstall**. Your forms stop taking messages right away, and people who fill one in are told it wasn't sent. Every form keeps its address and its messages stay in Requests, so installing it again picks up where you left off.
## If something goes wrong
When a message isn't sent, the person sees a page that says why, with a **Go back to the form** button, so nothing they typed is lost.
- **"Add an email or phone number so we can reach you."** The form sent neither. Check that your email field is named `email` and your phone field `phone`.
- **"That email address doesn't look right. Check it and try again."** The email wasn't a whole address, and there was no phone number.
- **"This form only takes messages from its own website."** The page the form is on isn't in **Only take messages from**. Add it, or leave the setting empty.
- **"This form isn't taking messages right now. Call or email the business instead."** Website Forms is uninstalled, the form was deleted, or it got a new address. Check the address in your form's action against the app's page.
- **"The form didn't send anything Crewtavo can read. Its method should be POST."** Add `method="POST"` to your form.
- **"Too many messages. Try again later, or call us."** See [Keep spam out](#keep-spam-out).
- **"That's too much to send in one message."** or **"Part of the message is too long. Shorten it and try again."** A message can have up to 60 fields, 5,000 characters in each.
- **No email arrives.** If the app's page says "Email isn't set up in Crewtavo yet, so messages only show in Requests.", [connect your email](https://crewtavo.com/docs/connections/email/). Otherwise see [email not arriving](https://crewtavo.com/docs/troubleshooting/email-not-arriving/). The messages are in Requests either way.
Source: https://crewtavo.com/docs/connections/website-forms/ (last updated 2026-10-28)
---
# Take job applications from your website with Careers
> Point the Apply form on your careers page at Crewtavo. Each application, résumé and all, lands in Applicants, where the office reviews, interviews and hires.
Careers is built into Crewtavo and works like [Website Forms](https://crewtavo.com/docs/connections/website-forms/), for hiring. You keep the Apply form on your own careers page and change where it sends. Each application then lands in **Applicants**, with the résumé attached, and an email goes to the people you choose. The office works through applicants from there: reviewing, interviews, an offer, and hired or not.
It costs nothing extra, and applications and résumés stay in your own Crewtavo.
## Install it
An owner, or an admin who can connect apps, does this once.
1. Open **Apps** (in the menu on a computer, or under **More** on a phone) and choose **Crewtavo - Careers**, under **Built into Crewtavo**.
2. Click **Install**.
**Applicants** shows up in the menu, after **Timesheets**, for everyone who can see applicants (see [Who sees applicants](#who-sees-applicants)). A form called **Job application** is ready right away. It has its own address, and it emails your business's email address from **Settings → Company** (or yours, if the business doesn't have one yet).
## Point your Apply form at Crewtavo
On the app's page, under **Point your form at this address**, click **Copy**. In your website's form, set the `action` to that address, the `method` to POST, and the `enctype` to `multipart/form-data` so résumés come along:
```html
```
:::caution
Without `enctype="multipart/form-data"`, the application still arrives but the résumé never leaves the applicant's browser. The app's page has the whole first line ready to copy.
:::
Then name the fields so Crewtavo knows what each one is:
| Field name | On the applicant |
| --- | --- |
| `name` (or `first_name` and `last_name`) | Their name |
| `email` | Their email, and where Reply goes |
| `phone` | Their phone number |
| `position` | **Position**: the job they want |
| `location`, or `address` with `city`, `state` and `zip` | **Lives in** |
| `start_date` | **Can start** |
| `availability` | **Availability**, like full-time, part-time or seasonal |
| `pay` | **Desired pay** |
| `experience` | **Experience** |
| `drivers_license` | **Driver's license** |
| `heard_from` | **Heard about the job from** |
| `message` (or `cover_letter`) | **In their words** |
| `resume` (a file field) | Their résumé |
Crewtavo also understands the usual other spellings, like `Full Name`, `E-mail Address`, `Position Applied For`, `When can you start?`, `Full-time or part-time`, `Desired Salary`, `Years of Experience`, `Valid Driver's License`, `How did you hear about us?` or `Tell us about yourself`. Every other question your form asks, like "Can you lift 50 lbs?", comes along under its own name.
Each application needs an email address or a phone number, so you can reach them.
### Résumés and other files
A file field named `resume` (or `cv`) is their résumé. A form can have other file fields too, like `cover_letter` or `forklift_cert`; each shows under its field's name.
- Up to 3 files with each application, up to 10 MB each.
- PDF, Word (`.doc` or `.docx`), Pages, OpenDocument, RTF or plain text, or a photo of a printed résumé (JPEG, PNG, HEIC or WebP).
Files are kept privately in your Crewtavo. Only people who can see applicants can open them, and the email links to the résumé instead of attaching it.
### Need a form?
Open **Need a form? Copy one that's ready to paste** on the app's page and click **Copy the form**. It asks for everything above, takes your website's own fonts and colors, and sends résumés:
```html
Name
Email
Phone
City and state
Position
When can you start?
Availability
Full-time
Part-time
Seasonal
Years of experience
Valid driver's license?
Yes
No
Résumé
Tell us about yourself
How did you hear about the job?
Apply
```
Paste it where the form should go, in your site builder's **HTML**, **Embed** or **Code** block. The steps for Squarespace, Wix, WordPress, GoDaddy and Google Sites are the same as for a [booking form](https://crewtavo.com/docs/sales/booking-form-on-your-website/). Site builders' own form blocks send to the site builder, not to Crewtavo, so use your own form in an HTML block like this one.
### Try it
Fill in your form on your website with a résumé attached and send it. It shows up in **Applicants** within seconds, and the app's page says **Taking applications** with the time of the last one.
## What happens to each application
- **It lands in Applicants** as **New**, with the date and time they applied.
- **Everyone who sees applicants gets a notification**, "New job application", saying who applied and for which position.
- **The people you chose get an email** called "New application from" their name and the position, listing everything they sent and their files, with an **Open the application** button. Reply to it and you're answering the applicant. This needs [email set up](https://crewtavo.com/docs/connections/email/) in Crewtavo.
- **The page that brought them in** shows on the application when [Website Analytics](https://crewtavo.com/docs/connections/website-analytics/) is installed.
- **They see a thank-you page** with your logo: "Thanks! Your application was sent." and "{Your business} will be in touch.", with a **Back to the website** button. You can send them to your own page instead (below).
## Work through applicants
**Applicants** lists everyone who applied, newest first, with their position, when they applied, whether there's a résumé, and where each one stands. The filters across the top are **Open**, **New**, **Interviews**, **Hired**, **Not hired** and **All**, with a count on each. Pick a position from **Every position**, or search by name, email, phone or position.
Anyone still **New** after three days says **Waiting over 3 days** in red, so nobody's left without an answer.
### One applicant
Click someone to see their application:
- **About** them: position, when they can start, availability, desired pay, experience, driver's license, where they live and how they heard about the job, then their own words and every other answer.
- **Résumé and files**: **Open** shows a file in the browser, and the download button saves it with its own name.
- Their email and phone, with **Text them**.
- **Where it stands**: the status, **Your rating** from one to five stars, and the interview.
- **Notes**: for the office, like how the call went, references or what to ask in the interview. The applicant never sees them.
- **Application**: when they applied, through which form (or **Added by the office**), and **Applied before** when the same email address has applied earlier (or the same phone, when there's no email).
### Move them along
The button at the top is always the next step:
| Status | Button |
| --- | --- |
| **New** | **Start reviewing** |
| **Reviewing** | **Set up an interview**: pick the date and time |
| **Interview** | **Make an offer** |
| **Offer made** | **Mark as hired** |
You can also pick any status under **Where it stands**. The **⋯** menu has **Edit details**, **Add their résumé** (or **Add a file**), **Set an interview time**, **Not hired**, **Reopen** for someone marked not hired, and **Delete applicant**, which deletes their files too.
Setting an interview time moves someone who's **New** or **Reviewing** to **Interview**, and the time shows on their application and in the list.
### Hire them
Once someone is **Hired**, their application says so with **Invite to your team**. It opens the invite under **Settings → People** with their name and email filled in: choose their role and send it. See [Invite your team](https://crewtavo.com/docs/getting-started/invite-your-team/). Only people who can manage the team see the button; anyone else is told an admin can invite them.
### Add an applicant by hand
For someone who walked in, called, or applied on a job board, click **Add applicant** on **Applicants**. Fill in their name and an email or phone, and if you like the position, **Where they applied** (like "Indeed" or "a referral") and their résumé. An applicant can have up to 5 files in all, whoever added them.
## Who sees applicants
Applicants are private to the people who hire. Seeing them takes the **Job applicants and hiring** area in a person's role, on the **Owner**, **Admin** or **Office** access level:
- Owners always see them.
- The **General manager** and **Office manager** roles every business starts with have it. So do custom admin and office roles that manage people or settings.
- **Operations manager**, **Foreman**, **Employee** and estimators don't. Field crews never see applications or résumés.
Add or take away **Job applicants and hiring** under **Settings → Roles**. See [Roles](https://crewtavo.com/docs/getting-started/invite-your-team/#roles).
## Each form's settings
Each form has its own card on the app's page.
- **Email each application to**: up to 5 email addresses, separated by commas. Leave it empty to only see applications in Applicants.
- Under **More settings**:
- **Form name**: shown on each applicant it brings in.
- **After someone sends it**: **A thank-you page from Crewtavo**, or **My own page** with its address, like `https://greenlawn.com/thanks`.
- **Only take messages from**: your website, like `greenlawn.com`. A copy of your form on any other website can't send to Crewtavo then.
- **Get a new address**: the old address stops taking applications right away, so put the new one in your form's action straight after. Use it if bots have found your form.
- **Delete form**: its address stops taking applications. The applicants it brought in stay in Applicants.
Click **Save changes** when you're done. **Add a form** makes another one, like one for seasonal hiring or for a second website. Each gets its own address and its own people to email.
Formspree's `_gotcha`, `_subject` and `_next` fields work the same as on [Website Forms](https://crewtavo.com/docs/connections/website-forms/#moving-from-formspree), and a form that sends with [JavaScript](https://crewtavo.com/docs/connections/website-forms/#send-with-javascript) works too, as long as it sends `FormData` so the files come along.
## Keep spam out
- Keep the hidden `_gotcha` field in your form. The ready-made form has it.
- Website Forms and Careers share their limits: one address can send 10 an hour, and your business takes 100 an hour from all its forms. After that people see "Too many applications. Try again later, or call us."
- Fill in **Only take messages from** with your website.
- If spam still gets through, use **Get a new address**.
## Uninstall
On the app's page, click **Uninstall**. Your Apply form stops sending to Crewtavo right away, and people who fill it in are told it wasn't sent. **Applicants** leaves the menu, but every applicant and résumé is kept and every form keeps its address, so installing it again picks up where you left off.
## If something goes wrong
When an application isn't sent, the applicant sees a page that says why, with a **Go back to the form** button, so nothing they typed is lost.
- **"Add an email or phone number so we can reach you."** The form sent neither. Check that your email field is named `email` and your phone field `phone`.
- **"… can't be sent. Attach a PDF, a Word document or a photo of it."** The file isn't one of the kinds above.
- **"… is too large. Each file can be up to 10 MB."** or **"That's too much to send in one go. Attach smaller files, up to 10 MB each, and try again."** A file, or everything together, was too big.
- **"Attach up to 3 files."** The form sent more than 3 files.
- **"This form only takes messages from its own website."** The page the form is on isn't in **Only take messages from**. Add it, or leave the setting empty.
- **"This form isn't taking messages right now. Call or email the business instead."** Careers is uninstalled, the form was deleted, or it got a new address. Check the address in your form's action against the app's page.
- **"The form didn't send anything Crewtavo can read. Its method should be POST."** Add `method="POST"` to your form.
- **An application arrives without its résumé.** Add `enctype="multipart/form-data"` to your form, and check the file field is named `resume`.
- **Applicants isn't in the menu.** Careers isn't installed, or your role doesn't have **Job applicants and hiring**. See [Who sees applicants](#who-sees-applicants).
- **No email arrives.** If the app's page says "Email isn't set up in Crewtavo yet, so applications only show in Applicants.", [connect your email](https://crewtavo.com/docs/connections/email/). Otherwise see [email not arriving](https://crewtavo.com/docs/troubleshooting/email-not-arriving/). The applications are in Applicants either way.
Source: https://crewtavo.com/docs/connections/careers/ (last updated 2026-10-28)
---
# Text clients with Twilio
> Crewtavo texts clients (quotes, invoices, messages, on-my-way texts) and receives their replies through your own Twilio number. Buy a number, register it, add three variables to the crewtavo service on Railway, and point the number's incoming messages at Crewtavo.
Crewtavo sends and receives text messages (SMS) through a phone number you get from [Twilio](https://www.twilio.com/). You pay Twilio directly, and texts come from your own business number. It takes about half an hour to set up, plus the wait while US carriers approve your number.
Setting it up is done on the server, so it's usually the owner, or whoever has access to your Railway project.
## What texting does in Crewtavo
Once it's on:
- **Quotes and invoices** can be sent by **Text** as well as by email (see [Create and send a quote](https://crewtavo.com/docs/sales/quotes/) and [Create an invoice and get paid](https://crewtavo.com/docs/billing/invoices/)).
- **Messages** can text clients, and their replies come back into the same conversation. See [Text and email clients from Messages](https://crewtavo.com/docs/clients/messages/).
- **Automations** can text clients with the **Text the client** action. The ready-made **Text the client when the crew is on the way** rule texts them when a crew taps **On my way**. It's off until you turn it on in **Settings → Automations** (see [Automate reminders and follow-ups](https://crewtavo.com/docs/clients/automations/)).
- **Review requests** can go by text (see [Ask for Google reviews](https://crewtavo.com/docs/clients/reviews/)), and so can a roof estimate's signed copy.
- **Your team** can get their notifications by text, if they choose it in their notification settings (see [Your profile, notifications and Crewtavo on your phone](https://crewtavo.com/docs/team/your-profile-and-phone/)).
- **Subcontractors** can get job offers, paperwork requests and **Text sign-in link** by text, and a sub on a new phone can sign in with a 6-digit code texted from your number. Without texting, those codes go by email. See [Work with subcontractors](https://crewtavo.com/docs/team/subcontractors/).
Everything Crewtavo texts a client is kept in their conversation in **Messages**.
:::note
Texting is set up for the whole server. If more than one business runs on your Crewtavo, they all text from this one number, and a reply goes to the business that has a client with that phone number.
:::
## What it costs
Twilio charges for the phone number each month and for each text, sent or received. A text over 160 characters is billed as several. In the US there are also fees to register your number with the carriers (one-time, plus a small monthly fee). For a small business it usually comes to a few dollars a month plus a cent or two a text, but check [Twilio's SMS pricing](https://www.twilio.com/en-us/sms/pricing/us) for your country.
Twilio's free trial works for trying it out, but it can only text numbers you've verified in Twilio and adds a note to each text. Upgrade the account before texting clients.
## Set up texting
### 1. Get a Twilio number
1. [Sign up for Twilio](https://www.twilio.com/try-twilio) and add a payment method to upgrade from the trial.
2. In the Twilio Console, open **Phone Numbers → Manage → Buy a number**.
3. Pick a local number that can send SMS, ideally in your area code, and buy it.
### 2. Register the number (US)
US carriers block texts from business numbers that aren't registered for **A2P 10DLC**. In the Twilio Console, register your business (the "brand") and how you'll text (the "campaign"), and add your number to the Messaging Service the campaign uses (you can create one while registering). Twilio's guide walks through it: [A2P 10DLC registration](https://www.twilio.com/docs/messaging/compliance/a2p-10dlc).
Describe what you send: appointment reminders, quotes and invoices, and replies to customers. If your subs sign in with a texted code, list one-time passcodes too. Approval can take from a few days to a few weeks, and until it's done Twilio blocks texts from the number to US phones (error 30034). Toll-free numbers have their own verification instead.
### 3. Copy your account details
On the Twilio Console's home page, under **Account Info**, copy the **Account SID** (it starts with `AC`) and the **Auth Token**. Use the Auth Token itself, not an API key.
### 4. Add the variables in Railway
1. In Railway, open your project, then the **crewtavo** service, then **Variables**.
2. Add these three:
| Variable | Value |
| --- | --- |
| `TWILIO_ACCOUNT_SID` | Your Account SID, like `AC1234…` |
| `TWILIO_AUTH_TOKEN` | Your Auth Token |
| `TWILIO_FROM_NUMBER` | Your Twilio number with the country code and no spaces, like `+15551234567` |
3. Deploy the change when Railway asks.
All three are needed: with any one missing, texting stays off. With Docker, add them to `.env.instance` and run `npm run instance` again. (See [Optional settings](https://crewtavo.com/docs/hosting/settings/) for the other variables.)
### 5. Send replies to Crewtavo
So clients' replies come into **Messages**, tell Twilio where to send them:
1. In the Twilio Console, open **Phone Numbers → Manage → Active numbers** and choose your number.
2. Under **Messaging Configuration**, set **A message comes in** to **Webhook**, with this address and **HTTP POST**:
```
https://your-crewtavo-address/api/webhooks/twilio
```
Use the address you open Crewtavo at, like `https://crm.yourcompany.com` or your `….up.railway.app` address, followed by `/api/webhooks/twilio`.
3. Save.
Type the address exactly: `https://` at the start and no slash at the end. Crewtavo checks that each incoming text really came from Twilio, and the check fails if the address differs. If you later [move Crewtavo to your own domain](https://crewtavo.com/docs/hosting/own-domain/), the old address keeps working, so replies don't stop; you can change it in Twilio to the new one whenever you like.
:::tip[If your number is in a Messaging Service]
Registering for A2P 10DLC usually puts your number in a Messaging Service, and the service's settings can take over from the number's. In **Messaging → Services**, open the service, then **Integration**, and under incoming messages choose **Defer to sender's webhook** (Twilio's default), or **Send a webhook** with the same address as above.
:::
## Check it works
1. Reload Crewtavo. "Texting isn't turned on yet." should be gone from **Messages** and the send options.
2. Open a client whose **Phone** is your own mobile number. You can add yourself as a client to test.
3. In **Messages**, choose **Text**, write a message and send it. It should arrive on your phone from your Twilio number.
4. Reply from your phone. Within half a minute the reply shows in that client's conversation, and owners, admins and office staff get "New text from a client".
## Apps → Twilio
**Apps → Twilio** shows **Not available yet** ("Ask whoever set up Crewtavo to turn on Twilio.") until the variables are set. After that, there's nothing to install there: texting already works from the variables, and a key saved on that page isn't used.
## Troubleshooting
| What happens | What to do |
| --- | --- |
| **Text** says "Texting isn't turned on yet." after you added the variables | Check all three are on the **crewtavo** service, spelled exactly, and that the change was deployed. Then reload Crewtavo. |
| "The text provider refused it (…)" | Twilio turned the text down, and the words after the code say why. A trial account can only text verified numbers; a number that replied STOP can't be texted until it replies START; and the number has to be a mobile that can get texts. |
| "Couldn't reach the text provider. Try again." | Twilio didn't answer in time. Try again in a minute. |
| Crewtavo says it was texted, but it never arrives | In the Twilio Console, open **Monitor → Logs → Messaging** and look at the message's status and error. In the US it's usually a number whose A2P 10DLC registration isn't approved yet (error 30034). |
| A client's reply doesn't show up | Check that the number they texted from is the **Phone** on their client record: texts from numbers that aren't on a client are dropped. A text with only a picture doesn't come in either. |
| No replies show up at all | Check the webhook address and **HTTP POST** (step 5), and the Messaging Service tip. In **Monitor → Logs → Errors**, a 403 means the address in Twilio isn't exactly your Crewtavo address, or the Auth Token in Railway isn't the current one. |
| Texting stopped after you changed the Auth Token in Twilio | Put the new token in `TWILIO_AUTH_TOKEN` and deploy. Sending and receiving both use it. |
Still stuck? See [Getting help](https://crewtavo.com/docs/support/getting-help/).
Source: https://crewtavo.com/docs/connections/texting-with-twilio/ (last updated 2026-10-28)
---
# Keep every file in one place with Drive
> Crewtavo - Drive puts every file in one place, with folders for your company's papers, every file on each client and job, PDF and Word editing, versions, a 30-day Trash and import from Google Drive.
Crewtavo - Drive puts every file in Crewtavo in one place. Your company's own papers go in folders: forms, price sheets, insurance papers. Every plan, spec and permit on a client's property, request, quote or job shows up there too, grouped by client. You can open PDFs, Word documents and photos right in Crewtavo, mark them up and edit them, and every save is kept as a new version.
It costs nothing extra, and your files stay in your own Crewtavo.
## Install it
An owner, or an admin who can connect apps, does this once.
1. Open **Apps** (in the menu on a computer, or under **More** on a phone) and choose **Crewtavo - Drive**, under **Built into Crewtavo**.
2. Click **Install**.
**Drive** shows up in the menu, after **Invoices**, for owners, admins, office staff and estimators. Crews don't see Drive. They see the files marked for them on their visits (see [Who sees what](#who-sees-what)).
The app's page then says **Drive is on**, with buttons to **Open Drive**, the **Trash**, the **Storage limit** and, on Railway, **Where files are stored**. It also says whether **Import from Google Drive** is set up (see [below](#import-from-google-drive)).
### On Railway, Install makes a bucket first
On Railway, Drive keeps photos and files in a Railway storage bucket rather than on the storage volume. A bucket grows as it fills, so Drive never runs out of room, and it costs a tenth as much per GB. So **Install** first makes a bucket called `files` in your Railway project, using Crewtavo's connection to Railway. Then it starts moving your photos and files into it. Drive is ready straight away, and the files keep copying in the background. **Settings → Hosting**, under **Files storage**, shows how far along they are. See [Move files to a bucket](https://crewtavo.com/docs/hosting/storage/#move-files-to-a-bucket) for what that costs, and how Railway backs up buckets.
If Crewtavo can't make the bucket, Drive isn't installed. The page says what to do, with a link to **Settings → Hosting**. Then press **Install** again:
- **Railway isn't connected.** Drive needs Crewtavo's Railway connection to make the bucket. Connect it in **Settings → Hosting**. See [Connecting Railway](https://crewtavo.com/docs/hosting/railway-costs/#connecting-railway).
- **Railway won't let Crewtavo make the bucket.** The page lists the steps to do yourself: open your project in Railway, press **Create**, choose **Bucket**, and name it `files` (in the region your services run in, as the page says). Then press **Deploy**. Railway's Limited Trial doesn't include buckets, so on it, choose a plan on Railway first.
- **Railway said: Bad Access.** Railway doesn't let a project token make or read buckets. Choose **Remove access** at the bottom of **Settings → Hosting**, then **Log in with Railway**, and install Drive again.
- **The bucket is made but not deployed.** Open your project in Railway, check the changes waiting there, and press **Deploy**.
- **Files are moving back to the volume.** Wait until **Settings → Hosting** shows the move back has finished.
If your files are already in a bucket, Install doesn't need to do anything first. With Docker, or anywhere else that isn't Railway, files stay where your Crewtavo already keeps them.
### Uninstall it
Choose **Uninstall** on the app's page. Drive leaves the menu for everyone, but no files are deleted. Files stay on their clients and jobs, and your company folders come back if you install Drive again. The Trash keeps working either way.
## Find your way around
Drive has these tabs:
- **Company files:** your company's own folders, for anything that isn't for a client. Choose **New folder** to make one, and open a folder to make folders inside it.
- **Clients:** every client that has files. **Find a client** narrows the list. Open a client to see their files grouped by property, then by the request, quote or job each file is on. **Open client** takes you to the client.
- **Recent:** files added anywhere in Crewtavo, newest first.
- **Trash:** everything deleted in the last 30 days. See [The Trash](#the-trash).
To find a file, type in **Search every file** at the top, and the results open in a **Search** tab. It finds files by name, revision, notes, client or job number, and folders by name.
Under the page title, a bar shows how much of your company's storage is used, like "4.2 GB of 45 GB used". If you have a limit of your own, it shows that too. Owners and admins who can change settings also get a **Storage settings** link. See [Manage storage space](https://crewtavo.com/docs/hosting/storage/).
## Add files
Choose **Upload**, or drag files onto the page. They go into the folder you're looking at. On **Recent** or **Search**, they go into Company files. On a client, drop them on one of their properties, or choose **Upload** on that property's card.
Each file can be up to 200 MB. A file goes up in small pieces, so a big plan set gets through even when the connection is slow or patchy. If the connection drops, the upload carries on where it stopped. If a file fails, add the same file again within a day and it picks up from there. (On a Crewtavo set up before October 2026, it's within an hour.) The **Stop** button next to a file stops its upload.
A file you add to Company files is for the office. A file you add on a client's property shows to the crew unless you make it office only.
## Open and edit files
Click a file to open it in Crewtavo:
- **PDFs:** read every page and zoom in. Choose **Edit** to mark one up with **Highlight**, **Text** and **Draw**, in a choice of colors, or to fill in a PDF's form.
- **Word documents** (.docx): read them, or choose **Edit** to change them in a Word-style editor.
- **Photos and pictures:** zoom in and drag to look around.
- **Text files** show as they are. Anything else can be downloaded with **Download**.
When you're done editing, choose **Save as new version**. **Nothing is ever written over.** The edit becomes the newest version, and the one you opened stays in the file's history. If someone else adds a newer version while you're editing, Crewtavo doesn't save over theirs. It says so, keeps your changes on screen, and offers **Download a copy** of them.
An older version, or an archived file, opens to look at only.
## Versions
When a file changes, like when a contractor sends revised sheets, open the file's **⋯** menu and choose **Upload a new version**. The new file becomes the current one, and saving an edit does the same.
**Versions**, in the same menu, lists every version, newest first, with who added it and when. Choose **Open** to see an old one, or download it. If a version was added by mistake, choose **Move version 3 to Trash** (or whichever number is newest), and the one before it becomes the current one again.
**Rename** changes a file's name and its **Revision**, like "Rev B". **Move to folder** (or **Put in a folder**) moves it between folders. Moving a file moves all its versions with it.
## Put a file on a client's work
A file can be on a client's property, request, quote or job, as well as in a folder.
1. Open the file's **⋯** menu and choose **Attach to…**.
2. Search for a client, an address, a request, a quote or a job, or pick one from **Recently opened**. If you pick a client, choose **Which property?**.
3. Choose whether **The crew can see it**.
4. Choose **Attach**.
The file stays in its folder too. It also shows on that record's **Plans and files** card (see [Upload and manage plans for a job](https://crewtavo.com/docs/jobs/plans-and-files/)). When it's put on a job with **The crew can see it** on, the crew on the job's upcoming visits gets a notification.
A file is on one request, one quote and one job at a time, at one property. If attaching it would take it off something else, the dialog says so, like "It comes off Job #12", and the button says **Move here**. **On now** at the top of the dialog shows where the file is, with a button to take it off each one.
## Who sees what
- **Owners, admins, office staff and estimators** see everything in Drive.
- **Crew leads and crews** never open Drive. They see the current version of the files marked for the crew on the work they're doing, like on a visit's **Plans** (see [Who sees what](https://crewtavo.com/docs/jobs/plans-and-files/#who-sees-what) for plans).
To change whether the crew sees a file on a client's work, open its **⋯** menu and choose **Show it to the crew** or **Make it office only**. A file on a client's work that the crew can't see shows an **Office only** tag. Files you add to Company files start as the office's.
## The Trash
Whatever someone deletes in Crewtavo goes to the Trash for 30 days, not just files from Drive. That includes plans, visit and quote photos, receipts, sub paperwork, résumés, guide covers, and equipment and ticket photos. Nobody can delete a stored file straight away by mistake.
Open it from Drive's **Trash** tab, from the Drive app's page, or by searching for "Trash". It works whether or not Drive is installed, for everyone on your team except subcontractors.
- **The office** sees everything deleted from Drive. Everyone else sees what they moved there themselves. Receipts show to whoever deleted them or can see job costs. Sub paperwork only shows to office staff who manage subcontractors, and résumés only to those who manage hiring.
- **Restore** puts something back where it was. If where it was is gone, like a photo whose visit was deleted, the office gets a copy in Company files, under **Restored files**. Sub paperwork, résumés and receipts never go into Drive. When their place is gone, they get a **Download** button instead.
- Each item says when it was deleted, by whom, and when it **Deletes on**. After 30 days, it's deleted for good overnight.
- **Only the owner** can delete things sooner. **Delete forever** is in an item's menu. **Empty Trash** deletes everything at once: type **empty** to confirm.
Files in the Trash still take up storage space until they're deleted for good. See [Manage storage space](https://crewtavo.com/docs/hosting/storage/).
## Import from Google Drive
**Import from Google Drive** copies files from someone's own Google Drive into Crewtavo. It's in Drive's header (just **Import** on a phone), and **Import** is on each property card under a client. It shows once your Crewtavo has been set up for it (see [Set it up](#set-it-up)).
1. Choose **Import from Google Drive**. If a client has more than one property, pick which one.
2. Sign in to Google if it asks, then pick the files. You can pick up to 20 at a time.
3. The files are copied into the folder or property you started from. Each shows **Copying from Google Drive…** while it goes, and you can stop after the current file.
Google Docs come in as Word documents, Sheets as Excel files, Slides as PDFs and Drawings as PNG pictures. Google converts files up to 10 MB each. Your Crewtavo can only read the files you pick. It doesn't keep your Google sign-in, and nothing of your Google account is stored.
Imported files count toward your storage like any other upload. If your storage is full, the ones that don't fit are skipped, and Crewtavo says so.
### Set it up
Whoever runs your Crewtavo does this once in Google Cloud. If you've set up Google sign-in for Google Calendar, use the same project and client. If not, make a project and a **Web application** client first, as in steps 1 to 3 of [Google Calendar](https://crewtavo.com/docs/hosting/settings/#google-calendar). You only need the Google Calendar API and its scopes for Google Calendar itself.
1. In **APIs & Services → Library**, turn on the **Google Picker API** and the **Google Drive API**.
2. In **Google Auth Platform → Clients**, open the Web application client. Under **Authorized JavaScript origins**, add every address people open Crewtavo at, like `https://crm.yourbusiness.com`, and your `*.up.railway.app` address if people use it. Import doesn't need a redirect address.
3. In **Data Access**, add the scope `https://www.googleapis.com/auth/drive.file`. Google calls it non-sensitive, so there's no security review. Publish the app under **Audience**, or choose **Internal** on Google Workspace. While it's in **Testing**, only its test users can sign in.
4. In **APIs & Services → Credentials**, choose **Create credentials → API key**. Under **Application restrictions**, choose **Websites**. Add `https://your-domain/*` and `https://docs.google.com/*`, because the picker says the key is invalid without the second one. Under **API restrictions**, choose the Google Picker API.
5. Add the variables to Crewtavo: `GOOGLE_CLIENT_ID` (the client's ID) and `GOOGLE_PICKER_API_KEY` (the key from step 4). Import doesn't need the client's secret. On Railway, add them to the **crewtavo** service's **Variables**. With Docker, add them to `.env.instance`. See [Optional settings](https://crewtavo.com/docs/hosting/settings/).
Once they're in, the Drive app's page says **Importing from Google Drive is ready**.
Source: https://crewtavo.com/docs/connections/drive/ (last updated 2026-11-02)
---
# Bring in your Google reviews with Google Business Profile
> The Google Business Profile app brings your Google reviews into Marketing → Reviews, so you can see your rating, reply with a suggestion to start from, stop asking clients who already left one, and post to your Business Profile from Marketing → Social.
The **Google Business Profile** app brings every Google review of your business into **Marketing → Reviews**:
- Your rating and how it's trending, how many you've answered and how fast, and which review asks led to a review.
- Reply right from Crewtavo, starting from a suggestion Claude drafts. Replies post publicly on Google.
- Each review is matched to the client who left it when only one fits, and that client isn't asked for a review again.
- The office hears about new reviews, low ratings first.
- Post to your Business Profile from **Marketing → Social**.
It can't change or remove your reviews. It brings in one location's reviews.
## Before you start
- **Install Crewtavo - Marketing first.** Your reviews show in Marketing. It's installed for every business to start with: see [Marketing is an app](https://crewtavo.com/docs/clients/marketing/#marketing-is-an-app).
- **Ask Google for access early.** Google approves each Google Cloud project's access to reviews before any come in. That takes about 2 weeks, and your Business Profile has to have been verified for 60 days or more. Review asks keep working meanwhile.
- Owners, and admins whose role has **Connect apps**, install it. Sign in with a Google account that manages your Business Profile.
## Install it
Open **Apps → Google Business Profile** and choose **Install**. What you see next depends on your Crewtavo server.
### With your server's Google app
If your server has Google sign-in set up (the one [Google Calendar](https://crewtavo.com/docs/hosting/settings/#google-calendar) uses), **Before you sign in** shows three steps:
1. **Ask Google for access first.** Whoever owns that Google Cloud project fills in Google's form (**Google's access request form**), with an email that manages your Business Profile. It asks for the project number, shown here with **Copy**.
2. **Set up the project.** In that Google Cloud project, add the **Authorized redirect URI** shown to its OAuth client, add the **Scope** shown to its consent screen, and turn on the My Business Account Management API, My Business Business Information API and Google My Business API.
3. **Sign in.** Choose **Sign in with Google** and pick the account that manages your Business Profile. You can sign in before Google approves: Crewtavo checks every 6 hours and starts once it does.
Then pick your location (below).
To use a Google Cloud project of your own instead, open **Or use your own Google app**. Google approves your own project separately, which takes about 2 weeks even if the server's is approved already.
### With your own Google app
If your server doesn't have Google sign-in, or you chose **Or use your own Google app**, **Set up Google Business Profile** walks you through making a Google Cloud project for your business. It's free.
1. In Google Cloud (**Open Google Cloud**), create a project for Crewtavo, signed in with a Google account that manages your Business Profile.
2. Ask Google for access with **Google's access request form** now: it takes about 2 weeks. The form asks for the project number (on the project's dashboard) and an email that manages your profile.
3. Turn on the three APIs listed, each a link: **My Business Account Management API**, **My Business Business Information API** and **Google My Business API**.
4. Under **Google Auth Platform**, set up the consent screen as **External**, add the **Scope** shown under **Data access**, and publish the app so it says **In production**. An app left in Testing signs out after 7 days.
5. Under **Clients**, create an OAuth client of type **Web application** with the **Authorized redirect URI** shown.
6. Copy the **Client ID** and **Client secret** Google shows, paste them in, and choose **Save keys**.
7. Crewtavo says "Last step: sign in with Google and pick your location." Choose **Sign in with Google**.
Google shows an "unverified app" screen at sign-in until it reviews the app. That's fine for your own business: click **Advanced**, then continue.
**Your Google app** then shows the Client ID's last four characters. **Change keys** swaps them (paste the secret again too). **Remove keys** uninstalls Google Business Profile: installing it again uses your server's Google app, if it has one. The reviews already here stay.
### Pick your location
After you sign in, Crewtavo lists the locations that Google account manages, under **Pick your business's location**. Pick one and choose **Use this location**. A location Google hasn't verified says "Not verified on Google yet".
If the account doesn't manage a Business Profile, it says so: choose **Sign in with another Google account**.
Crewtavo then offers Google's review link for that location, as **Google's review link for** your business. **Use this link** makes it the link your review asks send. **Keep mine** leaves yours. See [Add your review link](https://crewtavo.com/docs/clients/reviews/#add-your-review-link).
## While Google is deciding
Until Google approves, the app shows **Waiting on Google**, and its page and **Marketing → Reviews** say "Google hasn't approved this server's access to reviews yet." (or "your Google app's"). Crewtavo checks again every 6 hours. **Check again** asks Google now.
If it says "The Business Profile APIs aren't turned on in … Google Cloud project yet.", whoever owns the project turns on the three APIs, then **Check again**.
## Once your reviews are in
**Your reviews**, on the app's page, shows the location (with **Change location** and a link to it **On Google Maps**), when reviews last came in, how many there are, and **Sync now**.
- New reviews come in every 30 minutes on their own. **Sync now** checks right away, at most once every two minutes.
- The first time, it shows how far it's got, like "Bringing in your reviews: 120 of 350".
- Once a day Crewtavo goes through every review, which catches replies made in Google's own app and reviews taken down on Google.
Your reviews, replies and matches are in **Marketing → Reviews**. See [Your Google reviews in Marketing](https://crewtavo.com/docs/clients/reviews/#your-google-reviews-in-marketing).
To post to your Business Profile, see [Post to Facebook, Instagram and Google](https://crewtavo.com/docs/clients/social-posts/). Google needs a caption on every post, and only the first photo shows.
### Change the location
**Change location** picks another. Picking a different location than the one your reviews came from removes those reviews from Crewtavo, so it asks first. Your reviews on Google don't change.
## When it needs attention
| You see | What to do |
| --- | --- |
| **Paused**: "Marketing is off, so reviews aren't brought in and replies can't be posted." | Install Crewtavo - Marketing again. Reviews already here are kept. |
| "Google sign-in expired, so reviews aren't coming in." | Choose **Reconnect** and sign in with an owner or manager of the Business Profile. |
| **Needs attention**, about the location | Read what it says, then **Check again**, **Reconnect** or pick the location again. |
| **Not syncing** | Google had trouble. Crewtavo says when it tries again, and keeps trying. |
Owners and admins who connect apps get a notification when it needs signing in again or a location picked.
## Uninstall it
1. Open **Apps → Google Business Profile** and choose **Uninstall**.
2. Choose whether to tick **Also remove the … reviews brought in**.
3. Choose **Uninstall**.
Reviews stop coming in, and replies can't be posted from Crewtavo. Your reviews on Google aren't changed.
- **Kept** (the box unticked, as it starts): the reviews still show in **Marketing → Reviews** and keep their clients from being asked again.
- **Removed**: they're taken out of Crewtavo, and asks start again for the clients they matched.
If Google Calendar is signed in with the same Google account, your Google sign-in stays, since Google Calendar uses it too. To end both, remove Crewtavo in your Google account's security settings.
Source: https://crewtavo.com/docs/connections/google-business-profile/ (last updated 2026-11-02)
---
# Post to your Facebook Page and Instagram
> The Facebook & Instagram app posts job photos, Google reviews and updates from Marketing → Social to your Facebook Page and its Instagram account. It connects through a Meta app you make for your own business, with its App ID and secret.
The **Facebook & Instagram** app lets you post from **Marketing → Social** to your Facebook Page and the Instagram account linked to it: job photos your crew marks OK to share, your 4 and 5-star Google reviews as a square picture, and updates in words. Post now or at a time you pick, or have new 5-star reviews post by themselves. See [Post to Facebook, Instagram and Google](https://crewtavo.com/docs/clients/social-posts/).
It connects through a Meta app you make for your own business, so nobody else's app sits between you and your Page. It's free, takes about ten minutes, and Meta doesn't need to review an app that only posts to your own Page. There's no server-wide Meta app to set up.
What it can do:
- Post photos and reviews to the Page and Instagram account you pick, when someone posts or schedules one (or automatic posts are on).
- See the Pages you manage and the Instagram accounts linked to them.
It can't read your messages, comments or ads. Posts never name a client or show their address, and photos go up without their location.
## Before you start
- **Install Crewtavo - Marketing first.** Posts are made in Marketing → Social. It's installed for every business to start with: see [Marketing is an app](https://crewtavo.com/docs/clients/marketing/#marketing-is-an-app).
- **Have a privacy page on your website.** Meta asks for one before your app can go Live. It has to load, and say how to ask for data to be deleted. With your **Website** filled in under [Settings → Company](https://crewtavo.com/docs/getting-started/company-settings/), Crewtavo offers its `/privacy` address to copy.
- **Be your Page's admin** on Facebook. To post to Instagram too, link your Instagram account to the Page in Meta first.
- Owners, and admins whose role has **Connect apps**, set it up.
## Set it up
Open **Apps → Facebook & Instagram** and choose **Install**. **Set up Facebook & Instagram** shows these steps, with every address to copy:
1. At Meta for Developers (**Open Meta for Developers**), signed in as your Page's admin, click **Create app**. Name it after your business, pick the use case for managing everything on your Page, and choose your business portfolio, or none.
2. Add the **Facebook Login for Business** product, if the app doesn't have it.
3. Under **Facebook Login for Business → Settings**, paste the **Valid OAuth Redirect URI** shown in Crewtavo under **Valid OAuth Redirect URIs**, and save. Leave **Strict mode** on.
4. In the use case's **Permissions**, click **Add** for each of these: **pages_show_list**, **pages_read_engagement**, **pages_manage_posts**, **business_management**, **instagram_basic** and **instagram_content_publish**. If Instagram's two aren't offered there, add the Instagram use case too, and add them from it.
5. Under **App settings → Basic**, copy the **App ID** and the **App secret** (click **Show**). Fill in the **Privacy policy URL** and the **User data deletion** instructions URL there too, with your privacy page.
6. Back in Crewtavo, paste them under **App ID** and **App secret**, and choose **Save keys**.
7. Crewtavo says "Last step: sign in with Facebook as your Page's admin and pick your Page." Choose **Sign in with Facebook**.
Meta's dashboard changes its wording now and then, so a name may be a little different.
If you made a Facebook Login for Business configuration, paste its **Configuration ID** under **More options** before saving. Leave it empty and Crewtavo asks for the permissions itself.
### Pick your Page
Back from Facebook, **Your Page** lists the Pages that account manages, under **Pick your Page**.
1. Pick the Page. One you can't post as says "You can't post as this Page".
2. If it has an Instagram account linked, leave **Post to Instagram too** ticked to post there as well.
3. Choose **Use this Page**.
If the account doesn't manage a Page, choose **Sign in with another Facebook account** and sign in as the Page's admin.
A Page in a business portfolio needs two more permissions before Instagram posts go: **ads_management** and **ads_read**. Add them to your Meta app's use case, then choose **Reconnect with business Page permissions**.
### Switch your app to Live
Until your Meta app is Live, only people with a role on the app can see its posts. The app shows **Not Live yet**, and Social says "Posts stay hidden from the public until your Meta app is Live."
1. In your app's dashboard, check the privacy page is filled in under **App settings → Basic**.
2. Use the **App mode** switch at the top to switch it to **Live**.
3. Back in Crewtavo, tick **I switched my app to Live**.
Meta can't tell Crewtavo when your app is Live, so the tick is how it knows. It then says **My Meta app is Live**: "Posts show to everyone who follows your Page."
## What you can post
Everything is posted from [Marketing → Social](https://crewtavo.com/docs/clients/social-posts/). In short:
- Up to 10 photos marked OK to share. Instagram gets them padded to fit, never cropped.
- A 4 or 5-star Google review as a square card in your brand color, with the reviewer's first name and last initial. Automatic posts are 5-star reviews only, at most 3 a day.
- Words alone go to Facebook, not Instagram: Instagram needs a picture.
- Instagram takes up to 2,200 characters and 30 hashtags.
Meta fetches the pictures from your Crewtavo address, so it has to be public on the internet.
## Keep it connected
**Your Page**, on the app's page, shows the Page and its Instagram account, with **Change Page** and **Check again**. **Check again** looks for permissions and a newly linked Instagram account. If Instagram was linked since, it says so: tick **Post to Instagram too**, then **Use this Page**.
| You see | What to do |
| --- | --- |
| "Meta asks you to sign in again by …, so posts keep going." | Choose **Reconnect** and sign in before then. |
| "Meta's sign-in ran out. Sign in again to change the Page or its permissions. Posts keep going meanwhile." | Choose **Sign in again** when you want to change something. |
| "Your Page's sign-in stopped working, so posts don't go." | Choose **Reconnect** as the Page's admin. |
| "Meta wasn't given these permissions: …" | Add them to your Meta app's use case if they aren't there, then **Reconnect** and allow them. |
| **Paused**: "Marketing is off, so nothing posts." | Install Crewtavo - Marketing again. Posts already made stay. |
Owners and admins who connect apps get a notification when it needs signing in again.
### Change or remove your keys
**Your Meta app** shows the App ID's last four digits.
- **Change keys** uses another Meta app. Paste the secret again too. Facebook & Instagram signs out: sign in again with the new app, pick your Page and switch the new app to Live. Posts already made stay.
- **Remove keys** uninstalls Facebook & Instagram and signs it out of your Page. Installing it again needs your Meta app's keys.
## Uninstall it
Open **Apps → Facebook & Instagram**, choose **Uninstall**, then **Uninstall** again.
Posts stop going to your Page and Instagram, and Crewtavo's access to them is removed at Meta. Scheduled posts won't go to Facebook or Instagram: use **Post again** once you've connected again. Posts already made stay, and your app's keys stay, so installing it again is one sign-in.
Source: https://crewtavo.com/docs/connections/facebook-and-instagram/ (last updated 2026-11-02)
---
# What Railway costs
> Crewtavo is free for any size of business. You pay Railway for hosting, usually its $5-a-month Hobby plan after a free 30-day trial.
Crewtavo itself is free, whatever the size of your business. What you pay for is the hosting, and you pay Railway directly. For most businesses that's Railway's Hobby plan, $5 a month. To see how that compares with apps priced by the seat, see [Compare Crewtavo](https://crewtavo.com/compare/).
## What you pay, and when
| When | What it costs |
| --- | --- |
| First 30 days | Free, on Railway's trial: 30 days or $5 of usage, whichever comes first |
| After that | Railway's Hobby plan: $5 a month, including $5 of usage |
:::caution[Before the trial ends]
Add a card in Railway and choose the Hobby plan. Otherwise Railway stops your Crewtavo when the free credit runs out, and deletes trial data 30 days after that. Crewtavo reminds you 7, 3 and 1 days before. See [Crewtavo stopped after the Railway trial](https://crewtavo.com/docs/troubleshooting/trial-ended/).
:::
## See it in Crewtavo
**Settings → Hosting** shows what Railway charges for your Crewtavo, straight from Railway. Owners and admins see it.
- **So far and the forecast.** Usage so far this month, what a day costs lately, and a forecast for the month at that rate, on one bar with what your plan includes. On Hobby or Pro it says what Railway's bill comes to.
- **The trial.** On Railway's trial, about how many days and how much of the $5 credit are left, counted from when your Crewtavo was set up.
- **What it's used for.** What each part of Crewtavo has used so far: the database, photos and files, the app, sign-in and the data API. A files bucket isn't in Railway's usage figures, so Crewtavo adds it to the month at Railway's price for what it holds now.
- **The last 7 days.** Memory and processor use, with Railway's prices for each.
- **Storage.** How full the database and file storage volumes are, and what a files bucket holds and costs a month. **Storage limit and who's using it** opens **Settings → Storage**. See [Manage storage space](https://crewtavo.com/docs/hosting/storage/).
- **Files storage.** Whether photos and files are on the storage volume or in a Railway bucket, with **Move files to a bucket** to move them to a bucket, which costs a tenth as much. See [Move files to a bucket](https://crewtavo.com/docs/hosting/storage/#move-files-to-a-bucket).
- **Plan.** Your plan, with buttons that open Railway's pages to choose a plan, add a card or credit, and set a usage limit. Railway takes payments itself, so those happen on Railway.
Crewtavo works out the cost from Railway's usage at Railway's prices, so these are close estimates, and Railway's bill is the final word. Crewtavo only sees your Crewtavo project, not your Railway billing, so if your Railway account runs other projects too, their usage isn't included.
### Warnings before Crewtavo stops
Twice a day Crewtavo checks your Railway account and tells the owner and admins, by the bell, email and a push to their phone, when:
- the trial ends in about 7, 3 or 1 days, or its credit is nearly used up
- the month's usage is on track to go over what your plan includes
- the database or file storage is over 85% full
- Railway stopped accepting Crewtavo's sign-in
Every few hours, Crewtavo also tells them when the company's files reach 80% and then 95% of the storage limit (see [Manage storage space](https://crewtavo.com/docs/hosting/storage/#warnings-before-its-full)).
Each warning comes once. To change how they reach you, go to **Settings → Profile → Notifications** and find **Railway**. Railway emails you itself about a card it couldn't charge and about your usage limit.
### Connecting Railway
Crewtavo reads all this through its connection to Railway, which the owner makes right after setting up the business. **Log in with Railway** opens Railway's screen; choose **Authorize**. To give Crewtavo only your Crewtavo project rather than all of them, choose **Change**, then **Selected projects**, first. Crewtavo never sees your card or billing. A project token pasted under **Can't log in with Railway?** does the same, except that Railway doesn't let a project token make or read a files bucket: moving files to a bucket, or installing Drive, stops with **Railway said: Bad Access**, and needs **Log in with Railway** instead. If Railway won't take the sign-in, see [Railway didn't accept the sign-in](https://crewtavo.com/docs/troubleshooting/railway-sign-in/).
## How much a Crewtavo uses
Measured on a new Crewtavo with nothing happening, its five services use about 0.36 GB of memory between them, roughly $3.60 a month at Railway's rate of $10 per GB a month. That fits inside the $5 the Hobby plan includes.
| Service | Memory |
| --- | --- |
| db (the database) | 136 MB |
| storage (photos and documents) | 124 MB |
| crewtavo (the app) | 47 MB |
| rest (the data API) | 37 MB |
| auth (sign-in) | 12 MB |
Use grows with data and traffic, so a busy business may use more than $5. Railway bills anything over the included usage. Check [Railway's pricing](https://railway.com/pricing) for current rates, and **Settings → Hosting** to see yours.
Photos and files cost $0.15 per GB a month on the storage volume, or $0.015 in a Railway bucket, plus $0.05 per GB for files sent into a bucket. See [What a bucket costs](https://crewtavo.com/docs/hosting/storage/#what-a-bucket-costs).
## When Railway's Pro plan is worth it
The Hobby plan runs Crewtavo fine. Railway's Pro plan adds two things Crewtavo can use:
- **Backups** of the database and the file storage volume. Railway doesn't back up buckets on any plan. See [Back up and export your data](https://crewtavo.com/docs/hosting/backups/).
- **Sending email from your own mailbox.** Trial and Hobby block it, so connect a free Resend account under **Settings → Email** instead. See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/).
Source: https://crewtavo.com/docs/hosting/railway-costs/ (last updated 2026-11-02)
---
# Use your own domain
> Give your Crewtavo an address like crm.yourbusiness.com from Settings → Web address, in four steps, and Crewtavo switches over by itself.
Your Crewtavo starts with an address from Railway, like `crewtavo-production-1a2b.up.railway.app`. That's the address in every link Crewtavo sends: invites, quotes, invoices and the client hub. You can give it your own, like `crm.yourbusiness.com`, from **Settings → Web address**. Crewtavo also offers this right after you set up your business.
Crewtavo goes on `crm.` in front of your domain, so your website and email at `yourbusiness.com` stay just as they are. Links you've already sent keep working, and the old address forwards to the new one.
## The four steps
**Settings → Web address** shows these as a timeline. Each one ticks off when it's done, and the step you're on opens up with what to do.
### 1. Log in with Railway
Railway runs your Crewtavo. Logging in lets Crewtavo add your address there and switch over by itself, so you never have to open Railway's settings. If you connected Railway when you set up your business, this step is already done. Otherwise, **Log in with Railway** opens Railway's sign-in: press **Authorize**. To give Crewtavo only your Crewtavo project, choose **Change**, then **Selected projects**, first.
Crewtavo only uses that one project, also for [warnings before Crewtavo stops](https://crewtavo.com/docs/hosting/railway-costs/#warnings-before-crewtavo-stops). It keeps the access, encrypted, so other features don't ask again, and renews it daily. **Remove access** in **Settings → Web address** or **Settings → Hosting** ends it. If Railway won't connect, the screen asks for a project token instead.
### 2. Choose your domain
Crewtavo asks: **Do you already have a domain?**
- **Yes, use mine.** The address box starts with `crm.`; type the rest, the domain your website or work email uses, like `yourbusiness.com`. Pasting your whole website or email address works too. Your website and email at `yourbusiness.com` stay just as they are. To use a name other than `crm`, choose **Use a different name than crm**.
- **No, get me one.** This opens Railway's **Buy a Domain** on your crewtavo service, billed to your Railway account. Railway connects the domain itself, so step 3 is done for you. Once it shows up, press **Use this domain** next to it.
### 3. Connect your domain
For a domain you already have, Crewtavo shows the two records to add where you bought it, with the exact steps for your provider (GoDaddy, Squarespace, Namecheap, Wix and others) and copy buttons. It checks them as they go in.
- **On Cloudflare?** Crewtavo adds both records for you. Press **Make a Cloudflare token**: Cloudflare's token page opens with everything filled in. Press **Continue to summary**, then **Create Token**, and copy the token. Paste it into Crewtavo and press **Add them for me**. Crewtavo uses the token once, adds the records as DNS only (grey cloud), and doesn't keep it. To add them yourself instead, open **Or add them yourself in Cloudflare**.
- **Someone else looks after your domain?** Choose **Email the steps** to send the records to whoever set up your website, or **Copy the steps** to text them.
:::note
If Railway doesn't let Crewtavo add the address, step 3 says "Railway didn't let Crewtavo add" followed by your address. Add it in Railway yourself: open the **crewtavo** service, then **Settings → Networking → Custom Domain**. Crewtavo notices within a couple of minutes, or as soon as you press **Check now**, and does the rest from there, including the Cloudflare records.
:::
### 4. Crewtavo switches over
Once Railway has verified the address and issued its certificate, and the address answers as your Crewtavo, Crewtavo switches over by itself: it sets `APP_URL`, redeploys the `auth` and `crewtavo` services, and tells your admins. This usually takes a few minutes after the records are in, sometimes up to an hour. You can close the page while it waits.
Until then, Crewtavo stays at its Railway address, so nothing changes for your team. Links you've already sent keep working, and the old address forwards to the new one.
Client links, calendar feeds, the texting webhook and assistant connectors keep working on both addresses.
## By hand
Under **Can't log in with Railway?** in step 1, **Or set it all up by hand** lists these steps with links, and notices when they're done:
1. In Railway, open the **crewtavo** service, then **Settings → Networking → Custom Domain**, and add your domain.
2. Change the service's `APP_URL` variable to `https://your-domain`.
3. Redeploy the `crewtavo` and `auth` services.
Running Crewtavo on your own server instead? See [Self-host with Docker](https://crewtavo.com/docs/hosting/docker/#on-a-server-with-your-own-domain).
Source: https://crewtavo.com/docs/hosting/own-domain/ (last updated 2026-10-20)
---
# How Crewtavo updates
> On Railway, Crewtavo updates itself within hours of a new version, with no downtime. How to check your version, choose when updates install, or stay on one.
On Railway, Crewtavo keeps itself up to date. When a new version comes out, Railway installs it within several hours, and Railway notifies your workspace's admins after each update.
## No downtime
The new version starts next to the old one, updates the database, and takes over only once it's working. If something goes wrong, the old one keeps running. Your data is safe either way: each database update finishes completely or not at all.
The database service (`db`) gets a new version only when its setup changes. That happens overnight, between 02:00 and 06:00 UTC, and it's down for about a minute while it restarts.
Every new version installs itself, big ones included. The one exception is a move to a new major version of Postgres, which has to convert your data first. Its release notes will say what to do.
## Check your version
Open your Crewtavo's address with `/api/health` on the end, like `https://crm.yourbusiness.com/api/health`.
## Change when updates install
In Railway, open the **crewtavo** service, then **Settings → Source → Configure auto updates**. You can change when updates install there, or turn them off.
To stay on one version, change the image there from `ghcr.io/jviars/crewtavo:latest` to that version, such as `ghcr.io/jviars/crewtavo:0.2.0`.
## With Docker
Get the new version with `git pull` in the Crewtavo folder, then run `npm run instance` again. See [Self-host with Docker](https://crewtavo.com/docs/hosting/docker/).
Source: https://crewtavo.com/docs/hosting/updates/ (last updated 2026-10-18)
---
# Back up and export your data
> Your data lives in your own database. Back it up with Railway's volume backups (Pro plan) or Docker volumes, download everything as one .zip from Settings → Your data, or download single lists as spreadsheets.
Your Crewtavo's data lives in its own database and file storage, in your account. Nobody else holds a copy, Crewtavo the project included, so backups are yours to keep.
## On Railway
Railway backs up volumes on its **Pro plan**. To turn backups on, open your Crewtavo project in Railway, open the volume on the `db` service (your database) and the one on the `storage` service (photos and documents), then open **Backups** on each.
On the trial and Hobby plans, Railway doesn't offer volume backups. Download your important lists regularly instead (below).
### Files in a bucket aren't backed up
Railway never backs up storage buckets, on any plan. If your photos and files are in a bucket (installing [Drive](https://crewtavo.com/docs/connections/drive/) puts them there, or **Move files to a bucket** under **Settings → Hosting**), the storage volume's backups only cover files from before the move. A file deleted from a bucket is gone for good. Keep a copy of your own of anything you can't lose. See [Move files to a bucket](https://crewtavo.com/docs/hosting/storage/#move-files-to-a-bucket).
## With Docker
Your data is in two Docker volumes:
- `crewtavo-instance_db-data`: the database
- `crewtavo-instance_storage-data`: photos and documents
Back up both, along with the `.env.instance` file. The database is locked with the secrets in that file, so a backup without it can't be opened. With Docker, files always stay on the storage volume: moving them to a bucket is only for Crewtavos on Railway.
## The Trash
Whatever someone deletes in Crewtavo, from a plan to a visit photo or a receipt, waits in the Trash for 30 days first, on any plan and wherever your files are kept. Restore it from there if it was a mistake. See [The Trash](https://crewtavo.com/docs/connections/drive/#the-trash).
## Download all your data
An owner can download everything the business keeps in Crewtavo as one .zip file, on any plan, to keep as a copy or to take to another app. It opens on any computer, with nothing to install.
1. Open **Settings → Your data**.
2. Under **Download all your data**, choose **Download all your data**.
3. Keep the page open while the button shows its progress, like "Reading clients…". The .zip then downloads.
Inside are:
- **Spreadsheets** (`spreadsheets/`): a CSV of each kind of record, for Excel, Google Sheets, Numbers or another app's import. There's one each for clients, client contacts, properties, requests, quotes and their lines, jobs and their lines, visits, invoices and their lines, payments, expenses, the price list, the team, crews, timesheets, equipment and its log, and subcontractors. They're saved as UTF-8, so Excel shows names and accents correctly. Records name each other the way you do (the client, Job #12) and end with IDs that match from one spreadsheet to the next.
- **Files ready for Jobber** (`jobber/`): your clients, quotes, jobs and invoices laid out the way Jobber's imports read them, with a READ ME on bringing them in.
- A `READ ME.txt` saying what's where.
Photos, signed documents and messages aren't in it yet.
:::caution
It includes pay rates and subcontractors' details, so keep it somewhere safe.
:::
### Move to Jobber
1. Download your data and unzip it.
2. Open the `jobber` folder and read its READ ME.
3. In Jobber, as an admin, import the files in their numbered order: clients (with their properties), then quotes, jobs and invoices.
Jobber's imports don't take payments, a job's line items, or lost quotes. The READ ME says what comes in differently, and the spreadsheets keep all of it.
## Download your lists
You can download records as spreadsheets (CSV) any time, on any plan:
- **Clients:** **More actions → Download as spreadsheet** (**Import and export** for people who don't see invoices).
- **Price list:** **Settings → Price list → Download**.
- **Invoices**, **Timesheets** and Stripe **Deposits:** **Download as spreadsheet** in the page's menu.
- **Finance** and **Metrics:** the **Download** button under each table, and above the payments list on **Finance → Payments**.
- **Pay:** **Download** on **Timesheets → Pay**.
- **Subcontractors:** **Download CSV** on **Year-end totals** and on **Workers' comp audit**.
A spreadsheet is a copy of the records, not a full backup: it doesn't include photos or the history behind each record.
Source: https://crewtavo.com/docs/hosting/backups/ (last updated 2026-11-04)
---
# Self-host with Docker
> Run Crewtavo on your own computer or server with Docker and one command. The same five services as on Railway, with your data in Docker volumes.
Crewtavo runs anywhere Docker does: a laptop, an office server or a rented server (VPS). It's the same five services the Railway template creates. This page is for whoever looks after the server; most businesses are better off [on Railway](https://crewtavo.com/docs/getting-started/set-up-on-railway/).
## What you need
- [Docker](https://docs.docker.com/get-docker/)
- [Node.js](https://nodejs.org) 20 or newer, only to generate the secrets and start Docker
## Start it
```bash
git clone https://github.com/jviars/crewtavo.git
cd crewtavo
npm run instance
```
The first run writes `.env.instance` with new secrets, builds Crewtavo, starts everything and prints the address: `http://localhost:8080`. Open it and [create the owner account](https://crewtavo.com/docs/getting-started/first-sign-in/).
:::danger[Keep .env.instance]
The database is locked with the secrets in `.env.instance`. Without that file, your data can't be opened.
:::
## Day to day
```bash
npm run instance -- logs # follow what's happening
npm run instance -- stop # stop it; the data stays in Docker volumes
npm run instance # start again, or update after a git pull
docker compose --env-file .env.instance down -v # delete the instance and all its data
```
To update, run `git pull` in the Crewtavo folder, then `npm run instance` again.
## On a server with your own domain
**Settings → Web address** walks you through these steps with your domain filled in, and checks each one.
1. Point a DNS record for your domain (say `ops.example.com`) at the server.
2. In `.env.instance`, set `APP_URL=https://ops.example.com`, then run `npm run instance` again.
3. Put a web server with HTTPS in front of port 8080, on the same server. With [Caddy](https://caddyserver.com), this whole `Caddyfile` gets a certificate and forwards everything:
```
ops.example.com {
reverse_proxy localhost:8080
}
```
Port 8080 only answers on the server itself (`CREWTAVO_BIND`, `127.0.0.1` by default), so visitors come in through the web server.
## Visitors' addresses
Public pages (booking forms, promo codes, Client Hub payments and messages, sign-in links, the first-run setup) limit how often each visitor can use them, by the visitor's address. Crewtavo only trusts the address its own proxy sets:
- **Caddy** adds each visitor's address to `X-Forwarded-For`, which is what Crewtavo reads. Nothing to change.
- **nginx** needs `proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;`.
- **A web server on another machine:** set `CREWTAVO_BIND` to this server's address on the private network between them, not `0.0.0.0`.
- **No web server**, trying Crewtavo from other computers on your network: set `CREWTAVO_BIND=0.0.0.0` and `CREWTAVO_VISITOR_IP=connection`.
- **Something else in front**, like Cloudflare's proxy before Caddy: set `CREWTAVO_VISITOR_IP`. See [Behind other proxies](https://crewtavo.com/docs/hosting/settings/#behind-other-proxies).
## Backups
Back up the `crewtavo-instance_db-data` and `crewtavo-instance_storage-data` Docker volumes, and `.env.instance`. See [Back up and export your data](https://crewtavo.com/docs/hosting/backups/).
## Optional features
Texting, online payments, maps, AI and accounting each take a key or two in `.env.instance`. See [Optional settings](https://crewtavo.com/docs/hosting/settings/).
Source: https://crewtavo.com/docs/hosting/docker/ (last updated 2026-10-18)
---
# Optional settings
> Every variable that turns on an extra Crewtavo feature, such as texting, maps, accounting, AI, Google Drive import or error tracking, and where to add it on Railway or with Docker.
Everything a Crewtavo needs to run is generated when it's set up. These variables turn on extra features.
**Where to add them:** on Railway, open the **crewtavo** service, then **Variables**, and deploy the change when Railway asks. With Docker, add them to `.env.instance` and run `npm run instance` again. (`.env.example` in the source code lists most of them.)
## Features
| Variable | Turns on |
| --- | --- |
| `APP_URL` | Your own domain. **Settings → Web address** sets it for you on Railway. See [Use your own domain](https://crewtavo.com/docs/hosting/own-domain/). |
| `RESEND_API_KEY`, `EMAIL_FROM` | Optional default sender through Resend, used until a company connects its own email. Most businesses connect Resend under **Settings → Email** instead. See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/). |
| `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, `TWILIO_FROM_NUMBER` | Text messages through Twilio, from one number for every business on the server. All three are needed. See [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/), and for two-way texting, [Texting replies](#texting-replies). |
| `GOOGLE_MAPS_BROWSER_KEY` | Google satellite as a map choice on **Measure** for every business on the server. Measure works without it on free imagery, and each business can add its own key in **Settings → Maps**. Turn on the Map Tiles API and restrict the key to it and to your domain. See [Map imagery for measuring](https://crewtavo.com/docs/connections/map-imagery/). |
| `GOOGLE_MAPS_SERVER_KEY` | Roof pitch suggestions (Google's Solar API). Restrict the key to the Solar API. |
| `ANTHROPIC_API_KEY` (and optionally `AI_MODEL`) | AI writing help and **Ask** in the knowledge base, for every business on the server. Not needed: each business can add its own key under **Apps → Claude** instead, which wins when both are there. See [Ask a question](https://crewtavo.com/docs/team/knowledge-base/#ask-a-question). |
| `QUICKBOOKS_CLIENT_ID`, `QUICKBOOKS_CLIENT_SECRET`, `QUICKBOOKS_ENVIRONMENT` | An Intuit app for QuickBooks Online, set up on the server. Not needed: each business pastes its own app's keys under **Apps → QuickBooks Online** instead, which wins when both are there. See [Sync with QuickBooks Online](https://crewtavo.com/docs/connections/quickbooks/). |
| `ZOHO_CLIENT_ID`, `ZOHO_CLIENT_SECRET`, `ZOHO_ACCOUNTS_URL` | A Zoho app for Zoho Books, set up on the server. Not needed: each business pastes its own app's keys under **Apps → Zoho Books** instead, which wins when both are there. See [Sync with Zoho Books](https://crewtavo.com/docs/connections/zoho-books/). |
| `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` | Google sign-in for Google Calendar: pick calendars from a Google account, and put visits on a calendar Crewtavo makes within minutes. See [Google Calendar](#google-calendar). Not needed for most businesses: without these, Google Calendar works by secret address both ways, with nothing to set up. See [Google Calendar and other calendars](https://crewtavo.com/docs/connections/google-calendar/). |
| `GOOGLE_PICKER_API_KEY` | **Import from Google Drive** in Drive, together with `GOOGLE_CLIENT_ID` (the secret isn't needed for it). A browser key restricted to the Google Picker API, your domain and `https://docs.google.com/*`. See [Import from Google Drive](https://crewtavo.com/docs/connections/drive/#set-it-up). |
| `TURNSTILE_SITE_KEY`, `TURNSTILE_SECRET_KEY` | Bot protection on public booking and referral forms (Cloudflare Turnstile). |
| `CREWTAVO_SENTRY_DSN` | Error tracking. See [Error tracking](#error-tracking). |
## Advanced
| Variable | What it's for |
| --- | --- |
| `ENCRYPTION_KEY` | A separate key for encrypting app tokens and signing client links: 32 or more random bytes in base64, or any 32 or more characters. Without it, one is derived from the instance's secret. **Keep it the same once set**: changing it disconnects every app and breaks links already sent to clients. |
| `STRIPE_SECRET_KEY`, `STRIPE_WEBHOOK_SECRET` | Not needed for most businesses: [connect Stripe on the Apps page](https://crewtavo.com/docs/connections/stripe/) instead. These share one Stripe account with every business on the server that hasn't connected its own, and need a Stripe webhook pointed at `https://your-domain/api/webhooks/stripe`; the [deployment guide](https://github.com/jviars/crewtavo/blob/main/docs/deploy.md#optional-settings) lists its API version and events. |
| `CREWTAVO_SCHEDULER` | Set to `off` on extra copies of the `crewtavo` service, so background tasks run in one place. |
| `CREWTAVO_VISITOR_IP` | Where visitors' addresses come from, when something other than Railway or one web server is in front. See [Behind other proxies](#behind-other-proxies). |
| `CREWTAVO_BIND` | Docker only: the address port 8080 answers on. Defaults to `127.0.0.1`, the server itself. |
| `CREWTAVO_SENTRY_WEB_DSN` | Send the web app's errors to a separate Sentry project. Defaults to `CREWTAVO_SENTRY_DSN`. |
| `CREWTAVO_SENTRY_ENVIRONMENT` | The environment shown on each error report, such as `staging`. Defaults to `production`. |
## Texting replies
For two-way texting, set your Twilio number's **Messaging Configuration → A message comes in** webhook to `https://your-domain/api/webhooks/twilio` (HTTP POST). `APP_URL` must match that address exactly, because Twilio signs the full address. After a switch to your own domain, the old address keeps working too.
A reply then appears in **Messages**, in the conversation of the client whose **Phone** matches the number it came from, and owners, admins and office staff get a notification. A text from a number that isn't on any client is dropped. The full setup, with A2P 10DLC registration and troubleshooting, is in [Text clients with Twilio](https://crewtavo.com/docs/connections/texting-with-twilio/).
## Google Calendar
Optional: Google Calendar already works without this, by secret address (see [Google Calendar and other calendars](https://crewtavo.com/docs/connections/google-calendar/)). Google sign-in adds picking calendars from the account and visits that reach Google within minutes.
1. In Google Cloud, create a project and turn on the **Google Calendar API**.
2. In **Google Auth Platform**, fill in **Branding**. Under **Data access**, add the scopes `calendar.calendarlist.readonly`, `calendar.events.readonly` and `calendar.app.created`.
3. Under **Clients**, create a **Web application** client whose redirect address is the one shown on the Google Calendar page under **Apps**: `https://your-domain/api/apps/google_calendar/callback`. Set its ID and secret as `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET`.
4. Under **Audience**, choose **Publish app**. While the app is in **Testing**, Google ends every sign-in after 7 days and Google Calendar disconnects a week after it's connected. On Google Workspace you can choose **Internal** instead, for people in your organization only.
Until Google verifies the app, people see a "Google hasn't verified this app" screen when they connect. They choose **Advanced**, then **Go to** your app, to continue. Up to 100 people can connect to an unverified app.
## Error tracking
Set `CREWTAVO_SENTRY_DSN` to a project's DSN from [Sentry](https://sentry.io) (**Project Settings → Client Keys**). A self-hosted [GlitchTip](https://glitchtip.com), or any other Sentry-compatible service, works the same way.
Reports are errors only: no performance tracing, session tracking or replays. Personal data is removed before anything leaves the server or the browser:
- request bodies, cookies, query strings and headers (except the browser's User-Agent) are never sent;
- no user is attached: no email, IP address or account ID;
- email addresses, phone numbers, sign-in tokens and client links are masked.
Nothing is collected until the variable is set. You can also turn on **Prevent Storing of IP Addresses** in the Sentry project's security settings.
## Behind other proxies
Crewtavo limits how often each visitor can use public pages, by the visitor's address, so it only trusts the address its own proxy sets. On Railway that's automatic, and with Docker behind one web server see [Visitors' addresses](https://crewtavo.com/docs/hosting/docker/#visitors-addresses). With something else in front, set `CREWTAVO_VISITOR_IP`:
| Value | When |
| --- | --- |
| `x-forwarded-for:2` | Two proxies add to `X-Forwarded-For`, such as Cloudflare's proxy in front of Caddy. List Cloudflare's addresses in Caddy's `trusted_proxies`. The number counts the proxies. |
| `cf-connecting-ip`, `x-real-ip` (or another header) | The proxy in front sets this header to the visitor's address, replacing any the visitor sent. |
| `connection` | Nothing is in front: use the address each connection comes from. |
Once set, it's believed on every connection, so nothing may reach Crewtavo without going through those proxies. Keep port 8080 on the server, and let the web server take connections only from the proxy in front of it. For Cloudflare, allow only [Cloudflare's addresses](https://www.cloudflare.com/ips/) in the server's firewall. Caddy with `x-forwarded-for:2` doesn't need the firewall rule, since it replaces the `X-Forwarded-For` of anyone outside `trusted_proxies`.
Source: https://crewtavo.com/docs/hosting/settings/ (last updated 2026-11-02)
---
# Manage storage space
> See how much room photos and files take in Settings → Storage, set the company's storage limit and limits for people, and on Railway, move files from the volume to a cheaper bucket.
Every photo and file in Crewtavo takes up room: plans, visit photos, receipts, résumés, what's in the Trash. **Settings → Storage** shows how much room they take and who's using it, and sets a limit so Crewtavo never runs out of room or runs up Railway's bill by surprise. On Railway, **Settings → Hosting** also lets you move your files to a bucket, which costs a tenth as much.
## See what's using space
Open **Settings → Storage**. Owners see it, and so do admins whose role can change settings.
- **Storage** at the top: how much your photos and files take up, against your limit, and how many files there are. The bar shows what's **In use** and what's **In the Trash**. Files in the Trash still take up room until they're deleted for good. On Railway, it also shows whether files are on the **Volume** or in a **Bucket**, and what Railway charges a month for what's stored now.
- **Who's using it:** what each person added that's still in use, and their limit if they have one. Files nobody in particular added, like booking form uploads, are at the end.
- **By area:** what each part of Crewtavo holds, such as **Drive and plan files**, **Visit photos** or **Receipts**.
Everyone who uses Drive also sees the company's total under Drive's title. See [Keep every file in one place with Drive](https://crewtavo.com/docs/connections/drive/).
## Set the company's limit
Under **Limit**, choose one:
- **Default:** a size Crewtavo picks for where your files are kept (see below). It's the starting choice.
- **No limit:** uploads are never turned away for space. Keep an eye on Railway's bill, and on how full the volume is if your files are on one.
- **Custom:** a size of your own, in GB.
Then choose **Save limit**. On Railway, the page says what storage would cost a month if files filled the limit you chose.
The default stops a little short of what Railway allows:
| Where your files are | Default limit |
| --- | --- |
| On the storage volume (Railway) | 90% of the volume's size: 4.5 GB of the Hobby plan's 5 GB volume. If you make the volume bigger in Railway, the default grows with it. |
| In a bucket, on Railway's Hobby plan | 900 GB. Hobby's buckets hold 1 TB across your whole Railway workspace, so this leaves room for your other projects. |
| In a bucket, on Railway's Pro plan | 1 TB. Pro doesn't cap buckets, so this is a safety net: 1 TB costs about $15 a month. |
| Not on Railway, or Railway not connected | No default limit. Choose **Custom** to set one. |
A GB here is a billion bytes, the way Railway counts it.
:::caution
On a volume, a **Custom** limit bigger than the volume doesn't help: files stop when the volume is full, whatever the limit. Make the volume bigger in Railway first, or [move your files to a bucket](#move-files-to-a-bucket).
:::
## Warnings before it's full
When your files reach **80%** and then **95%** of the limit, owners and admins get a notification in the bell, an email and a push to their phone. They also get one when storage is full. Each warning is sent once. If use drops back under, because the Trash was emptied or the limit raised, it's sent again the next time it's reached.
To change how these reach you, go to **Settings → Profile → Notifications**. On Railway they're under **Railway**; anywhere else, under **Storage**.
## What happens when storage is full
Crewtavo checks each upload's size before it's stored. Once the limit is reached, it turns away new files in Drive and on plans, guide covers, résumés, chat pictures and equipment photos, including files copied from Google Drive. The person sees why, like "This 240 MB file doesn't fit: 44.9 GB of the 45 GB storage limit is used." Owners and admins also get an **Open storage settings** button.
Crews can always finish a job. These always go in, even when storage is full (they still count toward it):
- visit photos, quote photos, ticket photos and Measure pictures
- receipts and sub paperwork
- files sent through a booking form or a one-time upload link
- profile photos, your logo, letterheads, and package and price list pictures
To make room, raise the limit, or [empty the Trash](https://crewtavo.com/docs/connections/drive/#the-trash). Either one counts straight away.
## Limits for people and roles
An owner can give a person a storage limit of their own, so one person can't fill the company's space.
1. Open **Settings → Storage** and find the person under **Who's using it**.
2. Choose **Set limit…** (or **Change…**).
3. Choose **Limit**, type a size in GB, and choose **Save**.
To give everyone with a role the same limit, use **By role** further down. A person's own limit wins over their role's, and a custom role's limit wins over its access level's. Owners are never limited.
A person's limit counts the files they added that aren't in the Trash, so moving old files to the Trash frees up their room. It only turns away what they add to Drive and plans (Google Drive imports too) and guide covers. Everything else still goes in, as long as the company has room. Drive shows them how much of their own space they've used.
## Move files to a bucket
On Railway, photos and files start on the **storage** service's volume. A Railway storage bucket is a cheaper place to keep them. It costs a tenth as much for each GB, and it grows as it fills, so it never runs out of room. [Installing Drive](https://crewtavo.com/docs/connections/drive/#on-railway-install-makes-a-bucket-first) moves your files to a bucket for you. Otherwise, an owner or admin can do it any time:
1. Open **Settings → Hosting** and find **Files storage**. It says where your photos and files are now, with a **Volume** or **Bucket** tag.
2. Choose **Move files to a bucket**. Read what it does and costs, then choose **Move files**.
Crewtavo makes a bucket called `files` in your Railway project and copies every photo and file into it. It skips anything already there, then catches up on files added meanwhile. Once every file is there and checked, it switches storage over to the bucket and restarts it, which takes about a minute. Uploads pause for that minute and ask people to try again in a minute. Opening files keeps working. Then Crewtavo checks files open from the bucket.
**Files storage** shows each step and how many files are copied. You can leave the page: Crewtavo carries on by itself. If Crewtavo restarts partway, for an update say, the move carries on from where it was the next time an owner or admin opens **Settings → Hosting**.
**Your volume isn't touched.** It keeps every file from before the move, so you can move back any time. Railway keeps charging for what's on it, though. Once you're sure you won't move back, delete the volume in Railway to stop paying for it: open the **storage** service, then the volume, then **Settings**.
:::note
Railway's trial doesn't include buckets. If Railway says no, choose a plan on Railway first, then try again.
:::
### What a bucket costs
| | Per GB a month |
| --- | --- |
| On the volume | $0.15 |
| In a bucket | $0.015 |
Railway also counts files sent into a bucket as outbound traffic, at $0.05 per GB. So the move costs that once, for what you have now, and new uploads count the same way. For 4 GB of files, for example, the move costs about $0.20 once, and keeping them costs about $0.06 a month instead of $0.60. Before you start, the move's dialog shows these figures for your own files. Once your files are in the bucket, **Settings → Hosting** adds it to the month. See [What Railway costs](https://crewtavo.com/docs/hosting/railway-costs/).
### Railway doesn't back up buckets
Railway backs up volumes on its Pro plan, but it never backs up buckets. A file deleted from a bucket is gone for good. Crewtavo's Trash keeps deleted files for 30 days, so mistakes can be undone. For anything you can't lose, keep a copy of your own too. See [Back up and export your data](https://crewtavo.com/docs/hosting/backups/).
### When Railway says no
Railway sometimes doesn't let Crewtavo do a step itself, with a Railway sign-in that can't change the project. Then **Files storage** lists the steps to do in Railway instead, like adding the `files` bucket or pasting the variables it shows (**Copy the variables** copies them). Choose **Open Railway**, do the steps, then come back and choose **Carry on**. Some steps Crewtavo notices on its own, and it carries on by itself.
With a project token, Railway doesn't let Crewtavo make or read the bucket at all, and the move stops with **Railway said: Bad Access**. Choose **Remove access** at the bottom of **Settings → Hosting**, then **Log in with Railway**, and choose **Try again**. Logging in with Railway lets Crewtavo do every step itself. See [Railway didn't accept the sign-in](https://crewtavo.com/docs/troubleshooting/railway-sign-in/).
### Move back to the volume
1. In **Settings → Hosting → Files storage**, choose **Move back to the volume**.
2. Choose **Move back**.
Crewtavo switches storage back to the volume, which still has every file from before the move, and restarts it (about a minute). Then it copies back the files added since the move. Until each one is back, it doesn't open. If the volume might be too small for them, the dialog says so: make it bigger in Railway first.
The bucket keeps its copy. Once you're sure everything opens, delete the bucket in Railway to stop paying for it.
Source: https://crewtavo.com/docs/hosting/storage/ (last updated 2026-11-02)
---
# The guided setup didn't finish
> What each message on crewtavo.com/start means, from "You cancelled on Railway's page" to "The setup didn't finish", and what to do next.
If the guided setup at [crewtavo.com/start](https://crewtavo.com/start/) stops, it shows one of these messages. Find yours below.
## "You cancelled on Railway's page, so nothing was set up."
You chose not to authorize on Railway's screen. Nothing was created. Start again from [Get started](https://crewtavo.com/start/) whenever you like.
## "That setup link expired."
The sign-in with Railway timed out before the setup started. Start again from [Get started](https://crewtavo.com/start/): it only takes a minute.
## "Railway didn't share a workspace with Crewtavo."
On Railway's approval screen, a workspace has to be picked for Crewtavo to go in. Start again and pick your workspace on that screen before choosing **Authorize**.
## "Railway didn't finish signing you in."
Railway's sign-in stopped partway. Start again from [Get started](https://crewtavo.com/start/).
## "Railway couldn't start the setup."
Railway refused to create the project. Try again. If it happens twice, deploy the [Crewtavo template](https://railway.com/deploy/crewtavo?referralCode=pQ_v0d) from Railway's own page instead: press **Deploy**, then open the address on the **crewtavo** service when it's done.
## "Something went wrong on our side."
The setup itself hit an error. Try again, or use the [Crewtavo template](https://railway.com/deploy/crewtavo?referralCode=pQ_v0d) on Railway's page instead.
## "The setup didn't finish": "Railway couldn't create your Crewtavo."
The project was started in Railway, but creating it failed there. Choose **Open Railway** on that screen to see what happened, or **Start again**.
## "The setup took longer than Railway lets us follow along."
The setup can only follow along for an hour. Your Crewtavo may still be starting: sign in to Railway, open the project called **Crewtavo**, and click the **crewtavo** box to find its address. See [Find your Crewtavo's address](https://crewtavo.com/docs/troubleshooting/find-your-address/).
## It's taking a long time
Two notes can appear on the progress screen while it's still working:
- **"One part is taking a few tries to start."** Railway usually sorts this out by itself. Keep waiting.
- **"This is taking longer than usual."** You can keep waiting, or choose **check on it in Railway**. Once it's running, the address shows **Crewtavo is starting up** while it prepares the database; that page moves on by itself.
## Railway's "Not Found" page: "The train has not arrived at the station"
Railway can take a minute or two to switch on a brand-new address. The ready screen waits until your Crewtavo's address opens in your browser before taking you there, and after two minutes it opens it anyway, with a note saying Railway is still switching it on. If you land on this page, your Crewtavo is fine: wait a minute and refresh the page. Don't choose **Go to Railway** and start again. The address is on the ready screen, and in Railway on the **crewtavo** box (see [Find your Crewtavo's address](https://crewtavo.com/docs/troubleshooting/find-your-address/)).
## "No setup in progress"
The progress page was opened in a browser that isn't running a setup, for example on another device. If you set one up in this browser before, the page links to it. Otherwise, find it in Railway: see [Find your Crewtavo's address](https://crewtavo.com/docs/troubleshooting/find-your-address/).
Source: https://crewtavo.com/docs/troubleshooting/setup-did-not-finish/ (last updated 2026-10-20)
---
# "Finish setting up Crewtavo" or "Crewtavo is starting up"
> What each message on your Crewtavo's setup screen means, such as "Crewtavo can't reach its database", and the steps to fix it on Railway or Docker.
Instead of an error, your Crewtavo's address shows a setup screen when something isn't ready. It checks again by itself and goes away once everything is running, or you can choose **Check again**. Find the message you see below.
Most fixes happen in your project on Railway: sign in to [Railway](https://railway.com), open the project called **Crewtavo**, and click a service's box to open it.
## "Crewtavo is starting up"
Nothing is wrong. It's setting up its database, and the first start takes a minute or two. The page moves on by itself.
## "The database or one of its helper services didn't start in time."
1. In Railway, check that every service (`db`, `auth`, `rest`, `storage`) says **Active**. If one has crashed, open it and choose **Redeploy**.
2. Then open the **crewtavo** service and choose **Redeploy**.
With Docker: in the Crewtavo folder, run `docker compose --env-file .env.instance ps` to see what's running, then `npm run instance` to start anything that stopped.
## "Crewtavo can't reach its database."
Same fix as above: check every service is **Active**, redeploy any that crashed, then redeploy **crewtavo**.
## "Crewtavo can't reach its sign-in and data services."
Same fix: check that `auth`, `rest` and `storage` are **Active**, redeploy any that crashed, then redeploy **crewtavo**.
## "Crewtavo couldn't sign in to its database."
The database password was changed after the first start.
1. In Railway, open the **db** service's **Variables** and put back the original `POSTGRES_PASSWORD`. The other services read it from there.
2. Redeploy the **crewtavo** service.
With Docker: put the original `POSTGRES_PASSWORD` back in `.env.instance`, then run `npm run instance` again.
## "The database address Crewtavo was given isn't valid."
1. On the **crewtavo** service, open **Variables** and check `SUPABASE_DB_URL`. The template sets it; if it was edited, put the template's value back.
2. Redeploy the **crewtavo** service.
With Docker: the template's value is in `docker-compose.yml`.
## "Crewtavo's keys don't match its services."
Every service has to use the same `JWT_SECRET`. Make sure it matches on all of them, then redeploy them.
## "The database hasn't been set up yet."
Redeploy the **crewtavo** service. It sets up the database when it starts.
## "Crewtavo is running on its own, without its database and the services that come with it."
Only the app was deployed, not the rest of Crewtavo. Deploy Crewtavo with its [Railway template](https://railway.com/deploy/crewtavo?referralCode=pQ_v0d), which includes everything, or run `npm run instance` in the Crewtavo folder to start all five services with Docker.
## "Setting up the database failed."
This is a problem in Crewtavo itself, not in anything you did. The screen shows a short error message: send it to us in a [GitHub issue](https://github.com/jviars/crewtavo/issues). Once it's fixed, redeploy. Your data is safe: each step either finishes completely or not at all.
Source: https://crewtavo.com/docs/troubleshooting/finish-setting-up/ (last updated 2026-10-18)
---
# Find your Crewtavo's address
> Lost the address where you sign in? Find it in Railway, on the crewtavo service in the project called Crewtavo.
Your Crewtavo has its own address, like `crewtavo-production-1a2b.up.railway.app`, or your own domain if you've set one up. If you've lost it:
1. Sign in to [Railway](https://railway.com) with the account you used for the setup.
2. Open the project called **Crewtavo**.
3. Click the **crewtavo** box. The address is at the top.
Bookmark it and share it with your team. Everyone signs in at the same address.
:::tip
If you used the guided setup in this browser, [the setup page](https://crewtavo.com/start/) also links back to the Crewtavo you set up here.
:::
Can't find a project called Crewtavo? Check you're in the right Railway workspace. If you renamed the project, look for one with five services: `crewtavo`, `db`, `auth`, `rest` and `storage`.
Source: https://crewtavo.com/docs/troubleshooting/find-your-address/ (last updated 2026-10-18)
---
# Emails aren't arriving
> Why quotes, invoices or team invites aren't reaching inboxes, and how to fix it. On Railway's trial and Hobby plans, connect Resend under Settings → Email.
If quotes, invoices, reminders or team invitations aren't arriving, work down this list.
## 1. Is email set up at all?
Until email is set up, Crewtavo can't send any. A team invite that says **Invite ready** instead of **Invite sent** is a sign email isn't connected yet. See [Send email from Crewtavo](https://crewtavo.com/docs/connections/email/).
## 2. On Railway's trial or Hobby plan? Use Resend
Railway blocks outgoing mail servers (SMTP) on its trial and Hobby plans, so a mailbox (Gmail, Zoho and so on) can't send from there. Connect Resend instead: open **Settings → Email**, choose **Resend** (it's marked **Recommended**) and follow the steps on the screen. See [Connect Resend](https://crewtavo.com/docs/connections/email/#connect-resend-recommended).
## 3. Using Resend? Check what Settings → Email says
Open **Settings → Email**. If it shows **Needs attention**, the message under **Emails aren't going out** says what Resend refused and what to change. The usual causes:
- **The domain isn't verified.** **Send from** has to be an address on a domain that Resend shows as **Verified**. If it's still pending, finish adding its DNS records where your domain is managed.
- **The API key is limited to another domain.** A message like "This Resend API key can only send from a different domain" means the key was made for one domain only. Create a new key with **Sending access** for all domains and press **Connect again**.
- **The daily limit was reached.** Resend's free plan sends 100 emails a day; sending starts again after midnight UTC.
See [If Resend refuses the connection](https://crewtavo.com/docs/connections/email/#if-resend-refuses-the-connection) for the full list.
## 4. Using your own mailbox? Reconnect it
Open **Settings → Email** and connect the mailbox again. Crewtavo signs in and sends you a test before saving, so you'll know straight away whether it works. If it doesn't, make a new app password with your email provider: the screen links to where each provider makes one.
## 5. Still nothing? Check spam
Ask the person to look in their spam or junk folder, and to mark the message as not spam. Email from a domain that's new to sending often lands there at first.
Source: https://crewtavo.com/docs/troubleshooting/email-not-arriving/ (last updated 2026-10-19)
---
# Crewtavo stopped after the Railway trial
> Railway stops your Crewtavo when the free trial credit runs out. Add a card and choose the Hobby plan to bring it back before trial data is deleted.
Railway's free trial lasts 30 days or $5 of usage, whichever comes first. When it runs out, Railway stops your Crewtavo, and your address stops answering. Railway deletes trial data 30 days after that, so act soon.
## Bring it back
1. Sign in to [Railway](https://railway.com).
2. Add a card and choose the **Hobby** plan: $5 a month, including $5 of usage. See [What Railway costs](https://crewtavo.com/docs/hosting/railway-costs/).
3. Open the project called **Crewtavo**. If its services don't start again on their own, open each stopped service and choose **Redeploy**, starting with `db`.
4. Open your address. If it shows **Crewtavo is starting up**, give it a minute. See [Finish setting up Crewtavo](https://crewtavo.com/docs/troubleshooting/finish-setting-up/) if it stays on a setup screen.
## Next time
Choose the Hobby plan before the trial ends, and Crewtavo keeps running without a break. With Railway connected, Crewtavo reminds the owner and admins 7, 3 and 1 days before the trial ends, and when its credit is nearly used up, with a button that opens Railway's plans. See [What Railway costs](https://crewtavo.com/docs/hosting/railway-costs/#warnings-before-crewtavo-stops).
Source: https://crewtavo.com/docs/troubleshooting/trial-ended/ (last updated 2026-10-20)
---
# Railway didn't accept the sign-in
> If Settings → Hosting says "Railway didn't accept the sign-in (invalid_client)", press Log in with Railway again, or connect with a project token instead.
Crewtavo reads your Railway costs, sets up your web address and makes a bucket for your files through its connection to Railway. If **Settings → Hosting** says **Railway isn't connected** with:
> Railway didn't accept the sign-in (invalid_client). Try logging in with Railway again.
then Railway has stopped taking the sign-in Crewtavo registered with it. Railway may have removed it, or it may no longer match.
## Log in with Railway again
Since Crewtavo 0.4.2, a sign-in Railway turns down is forgotten. The next try registers a new one.
1. Open **Settings → Hosting**. It shows **Connect Railway again**.
2. Choose **Log in with Railway**, and choose **Authorize** on Railway's screen.
If it shows the same message once more, press **Log in with Railway** one more time. A sign-in that failed before your Crewtavo updated to 0.4.2 is forgotten on the next try, and the try after that works. See [How Crewtavo updates](https://crewtavo.com/docs/hosting/updates/).
## Use a project token instead
If logging in still doesn't work, connect with a project token:
1. On **Settings → Hosting**, open **Can't log in with Railway?**.
2. In your Railway project, open **Settings**, then **Tokens** (**Open Tokens** takes you there).
3. Make a new token. Any name works, like Crewtavo. Pick the environment Crewtavo runs in, usually **production**.
4. Copy the token, paste it under **Project token**, and choose **Connect**.
A project token shows your costs and warnings, and sets up your web address, just like logging in. But Railway doesn't let a project token make or read a storage bucket, so [moving files to a bucket](https://crewtavo.com/docs/hosting/storage/#move-files-to-a-bucket) or [installing Drive](https://crewtavo.com/docs/connections/drive/#on-railway-install-makes-a-bucket-first) stops with **Railway said: Bad Access**. Switch to logging in for those: choose **Remove access** at the bottom of **Settings → Hosting**, then **Log in with Railway**, and try again.
Source: https://crewtavo.com/docs/troubleshooting/railway-sign-in/ (last updated 2026-11-02)
---
# Getting help
> Where to ask a question or report a bug when the docs don't answer it, what to include so it gets solved quickly, and how to report a security problem.
In Crewtavo, the **?** beside the bell opens **Help**: ask Claude or ChatGPT about the screen you're on, with its docs page attached, or open that page here. Start with the search at the top of this page: it covers every page of the docs. Using ChatGPT or Claude? Each page has **Copy page** and **Ask** buttons under its title, and [llms-full.txt](https://crewtavo.com/llms-full.txt) has all the docs in one file for your assistant.
If that doesn't answer it, ask us.
## Where to ask
- **Questions**, like how to do something: [ask in Discussions](https://github.com/jviars/crewtavo/discussions/categories/q-a). Anyone can answer, and the answer that worked gets marked, so the next person with the same question finds it.
- **Bugs**, when something's broken: [open an issue](https://github.com/jviars/crewtavo/issues/new/choose).
Crewtavo is free, so there's no promise of a reply, but everything is read. Both are public, so leave out client details, passwords and keys.
## What to include
The more of these you include, the faster it gets solved:
- **Where Crewtavo runs:** Railway (trial, Hobby or Pro plan) or your own server with Docker.
- **Your version:** open your Crewtavo's address with `/api/health` on the end, like `https://crm.yourbusiness.com/api/health`.
- **The exact message** you see, copied as text, or a screenshot.
- **What you did just before**, and what you expected to happen.
## Security problems
Found a way someone could see or change data they shouldn't? Don't open a public issue. Report it privately on GitHub: on the [Crewtavo repository](https://github.com/jviars/crewtavo), open **Security → Report a vulnerability**.
## Commercial licenses
Crewtavo is open source under the AGPL-3.0 license. If you want different terms, such as keeping your changes to Crewtavo private or putting your own brand in place of Crewtavo's, [ask about a commercial license](mailto:hello@crewtavo.com?subject=Crewtavo%20commercial%20license).
Source: https://crewtavo.com/docs/support/getting-help/ (last updated 2026-11-04)