Skip to content

Guests and RSVPs

Austin Stanfield edited this page Sep 28, 2026 · 5 revisions

Guests and RSVPs

The guest list, bulk editing, the mailing-list export, CSV format and the RSVP flow.

Guest List — Rapid Check-Off

In Admin → RSVPs & Guests → Guest List, use the search box to tick guests off a list quickly (handy when working through replies by phone or paper):

  1. Type part of a guest's name
  2. Press Enter — the top match is ticked, the box clears, and the cursor stays put
  3. Type the next name and repeat

Details:

  • Enter is additive and never unticks. Entering a name twice reports "X was already checked" rather than silently toggling it back off.
  • Party members match too. Typing a member's name ticks their parent guest, and the confirmation names whoever was actually ticked, so it is never silent when the row checked isn't the name typed.
  • No match keeps the typed text so a typo can be corrected instead of retyped, and warns in amber.
  • The top match is taken within the active filter tab — with Attending selected, Enter picks from that subset only.
  • A confirmation pill appears next to the "Showing N of M guests" line; the existing "{n} selected" bar tracks the running total for bulk actions.

Guest List — Filters

The filter row above the table narrows it to one group at a time, and the search box narrows whatever is showing. Both also narrow the mailing-list export — the button's count tells you how many rows are in the file.

Most filters read a column on the guest row: No Response, Attending, Declined, Likely Not Coming, Invited, Not Invited, the two sides, 📝 Noted, ⚠️ Issue and 📌 Need.

🧒 Kids Meal is the exception: dietary answers live on the household's RSVP, not on the guest row, so it matches any household where at least one person is on a child's plate — which is what you want, because the row is the household. A family of four with one child on a kids' meal is one row you want to see. Someone marked Not Eating is not counted, even if a kids' meal was ticked before that: not eating overrides the rest.

Guest List — Bulk Editing

Tick guests with the row checkboxes (or the header checkbox to take everything currently visible), then use the bar above the table:

Button What it does
Mark as Invited Marks the whole selection invited
Delete Selected Deletes the selection (confirms first)
⋯ Overflow menu holding the rest of the bulk actions (below)

The ⋯ menu — sits to the right of Delete Selected, closes on outside click or Esc:

Menu item What it does
Mark as Not Invited Clears the invited flag across the selection
⚠️ Flag as Issue Flags every selected guest as an issue. Pick it again later to clear — if all selected guests already have the flag, it removes it
📌 Flag as Need Same, for the need flag
✏️ Edit Selected… Opens the bulk edit modal below

A green pill next to the buttons confirms what happened (e.g. Marked 6 guests as 📌 Need).

The Edit Selected… modal applies only the fields you actually set — everything defaults to Leave unchanged, so a bulk edit can't quietly reset a column you didn't touch:

  • Flag — Issue, Need, or Clear flag
  • Note — three modes:
    • Add to existing (default) — appends on a new line and keeps whatever note each guest already had. This is the safe one.
    • Replace — overwrites the note on every selected guest
    • Clear notes — wipes them
  • Side — bride's / groom's side, or clear
  • RSVP Status — Likely Not Coming, Attending, Declined, or clear to No Response. This is what guests actually replied, so it's labelled as an admin override

Leaving the note box blank skips the note entirely, so you can use the modal purely to set a flag or side.

Select-all takes the visible rows only. With a filter active (say ⚠️ Issue), the header checkbox selects just those rows, and clicking it again deselects just those rows — guests hidden by the filter are never silently swept into a bulk edit or delete.

Guest List — Mailing List Export

In Admin → RSVPs & Guests → Guest List, the blue Export CSV (n) button sits to the right of Import CSV and downloads the guest list as a CSV built for addressing envelopes and mail merges.

What gets exported: exactly the rows on screen. The button label shows the count, and the active filter tab and the search box both narrow the export — filter to Invited, and only invited households are in the file. Filename is guest-list-<filter>-<YYYY-MM-DD>.csv (guest-list-search-… when a search term is active).

Columns:

