FleetTracker Deployment Guide

Step-by-Step Setup for Nonprofit Organizations

Overview

This guide will walk you through deploying FleetTracker at your nonprofit organization. No coding experience required. If you can use Google Sheets and copy-paste, you can deploy this system.

Time Estimate

Prerequisites

💡 Tip: Set aside a dedicated block of time for setup. While each step is straightforward, interruptions can make it harder to track where you left off.

Step-by-Step Setup

1 Download the Template Files

Get the FleetTracker template package from the GitHub repository:

  1. Visit The Repo page for the template
  2. Click the green "Code" button → "Download ZIP"
  3. Extract the ZIP file to your computer

What's included:

  • FleetTracker.gs - The main Google Apps Script code
  • Master_Vehicle_List_Template.xlsx - Spreadsheet template for vehicle data
  • Form_Questions.txt - Suggested form fields and options
  • Drive_Structure.txt - Recommended folder organization

2 Create Your Master Vehicle List

This spreadsheet is the "source of truth" for your fleet. The script looks up vehicle details here when incidents are reported.

  1. Open Master_Vehicle_List_Template.xlsx in Excel or Google Sheets
  2. Fill in one row per vehicle with the following columns:
Column Description Example
License Plate Unique identifier (MUST match form dropdown) ABC-1234
Make Vehicle manufacturer and model Honda Civic
Year Model year 2020
Lease/Coverage Summary Ownership type, insurance carrier, policy # Owned / Full Coverage / State Farm #12345
VIN Vehicle Identification Number (optional but recommended) 1HGBH41JXMN109186
⚠️ CRITICAL: The License Plate column MUST use the exact same format you'll use in the Google Form. If you write "ABC-1234" here, don't use "ABC1234" (no dash) in the form.
  1. Upload the completed spreadsheet to Google Drive
  2. Right-click the file → Get link → Copy the Spreadsheet ID

The Spreadsheet ID is the long string in the URL:

https://docs.google.com/spreadsheets/d/1895NA95MNA054MA9590AJMT9401JM/edit

Save this ID - you'll need it in Step 5.

3 Set Up Your Drive Folder Structure

Organize your Drive to store vehicle documents and incident reports.

Recommended Structure:

📁 Fleet Management (Root Folder)
  ├── 📁 Vehicle ABC-1234 (Honda Civic)
  │   ├── 📄 Insurance Policy.pdf
  │   ├── 📄 Service - 2024-01-15.pdf
  │   └── 📄 Service - 2024-04-20.pdf
  │   (Incident folders will be auto-created here)
  │
  ├── 📁 Vehicle XYZ-5678 (Toyota Camry)
  │   ├── 📄 Lease Agreement.pdf
  │   └── 📄 Service - 2024-03-10.pdf
  │
  ├── 📁 New Vehicle Archive (for vehicles not yet mapped)
  │
  └── 📁 Form Upload Temp (temporary storage for form uploads)
                

Steps:

  1. Create a root folder (e.g., "Fleet Management")
  2. Inside it, create one folder per vehicle (name them clearly: "Vehicle ABC-1234 - Honda Civic")
  3. Create a folder called "New Vehicle Archive" (for incidents involving unlisted vehicles)
  4. Create a folder called "Form Upload Temp" (Google Forms uploads go here temporarily)

Get Folder IDs:

You'll need the Google Drive folder IDs for configuration. To find them:

  1. Open each folder in Google Drive
  2. Look at the URL in your browser
  3. Copy the ID from the URL:
https://drive.google.com/drive/folders/1A2-42ydOzwGw4qasaPfjw4_jlUdNR2ld
💡 Tip: Create a temporary text file to track folder IDs as you copy them. You'll need them in Step 5.

Required IDs:

  • ID for "New Vehicle Archive" folder
  • ID for "Form Upload Temp" folder
  • ID for each individual vehicle folder (ABC-1234, XYZ-5678, etc.)

4 Create the Google Form

This form is what drivers will use to report incidents (typically from their phones).

  1. Go to forms.google.com
  2. Click Blank Form
  3. Title it: "Vehicle Incident Report"
  4. Add the following questions:
Question Title Type Notes
Date of Incident Date Required
Time of Incident (if known) Short answer Optional
What home does the driver fall under? Dropdown List your programs/locations
Full Legal Name of the Driver Short answer Required
Vehicle In Question Dropdown CRITICAL: Populate from Master List
Vehicle Damage/Photos & Scene Diagram File upload Upload to "Form Upload Temp" folder
Brief Description of What Happened Paragraph Required
⚠️ CRITICAL - Vehicle Dropdown Setup:

For the "Vehicle In Question" dropdown, format entries EXACTLY like this:

  • 2020 Honda Civic ABC-1234
  • 2019 Toyota Camry XYZ-5678

The script extracts the license plate by taking the last word (after the last space). If you use a different format, the lookup will fail.

