TIP — PERMISSIONS
Field requires the field feature. Viewing turfs needs view_voters; creating or editing them needs manage_turfs; canvass events run on manage_volunteers.
Turfs
Turfs split your voter file into geographic chunks a single canvasser can reasonably knock in one shift: a name, a list of assigned voters, an optional polygon on the map, an optional script, and notes for canvassers ("Stay on east side of Main").
Two ways to create one:
- From the map — draw a polygon; Romulus auto-assigns every voter inside it.
- From a filter — filter Voters to a ZIP, ward, or precinct and click Save as turf. No polygon by default; draw one later if you like.
Assignments aren't frozen — move edge-of-polygon households between turfs any time, and Re-evaluate picks up voters added since the turf was built. Voters are stored sorted by street address, and walk order is computed nearest-neighbor so canvassers minimize backtracking.
The turf list shows voter count, contacted-in-30-days, % complete, and last canvass; click into a turf for a color-coded contact-age map, outcome breakdowns, script response summaries, and per-canvasser session stats. Each turf also carries a canvass mode — standard door-knock, lit drop, ID, or interview — set on its field-ops panel, and that choice decides what canvassers see at the door.
Canvass events
A canvass event is a scheduled operating moment — Saturday morning, GOTV weekend — with volunteers assigned to turfs. The turf is the geography; the event is the moment. Create one with a name, date and times, meet location, and notes, then assign each volunteer a role and a turf.
Enable RSVP mode to ask canvassers to confirm instead of assigning unilaterally — it tracks confirmed / declined / tentative and sends reminders the day before and day-of. Cancelling or rescheduling notifies assigned canvassers by email automatically.
CANVASS REVIEW QUEUE
With feature_canvass_review on, canvasser submissions wait in a pending queue for staff approval before writing to the voter file — approve or reject individually, or bulk-approve a canvasser's whole shift. Useful with lots of new volunteers; turn it off for trusted teams.
Scripts & walk sheets
Scripts are per-turf, so a stronghold turf and a swing turf can ask different questions. Each question has a prompt, an answer type (multiple choice, yes/no, free text, 1–5 scale), optional branching (show only if a previous answer matched), and an optional maps-to — the answer feeds a structured voter field or custom field. You can also Draft with AI: describe the goal in a sentence and edit the proposed script.
Prefer paper? Every turf generates a walk sheet PDF — sorted by walking route, with name, age, party, address, last contact, and checkboxes per script question. The header carries the turf name, canvasser, date, and a small route map. Staff enter paper responses from voter profiles afterward, and both routes land in the same analytics.
- Keep scripts short — 3–7 questions is plenty.
- Lead with the easiest question (support level) to set rhythm.
- Map every question to a structured field — free text is hard to analyze in bulk.
- Don't print sheets more than a day ahead; contact history moves underneath you.
Live canvasser tracking
Field → Active canvassers is a split map-and-list view fed by GPS pings from the canvasser app every 15–30 seconds. Each canvasser shows their turf, current location, session stats (doors, spoken-to, not-home, refusals), and last activity — pin color encodes recency (green → yellow after 2 minutes → grey after 10). Aggregate counters roll up the whole event live.
Click any canvasser to message them directly ("Skip building 14 — security gate"); the message lands in their app in seconds with a read receipt back. Broadcast to the whole event from the event page. Need someone off the field mid-shift? Reassign their turf from the event and their app updates at the next ping.
PRIVACY
Pings only send while a canvasser is logged in with a turf assignment for the day, the app shows a "tracking active" indicator, and pings auto-prune after 7 days. They're never exported.
Paid canvassing
Some programs pay their canvassers, and paying people is its own discipline — hours, rates, eligibility, checks, and a paper trail that has to hold up. Turn on the paid_staff feature and a Paid Program desk appears under Field to run all of it in one place, instead of in a spreadsheet nobody else can open.
The desk breaks into a handful of working areas:
The rules around all this are deliberately tilted toward the people getting paid. The desk can only approve eligibility — never start it, and there's no bulk-approve, so nobody gets waved through in a batch. Declining eligibility sends nothing to the canvasser; declining a shift's pay requires a note, so there's always a reason on the record. And rate or policy changes are never retroactive — the rate is snapshotted onto the sign-up when the shift actually happens, so raising your rates tomorrow never rewrites what someone already earned.
CAREFUL — OWED PAY
Revoking eligibility only ever applies going forward, and voiding a check always reissues it — owed pay is never simply deleted. Every money action is written to the audit log. Reading, approving, and paying all require manage_volunteers; flipping the whole program's master switch on or off additionally requires manage_campaign.