Column What it holds
Mail Name Envelope name for the household — see the rules below
Street Street line, with any apartment/unit kept on it
City State Zip Ready-made second label line, e.g. Racine, WI 53402
City, State, Zip The same, split out for sorting or a mail merge
Address Issue Blank when the address parsed cleanly; otherwise No address, missing state, Could not split city / state / zip, etc. Sort by this column to find addresses that need fixing before printing labels.
Shares Address With Other guests on the export at the same address — catches two invitations headed to one house (e.g. parents and an adult child)
Full Address The raw address exactly as stored, on one line
Party Size, Guest Name, Party Members Household size, the head guest, and the other members (unnamed slots show as Guest)
Email, Phone, Side, Relationship, Invited, RSVP Status, Flag, Notes The rest of the guest record

Mail Name rules:

Household Result
1 person John Smith
2 people, same surname John & Jane Smith
2 people, different surnames John & Jane (first names only)
2 people, second person unnamed John Smith & Guest
3 or more Smith Family — the most common surname in the party, ties going to the head guest, so a mixed household still gets the name the mail belongs to

Names are cleaned first: parenthetical notes are dropped (Natalie Williams (Zack's Girlfriend) → Natalie Williams, and a plus-one recorded as only (Collin's Date) counts as unnamed), and suffixes are ignored when comparing surnames so Nick Lucas Jr. + Nicole Lucas still reads Nick & Nicole Lucas. Party Size — not the number of names on file — decides which rule applies.

Address parsing handles the shapes actually present in the list: line breaks used instead of commas, an apartment comma-separated (…, Apt 208, Middleton, WI 53562) or glued onto the city (…, Apt. 5 Pewaukee, WI 53072 — the unit is moved back onto the street line), a state riding along with the city (Muskego WI, 53150), and ZIP+4. Anything it can't split is flagged in Address Issue rather than silently mangled. The file is written with a UTF-8 BOM so Excel opens accented names and curly apostrophes correctly, and every field is quoted so leading zeros in ZIPs survive.

Guest List CSV Format

name,email,phone,party_size,side,notes,plus_one_name,address
John Doe,john@email.com,555-1234,2,groom,Vegan meal,Jane Doe,"123 Main St, Milwaukee, WI"
  • Addresses with commas must be quoted
  • side: bride or groom
  • Duplicate names are upserted (not duplicated)
  • For families of 4+, set party_size accordingly; add known names via the admin edit modal after import using the party members slots

RSVP — Who Can Log In

Guests reach their RSVP by typing their own name — the lookup matches the primary guest name, plus_one_name, or any named entry in party_members. So if the invitation is filed under Max Kulik and his plus-one is Kenzie Miller, Kenzie can enter "Kenzie Miller" and pull up the party's RSVP for both of them. Matching ignores case and surrounding whitespace.

The form greets whoever signed in and, when that person isn't the primary guest, notes whose party they belong to. The RSVP itself is always filed under the primary guest, so everyone in a party edits the same submission rather than creating duplicates.

If a name were ever listed in two places, an exact primary-guest match wins over being listed inside someone else's party (then lowest guest id), so the result is deterministic.

RSVP — Marking Each Guest Attending or Not Attending

Every party member has two checkboxes — Attending / Not attending — and they are mutually exclusive (ticking one clears the other; clicking a ticked box clears it back to unanswered).

The RSVP cannot be sent until every guest has one of the two ticked. While anyone is unanswered:

  • their card is highlighted amber
  • a line above the buttons reads "N guests still need to be marked attending or not attending"
  • Send RSVP is disabled (with a server-side check behind it that names the specific person)

Pre-fill behaviour:

  • A brand-new RSVP starts completely blank — nothing is guessed on the guest's behalf.
  • Re-opening an RSVP that was already sent restores what was chosen, so it never looks like their answers were lost.

The primary guest shows a fixed green Attending pill rather than checkboxes, because they have already answered via the "Will you be attending?" dropdown above — picking Regretfully Declines there declines the whole party.

Note: attendance is not stored per member. A submitted RSVP lists exactly its attendees in dietary_restrictions (the admin view reads that array as "who's coming"), so "absent from that list" means not attending. That is exact for RSVPs sent through this form, since submitting requires answering everyone.

RSVP — Per-Guest Dietary Restrictions