Configure File Upload:

  1. Click on the "File upload" question
  2. Click the three dots (⋮) → Go to folder
  3. Move the default upload folder to your "Form Upload Temp" folder location
  4. Or: Note the folder ID of where uploads go (you'll need this in Step 5)

Link Form to Spreadsheet:

  1. Click the Responses tab in the form editor
  2. Click the green Sheets icon
  3. Choose "Create a new spreadsheet"
  4. Name it "Vehicle Incident Responses"

Copy the Spreadsheet ID from the URL (you won't need it for the script, but good to save).

5 Configure the Google Apps Script

Now we'll add the automation code to your form's response spreadsheet.

  1. Open the "Vehicle Incident Responses" spreadsheet (created in Step 4)
  2. Click ExtensionsApps Script
  3. Delete any default code in the editor
  4. Open FleetTracker.gs from the downloaded template
  5. Copy the entire contents and paste into the Apps Script editor

Edit the Configuration Block:

At the top of the script, you'll see a section labeled // --- CONFIGURATION ---

Update these values:

Variable What to Enter Where to Find It
RECIPIENT_EMAILS Comma-separated email addresses Your team (e.g., 'ops@org.org,fleet@org.org')
MASTER_LIST_SPREADSHEET_ID Spreadsheet ID from Step 2 URL of your Master Vehicle List
NEW_VEHICLE_ARCHIVE_FOLDER_ID Folder ID from Step 3 Your "New Vehicle Archive" folder URL
UPLOAD_FOLDER_ID Folder ID from Step 3/4 Your "Form Upload Temp" folder URL
VEHICLE_FOLDER_MAP License plate → Folder ID pairs See example below

VEHICLE_FOLDER_MAP Example:

const VEHICLE_FOLDER_MAP = {
  "ABC-1234": "1A2-42ydOzwGw4qasaPfjw4_jlUdNR2ld",
  "XYZ-5678": "9B8-73xdPawHx5rbtBgkx5_kmVeOS3me",
  "DEF-9012": "7C6-51wdOaxIv3qbtAfjv3_jmUdNQ1ld",
};
💡 Tip: Add one line per vehicle. Make sure license plates EXACTLY match the format in your Master List and Google Form dropdown.
  1. Click FileSave
  2. Name the project: "FleetTracker Automation"

6 Set Up the Form Submission Trigger

This tells Google to run your script automatically when someone submits the form.

  1. In the Apps Script editor, click the clock icon (Triggers) in the left sidebar
  2. Click + Add Trigger (bottom right)
  3. Configure the trigger:
Setting Value
Choose which function to run onFormSubmit
Choose which deployment should run Head
Select event source From spreadsheet
Select event type On form submit
  1. Click Save
  2. You'll be prompted to authorize the script:
    • Click Review Permissions
    • Choose your Google account
    • Click AdvancedGo to FleetTracker (unsafe)
    • Click Allow
⚠️ Security Note: Google shows "unsafe" because this is a custom script (not a published app). It's safe—you wrote it. Only grant permissions to accounts you trust.

7 Test the System

Before rolling out to your team, test the full workflow.

Test Checklist:

  • Submit a test incident report via the form
  • Check the response spreadsheet (new row should appear)
  • Verify email notification was sent to RECIPIENT_EMAILS
  • Check the vehicle folder for the new incident subfolder
  • Open the incident folder and verify:
    • Incident Summary.gdoc exists and contains correct data
    • Uploaded photos were moved from "Form Upload Temp"
    • Email Notification Log.txt exists
  • Verify the email contains correct vehicle coverage info
  • Check maintenance data (last service date, next due date)

If Something Goes Wrong:

  1. Open the Apps Script editor
  2. Click Executions (left sidebar)
  3. Find the failed execution and click to view logs
  4. Common issues:
Error Message Solution
"Cannot read property of undefined" Form field name mismatch - check *_FIELD_NAME constants
"Spreadsheet not found" Wrong MASTER_LIST_SPREADSHEET_ID
"Folder not found" Wrong folder ID in VEHICLE_FOLDER_MAP or config
"License plate not found" Vehicle not in VEHICLE_FOLDER_MAP (should file in archive)
💡 Debugging Tip: If the script runs but data looks wrong, check the column headers in your response spreadsheet. They must EXACTLY match the question titles in your Google Form.

8 Train Your Team

Once testing is successful, share the form with your staff.

For Drivers:

  1. Share the form link (get it from the form's Send button)
  2. Emphasize: Take photos immediately at the scene
  3. Bookmark the form on their phones for quick access
  4. Explain: Submitting the form alerts the ops team instantly

For Managers:

  1. Show them the email notification format
  2. Explain how to access the incident folder (one-click link)
  3. Walk through the Google Doc summary
  4. Show how to view all incidents (Drive folder view)

Sample Training Message:

Subject: New Vehicle Incident Reporting System

Hi team,

We've streamlined our vehicle incident reporting process. If you're involved in any incident (damage, accident, near-miss), please:

  1. Take photos of the damage and scene
  2. Fill out this form: [LINK]
  3. Continue with your day - the ops team is automatically notified

The system organizes everything automatically, so we can respond faster and keep better records for insurance and compliance.

Questions? Contact [OPS MANAGER].

Ongoing Maintenance

Adding New Vehicles

  1. Add a row to the Master Vehicle List spreadsheet
  2. Create a new folder in Drive for the vehicle
  3. Add the license plate and folder ID to VEHICLE_FOLDER_MAP in the script
  4. Add the vehicle to the form dropdown options

Updating Email Recipients

  1. Open the Apps Script editor
  2. Update the RECIPIENT_EMAILS variable
  3. Save the script (changes take effect immediately)

Uploading Maintenance Records

When you receive service invoices:

  1. Name the file: Service - YYYY-MM-DD.pdf (e.g., "Service - 2024-03-15.pdf")
  2. Upload to the vehicle's folder
  3. The script will automatically detect it for the next incident
💡 Tip: The date in the filename should be the service date, not the invoice date. This ensures accurate "next service due" calculations.

Troubleshooting

Emails Not Sending

Files Not Moving from Upload Folder

Maintenance Data Shows "N/A"

Vehicle Lookup Failing

Script Not Running

Support & Community

Getting Help

Contributing

If you extend FleetTracker with new features (cost tracking, dashboard integration, etc.), please consider contributing back! Submit a pull request on GitHub.

Sharing Your Experience

Using FleetTracker at your org? We'd love to hear about it:

Share your story in the GitHub Discussions.