7471 lines
153 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Build Power. Not Rent It. Own your digital infrastructure.">
<meta name="author" content="Bunker Operations">
<link rel="canonical" href="https://bnkserve.org/v2/user-guides/volunteer-guide/">
<link rel="prev" href="../content-editor-guide/">
<link rel="next" href="../../troubleshooting/">
<link rel="icon" href="../../../assets/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
<title>Volunteer Guide - Changemaker Lite</title>
<link rel="stylesheet" href="../../../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../../../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Inter";--md-code-font:"JetBrains Mono"}</style>
<link rel="stylesheet" href="../../../stylesheets/extra.css">
<link rel="stylesheet" href="../../../stylesheets/home.css">
<link rel="stylesheet" href="../../../assets/css/video-player.css">
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<meta property="og:type" content="website" />
<meta property="og:title" content="Volunteer Guide - Changemaker Lite" />
<meta property="og:description" content="Build Power. Not Rent It. Own your digital infrastructure." />
<meta property="og:image" content="https://bnkserve.org/assets/images/social/v2/user-guides/volunteer-guide.png" />
<meta property="og:image:type" content="image/png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:url" content="https://bnkserve.org/v2/user-guides/volunteer-guide/" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:title" content="Volunteer Guide - Changemaker Lite" />
<meta property="twitter:description" content="Build Power. Not Rent It. Own your digital infrastructure." />
<meta property="twitter:image" content="https://bnkserve.org/assets/images/social/v2/user-guides/volunteer-guide.png" />
</head>
<body dir="ltr" data-md-color-scheme="slate" data-md-color-primary="deep-purple" data-md-color-accent="amber">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#volunteer-guide" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../../.." title="Changemaker Lite" class="md-header__button md-logo" aria-label="Changemaker Lite" data-md-component="logo">
<img src="../../../assets/logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Changemaker Lite
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Volunteer Guide
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="deep-purple" data-md-color-accent="amber" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="deep-purple" data-md-color-accent="amber" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://gitea.bnkops.com/admin/changemaker.lite" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
changemaker.lite
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../../" class="md-tabs__link">
V2 Documentation
</a>
</li>
<li class="md-tabs__item">
<a href="../../../phil/" class="md-tabs__link">
Philosophy
</a>
</li>
<li class="md-tabs__item">
<a href="../../../v1/" class="md-tabs__link">
V1 Documentation (Legacy)
</a>
</li>
<li class="md-tabs__item">
<a href="../../../blog/" class="md-tabs__link">
Blog
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../../.." title="Changemaker Lite" class="md-nav__button md-logo" aria-label="Changemaker Lite" data-md-component="logo">
<img src="../../../assets/logo.png" alt="logo">
</a>
Changemaker Lite
</label>
<div class="md-nav__source">
<a href="https://gitea.bnkops.com/admin/changemaker.lite" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
</div>
<div class="md-source__repository">
changemaker.lite
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
<div class="md-nav__link md-nav__container">
<a href="../../" class="md-nav__link ">
<span class="md-ellipsis">
V2 Documentation
</span>
</a>
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
V2 Documentation
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_2" >
<div class="md-nav__link md-nav__container">
<a href="../../getting-started/" class="md-nav__link ">
<span class="md-ellipsis">
Getting Started
</span>
</a>
<label class="md-nav__link " for="__nav_2_2" id="__nav_2_2_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_2">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../getting-started/quick-start/" class="md-nav__link">
<span class="md-ellipsis">
Quick Start
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_3" >
<div class="md-nav__link md-nav__container">
<a href="../../architecture/" class="md-nav__link ">
<span class="md-ellipsis">
Architecture
</span>
</a>
<label class="md-nav__link " for="__nav_2_3" id="__nav_2_3_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_3">
<span class="md-nav__icon md-icon"></span>
Architecture
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../architecture/dual-api/" class="md-nav__link">
<span class="md-ellipsis">
Dual API System
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../architecture/authentication/" class="md-nav__link">
<span class="md-ellipsis">
Authentication & Security
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_4" >
<div class="md-nav__link md-nav__container">
<a href="../../backend/" class="md-nav__link ">
<span class="md-ellipsis">
Backend
</span>
</a>
<label class="md-nav__link " for="__nav_2_4" id="__nav_2_4_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_4">
<span class="md-nav__icon md-icon"></span>
Backend
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../backend/modules/" class="md-nav__link">
<span class="md-ellipsis">
Modules
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../backend/services/" class="md-nav__link">
<span class="md-ellipsis">
Services
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../backend/middleware/" class="md-nav__link">
<span class="md-ellipsis">
Middleware
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../backend/utilities/" class="md-nav__link">
<span class="md-ellipsis">
Utilities
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_5" >
<div class="md-nav__link md-nav__container">
<a href="../../frontend/" class="md-nav__link ">
<span class="md-ellipsis">
Frontend
</span>
</a>
<label class="md-nav__link " for="__nav_2_5" id="__nav_2_5_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_5">
<span class="md-nav__icon md-icon"></span>
Frontend
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../frontend/components/" class="md-nav__link">
<span class="md-ellipsis">
Components
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../frontend/layouts/" class="md-nav__link">
<span class="md-ellipsis">
Layouts
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../frontend/pages/" class="md-nav__link">
<span class="md-ellipsis">
Pages
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_6" >
<div class="md-nav__link md-nav__container">
<a href="../../database/" class="md-nav__link ">
<span class="md-ellipsis">
Database
</span>
</a>
<label class="md-nav__link " for="__nav_2_6" id="__nav_2_6_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_6">
<span class="md-nav__icon md-icon"></span>
Database
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../database/schema/" class="md-nav__link">
<span class="md-ellipsis">
Schema Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../database/migrations/" class="md-nav__link">
<span class="md-ellipsis">
Migrations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../database/seeding/" class="md-nav__link">
<span class="md-ellipsis">
Seeding
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../database/indexes/" class="md-nav__link">
<span class="md-ellipsis">
Indexes
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../database/models/" class="md-nav__link">
<span class="md-ellipsis">
Models
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_7" >
<div class="md-nav__link md-nav__container">
<a href="../../features/" class="md-nav__link ">
<span class="md-ellipsis">
Features
</span>
</a>
<label class="md-nav__link " for="__nav_2_7" id="__nav_2_7_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_7">
<span class="md-nav__icon md-icon"></span>
Features
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/influence/" class="md-nav__link">
<span class="md-ellipsis">
Influence
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/map/" class="md-nav__link">
<span class="md-ellipsis">
Map
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/landing-pages/" class="md-nav__link">
<span class="md-ellipsis">
Landing Pages
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/email-templates/" class="md-nav__link">
<span class="md-ellipsis">
Email Templates
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/media/" class="md-nav__link">
<span class="md-ellipsis">
Media
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/newsletter/" class="md-nav__link">
<span class="md-ellipsis">
Newsletter
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/observability/" class="md-nav__link">
<span class="md-ellipsis">
Observability
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../features/tunnel/" class="md-nav__link">
<span class="md-ellipsis">
Tunnel
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_8" >
<div class="md-nav__link md-nav__container">
<a href="../../deployment/" class="md-nav__link ">
<span class="md-ellipsis">
Deployment
</span>
</a>
<label class="md-nav__link " for="__nav_2_8" id="__nav_2_8_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_8">
<span class="md-nav__icon md-icon"></span>
Deployment
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../deployment/docker-compose/" class="md-nav__link">
<span class="md-ellipsis">
Docker Compose
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/environment-variables/" class="md-nav__link">
<span class="md-ellipsis">
Environment Variables
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/nginx/" class="md-nav__link">
<span class="md-ellipsis">
Nginx Configuration
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/ssl-tls/" class="md-nav__link">
<span class="md-ellipsis">
SSL/TLS
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/tunneling/" class="md-nav__link">
<span class="md-ellipsis">
Tunneling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/monitoring-stack/" class="md-nav__link">
<span class="md-ellipsis">
Monitoring Stack
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/healthchecks/" class="md-nav__link">
<span class="md-ellipsis">
Health Checks
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/scaling/" class="md-nav__link">
<span class="md-ellipsis">
Scaling
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../deployment/backup-restore/" class="md-nav__link">
<span class="md-ellipsis">
Backup & Restore
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_9" >
<div class="md-nav__link md-nav__container">
<a href="../../development/" class="md-nav__link ">
<span class="md-ellipsis">
Development
</span>
</a>
<label class="md-nav__link " for="__nav_2_9" id="__nav_2_9_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_9">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../development/local-setup/" class="md-nav__link">
<span class="md-ellipsis">
Local Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/docker-workflow/" class="md-nav__link">
<span class="md-ellipsis">
Docker Workflow
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/git-workflow/" class="md-nav__link">
<span class="md-ellipsis">
Git Workflow
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/npm-commands/" class="md-nav__link">
<span class="md-ellipsis">
NPM Commands
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/migrations/" class="md-nav__link">
<span class="md-ellipsis">
Migrations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/typescript/" class="md-nav__link">
<span class="md-ellipsis">
TypeScript
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/testing/" class="md-nav__link">
<span class="md-ellipsis">
Testing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/debugging/" class="md-nav__link">
<span class="md-ellipsis">
Debugging
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../development/code-style/" class="md-nav__link">
<span class="md-ellipsis">
Code Style
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_10" >
<div class="md-nav__link md-nav__container">
<a href="../../api-reference/" class="md-nav__link ">
<span class="md-ellipsis">
API Reference
</span>
</a>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_10">
<span class="md-nav__icon md-icon"></span>
API Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_11" checked>
<div class="md-nav__link md-nav__container">
<a href="../" class="md-nav__link ">
<span class="md-ellipsis">
User Guides
</span>
</a>
<label class="md-nav__link " for="__nav_2_11" id="__nav_2_11_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_11_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_2_11">
<span class="md-nav__icon md-icon"></span>
User Guides
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../admin-guide/" class="md-nav__link">
<span class="md-ellipsis">
Admin Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../campaign-manager-guide/" class="md-nav__link">
<span class="md-ellipsis">
Campaign Manager Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../map-organizer-guide/" class="md-nav__link">
<span class="md-ellipsis">
Map Organizer Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../content-editor-guide/" class="md-nav__link">
<span class="md-ellipsis">
Content Editor Guide
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Volunteer Guide
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Volunteer Guide
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="On this page">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
On this page
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getting-started" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
<nav class="md-nav" aria-label="Getting Started">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#creating-your-account" class="md-nav__link">
<span class="md-ellipsis">
Creating Your Account
</span>
</a>
<nav class="md-nav" aria-label="Creating Your Account">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#option-1-sign-up-for-a-shift-creates-temporary-account" class="md-nav__link">
<span class="md-ellipsis">
Option 1: Sign Up for a Shift (Creates Temporary Account)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#option-2-admin-creates-your-account" class="md-nav__link">
<span class="md-ellipsis">
Option 2: Admin Creates Your Account
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#logging-in" class="md-nav__link">
<span class="md-ellipsis">
Logging In
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#first-login-change-your-password" class="md-nav__link">
<span class="md-ellipsis">
First Login: Change Your Password
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#volunteer-dashboard-overview" class="md-nav__link">
<span class="md-ellipsis">
Volunteer Dashboard Overview
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#viewing-your-shifts" class="md-nav__link">
<span class="md-ellipsis">
Viewing Your Shifts
</span>
</a>
<nav class="md-nav" aria-label="Viewing Your Shifts">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#my-shifts-page" class="md-nav__link">
<span class="md-ellipsis">
My Shifts Page
</span>
</a>
<nav class="md-nav" aria-label="My Shifts Page">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#upcoming-shifts" class="md-nav__link">
<span class="md-ellipsis">
Upcoming Shifts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#past-shifts" class="md-nav__link">
<span class="md-ellipsis">
Past Shifts
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#shift-details" class="md-nav__link">
<span class="md-ellipsis">
Shift Details
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#canceling-a-signup" class="md-nav__link">
<span class="md-ellipsis">
Canceling a Signup
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#canvassing" class="md-nav__link">
<span class="md-ellipsis">
Canvassing
</span>
</a>
<nav class="md-nav" aria-label="Canvassing">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#starting-a-canvass-session" class="md-nav__link">
<span class="md-ellipsis">
Starting a Canvass Session
</span>
</a>
<nav class="md-nav" aria-label="Starting a Canvass Session">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#method-1-from-dashboard-if-shift-is-today" class="md-nav__link">
<span class="md-ellipsis">
Method 1: From Dashboard (If Shift is Today)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#method-2-from-my-shifts" class="md-nav__link">
<span class="md-ellipsis">
Method 2: From My Shifts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#method-3-scan-qr-code-walk-sheet" class="md-nav__link">
<span class="md-ellipsis">
Method 3: Scan QR Code (Walk Sheet)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#understanding-the-canvass-map" class="md-nav__link">
<span class="md-ellipsis">
Understanding the Canvass Map
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#map-controls" class="md-nav__link">
<span class="md-ellipsis">
Map Controls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#following-your-walking-route" class="md-nav__link">
<span class="md-ellipsis">
Following Your Walking Route
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#recording-visits" class="md-nav__link">
<span class="md-ellipsis">
Recording Visits
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#visit-outcomes" class="md-nav__link">
<span class="md-ellipsis">
Visit Outcomes
</span>
</a>
<nav class="md-nav" aria-label="Visit Outcomes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-not_home-nobody-answered" class="md-nav__link">
<span class="md-ellipsis">
1. NOT_HOME (Nobody Answered)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-refused-refused-to-talk" class="md-nav__link">
<span class="md-ellipsis">
2. REFUSED (Refused to Talk)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-spoke_with-had-a-conversation" class="md-nav__link">
<span class="md-ellipsis">
3. SPOKE_WITH (Had a Conversation)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#4-moved_away-resident-moved" class="md-nav__link">
<span class="md-ellipsis">
4. MOVED_AWAY (Resident Moved)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#5-wrong_address-location-doesnt-exist" class="md-nav__link">
<span class="md-ellipsis">
5. WRONG_ADDRESS (Location Doesn't Exist)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#6-do_not_contact-asked-not-to-be-contacted" class="md-nav__link">
<span class="md-ellipsis">
6. DO_NOT_CONTACT (Asked Not to Be Contacted)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#7-other-something-else" class="md-nav__link">
<span class="md-ellipsis">
7. OTHER (Something Else)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#support-levels" class="md-nav__link">
<span class="md-ellipsis">
Support Levels
</span>
</a>
<nav class="md-nav" aria-label="Support Levels">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#level_1-strong-support" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_1: Strong Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#level_2-leaning-support" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_2: Leaning Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#level_3-undecided-neutral" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_3: Undecided / Neutral
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#level_4-opposition" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_4: Opposition
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#requesting-signs" class="md-nav__link">
<span class="md-ellipsis">
Requesting Signs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#taking-notes-and-photos" class="md-nav__link">
<span class="md-ellipsis">
Taking Notes and Photos
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#saving-a-visit" class="md-nav__link">
<span class="md-ellipsis">
Saving a Visit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#skipping-a-location" class="md-nav__link">
<span class="md-ellipsis">
Skipping a Location
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#using-gps-navigation" class="md-nav__link">
<span class="md-ellipsis">
Using GPS Navigation
</span>
</a>
<nav class="md-nav" aria-label="Using GPS Navigation">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#enabling-location-permissions" class="md-nav__link">
<span class="md-ellipsis">
Enabling Location Permissions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#improving-gps-accuracy" class="md-nav__link">
<span class="md-ellipsis">
Improving GPS Accuracy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#next-door-button" class="md-nav__link">
<span class="md-ellipsis">
"Next Door" Button
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gps-troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
GPS Troubleshooting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ending-your-session" class="md-nav__link">
<span class="md-ellipsis">
Ending Your Session
</span>
</a>
<nav class="md-nav" aria-label="Ending Your Session">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#finishing-canvassing" class="md-nav__link">
<span class="md-ellipsis">
Finishing Canvassing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#session-summary" class="md-nav__link">
<span class="md-ellipsis">
Session Summary
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#abandoned-sessions" class="md-nav__link">
<span class="md-ellipsis">
Abandoned Sessions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#viewing-your-activity" class="md-nav__link">
<span class="md-ellipsis">
Viewing Your Activity
</span>
</a>
<nav class="md-nav" aria-label="Viewing Your Activity">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#my-activity-page" class="md-nav__link">
<span class="md-ellipsis">
My Activity Page
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#filtering-your-activity" class="md-nav__link">
<span class="md-ellipsis">
Filtering Your Activity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exporting-your-data" class="md-nav__link">
<span class="md-ellipsis">
Exporting Your Data
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#my-routes" class="md-nav__link">
<span class="md-ellipsis">
My Routes
</span>
</a>
<nav class="md-nav" aria-label="My Routes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#viewing-past-routes" class="md-nav__link">
<span class="md-ellipsis">
Viewing Past Routes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#route-statistics" class="md-nav__link">
<span class="md-ellipsis">
Route Statistics
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#mobile-tips" class="md-nav__link">
<span class="md-ellipsis">
Mobile Tips
</span>
</a>
<nav class="md-nav" aria-label="Mobile Tips">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#battery-saving" class="md-nav__link">
<span class="md-ellipsis">
Battery Saving
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#offline-considerations" class="md-nav__link">
<span class="md-ellipsis">
Offline Considerations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#network-connectivity" class="md-nav__link">
<span class="md-ellipsis">
Network Connectivity
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#safety-privacy" class="md-nav__link">
<span class="md-ellipsis">
Safety &amp; Privacy
</span>
</a>
<nav class="md-nav" aria-label="Safety &amp; Privacy">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#personal-safety-tips" class="md-nav__link">
<span class="md-ellipsis">
Personal Safety Tips
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#privacy-of-resident-information" class="md-nav__link">
<span class="md-ellipsis">
Privacy of Resident Information
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#faqs" class="md-nav__link">
<span class="md-ellipsis">
FAQs
</span>
</a>
<nav class="md-nav" aria-label="FAQs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#account-login" class="md-nav__link">
<span class="md-ellipsis">
Account &amp; Login
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#shifts" class="md-nav__link">
<span class="md-ellipsis">
Shifts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#canvassing_1" class="md-nav__link">
<span class="md-ellipsis">
Canvassing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#technical-issues" class="md-nav__link">
<span class="md-ellipsis">
Technical Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#data-privacy" class="md-nav__link">
<span class="md-ellipsis">
Data &amp; Privacy
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
<nav class="md-nav" aria-label="Troubleshooting">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#common-issues" class="md-nav__link">
<span class="md-ellipsis">
Common Issues
</span>
</a>
<nav class="md-nav" aria-label="Common Issues">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cannot-start-canvass-session" class="md-nav__link">
<span class="md-ellipsis">
Cannot Start Canvass Session
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gps-not-working" class="md-nav__link">
<span class="md-ellipsis">
GPS Not Working
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#walking-route-not-updating" class="md-nav__link">
<span class="md-ellipsis">
Walking Route Not Updating
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#visit-wont-save" class="md-nav__link">
<span class="md-ellipsis">
Visit Won't Save
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bottom-sheet-wont-close" class="md-nav__link">
<span class="md-ellipsis">
Bottom Sheet Won't Close
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#getting-help" class="md-nav__link">
<span class="md-ellipsis">
Getting Help
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#related-documentation" class="md-nav__link">
<span class="md-ellipsis">
Related Documentation
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_12" >
<div class="md-nav__link md-nav__container">
<a href="../../troubleshooting/" class="md-nav__link ">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
<label class="md-nav__link " for="__nav_2_12" id="__nav_2_12_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_12">
<span class="md-nav__icon md-icon"></span>
Troubleshooting
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../troubleshooting/faq/" class="md-nav__link">
<span class="md-ellipsis">
FAQ
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/common-errors/" class="md-nav__link">
<span class="md-ellipsis">
Common Errors
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/auth-issues/" class="md-nav__link">
<span class="md-ellipsis">
Auth Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/database-issues/" class="md-nav__link">
<span class="md-ellipsis">
Database Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/docker-issues/" class="md-nav__link">
<span class="md-ellipsis">
Docker Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/email-issues/" class="md-nav__link">
<span class="md-ellipsis">
Email Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/geocoding-issues/" class="md-nav__link">
<span class="md-ellipsis">
Geocoding Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/monitoring-issues/" class="md-nav__link">
<span class="md-ellipsis">
Monitoring Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../troubleshooting/performance-optimization/" class="md-nav__link">
<span class="md-ellipsis">
Performance Optimization
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_13" >
<div class="md-nav__link md-nav__container">
<a href="../../migration/" class="md-nav__link ">
<span class="md-ellipsis">
Migration
</span>
</a>
<label class="md-nav__link " for="__nav_2_13" id="__nav_2_13_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_13">
<span class="md-nav__icon md-icon"></span>
Migration
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../migration/feature-parity/" class="md-nav__link">
<span class="md-ellipsis">
Feature Parity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../migration/breaking-changes/" class="md-nav__link">
<span class="md-ellipsis">
Breaking Changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../migration/api-changes/" class="md-nav__link">
<span class="md-ellipsis">
API Changes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../migration/data-migration/" class="md-nav__link">
<span class="md-ellipsis">
Data Migration
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_14" >
<div class="md-nav__link md-nav__container">
<a href="../../contributing/" class="md-nav__link ">
<span class="md-ellipsis">
Contributing
</span>
</a>
<label class="md-nav__link " for="__nav_2_14" id="__nav_2_14_label" tabindex="">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2_14">
<span class="md-nav__icon md-icon"></span>
Contributing
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../contributing/development-setup/" class="md-nav__link">
<span class="md-ellipsis">
Development Setup
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/code-of-conduct/" class="md-nav__link">
<span class="md-ellipsis">
Code of Conduct
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/pull-requests/" class="md-nav__link">
<span class="md-ellipsis">
Pull Requests
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../contributing/roadmap/" class="md-nav__link">
<span class="md-ellipsis">
Roadmap
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../phil/" class="md-nav__link">
<span class="md-ellipsis">
Philosophy
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../v1/" class="md-nav__link">
<span class="md-ellipsis">
V1 Documentation (Legacy)
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../../blog/" class="md-nav__link">
<span class="md-ellipsis">
Blog
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="On this page">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
On this page
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#overview" class="md-nav__link">
<span class="md-ellipsis">
Overview
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getting-started" class="md-nav__link">
<span class="md-ellipsis">
Getting Started
</span>
</a>
<nav class="md-nav" aria-label="Getting Started">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#creating-your-account" class="md-nav__link">
<span class="md-ellipsis">
Creating Your Account
</span>
</a>
<nav class="md-nav" aria-label="Creating Your Account">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#option-1-sign-up-for-a-shift-creates-temporary-account" class="md-nav__link">
<span class="md-ellipsis">
Option 1: Sign Up for a Shift (Creates Temporary Account)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#option-2-admin-creates-your-account" class="md-nav__link">
<span class="md-ellipsis">
Option 2: Admin Creates Your Account
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#logging-in" class="md-nav__link">
<span class="md-ellipsis">
Logging In
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#first-login-change-your-password" class="md-nav__link">
<span class="md-ellipsis">
First Login: Change Your Password
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#volunteer-dashboard-overview" class="md-nav__link">
<span class="md-ellipsis">
Volunteer Dashboard Overview
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#viewing-your-shifts" class="md-nav__link">
<span class="md-ellipsis">
Viewing Your Shifts
</span>
</a>
<nav class="md-nav" aria-label="Viewing Your Shifts">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#my-shifts-page" class="md-nav__link">
<span class="md-ellipsis">
My Shifts Page
</span>
</a>
<nav class="md-nav" aria-label="My Shifts Page">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#upcoming-shifts" class="md-nav__link">
<span class="md-ellipsis">
Upcoming Shifts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#past-shifts" class="md-nav__link">
<span class="md-ellipsis">
Past Shifts
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#shift-details" class="md-nav__link">
<span class="md-ellipsis">
Shift Details
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#canceling-a-signup" class="md-nav__link">
<span class="md-ellipsis">
Canceling a Signup
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#canvassing" class="md-nav__link">
<span class="md-ellipsis">
Canvassing
</span>
</a>
<nav class="md-nav" aria-label="Canvassing">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#starting-a-canvass-session" class="md-nav__link">
<span class="md-ellipsis">
Starting a Canvass Session
</span>
</a>
<nav class="md-nav" aria-label="Starting a Canvass Session">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#method-1-from-dashboard-if-shift-is-today" class="md-nav__link">
<span class="md-ellipsis">
Method 1: From Dashboard (If Shift is Today)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#method-2-from-my-shifts" class="md-nav__link">
<span class="md-ellipsis">
Method 2: From My Shifts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#method-3-scan-qr-code-walk-sheet" class="md-nav__link">
<span class="md-ellipsis">
Method 3: Scan QR Code (Walk Sheet)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#understanding-the-canvass-map" class="md-nav__link">
<span class="md-ellipsis">
Understanding the Canvass Map
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#map-controls" class="md-nav__link">
<span class="md-ellipsis">
Map Controls
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#following-your-walking-route" class="md-nav__link">
<span class="md-ellipsis">
Following Your Walking Route
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#recording-visits" class="md-nav__link">
<span class="md-ellipsis">
Recording Visits
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#visit-outcomes" class="md-nav__link">
<span class="md-ellipsis">
Visit Outcomes
</span>
</a>
<nav class="md-nav" aria-label="Visit Outcomes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#1-not_home-nobody-answered" class="md-nav__link">
<span class="md-ellipsis">
1. NOT_HOME (Nobody Answered)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#2-refused-refused-to-talk" class="md-nav__link">
<span class="md-ellipsis">
2. REFUSED (Refused to Talk)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#3-spoke_with-had-a-conversation" class="md-nav__link">
<span class="md-ellipsis">
3. SPOKE_WITH (Had a Conversation)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#4-moved_away-resident-moved" class="md-nav__link">
<span class="md-ellipsis">
4. MOVED_AWAY (Resident Moved)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#5-wrong_address-location-doesnt-exist" class="md-nav__link">
<span class="md-ellipsis">
5. WRONG_ADDRESS (Location Doesn't Exist)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#6-do_not_contact-asked-not-to-be-contacted" class="md-nav__link">
<span class="md-ellipsis">
6. DO_NOT_CONTACT (Asked Not to Be Contacted)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#7-other-something-else" class="md-nav__link">
<span class="md-ellipsis">
7. OTHER (Something Else)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#support-levels" class="md-nav__link">
<span class="md-ellipsis">
Support Levels
</span>
</a>
<nav class="md-nav" aria-label="Support Levels">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#level_1-strong-support" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_1: Strong Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#level_2-leaning-support" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_2: Leaning Support
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#level_3-undecided-neutral" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_3: Undecided / Neutral
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#level_4-opposition" class="md-nav__link">
<span class="md-ellipsis">
LEVEL_4: Opposition
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#requesting-signs" class="md-nav__link">
<span class="md-ellipsis">
Requesting Signs
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#taking-notes-and-photos" class="md-nav__link">
<span class="md-ellipsis">
Taking Notes and Photos
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#saving-a-visit" class="md-nav__link">
<span class="md-ellipsis">
Saving a Visit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#skipping-a-location" class="md-nav__link">
<span class="md-ellipsis">
Skipping a Location
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#using-gps-navigation" class="md-nav__link">
<span class="md-ellipsis">
Using GPS Navigation
</span>
</a>
<nav class="md-nav" aria-label="Using GPS Navigation">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#enabling-location-permissions" class="md-nav__link">
<span class="md-ellipsis">
Enabling Location Permissions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#improving-gps-accuracy" class="md-nav__link">
<span class="md-ellipsis">
Improving GPS Accuracy
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#next-door-button" class="md-nav__link">
<span class="md-ellipsis">
"Next Door" Button
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gps-troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
GPS Troubleshooting
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#ending-your-session" class="md-nav__link">
<span class="md-ellipsis">
Ending Your Session
</span>
</a>
<nav class="md-nav" aria-label="Ending Your Session">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#finishing-canvassing" class="md-nav__link">
<span class="md-ellipsis">
Finishing Canvassing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#session-summary" class="md-nav__link">
<span class="md-ellipsis">
Session Summary
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#abandoned-sessions" class="md-nav__link">
<span class="md-ellipsis">
Abandoned Sessions
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#viewing-your-activity" class="md-nav__link">
<span class="md-ellipsis">
Viewing Your Activity
</span>
</a>
<nav class="md-nav" aria-label="Viewing Your Activity">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#my-activity-page" class="md-nav__link">
<span class="md-ellipsis">
My Activity Page
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#filtering-your-activity" class="md-nav__link">
<span class="md-ellipsis">
Filtering Your Activity
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#exporting-your-data" class="md-nav__link">
<span class="md-ellipsis">
Exporting Your Data
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#my-routes" class="md-nav__link">
<span class="md-ellipsis">
My Routes
</span>
</a>
<nav class="md-nav" aria-label="My Routes">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#viewing-past-routes" class="md-nav__link">
<span class="md-ellipsis">
Viewing Past Routes
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#route-statistics" class="md-nav__link">
<span class="md-ellipsis">
Route Statistics
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#mobile-tips" class="md-nav__link">
<span class="md-ellipsis">
Mobile Tips
</span>
</a>
<nav class="md-nav" aria-label="Mobile Tips">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#battery-saving" class="md-nav__link">
<span class="md-ellipsis">
Battery Saving
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#offline-considerations" class="md-nav__link">
<span class="md-ellipsis">
Offline Considerations
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#network-connectivity" class="md-nav__link">
<span class="md-ellipsis">
Network Connectivity
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#safety-privacy" class="md-nav__link">
<span class="md-ellipsis">
Safety &amp; Privacy
</span>
</a>
<nav class="md-nav" aria-label="Safety &amp; Privacy">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#personal-safety-tips" class="md-nav__link">
<span class="md-ellipsis">
Personal Safety Tips
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#privacy-of-resident-information" class="md-nav__link">
<span class="md-ellipsis">
Privacy of Resident Information
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#faqs" class="md-nav__link">
<span class="md-ellipsis">
FAQs
</span>
</a>
<nav class="md-nav" aria-label="FAQs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#account-login" class="md-nav__link">
<span class="md-ellipsis">
Account &amp; Login
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#shifts" class="md-nav__link">
<span class="md-ellipsis">
Shifts
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#canvassing_1" class="md-nav__link">
<span class="md-ellipsis">
Canvassing
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#technical-issues" class="md-nav__link">
<span class="md-ellipsis">
Technical Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#data-privacy" class="md-nav__link">
<span class="md-ellipsis">
Data &amp; Privacy
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Troubleshooting
</span>
</a>
<nav class="md-nav" aria-label="Troubleshooting">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#common-issues" class="md-nav__link">
<span class="md-ellipsis">
Common Issues
</span>
</a>
<nav class="md-nav" aria-label="Common Issues">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#cannot-start-canvass-session" class="md-nav__link">
<span class="md-ellipsis">
Cannot Start Canvass Session
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#gps-not-working" class="md-nav__link">
<span class="md-ellipsis">
GPS Not Working
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#walking-route-not-updating" class="md-nav__link">
<span class="md-ellipsis">
Walking Route Not Updating
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#visit-wont-save" class="md-nav__link">
<span class="md-ellipsis">
Visit Won't Save
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#bottom-sheet-wont-close" class="md-nav__link">
<span class="md-ellipsis">
Bottom Sheet Won't Close
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#getting-help" class="md-nav__link">
<span class="md-ellipsis">
Getting Help
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#related-documentation" class="md-nav__link">
<span class="md-ellipsis">
Related Documentation
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<nav class="md-path" aria-label="Navigation" >
<ol class="md-path__list">
<li class="md-path__item">
<a href="../../.." class="md-path__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-path__item">
<a href="../../" class="md-path__link">
<span class="md-ellipsis">
V2 Documentation
</span>
</a>
</li>
<li class="md-path__item">
<a href="../" class="md-path__link">
<span class="md-ellipsis">
User Guides
</span>
</a>
</li>
</ol>
</nav>
<article class="md-content__inner md-typeset">
<a href="https://gitea.bnkops.com/admin/changemaker.lite/src/branch/main/mkdocs/docs/v2/user-guides/volunteer-guide.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
</a>
<a href="https://gitea.bnkops.com/admin/changemaker.lite/src/branch/main/mkdocs/docs/v2/user-guides/volunteer-guide.md" title="View source of this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg>
</a>
<h1 id="volunteer-guide">Volunteer Guide<a class="headerlink" href="#volunteer-guide" title="Permanent link">&para;</a></h1>
<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
<p>Welcome to Changemaker Lite! As a volunteer, you'll use the volunteer portal to:</p>
<ul>
<li><strong>View your assigned shifts</strong>: See upcoming canvassing shifts you've signed up for</li>
<li><strong>Canvas neighborhoods</strong>: Go door-to-door talking to voters</li>
<li><strong>Record visit outcomes</strong>: Track who you spoke with and their responses</li>
<li><strong>Navigate efficiently</strong>: Use GPS and walking routes to cover your territory</li>
<li><strong>Track your activity</strong>: View your canvassing history and statistics</li>
</ul>
<p>This guide will help you get started and make the most of your canvassing time.</p>
<hr />
<h2 id="getting-started">Getting Started<a class="headerlink" href="#getting-started" title="Permanent link">&para;</a></h2>
<h3 id="creating-your-account">Creating Your Account<a class="headerlink" href="#creating-your-account" title="Permanent link">&para;</a></h3>
<p>There are two ways to get a volunteer account:</p>
<h4 id="option-1-sign-up-for-a-shift-creates-temporary-account">Option 1: Sign Up for a Shift (Creates Temporary Account)<a class="headerlink" href="#option-1-sign-up-for-a-shift-creates-temporary-account" title="Permanent link">&para;</a></h4>
<ol>
<li>Visit the public shifts page (your organizer will send you the link)</li>
<li>Find a shift that works for your schedule</li>
<li>Click <strong>"Sign Up"</strong></li>
<li>Fill in:</li>
<li>Your name</li>
<li>Your email address</li>
<li>Phone number (optional)</li>
<li>Click <strong>"Confirm Signup"</strong></li>
</ol>
<p>You'll receive a confirmation email with your temporary login credentials.</p>
<div class="admonition note">
<p class="admonition-title">Temporary Accounts</p>
<p>When you sign up for a shift publicly, you get a TEMP account. This gives you limited access. After your first shift, an administrator will upgrade you to a full USER account with canvassing access.</p>
</div>
<h4 id="option-2-admin-creates-your-account">Option 2: Admin Creates Your Account<a class="headerlink" href="#option-2-admin-creates-your-account" title="Permanent link">&para;</a></h4>
<p>Your organizer may create an account for you directly. You'll receive a welcome email with:</p>
<ul>
<li>Your login email address</li>
<li>A temporary password</li>
<li>Instructions to change your password on first login</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Shift signup form showing name, email, and phone fields</em></p>
<h3 id="logging-in">Logging In<a class="headerlink" href="#logging-in" title="Permanent link">&para;</a></h3>
<p><strong>To access the volunteer portal:</strong></p>
<ol>
<li>Go to your organization's login page (usually <code>https://app.yourorg.org</code>)</li>
<li>Enter your email address</li>
<li>Enter your password</li>
<li>Click <strong>"Log In"</strong></li>
</ol>
<p>After logging in, you'll be automatically redirected to the volunteer dashboard at <code>/volunteer</code>.</p>
<div class="admonition tip">
<p class="admonition-title">Remember Me</p>
<p>Check "Remember me" to stay logged in for 7 days. Only do this on your personal device.</p>
</div>
<p><strong>Screenshot placeholder</strong>: <em>Login page with email/password fields and "Remember me" checkbox</em></p>
<h3 id="first-login-change-your-password">First Login: Change Your Password<a class="headerlink" href="#first-login-change-your-password" title="Permanent link">&para;</a></h3>
<p>If you received a temporary password, change it immediately:</p>
<ol>
<li>After logging in, click your email in the top-right corner</li>
<li>Select <strong>"Change Password"</strong></li>
<li>Enter your temporary password</li>
<li>Enter new password (must meet requirements)</li>
<li>Confirm new password</li>
<li>Click <strong>"Update Password"</strong></li>
</ol>
<p><strong>Password requirements:</strong></p>
<ul>
<li>Minimum 12 characters</li>
<li>At least one uppercase letter (A-Z)</li>
<li>At least one lowercase letter (a-z)</li>
<li>At least one digit (0-9)</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Change password modal showing current/new password fields</em></p>
<h3 id="volunteer-dashboard-overview">Volunteer Dashboard Overview<a class="headerlink" href="#volunteer-dashboard-overview" title="Permanent link">&para;</a></h3>
<p>Your volunteer dashboard shows:</p>
<p><strong>Top Navigation:</strong></p>
<ul>
<li><strong>Dashboard</strong> — Overview and quick stats</li>
<li><strong>My Shifts</strong> — Upcoming and past shifts</li>
<li><strong>My Activity</strong> — Canvassing history and statistics</li>
<li><strong>My Routes</strong> — Maps of areas you've canvassed</li>
</ul>
<p><strong>Dashboard Cards:</strong></p>
<ul>
<li><strong>Upcoming Shifts</strong>: Next 3 shifts you're signed up for</li>
<li><strong>Your Statistics</strong>: Total visits, doors knocked, support found</li>
<li><strong>Recent Activity</strong>: Last 10 visits you recorded</li>
<li><strong>Quick Start</strong>: Button to start canvassing if you have an active shift</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Volunteer dashboard showing statistics cards and upcoming shifts list</em></p>
<hr />
<h2 id="viewing-your-shifts">Viewing Your Shifts<a class="headerlink" href="#viewing-your-shifts" title="Permanent link">&para;</a></h2>
<h3 id="my-shifts-page">My Shifts Page<a class="headerlink" href="#my-shifts-page" title="Permanent link">&para;</a></h3>
<p><strong>To view all your shifts:</strong></p>
<ol>
<li>Click <strong>"My Shifts"</strong> in the top navigation</li>
</ol>
<p>The shifts page shows two tabs:</p>
<h4 id="upcoming-shifts">Upcoming Shifts<a class="headerlink" href="#upcoming-shifts" title="Permanent link">&para;</a></h4>
<p>Shows shifts you're signed up for that haven't happened yet.</p>
<p><strong>Each shift card shows:</strong></p>
<ul>
<li><strong>Shift title</strong>: Name of the canvass</li>
<li><strong>Date and time</strong>: When to arrive</li>
<li><strong>Meeting location</strong>: Where to meet (address or description)</li>
<li><strong>Cut assignment</strong>: Which area you'll be canvassing</li>
<li><strong>Other volunteers</strong>: Who else signed up (if visible)</li>
<li><strong>Actions</strong>: Cancel signup, view details, get directions</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Upcoming shifts showing three shift cards with date, time, and location</em></p>
<h4 id="past-shifts">Past Shifts<a class="headerlink" href="#past-shifts" title="Permanent link">&para;</a></h4>
<p>Shows shifts you've completed or that have passed.</p>
<p><strong>Each past shift shows:</strong></p>
<ul>
<li>Shift details</li>
<li>Your attendance (if tracked)</li>
<li>Number of visits you recorded</li>
<li>Session duration</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Past shifts showing completed shift cards with visit counts</em></p>
<h3 id="shift-details">Shift Details<a class="headerlink" href="#shift-details" title="Permanent link">&para;</a></h3>
<p><strong>To view shift details:</strong></p>
<ol>
<li>Click on a shift card</li>
<li>View:</li>
<li>Full description</li>
<li>Map of the cut you'll canvass</li>
<li>List of other volunteers (if visible)</li>
<li>Instructions from organizer</li>
<li>QR code to start canvassing (if you arrive early)</li>
</ol>
<p><strong>Screenshot placeholder</strong>: <em>Shift detail modal showing map, description, and volunteer list</em></p>
<h3 id="canceling-a-signup">Canceling a Signup<a class="headerlink" href="#canceling-a-signup" title="Permanent link">&para;</a></h3>
<p><strong>To cancel a shift signup:</strong></p>
<ol>
<li>Find the shift in <strong>My Shifts &gt; Upcoming</strong></li>
<li>Click <strong>"Cancel Signup"</strong></li>
<li>Confirm cancellation</li>
</ol>
<div class="admonition warning">
<p class="admonition-title">Cancel Early</p>
<p>Please cancel at least 24 hours before the shift if possible. Your organizer needs time to find a replacement.</p>
</div>
<p>You'll receive a confirmation email when you cancel.</p>
<hr />
<h2 id="canvassing">Canvassing<a class="headerlink" href="#canvassing" title="Permanent link">&para;</a></h2>
<h3 id="starting-a-canvass-session">Starting a Canvass Session<a class="headerlink" href="#starting-a-canvass-session" title="Permanent link">&para;</a></h3>
<p>You can start canvassing in two ways:</p>
<h4 id="method-1-from-dashboard-if-shift-is-today">Method 1: From Dashboard (If Shift is Today)<a class="headerlink" href="#method-1-from-dashboard-if-shift-is-today" title="Permanent link">&para;</a></h4>
<ol>
<li>Go to <strong>Volunteer Dashboard</strong></li>
<li>If you have a shift today, you'll see a <strong>"Start Canvassing"</strong> button</li>
<li>Click the button</li>
<li>Select which shift you're canvassing for (if you have multiple)</li>
<li>Click <strong>"Start Session"</strong></li>
</ol>
<h4 id="method-2-from-my-shifts">Method 2: From My Shifts<a class="headerlink" href="#method-2-from-my-shifts" title="Permanent link">&para;</a></h4>
<ol>
<li>Go to <strong>My Shifts</strong></li>
<li>Find today's shift</li>
<li>Click <strong>"Start Canvassing"</strong></li>
</ol>
<h4 id="method-3-scan-qr-code-walk-sheet">Method 3: Scan QR Code (Walk Sheet)<a class="headerlink" href="#method-3-scan-qr-code-walk-sheet" title="Permanent link">&para;</a></h4>
<p>If your organizer gave you a printed walk sheet:</p>
<ol>
<li>Open your phone's camera app</li>
<li>Point at the QR code on the walk sheet</li>
<li>Tap the notification that appears</li>
<li>Your browser will open and start the session automatically</li>
</ol>
<p><strong>Screenshot placeholder</strong>: <em>Start canvassing button on dashboard with shift selector dropdown</em></p>
<div class="admonition note">
<p class="admonition-title">One Session at a Time</p>
<p>You can only have one active session. Finish your current session before starting a new one.</p>
</div>
<h3 id="understanding-the-canvass-map">Understanding the Canvass Map<a class="headerlink" href="#understanding-the-canvass-map" title="Permanent link">&para;</a></h3>
<p>When you start a session, you'll see a full-screen map with:</p>
<p><strong>Map Elements:</strong></p>
<ol>
<li><strong>Your location</strong> (blue dot with accuracy circle)</li>
<li>Updates as you move</li>
<li>
<p>Accuracy circle shows GPS precision</p>
</li>
<li>
<p><strong>Locations to visit</strong> (house icons)</p>
</li>
<li><strong>Gray house</strong>: Not visited yet</li>
<li><strong>Yellow house</strong>: You visited, outcome recorded</li>
<li><strong>Red house</strong>: Refused to talk</li>
<li><strong>Green house</strong>: Supportive (LEVEL_1 or LEVEL_2)</li>
<li>
<p><strong>Blue house</strong>: Not home</p>
</li>
<li>
<p><strong>Walking route</strong> (purple line)</p>
</li>
<li>Suggested path connecting unvisited locations</li>
<li>Updates as you complete visits</li>
<li>
<p>Follow the line for efficient canvassing</p>
</li>
<li>
<p><strong>Cut boundary</strong> (colored polygon)</p>
</li>
<li>Your assigned territory</li>
<li>Don't canvass outside this area</li>
</ol>
<p><strong>Screenshot placeholder</strong>: <em>Canvass map showing blue location dot, house icons in different colors, and purple walking route</em></p>
<h3 id="map-controls">Map Controls<a class="headerlink" href="#map-controls" title="Permanent link">&para;</a></h3>
<p><strong>Top-left controls:</strong></p>
<ul>
<li><strong>Menu</strong> (hamburger icon): Open navigation drawer</li>
<li><strong>Center on me</strong> (target icon): Re-center map on your location</li>
<li><strong>Fullscreen</strong> (expand icon): Enter fullscreen mode</li>
</ul>
<p><strong>Bottom toolbar:</strong></p>
<ul>
<li><strong>Session timer</strong>: Shows how long you've been canvassing</li>
<li><strong>Visit counter</strong>: Number of doors you've knocked</li>
<li><strong>Next door</strong> button: Navigate to nearest unvisited location</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Map controls showing timer, visit counter, and "Next Door" button</em></p>
<h3 id="following-your-walking-route">Following Your Walking Route<a class="headerlink" href="#following-your-walking-route" title="Permanent link">&para;</a></h3>
<p>The purple line on the map is your suggested walking route.</p>
<p><strong>How the route works:</strong></p>
<ol>
<li>Starts at your current location</li>
<li>Connects to nearest unvisited location</li>
<li>Then to next nearest unvisited location</li>
<li>And so on, minimizing backtracking</li>
</ol>
<p><strong>To follow the route:</strong></p>
<ol>
<li>Look at the map</li>
<li>Walk toward the first location on the purple line</li>
<li>Your blue dot will move as you walk</li>
<li>When you reach a location, tap the house icon</li>
<li>Record your visit (see next section)</li>
<li>The route automatically updates to skip that location</li>
</ol>
<div class="admonition tip">
<p class="admonition-title">Use Turn-by-Turn Navigation</p>
<p>For long distances, tap a location and select "Get Directions" to open Google Maps for turn-by-turn navigation.</p>
</div>
<p><strong>Screenshot placeholder</strong>: <em>Walking route showing path from current location through several unvisited houses</em></p>
<h3 id="recording-visits">Recording Visits<a class="headerlink" href="#recording-visits" title="Permanent link">&para;</a></h3>
<p><strong>To record a visit:</strong></p>
<ol>
<li>Knock on the door (or ring doorbell)</li>
<li>Wait 20-30 seconds</li>
<li>If someone answers, have your conversation</li>
<li>After the interaction (or non-interaction), tap the house icon on the map</li>
<li>A bottom sheet slides up with the visit recording form</li>
</ol>
<p><strong>Screenshot placeholder</strong>: <em>Bottom sheet showing visit recording form with outcome buttons</em></p>
<h3 id="visit-outcomes">Visit Outcomes<a class="headerlink" href="#visit-outcomes" title="Permanent link">&para;</a></h3>
<p>You must select one of seven outcomes:</p>
<h4 id="1-not_home-nobody-answered">1. NOT_HOME (Nobody Answered)<a class="headerlink" href="#1-not_home-nobody-answered" title="Permanent link">&para;</a></h4>
<p><strong>When to use:</strong></p>
<ul>
<li>Nobody answered the door</li>
<li>Waited 20-30 seconds</li>
<li>No signs of activity</li>
</ul>
<p><strong>What happens:</strong></p>
<ul>
<li>Location marked as "not home"</li>
<li>Could try again later</li>
<li>No other details needed</li>
</ul>
<h4 id="2-refused-refused-to-talk">2. REFUSED (Refused to Talk)<a class="headerlink" href="#2-refused-refused-to-talk" title="Permanent link">&para;</a></h4>
<p><strong>When to use:</strong></p>
<ul>
<li>Someone answered but declined to talk</li>
<li>"Not interested"</li>
<li>Closed door immediately</li>
</ul>
<p><strong>What happens:</strong></p>
<ul>
<li>Location marked as "refused"</li>
<li>Don't visit again (respect their wishes)</li>
<li>Optional: Add notes about interaction</li>
</ul>
<h4 id="3-spoke_with-had-a-conversation">3. SPOKE_WITH (Had a Conversation)<a class="headerlink" href="#3-spoke_with-had-a-conversation" title="Permanent link">&para;</a></h4>
<p><strong>When to use:</strong></p>
<ul>
<li>Had a conversation (any length)</li>
<li>Discussed campaign issues</li>
<li>May or may not be supportive</li>
</ul>
<p><strong>What happens:</strong></p>
<ul>
<li>Prompts for support level (see below)</li>
<li>Can add notes about conversation</li>
<li>Can request sign placement</li>
</ul>
<p><strong>Most important outcome</strong> — this is your goal!</p>
<h4 id="4-moved_away-resident-moved">4. MOVED_AWAY (Resident Moved)<a class="headerlink" href="#4-moved_away-resident-moved" title="Permanent link">&para;</a></h4>
<p><strong>When to use:</strong></p>
<ul>
<li>Current resident says previous resident moved</li>
<li>For sale / for rent sign</li>
<li>Mailbox indicates new occupant</li>
</ul>
<p><strong>What happens:</strong></p>
<ul>
<li>Location marked as outdated</li>
<li>Helps organizer update database</li>
</ul>
<h4 id="5-wrong_address-location-doesnt-exist">5. WRONG_ADDRESS (Location Doesn't Exist)<a class="headerlink" href="#5-wrong_address-location-doesnt-exist" title="Permanent link">&para;</a></h4>
<p><strong>When to use:</strong></p>
<ul>
<li>Address doesn't exist (vacant lot, wrong number)</li>
<li>Building demolished</li>
<li>Address is commercial, not residential</li>
</ul>
<p><strong>What happens:</strong></p>
<ul>
<li>Flags location for removal from database</li>
</ul>
<h4 id="6-do_not_contact-asked-not-to-be-contacted">6. DO_NOT_CONTACT (Asked Not to Be Contacted)<a class="headerlink" href="#6-do_not_contact-asked-not-to-be-contacted" title="Permanent link">&para;</a></h4>
<p><strong>When to use:</strong></p>
<ul>
<li>Resident explicitly asks not to be contacted again</li>
<li>"Please remove me from your list"</li>
<li>Hostile response</li>
</ul>
<p><strong>What happens:</strong></p>
<ul>
<li>Location permanently marked "do not contact"</li>
<li>Will never appear on future walk sheets</li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Respect Privacy</p>
<p>Always honor "do not contact" requests immediately. It's legally required in many jurisdictions.</p>
</div>
<h4 id="7-other-something-else">7. OTHER (Something Else)<a class="headerlink" href="#7-other-something-else" title="Permanent link">&para;</a></h4>
<p><strong>When to use:</strong></p>
<ul>
<li>Situation doesn't fit other categories</li>
<li>Special circumstances</li>
</ul>
<p><strong>What happens:</strong></p>
<ul>
<li>Prompts you to add notes explaining situation</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Outcome buttons showing seven options with icons</em></p>
<h3 id="support-levels">Support Levels<a class="headerlink" href="#support-levels" title="Permanent link">&para;</a></h3>
<p>When you select <strong>SPOKE_WITH</strong>, you'll be asked to rate the resident's support level.</p>
<p><strong>Support Level Guide:</strong></p>
<h4 id="level_1-strong-support">LEVEL_1: Strong Support<a class="headerlink" href="#level_1-strong-support" title="Permanent link">&para;</a></h4>
<ul>
<li><strong>Definition</strong>: Enthusiastically supports your cause</li>
<li><strong>Indicators</strong>:</li>
<li>"Absolutely, I'm with you 100%"</li>
<li>Asks how they can help</li>
<li>Already familiar with the issue</li>
<li>Wants to volunteer</li>
<li><strong>Action</strong>: Ask if they want a yard sign, ask for volunteer signup</li>
</ul>
<h4 id="level_2-leaning-support">LEVEL_2: Leaning Support<a class="headerlink" href="#level_2-leaning-support" title="Permanent link">&para;</a></h4>
<ul>
<li><strong>Definition</strong>: Generally supportive but not highly engaged</li>
<li><strong>Indicators</strong>:</li>
<li>"Yeah, I agree with that"</li>
<li>Positive but brief response</li>
<li>Willing to listen</li>
<li>May have some questions</li>
<li><strong>Action</strong>: Provide information, ask if they want updates</li>
</ul>
<h4 id="level_3-undecided-neutral">LEVEL_3: Undecided / Neutral<a class="headerlink" href="#level_3-undecided-neutral" title="Permanent link">&para;</a></h4>
<ul>
<li><strong>Definition</strong>: Hasn't made up their mind</li>
<li><strong>Indicators</strong>:</li>
<li>"I need to think about it"</li>
<li>Sees both sides of the issue</li>
<li>Doesn't have strong opinion</li>
<li>Wants more information</li>
<li><strong>Action</strong>: Provide balanced information, offer to follow up</li>
</ul>
<h4 id="level_4-opposition">LEVEL_4: Opposition<a class="headerlink" href="#level_4-opposition" title="Permanent link">&para;</a></h4>
<ul>
<li><strong>Definition</strong>: Opposed to your cause</li>
<li><strong>Indicators</strong>:</li>
<li>"I disagree with that"</li>
<li>Supports opposing position</li>
<li>Strong opinions against</li>
<li><strong>Action</strong>: Thank them for their time, respectfully end conversation</li>
</ul>
<div class="admonition tip">
<p class="admonition-title">Be Honest</p>
<p>Record the support level as accurately as possible. This data helps your organizer understand the community and plan strategy.</p>
</div>
<p><strong>Screenshot placeholder</strong>: <em>Support level selector showing LEVEL_1 through LEVEL_4 with descriptions</em></p>
<h3 id="requesting-signs">Requesting Signs<a class="headerlink" href="#requesting-signs" title="Permanent link">&para;</a></h3>
<p>If the resident is supportive (LEVEL_1 or LEVEL_2), you can mark that they want a yard sign.</p>
<p><strong>To record a sign request:</strong></p>
<ol>
<li>After selecting support level</li>
<li>Toggle <strong>"Wants Sign"</strong> to ON</li>
<li>Optionally add notes (e.g., "Prefers small sign", "Needs post")</li>
</ol>
<p>Your organizer will see this request and arrange sign delivery.</p>
<p><strong>Screenshot placeholder</strong>: <em>Sign request toggle and notes field in visit form</em></p>
<h3 id="taking-notes-and-photos">Taking Notes and Photos<a class="headerlink" href="#taking-notes-and-photos" title="Permanent link">&para;</a></h3>
<p><strong>Notes field:</strong></p>
<p>Use the notes field to record:</p>
<ul>
<li>Key points from the conversation</li>
<li>Specific concerns the resident mentioned</li>
<li>Contact information (if they want follow-up)</li>
<li>Delivery instructions for signs</li>
<li>Any special circumstances</li>
</ul>
<p><strong>Example notes:</strong></p>
<ul>
<li>"Very concerned about climate change. Has two kids. Wants to receive newsletter."</li>
<li>"Undecided on issue. Worried about cost. Wants more info on funding."</li>
<li>"Strong support. Already signed petition. Wants to volunteer. Email: john@example.com"</li>
</ul>
<p><strong>Photo upload</strong> (optional):</p>
<p>Some organizations enable photo upload. You might take photos of:</p>
<ul>
<li>Yard sign placements</li>
<li>Location identifiers (helps future canvassers)</li>
<li>Special notes left by resident</li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Privacy</p>
<p>Never take photos of people without permission. Only photograph property/signs if allowed by your organizer.</p>
</div>
<p><strong>Screenshot placeholder</strong>: <em>Notes textarea and photo upload button in visit form</em></p>
<h3 id="saving-a-visit">Saving a Visit<a class="headerlink" href="#saving-a-visit" title="Permanent link">&para;</a></h3>
<p><strong>To save the visit:</strong></p>
<ol>
<li>Select outcome</li>
<li>Select support level (if spoke with resident)</li>
<li>Add notes (optional)</li>
<li>Toggle sign request (if applicable)</li>
<li>Click <strong>"Save Visit"</strong></li>
</ol>
<p>The bottom sheet closes, the location icon changes color, and your visit counter increments.</p>
<p><strong>Screenshot placeholder</strong>: <em>Complete visit form with all fields filled and "Save Visit" button highlighted</em></p>
<h3 id="skipping-a-location">Skipping a Location<a class="headerlink" href="#skipping-a-location" title="Permanent link">&para;</a></h3>
<p><strong>If you need to skip a location:</strong></p>
<ol>
<li>Don't tap the house icon</li>
<li>Walk to the next location on your route</li>
</ol>
<p><strong>Reasons to skip:</strong></p>
<ul>
<li>Dangerous dog</li>
<li>Unsafe approach (icy steps, etc.)</li>
<li>Location is inaccessible</li>
</ul>
<p>You can come back to skipped locations later in the session.</p>
<hr />
<h2 id="using-gps-navigation">Using GPS Navigation<a class="headerlink" href="#using-gps-navigation" title="Permanent link">&para;</a></h2>
<h3 id="enabling-location-permissions">Enabling Location Permissions<a class="headerlink" href="#enabling-location-permissions" title="Permanent link">&para;</a></h3>
<p><strong>To allow location access:</strong></p>
<p><strong>On iPhone:</strong></p>
<ol>
<li>When app requests location, tap <strong>"Allow While Using App"</strong></li>
<li>Or go to Settings &gt; Safari &gt; Location &gt; Allow</li>
</ol>
<p><strong>On Android:</strong></p>
<ol>
<li>When prompted, tap <strong>"Allow"</strong></li>
<li>Or go to Settings &gt; Apps &gt; Chrome &gt; Permissions &gt; Location &gt; Allow</li>
</ol>
<div class="admonition note">
<p class="admonition-title">Location Required</p>
<p>The canvassing map requires location access to show your position and update the walking route.</p>
</div>
<p><strong>Screenshot placeholder</strong>: <em>Location permission prompt on mobile browser</em></p>
<h3 id="improving-gps-accuracy">Improving GPS Accuracy<a class="headerlink" href="#improving-gps-accuracy" title="Permanent link">&para;</a></h3>
<p><strong>Tips for better GPS:</strong></p>
<ol>
<li><strong>Enable high accuracy mode</strong></li>
<li>iPhone: Settings &gt; Privacy &gt; Location Services &gt; System Services &gt; Improve Location</li>
<li>
<p>Android: Settings &gt; Location &gt; Google Location Accuracy &gt; ON</p>
</li>
<li>
<p><strong>Ensure clear sky view</strong></p>
</li>
<li>GPS works best outdoors</li>
<li>Move away from tall buildings if possible</li>
<li>
<p>Trees and structures reduce accuracy</p>
</li>
<li>
<p><strong>Wait for signal</strong></p>
</li>
<li>When you start session, GPS may take 30-60 seconds to lock</li>
<li>
<p>Blue circle will shrink as accuracy improves</p>
</li>
<li>
<p><strong>Keep phone unlocked</strong></p>
</li>
<li>Some browsers pause location updates when screen is locked</li>
<li>
<p>Consider increasing screen timeout</p>
</li>
<li>
<p><strong>Use Wi-Fi</strong></p>
</li>
<li>Even if not connected, enabling Wi-Fi improves location accuracy</li>
<li>Wi-Fi scanning helps triangulate position</li>
</ol>
<p><strong>Screenshot placeholder</strong>: <em>Map showing blue location dot with large accuracy circle (poor) vs small circle (good)</em></p>
<h3 id="next-door-button">"Next Door" Button<a class="headerlink" href="#next-door-button" title="Permanent link">&para;</a></h3>
<p>The <strong>"Next Door"</strong> button at the bottom of the map automatically:</p>
<ol>
<li>Finds the nearest unvisited location</li>
<li>Centers map on that location</li>
<li>Highlights the location (pulses)</li>
</ol>
<p><strong>When to use it:</strong></p>
<ul>
<li>You've finished a visit and want to know where to go next</li>
<li>You got turned around and need to reorient</li>
<li>You want to skip the current location and find the next one</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>"Next Door" button highlighted with arrow pointing to nearest unvisited location</em></p>
<h3 id="gps-troubleshooting">GPS Troubleshooting<a class="headerlink" href="#gps-troubleshooting" title="Permanent link">&para;</a></h3>
<p><strong>If GPS isn't working:</strong></p>
<ol>
<li><strong>Refresh the page</strong>: Pull down to refresh</li>
<li><strong>Check permissions</strong>: Make sure location is allowed</li>
<li><strong>Toggle location off/on</strong>: In phone settings</li>
<li><strong>Restart browser</strong>: Close and reopen</li>
<li><strong>Try airplane mode toggle</strong>: Turn on/off to reset radios</li>
<li><strong>Check battery saver</strong>: Some battery saver modes disable GPS</li>
<li><strong>Contact your organizer</strong>: They can manually mark your visits</li>
</ol>
<hr />
<h2 id="ending-your-session">Ending Your Session<a class="headerlink" href="#ending-your-session" title="Permanent link">&para;</a></h2>
<h3 id="finishing-canvassing">Finishing Canvassing<a class="headerlink" href="#finishing-canvassing" title="Permanent link">&para;</a></h3>
<p><strong>When you're done canvassing:</strong></p>
<ol>
<li>Open the menu (hamburger icon, top-left)</li>
<li>Tap <strong>"End Session"</strong></li>
<li>Review your session summary:</li>
<li>Total visits</li>
<li>Breakdown by outcome</li>
<li>Session duration</li>
<li>Support levels found</li>
<li>Tap <strong>"Confirm End Session"</strong></li>
</ol>
<p><strong>Screenshot placeholder</strong>: <em>End session confirmation showing session statistics</em></p>
<h3 id="session-summary">Session Summary<a class="headerlink" href="#session-summary" title="Permanent link">&para;</a></h3>
<p>After ending, you'll see a summary screen with:</p>
<p><strong>Your results:</strong></p>
<ul>
<li><strong>Total visits</strong>: Doors you knocked</li>
<li><strong>Spoke with</strong>: Conversations had</li>
<li><strong>Support found</strong>: LEVEL_1 and LEVEL_2 residents</li>
<li><strong>Sign requests</strong>: Signs to deliver</li>
<li><strong>Session time</strong>: How long you canvassed</li>
</ul>
<p><strong>What happens next:</strong></p>
<ul>
<li>Your visits are saved to the database</li>
<li>Your organizer can see your results</li>
<li>You can view your activity history in <strong>My Activity</strong></li>
</ul>
<div class="admonition tip">
<p class="admonition-title">Share Your Results</p>
<p>Take a screenshot of your summary to share on social media and encourage other volunteers!</p>
</div>
<p><strong>Screenshot placeholder</strong>: <em>Session summary screen showing statistics and "Share Results" button</em></p>
<h3 id="abandoned-sessions">Abandoned Sessions<a class="headerlink" href="#abandoned-sessions" title="Permanent link">&para;</a></h3>
<p>If you forget to end your session, don't worry:</p>
<ul>
<li>Sessions older than 12 hours are automatically closed</li>
<li>Your visit data is preserved</li>
<li>Next time you log in, you can start a new session</li>
</ul>
<hr />
<h2 id="viewing-your-activity">Viewing Your Activity<a class="headerlink" href="#viewing-your-activity" title="Permanent link">&para;</a></h2>
<h3 id="my-activity-page">My Activity Page<a class="headerlink" href="#my-activity-page" title="Permanent link">&para;</a></h3>
<p><strong>To view your canvassing history:</strong></p>
<ol>
<li>Click <strong>"My Activity"</strong> in the top navigation</li>
</ol>
<p>The activity page shows:</p>
<p><strong>Statistics cards:</strong></p>
<ul>
<li><strong>Total visits</strong>: All-time visit count</li>
<li><strong>Doors knocked</strong>: Total locations visited</li>
<li><strong>Support found</strong>: LEVEL_1 and LEVEL_2 combined</li>
<li><strong>Signs requested</strong>: Total sign requests</li>
</ul>
<p><strong>Outcome breakdown chart:</strong></p>
<ul>
<li>Pie chart showing % of each outcome</li>
<li>NOT_HOME, REFUSED, SPOKE_WITH, etc.</li>
<li>Helps you see patterns</li>
</ul>
<p><strong>Visit history table:</strong></p>
<ul>
<li>Date and time</li>
<li>Address visited</li>
<li>Outcome</li>
<li>Support level</li>
<li>Notes</li>
<li>Associated shift</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>My Activity page showing statistics, pie chart, and visit history table</em></p>
<h3 id="filtering-your-activity">Filtering Your Activity<a class="headerlink" href="#filtering-your-activity" title="Permanent link">&para;</a></h3>
<p><strong>Available filters:</strong></p>
<ul>
<li><strong>Date range</strong>: Last 7 days, last 30 days, all time, custom</li>
<li><strong>Outcome</strong>: Show only specific outcomes</li>
<li><strong>Support level</strong>: Show only specific support levels</li>
<li><strong>Shift</strong>: Show only specific shifts</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Activity filters showing date range picker and outcome dropdown</em></p>
<h3 id="exporting-your-data">Exporting Your Data<a class="headerlink" href="#exporting-your-data" title="Permanent link">&para;</a></h3>
<p><strong>To export your activity:</strong></p>
<ol>
<li>Go to <strong>My Activity</strong></li>
<li>Apply filters (optional)</li>
<li>Click <strong>"Export CSV"</strong></li>
<li>Open the file in Excel or Google Sheets</li>
</ol>
<p>The export includes all visible visits with full details.</p>
<hr />
<h2 id="my-routes">My Routes<a class="headerlink" href="#my-routes" title="Permanent link">&para;</a></h2>
<h3 id="viewing-past-routes">Viewing Past Routes<a class="headerlink" href="#viewing-past-routes" title="Permanent link">&para;</a></h3>
<p><strong>To see where you've canvassed:</strong></p>
<ol>
<li>Click <strong>"My Routes"</strong> in the top navigation</li>
</ol>
<p>Each past session shows:</p>
<ul>
<li><strong>Map of the cut</strong> you canvassed</li>
<li><strong>Your path</strong> (GPS track, if available)</li>
<li><strong>Visited locations</strong> (colored by outcome)</li>
<li><strong>Session details</strong>: Date, duration, visit count</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>My Routes showing map with GPS track and visited location markers</em></p>
<h3 id="route-statistics">Route Statistics<a class="headerlink" href="#route-statistics" title="Permanent link">&para;</a></h3>
<p>For each route, you can see:</p>
<ul>
<li><strong>Distance traveled</strong>: Estimated walking distance</li>
<li><strong>Coverage</strong>: % of cut visited</li>
<li><strong>Average time per visit</strong>: How long each interaction took</li>
<li><strong>Efficiency</strong>: Visits per hour</li>
</ul>
<p>This helps you improve your canvassing technique over time.</p>
<hr />
<h2 id="mobile-tips">Mobile Tips<a class="headerlink" href="#mobile-tips" title="Permanent link">&para;</a></h2>
<h3 id="battery-saving">Battery Saving<a class="headerlink" href="#battery-saving" title="Permanent link">&para;</a></h3>
<p>Canvassing uses GPS continuously, which drains battery. To conserve:</p>
<ol>
<li><strong>Lower screen brightness</strong>: Adjust in quick settings</li>
<li><strong>Enable battery saver</strong> (after GPS locks): Reduces background activity</li>
<li><strong>Close other apps</strong>: Free up resources</li>
<li><strong>Bring portable charger</strong>: Essential for long sessions</li>
<li><strong>Use low power mode</strong> (cautiously): May reduce GPS accuracy</li>
</ol>
<p><strong>Expected battery life:</strong></p>
<ul>
<li>2-3 hours of continuous canvassing</li>
<li>Bring charger for sessions longer than 2 hours</li>
</ul>
<p><strong>Screenshot placeholder</strong>: <em>Phone battery settings showing low power mode and brightness slider</em></p>
<h3 id="offline-considerations">Offline Considerations<a class="headerlink" href="#offline-considerations" title="Permanent link">&para;</a></h3>
<p>The canvassing app requires internet connection for:</p>
<ul>
<li>Loading the map</li>
<li>Saving visits to the server</li>
<li>Updating the walking route</li>
</ul>
<div class="admonition warning">
<p class="admonition-title">No Offline Mode</p>
<p>Currently, there's no offline mode. Ensure you have cellular data or Wi-Fi before starting.</p>
</div>
<p><strong>If you lose connection:</strong></p>
<ul>
<li>Your current location still updates (GPS works offline)</li>
<li>You can still record visits (they're saved locally)</li>
<li>Visits will sync when connection returns</li>
<li>Map tiles may not load in new areas</li>
</ul>
<p><strong>Tips:</strong></p>
<ul>
<li>Check signal strength before starting session</li>
<li>Start session while connected (loads map data)</li>
<li>If rural area, load map of cut before leaving Wi-Fi</li>
</ul>
<h3 id="network-connectivity">Network Connectivity<a class="headerlink" href="#network-connectivity" title="Permanent link">&para;</a></h3>
<p><strong>Minimum requirements:</strong></p>
<ul>
<li>3G cellular data or better</li>
<li>Low latency (&lt; 500ms ping)</li>
</ul>
<p><strong>Recommended:</strong></p>
<ul>
<li>4G/LTE or better</li>
<li>Wi-Fi for starting session (loads initial data faster)</li>
</ul>
<p><strong>Data usage:</strong></p>
<ul>
<li>~5-10 MB per hour of canvassing</li>
<li>Map tiles are the largest data use</li>
<li>Visit recording uses minimal data</li>
</ul>
<hr />
<h2 id="safety-privacy">Safety &amp; Privacy<a class="headerlink" href="#safety-privacy" title="Permanent link">&para;</a></h2>
<h3 id="personal-safety-tips">Personal Safety Tips<a class="headerlink" href="#personal-safety-tips" title="Permanent link">&para;</a></h3>
<p><strong>Before you go:</strong></p>
<ol>
<li><strong>Let someone know</strong>: Tell a friend/family where you'll be canvassing</li>
<li><strong>Bring a buddy</strong>: Canvass in pairs if possible</li>
<li><strong>Charge your phone</strong>: Essential for emergencies</li>
<li><strong>Wear comfortable shoes</strong>: You'll be walking a lot</li>
<li><strong>Check the weather</strong>: Dress appropriately</li>
</ol>
<p><strong>While canvassing:</strong></p>
<ol>
<li><strong>Stay in public view</strong>: Don't enter homes or yards</li>
<li><strong>Trust your instincts</strong>: Skip locations that feel unsafe</li>
<li><strong>Avoid aggressive dogs</strong>: Use the "skip" function</li>
<li><strong>Stay hydrated</strong>: Bring water, especially in summer</li>
<li><strong>Take breaks</strong>: Rest every hour</li>
<li><strong>Be aware of traffic</strong>: Look both ways before crossing streets</li>
</ol>
<p><strong>If you feel unsafe:</strong></p>
<ol>
<li>Leave the area immediately</li>
<li>Mark the location with outcome "OTHER" and note the safety concern</li>
<li>Contact your organizer</li>
<li>Call 911 if there's an emergency</li>
</ol>
<div class="admonition danger">
<p class="admonition-title">Safety First</p>
<p>Never prioritize completing visits over your personal safety. It's always okay to skip a location or end your session early.</p>
</div>
<p><strong>Screenshot placeholder</strong>: <em>Safety checklist infographic</em></p>
<h3 id="privacy-of-resident-information">Privacy of Resident Information<a class="headerlink" href="#privacy-of-resident-information" title="Permanent link">&para;</a></h3>
<p><strong>What you can do with resident data:</strong></p>
<ul>
<li>Use it during your canvass session</li>
<li>Record visit outcomes and notes</li>
<li>Share relevant information with your organizer</li>
</ul>
<p><strong>What you cannot do:</strong></p>
<ul>
<li>Share resident information on social media</li>
<li>Use contact info for personal purposes</li>
<li>Sell or distribute the data</li>
<li>Contact residents outside official campaign activities</li>
</ul>
<p><strong>Legal obligations:</strong></p>
<ul>
<li>Respect "do not contact" requests immediately</li>
<li>Don't photograph residents without permission</li>
<li>Don't share personal details residents tell you (unless they explicitly allow)</li>
</ul>
<p><strong>Data you record is used for:</strong></p>
<ul>
<li>Campaign strategy and planning</li>
<li>Follow-up contact (official campaign only)</li>
<li>Sign delivery coordination</li>
<li>Voter outreach statistics</li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Confidentiality</p>
<p>Treat all resident information as confidential. Violating privacy can result in legal consequences and harm the campaign.</p>
</div>
<hr />
<h2 id="faqs">FAQs<a class="headerlink" href="#faqs" title="Permanent link">&para;</a></h2>
<h3 id="account-login">Account &amp; Login<a class="headerlink" href="#account-login" title="Permanent link">&para;</a></h3>
<p><strong>Q: I forgot my password. How do I reset it?</strong></p>
<p>A: Click "Forgot Password" on the login page, enter your email, and check your email for reset instructions.</p>
<p><strong>Q: My email says I have a TEMP account. What does that mean?</strong></p>
<p>A: TEMP accounts are created when you sign up for a shift publicly. After your first shift, an admin will upgrade you to a USER account with full access.</p>
<p><strong>Q: Can I change my email address?</strong></p>
<p>A: Contact your organizer to change your email. You cannot change it yourself.</p>
<hr />
<h3 id="shifts">Shifts<a class="headerlink" href="#shifts" title="Permanent link">&para;</a></h3>
<p><strong>Q: I signed up for a shift but didn't receive a confirmation email.</strong></p>
<p>A: Check your spam folder. If still not there, contact your organizer to verify your signup.</p>
<p><strong>Q: Can I sign up a friend for a shift?</strong></p>
<p>A: Use the public signup form (one signup per person). Or ask your organizer to create accounts for multiple people.</p>
<p><strong>Q: What if I'm running late to a shift?</strong></p>
<p>A: Contact your organizer as soon as possible. You can still start canvassing when you arrive.</p>
<p><strong>Q: I don't see any shifts. When will more be added?</strong></p>
<p>A: Your organizer creates shifts as needed. Check back regularly or ask when the next shift will be scheduled.</p>
<hr />
<h3 id="canvassing_1">Canvassing<a class="headerlink" href="#canvassing_1" title="Permanent link">&para;</a></h3>
<p><strong>Q: What should I say at the door?</strong></p>
<p>A: Your organizer will provide a script or talking points. Generally:
1. Introduce yourself and your organization
2. Briefly explain why you're canvassing
3. Ask if they have time to talk
4. Respect their answer (yes or no)</p>
<p><strong>Q: What if someone gets angry?</strong></p>
<p>A: Stay calm, polite, and respectful. Say "I understand, thank you for your time" and leave. Mark as REFUSED. If threatened, leave immediately and report to your organizer.</p>
<p><strong>Q: Can I canvass outside my assigned cut?</strong></p>
<p>A: No, stick to your assigned territory. Other volunteers may be assigned to other cuts, and visiting outside your area creates duplication.</p>
<p><strong>Q: What if I make a mistake recording a visit?</strong></p>
<p>A: Contact your organizer. They can edit visit records in the admin panel.</p>
<p><strong>Q: The walking route seems inefficient. Can I change it?</strong></p>
<p>A: The route is generated automatically. You can visit locations in any order you prefer—the route is just a suggestion.</p>
<p><strong>Q: What if it starts raining?</strong></p>
<p>A: Your safety comes first. End your session and seek shelter. You can resume canvassing later.</p>
<hr />
<h3 id="technical-issues">Technical Issues<a class="headerlink" href="#technical-issues" title="Permanent link">&para;</a></h3>
<p><strong>Q: The map won't load.</strong></p>
<p>A:
1. Check your internet connection
2. Refresh the page (pull down)
3. Try logging out and back in
4. Try a different browser
5. Contact your organizer if still not working</p>
<p><strong>Q: My location is wrong on the map.</strong></p>
<p>A:
1. Make sure location permissions are enabled
2. Move to an area with clear sky view
3. Wait 1-2 minutes for GPS to improve
4. Toggle airplane mode off/on to reset GPS</p>
<p><strong>Q: I can't save a visit.</strong></p>
<p>A:
1. Check your internet connection (visit saves to server)
2. Make sure you selected an outcome
3. Try refreshing the page
4. If offline, visit will save when connection returns</p>
<p><strong>Q: The app is slow.</strong></p>
<p>A:
1. Close other apps (frees up memory)
2. Restart your browser
3. Clear browser cache (Settings &gt; Safari/Chrome &gt; Clear Cache)
4. Update your browser to latest version</p>
<p><strong>Q: I accidentally ended my session. Can I resume?</strong></p>
<p>A: No, sessions cannot be resumed. Start a new session to continue canvassing.</p>
<hr />
<h3 id="data-privacy">Data &amp; Privacy<a class="headerlink" href="#data-privacy" title="Permanent link">&para;</a></h3>
<p><strong>Q: What data do you collect about me?</strong></p>
<p>A: We collect:
- Your name and email (account info)
- GPS location (only during canvassing sessions)
- Visit records (outcomes, notes you enter)
- Session statistics (time, visit count)</p>
<p><strong>Q: Is my location tracked when I'm not canvassing?</strong></p>
<p>A: No, location is only accessed when you have an active canvassing session. Close your browser when done to ensure no tracking.</p>
<p><strong>Q: Can other volunteers see my activity?</strong></p>
<p>A: Other volunteers cannot see your activity. Only administrators can view visit records and statistics.</p>
<p><strong>Q: Can I delete my account?</strong></p>
<p>A: Contact your organizer to request account deletion. This will remove your personal information but preserve anonymized visit records for campaign statistics.</p>
<p><strong>Q: What happens to the data I collect?</strong></p>
<p>A: Visit data is used for:
- Campaign strategy (identifying support levels)
- Volunteer coordination (tracking coverage)
- Sign delivery (fulfilling requests)
- Follow-up outreach (contacting supportive residents)</p>
<p>Data is never sold or shared with third parties.</p>
<hr />
<h2 id="troubleshooting">Troubleshooting<a class="headerlink" href="#troubleshooting" title="Permanent link">&para;</a></h2>
<h3 id="common-issues">Common Issues<a class="headerlink" href="#common-issues" title="Permanent link">&para;</a></h3>
<h4 id="cannot-start-canvass-session">Cannot Start Canvass Session<a class="headerlink" href="#cannot-start-canvass-session" title="Permanent link">&para;</a></h4>
<p><strong>Error: "No active shift found"</strong></p>
<p><strong>Solution:</strong> You need a shift assigned to you for today. Check <strong>My Shifts</strong> to see if you have any upcoming shifts. If not, sign up for a shift or contact your organizer.</p>
<hr />
<p><strong>Error: "Shift has no cut assigned"</strong></p>
<p><strong>Solution:</strong> The shift you signed up for doesn't have a territory assigned. Contact your organizer to assign a cut to the shift.</p>
<hr />
<p><strong>Error: "You already have an active session"</strong></p>
<p><strong>Solution:</strong> You have an abandoned session from a previous canvass. Contact your organizer to close the old session, or wait 12 hours for automatic cleanup.</p>
<hr />
<h4 id="gps-not-working">GPS Not Working<a class="headerlink" href="#gps-not-working" title="Permanent link">&para;</a></h4>
<p><strong>Symptoms:</strong> Blue location dot doesn't appear or doesn't move</p>
<p><strong>Solutions:</strong></p>
<ol>
<li><strong>Enable location permissions</strong>:</li>
<li>iPhone: Settings &gt; Safari &gt; Location Services &gt; While Using</li>
<li>Android: Settings &gt; Apps &gt; Chrome &gt; Permissions &gt; Location &gt; Allow</li>
<li><strong>Refresh the page</strong>: Pull down to refresh</li>
<li><strong>Check GPS signal</strong>: Move to an area with clear sky view</li>
<li><strong>Restart location services</strong>: Toggle location off/on in phone settings</li>
<li><strong>Try a different browser</strong>: Some browsers have better GPS support</li>
</ol>
<hr />
<h4 id="walking-route-not-updating">Walking Route Not Updating<a class="headerlink" href="#walking-route-not-updating" title="Permanent link">&para;</a></h4>
<p><strong>Symptoms:</strong> Purple line doesn't change after completing visits</p>
<p><strong>Solutions:</strong></p>
<ol>
<li><strong>Refresh the map</strong>: Pull down to refresh</li>
<li><strong>Check internet connection</strong>: Route updates require server communication</li>
<li><strong>Wait 30 seconds</strong>: Updates may be delayed</li>
<li><strong>Manually navigate</strong>: Use "Next Door" button instead of following line</li>
</ol>
<hr />
<h4 id="visit-wont-save">Visit Won't Save<a class="headerlink" href="#visit-wont-save" title="Permanent link">&para;</a></h4>
<p><strong>Symptoms:</strong> "Save Visit" button doesn't work or shows error</p>
<p><strong>Solutions:</strong></p>
<ol>
<li><strong>Check required fields</strong>: Make sure you selected an outcome</li>
<li><strong>Check internet connection</strong>: Visits save to server (requires connection)</li>
<li><strong>Try again</strong>: Close bottom sheet and tap location again</li>
<li><strong>Refresh page</strong>: Pull down to refresh</li>
<li><strong>Record offline</strong>: If persistently failing, write down visit details and report to organizer later</li>
</ol>
<hr />
<h4 id="bottom-sheet-wont-close">Bottom Sheet Won't Close<a class="headerlink" href="#bottom-sheet-wont-close" title="Permanent link">&para;</a></h4>
<p><strong>Symptoms:</strong> Visit recording form stays open after saving</p>
<p><strong>Solutions:</strong></p>
<ol>
<li><strong>Swipe down</strong>: Swipe bottom sheet downward to close</li>
<li><strong>Tap outside</strong>: Tap on the map area</li>
<li><strong>Refresh page</strong>: Pull down to refresh</li>
</ol>
<hr />
<h3 id="getting-help">Getting Help<a class="headerlink" href="#getting-help" title="Permanent link">&para;</a></h3>
<p><strong>If you have technical issues during canvassing:</strong></p>
<ol>
<li><strong>Try basic troubleshooting</strong>: Refresh page, check connection</li>
<li><strong>Continue canvassing</strong>: Use "Next Door" button and visual map</li>
<li><strong>Take notes</strong>: Write down visit details if app fails</li>
<li><strong>Report to organizer</strong>: After session, explain what happened</li>
</ol>
<p><strong>If you have questions about canvassing technique:</strong></p>
<ol>
<li><strong>Ask your organizer</strong>: Before the shift</li>
<li><strong>Consult the script</strong>: Your organizer should provide talking points</li>
<li><strong>Watch experienced volunteers</strong>: Learn by observing</li>
</ol>
<p><strong>If you have account or scheduling issues:</strong></p>
<ol>
<li><strong>Contact your organizer</strong>: They have admin access to fix account problems</li>
<li><strong>Check your email</strong>: Look for notifications about shift changes</li>
<li><strong>Review this guide</strong>: Many common questions are answered here</li>
</ol>
<hr />
<h2 id="related-documentation">Related Documentation<a class="headerlink" href="#related-documentation" title="Permanent link">&para;</a></h2>
<ul>
<li><strong><a href="../admin-guide/">Admin Guide</a></strong>: For organizers and administrators</li>
<li><strong><a href="../campaign-manager-guide/">Campaign Manager Guide</a></strong>: Guide to running advocacy campaigns</li>
<li><strong><a href="../map-organizer-guide/">Map Organizer Guide</a></strong>: Guide to managing territories and canvassing operations</li>
<li><strong><a href="../features/map.md">Map Module Features</a></strong>: Technical documentation on canvassing system</li>
<li><strong><a href="../features/canvassing.md">Canvassing System</a></strong>: Detailed technical documentation</li>
</ul>
<hr />
<p><strong>Last updated</strong>: February 2026 (V2 complete)</p>
<p><strong>Need help?</strong> Contact your organizer or visit the documentation at <code>/docs</code>.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer" >
<a href="../content-editor-guide/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Content Editor Guide">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
Previous
</span>
<div class="md-ellipsis">
Content Editor Guide
</div>
</div>
</a>
<a href="../../troubleshooting/" class="md-footer__link md-footer__link--next" aria-label="Next: Troubleshooting Guide">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
Troubleshooting Guide
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2024 The Bunker Operations <a href="#__consent">Change cookie settings</a>
</div>
</div>
<div class="md-social">
<a href="https://gitea.bnkops.com/admin" target="_blank" rel="noopener" title="Gitea Repository" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</a>
<a href="https://listmonk.bnkops.com/subscription/form" target="_blank" rel="noopener" title="Newsletter" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M536.4-26.3c9.8-3.5 20.6-1 28 6.3s9.8 18.2 6.3 28l-178 496.9c-5 13.9-18.1 23.1-32.8 23.1-14.2 0-27-8.6-32.3-21.7l-64.2-158c-4.5-11-2.5-23.6 5.2-32.6l94.5-112.4c5.1-6.1 4.7-15-.9-20.6s-14.6-6-20.6-.9l-112.4 94.3c-9.1 7.6-21.6 9.6-32.6 5.2L38.1 216.8c-13.1-5.3-21.7-18.1-21.7-32.3 0-14.7 9.2-27.8 23.1-32.8z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "../../..", "features": ["announce.dismiss", "content.action.edit", "content.action.view", "content.code.annotate", "content.code.copy", "content.tooltips", "navigation.expand", "navigation.footer", "navigation.indexes", "navigation.path", "navigation.prune", "navigation.sections", "navigation.tabs", "navigation.tabs.sticky", "navigation.top", "navigation.tracking", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../../assets/javascripts/bundle.79ae519e.min.js"></script>
<script src="../../../javascripts/home.js"></script>
<script src="../../../javascripts/github-widget.js"></script>
<script src="../../../javascripts/gitea-widget.js"></script>
<script src="../../../assets/js/env-config.js"></script>
<script src="../../../assets/js/video-player.js"></script>
</body>
</html>