Each party member gets their own card on the RSVP form with checkboxes:

  • Vegetarian, Vegan, Gluten Free, Nut Allergy
  • Other — checking this reveals a required text input; the form cannot be submitted until it is filled in
  • Kids' Meal — a child's plate instead of the adult one. Still a meal, so it still counts toward the total; it is simply not the chicken. It can be combined with a restriction, because a child can be gluten free too
  • Not Eating — a seat with no meal against it: the baby whose food comes with their mother. They are still seated and still on the seating chart; they are just not counted as a plate. Ticking it clears and greys out every other box, because restrictions on a plate that is not being served say nothing — and "not eating, vegetarian" would leave the kitchen guessing which half was meant

Dietary checkboxes appear once a member is marked Attending. Saved dietary choices are restored when re-opening a submitted RSVP. Unnamed guest slots require the submitter to enter a name before marking them as attending.

The same answers can be typed in from the admin side — open a guest's card on the Guest List tab and each person in the party has their own row of pills. That is how the people who told you in person get recorded; most of them never filled the form in at all. The answer is stored on the household's RSVP either way, and the seating export reads it from there.

Guest List — Who Is Under 21

Every person in a guest's card has an Under 21 toggle, below their dietary pills: the household themself, and each companion on their own row. It is deliberately not one of the dietary pills, because it is not a dietary answer — someone under 21 eats the same adult dinner as everybody else. It changes one thing only: the bar.

Marking people here feeds the Drinkers (21+) count on Finances → Settings, which a budget line set to Drinkers is charged against. Settings shows how many of the people you expect are marked under 21 and offers a one-click Use N drinking button; as with every other guest-list figure there, it is a suggestion, never read into the budget automatically.

Who gets counted: everyone you expect to take a chair. A household that has not answered yet still counts — a bar is booked long before the last RSVP lands, and it is the same assumption the seating chart makes when it still draws them their chairs. A household that declined, is likely not coming, or was never invited counts nobody.

The flag rides with the person, not with their position in the party, so marking the second of three people and later having the first decline does not shift anyone's age onto somebody else.

The Couple on the Guest List

The two of you need to be on the guest list so the seating chart can give you chairs and the kitchen can count your plates. You are not guests, though, and nothing counts you as invited.

  1. Admin → RSVPs & Guests → Guest List.
  2. While you are not on the list, a banner offers Add the couple. Click it.
  3. One row is created holding both of you, with the names taken from Settings → Bride / Groom, party size 2, marked attending.
  4. Edit that row to change anything — the names included, which is how settings saying "Heaven" becomes a place card saying "Heaven Lucas" — and to set each of your dietary restrictions, exactly as for a guest.

The row pins to the top of the list with a 💍 badge. It is excluded from Total Invited, missing RSVPs and the other four statistics, from the mailing export (nobody posts themselves an invitation), and from the RSVPs tab's list of replies — the dietary answers are storage, not a reply.

Both of you then appear in the seating panel as separate people to drag onto a table.

Under the hood this is one ordinary household of two, which is why the seating chart needed no changes at all to seat you. The only difference is the kind column marking the row as the couple.

Vendors

The photographer, the DJ, the planner — at the wedding working, usually being fed, and none of it an invitation. They are kept entirely apart from the guest list, on their own tab.

  1. Admin → RSVPs & Guests → Vendors.
  2. + Add vendor. Fill in name, role (there is a list of the usual ones to pick from, but you can type anything), company, email, phone.
  3. Needs a meal — leave it ticked if their contract includes a plate. Untick it and they stay on the sheet but stop counting toward the vendor plates.
  4. Food preference — the same pills the guest cards use. Nothing selected means the standard plate, the chicken.
  5. Notes — arrival time, where they set up, anything the planner needs.

One row is one person. A DJ who brings an assistant is two rows sharing a company, because one row with a headcount of two cannot say which of them is the one who eats no gluten.

Vendors never appear on the floor plan and never take a chair. They reach the caterer through the seating export — turn on Also show → Vendors and they print as their own block, with their own row of plate counts in the kitchen summary. See Seating and the Export.


← All pages

Clone this wiki locally