Lawn signs

Every sign request in one place: the live map, public form, a plan for how many boards you still need, sign turfs, and teardown.

For admins and canvassers

Why a Signs page

Lawn signs are the most visible thing a municipal campaign does, and the most chaotic to run: requests arrive at the door, by email, on the website, and by text to the candidate. The Signs page in admin is the one list. Every request has an address on the map, a size, and a status — Requested, Installed, Damaged, Removed, or Declined — so the sign crew always knows what still needs to go in the ground.

The request list

The Requests tab is a table you can filter by status or size and search by address, name, email, or phone. Change size or status inline — flip an existing lawn sign to Large when the crew needs rebar and a pounder — add a note (“side yard, gate code 1234”), or add a request by hand for the one that came in by text. The Map tab shows the same requests as coloured pins; tap a pin to update it. Requested is navy, installed is green, and damaged is red. Large signs are bigger dots with an amber ring, and the size chips hide everything else so a teardown crew can run only the 8x4s. Turf outlines stay off so you can see the pins — turn them on with Show turfs if you want the canvass areas as a backdrop. Both tabs show who installed a sign and when.

Share the public request form

Open Share & form. Every campaign has a permanent public link — something like doorline.dev/s/<code> — that anyone can open on a phone to request a sign. Next to it is a QR code you can download as PNG or SVG and print on flyers, door hangers, and the back of the sign itself. The code never changes unless you generate a new link (type generate new link to confirm). That is irreversible: every printed QR code fails, and any embed on your website must be swapped for the new snippet.

Residents give their name, email, address (matched to your map as they type, and only doors in your ward), unit if any, sign size, a note for the crew, and whether they would also volunteer or donate. An address outside the ward is turned away — we cannot put signs past the boundary. The unit box is the apartment number only, and it stops at 20 characters. A longer message — side yard, a gate code, what is wrong with a damaged board — goes in the note. The sign crew and admin both see that note on the request.

Embed the form on your own website

The same tab gives you an embed snippet. Paste it into Squarespace, WordPress, or anywhere that accepts HTML, and the form appears on your site. Pick a background colour and a button colour so it matches your site — NationBuilder themes often use the campaign colour on buttons. Submissions still land in DoorLine.

NationBuilder is pickier. Keep the page you already have — the one in the nav, footer, and any “get a sign” buttons. Do not unpublish it, do not make a new page, and do not change the slug. Those links keep working as soon as that page's template changes.

In NationBuilder: Website → Pages (or Site map) → the sign-request page. Confirm it is still published. Then:

  1. Open Template. If you have never customized it, click Create a custom template — that copies the current theme template for this page only.
  2. Do not paste the iframe into the Content editor. NationBuilder strips it. Do not tick Ignore layout template (wording varies by theme) — that drops your nav and footer. Do not edit pages_show_signup.html in the theme — that would also change Newsletter and every other signup page.
  3. If the page is a Signup page, delete the {% form_for signup %} … {% endform_for %} block so you don't get two forms. The page type is at the top of the edit screen.
  4. Put the DoorLine snippet in that custom template. Intro copy can stay in Content if the template still prints it. A starting wrapper (adjust the classes to match your theme):
<div class="row">
  <div class="col-12 col-lg-9 mx-auto">
    {% if page.signup.content.size > 0 %}
      <div id="intro" class="intro">
        {{ page.signup.content }}
      </div>
    {% endif %}
    <!-- paste the DoorLine embed snippet here -->
  </div>
</div>

If the page type is Basic instead of Signup, use page.basic.content in that {% if %} instead of page.signup.content.

At the bottom of Template, Save and publish. That is what makes the new form live. The page itself stays published — you do not republish or unpublish it, and you do not change header or footer links.

Check the live page in a private window. You should see the DoorLine form, not NationBuilder's fields. Submit a test request and confirm it lands on the Signs page.

Copy a fresh snippet from Share & form — it includes a small script that stretches the iframe to the form, so people scroll your page instead of a box inside it. The form itself lives on DoorLine, so a damaged-sign map that appears after they tick I don't know the address grows that same iframe — you do not remake the NationBuilder page. If you pasted an older iframe-only snippet (no script) and the map is cut off, replace it once with the current snippet, or raise the height until it fits. Changing background or button colour also changes the snippet. The form already on your site does not pick that up — copy the new code and swap it in. A current snippet also scrolls the page back to the thank-you after someone submits, so they are not left staring at the empty space where the button was.

Once the form is live, new requests land in DoorLine. Export from here when you need a list — you don't need a fresh NationBuilder sign-request export for those. New requesters will not automatically become NationBuilder people, so they won't pick up your CRM tags or newsletter unless you export from DoorLine and import there for comms.

The confirmation email

When someone submits the public form, DoorLine emails them a confirmation link. The request is marked unconfirmed until they click it, which keeps bots and pranksters off your install list. The email carries your campaign name, the address and options they chose, and a big confirm button; it looks right on a phone.

You control the subject and message for new sign requests (with merge fields for the requester's name, the address, and the campaign) and the reply-to address. Damaged and removal emails have their own wording and buttons — “Yes, the sign is damaged” / “Yes, take the sign down” — so nobody gets a “thanks for requesting a lawn sign” note when they asked for the opposite. Use Send test to see the new-sign email in your own inbox.

Import from NationBuilder or a spreadsheet

Already running signs in NationBuilder or a Google Sheet? The Import tab takes a CSV or Excel export. A people export (street in primary_address1, unit sometimes in primary_address2) is fine — DoorLine looks at every column's fill count and a few filled examples, not just the first rows, so a rare unit column is not missed. Campaign lists that are not a clean table also work: a title row, two lists on one tab, or a heading like “8x4 signs” / “larger rebar lawn signs” sets size for that block. Name, email, and notes come along when they are in the file. If two street-like columns are plausible you pick one. Then it matches each row to a real door the same way Lit Drop does. Review the list (unmatched first), pick a fallback size for rows that did not say, tick already installed when they are already in the ground, and commit. Import the existing list once so people who already asked aren't treated as new.

The live sign layer — day-to-day operations

Most weeks this is not a Saturday blitz. It is the sign captain checking the map after a request lands, driving a handful of stops, and marking damaged boards someone spotted. Sign turfs are optional extra hands. The standing layer is the job.

On the Users page, tick Sign team for the people who install. They are still canvassers — they never see admin. They sign in, tap Sign install map on their home screen, and get the work queue: new requests, damaged reports, and removals. Installed boards stay off until they switch to All. Filter by size so a crew with pounders can work only the large signs. Large pins are bigger, with an amber ring. Hold the map to add a sign: choose yard sign (search a house) or public sign (intersection, island, a board that is not at a door). Public pins are squares with a Public pill; size is required so later repair or teardown knows what tools to bring. Tap a pin for the address or label, size, and who asked; turn location on to see what is nearby. Admins have the same map under Signs → Map, plus an Open sign install view button that jumps to that phone layout. A note already on the request shows under the address, labeled Note. The box under it adds another note when you mark the pin installed, replaced, damaged, or declined, and both stay on the request. Sign Turfs stay door-based — public pins stay on this shared map.

  • To do — the work queue: new requests, damaged reports, and pickups. After teardown, signs still in the ground. Filter Public next to Upgrades when you only want intersection boards.
  • A row without lat/long stays on the Requests list and is counted as unmapped. A public pin with coordinates is on the map on purpose — it is not waiting to be glued to a nearby house. The public form fuzzy-matches typed yard addresses so most of those land on the map even when someone does not pick from the list.
  • Residents can still report a damaged public board from the form with I don't know the address and a dropped pin. That lands here the same way: a public square, labeled Pinned on map or the landmark they typed.

Canvassers carrying signs

Some crews hand a canvasser a few signs so they can plant one at the door when someone says yes. On a normal knock, tick Wants a lawn sign, pick a size, then choose I put it in today or Sign team will come. The second is the default — it adds the door to the request list. The first marks it installed so the crew never drives back. Under that choice, a note for the crew (side yard, gate code) is saved on the request. Canvassers do not see the request list on that sheet.

On a sign rollout canvass, anyone on the campaign can tap Add a sign when a neighbour asks, they plant an extra one from the truck, or they spot a damaged sign. That creates the record as requested, installed, or damaged — and on a rollout piece it lands on that list. Progress on those canvasses counts installed signs, not knock responses. Public intersection boards are added from the sign-team map (hold, then Public sign), not from a door canvass.

Sign turfs

The standing crew can keep working the whole shared map. When you want pieces — a Saturday blitz, paper sheets, extra volunteers — open Sign Turfs. Link any addresses that never matched the map, name the work, choose how many lists (1 is the whole list), preview the polygons, and create. Split into 9 keeps 9 lists, even when each is only a handful of doors — do this here, not under Lit Drop, so volunteers see the pieces under Signs. Pins on the preview are coloured to match each piece — the number on an outline is those pins, even when a long street crosses a boundary. Those canvasses show on every canvasser's home. The door sheet is Install / Damaged / Skip, or Taken down / Skip after teardown. A note typed there is kept with any note already on the request. Completing a door updates the same request the shared map uses, and the canvass progress bar counts those installs. Photograph the filled sheets later under Manual Input — DoorLine reads In / Dmg / Skip (or Down / Skip) and updates the same list.

Planning: will we run out?

The dashboard shows two running totals — requests that have landed, and boards still in the ground. That is history. Signs → Plan looks forward: pick a printer cutoff or election day and see how many requests and installs you are on track for, how many are still to plant, and how many of each size you still need to cover.

The model is the same one GOTV uses for vote IDs. Real weeks jump around (one Saturday can be three quiet weeks). If new requests have been rising, it keeps a gentle rise, pulled toward the last three complete weeks and capped at 1.5× your busiest organic week. If they have not been rising, it holds that recent pace. Imports count in today's totals but are left out of the weekly rate — a dumped spreadsheet is not next week's demand.

Type how many Small and Large you already have on the truck. The size columns then become a buy number: open queue plus incoming demand, minus stock. Leave those blank and you just see how many boards the queue plus the projection still need. This is a guess for ordering, not an inventory system.

Alerts, map access, teardown

Operations is settings for the standing crew. Owners, admins, and sign-team members appear in the table. For each person you can tick:

  • Digest — one morning email of everything still open (requested and damaged, or still-installed after teardown). Needs an email on that row.
  • Email now — an email the moment a new request, a damaged report, a removal, or an upgrade is confirmed. It names the address and links the sign install map. Once the work is done they mark the pin Installed (or Removed) there. Same people, same table.
  • Text now — a short text to their phone for the same events, with the same map link. The sign captain who wants a ping on every request ticks this; people who only want the morning list leave it off.

The same Operations tab is where you rename Small and Large or add another size. Those two defaults always stay.

A toggle opens the live sign map to everyone on the campaign for a crowded Saturday or teardown. Dedicated sign canvasses already show on every canvasser's home.

After election day, schedule teardown for after the polls close, or tap Manual start teardown and type start tear down in the confirm box. DoorLine checks about once an hour and flips the job to pickups at that time. The field to-do becomes every still-installed sign; leftover install requests stay on the admin list. You can undo. Then either work the shared live map or split the leftover pins on Sign Turfs.

Upgrading a sign already in the ground

When someone already has a board and agrees — after a call or email — to a different size, do not just change Small to Large on the row. That only edits the label. Open the Signs list or map, find the installed pin, and tap Upgrade to Large (or Small, or any size you have added). The sign goes back on the to-do as a requested job, with an amber pill that says Upgrade → Large so the crew knows it is a swap, not a first plant.

The installer sees the same pill on the map and the list. They tap Upgraded when the new board is in. If you flagged the wrong house, Cancel upgrade puts it back to Installed at the old size. People who opted in for live texts or email get a ping, same as a damaged report.

Default sizes are Small and Large. On Signs → Operations you can rename those two (for example 14x22 and 8x4) or add another size. You cannot delete Small or Large. A custom size can be removed only if nothing uses it yet.

Damaged signs & removal

The public form has a second mode: Report a damaged sign. If it is at a house, they pick the address as usual (any email is fine). If it is a public sign they spotted — park, island, a board they cannot place — they tick I don't know the address and drop a pin. The crew can also place those boards themselves: hold the install map and choose Public sign. Either way the pin is the location (a square on the map), red when damaged, in the to-do. Have my sign removed is stricter: they must use the same email as the original request, then confirm that email, so a neighbour cannot take someone else's sign down. After they confirm, the crew sees a pickup on the to-do list. After election day, schedule teardown or use Manual start teardown on Operations so every still-installed sign becomes a pickup. Most municipalities have a deadline, and the list tells you what is still out there.

Getting signs back out

Export CSV on the Requests tab downloads the filtered list — handy for a printed install run. Doors whose sign is installed also carry a sign-installed tag in the NationBuilder export, so your CRM stays in step if you still use one.