Guide

How to Build a Wedding Guest List and RSVP Tracker

One spreadsheet that handles invitations, replies, meal choices, dietary needs and table assignments — and still gives you a headcount you trust three weeks before the wedding.

The hard part of a guest list is not writing down names. It is that three weeks out there are four versions of it: the one in your notes app, the one your mother emailed, the export from the wedding website, and the seating chart you built in a hurry on a Sunday night. Each has a slightly different headcount, and none is wrong enough to obviously discard.

That is the real failure mode. You do not lose track of guests; you lose track of which list is true. Below is how to build one file that stays true, and the handful of columns and formulas that make it hold up when the caterer calls wanting a number today.

One file, one source of truth

The common mistake is splitting the job across files: an "invite list" while drafting, an "RSVP list" once replies start, a "seating" file at the end. It feels tidy, and it fails for one reason — when a guest declines you now have to remember to change three files, and you will not.

Use one workbook. One tab holds every guest, one row each. Everything else — headcount summaries, meal totals, the seating chart, the envelope list — reads from that tab with formulas. Nothing is typed twice.

Practical rule: if you catch yourself copy-pasting names between tabs, stop and write a formula instead.

The guest sheet columns

These are the columns that earn their space. Anything else is decoration.

ColumnWhat goes in itWhy it matters
Household IDA short code shared by everyone at one address (e.g. PATEL-01)Groups people for envelopes without breaking per-person counts
Guest nameOne person per row, as it should read on a place cardDrives seating, meals and place cards
Side / relationshipPartner A / Partner B / Both; friend, cousin, workBalances the list and makes seating decisions faster
PrimaryYes on one row per household, blank on the restFilter on it to get exactly one envelope per address
Address fieldsFilled only on the primary rowMail merge without duplicate envelopes
Wave1, 2 or 3 — your invitation staging (see below)Neutral label; never write "A-list"
Age groupAdult / Child / InfantCaterers price children differently; bar counts need adults only
Plus-oneYes / No, plus the linked row for the partnerKeeps the rule consistent and auditable
RSVP statusPending / Yes / No / Declined-late — one word, from a dropdownEvery headcount formula depends on this being clean
Attending count1 if this person takes a seat and a plate, 0 if not (an infant in arms, a guest joining for the evening only)Summing this beats counting rows, so lap infants stop inflating the catering number
Meal choiceFrom a dropdown matching the caterer's exact wordingHanded straight to the kitchen with no translation
Dietary needsFree text: allergy, vegan, coeliac, kosherSafety issue, not a preference — keep it per person
TableTable number or nameSeating chart reads from here
NotesAnything human"Do not seat near Uncle Ray" is real planning data

Use data-validation dropdowns for RSVP status, meal choice, age group and table. Free-typed status values ("yes", "Yes!", "yes - both") are a common reason a headcount formula silently under-counts: SUMIF matches "Yes" and quietly ignores the rest.

Households vs individuals: one row per person

You will be tempted to give each household one row with an "invited: 4" field. Don't. Headcounts work, but meals, dietary needs and seats break, because those are per-person facts — you end up cramming "2 beef 1 fish 1 kid" into a text cell.

One row per person, with a Household ID linking them. Address fields go on the first row of each household only, flagged Primary = Yes. Your envelope list is then a filtered view: Primary = Yes gives exactly one label per address, while every other formula still works per person.

The trade-off is real: a family of five means five rows and more typing up front. You get that time back the first weekend you spend on meal counts.

The A-list / B-list method, done properly

Staging invitations is normal and nobody needs to feel bad about it. Getting caught is the only real risk, and it is entirely avoidable.

  1. Label it neutrally. Call the column Wave and use 1, 2, 3. Never type "B-list" into a file that other people might see over your shoulder.
  2. Stage by social circle, not by individual. People compare notes. If four of six university friends get invitations in March and two get them in May, they will know. Move whole clusters between waves.
  3. Print everything at once. Same stationery, same batch, same stamps. A wave 2 invitation that looks different is a confession.
  4. Release wave 2 on decline, not on a date. The moment a wave 1 "No" lands, send the next invitation the same week.
  5. Set a floor. No invitation goes out later than about four weeks before the wedding. Past that it reads as an afterthought, and people cannot realistically travel. If you have not filled the seats by then, you are done inviting.

That floor is why the wave 1 RSVP deadline has to be early. Work backwards from it.

Tracking the send, not just the reply

Add four date columns: Save-the-date sent, Invite sent, RSVP received, Thank-you sent. Dates, not checkboxes — when someone insists they never got an invitation, the date is the answer, and the gap between "invite sent" and "RSVP received" tells you who to chase.

Typical timing, adjust to your circumstances: save-the-dates around six to eight months out (nine to twelve for a destination wedding or a holiday weekend), invitations six to eight weeks out, RSVP deadline four to five weeks before the day. The thank-you column is the one everyone skips and then regrets in January.

Live headcounts that update themselves

Build a small summary block at the top of the guest tab, or on its own tab, and never type a headcount by hand again. Assuming Status, Attending, AgeGroup and Meal are your named ranges:

  • Confirmed attending: =SUMIF(Status,"Yes",Attending)
  • Still pending: =SUMIF(Status,"Pending",Attending)
  • Declined: =SUMIF(Status,"No",Attending)
  • Adults confirmed (your bar number): =SUMIFS(Attending,Status,"Yes",AgeGroup,"Adult")
  • Children confirmed: =SUMIFS(Attending,Status,"Yes",AgeGroup,"Child")
  • Worst case still possible: =SUMIF(Status,"Yes",Attending)+SUMIF(Status,"Pending",Attending) — the number to watch if your venue has a hard capacity

Give your contracted vendors rows too — photographer, band, planner — with Age group set to Vendor and a meal choice, so their plates are in the same sum instead of remembered separately at midnight. Then =SUMIFS(Attending,Status,"Yes",AgeGroup,"Adult") stays a clean guest-only bar number while your catering total picks the vendors up.

Show these side by side. The number your caterer wants is confirmed yes including those vendor meals; the number that tells you whether to panic is pending. Resist guessing what share of the pending list will say yes — the widely quoted decline percentages are rules of thumb, not facts about your guests, and a destination wedding behaves nothing like a hometown one. Chase the replies instead of modelling them.

Chasing RSVPs without becoming the bad guy

Set your RSVP deadline roughly two weeks before the date your caterer needs the final guaranteed number. If the guarantee is due 14 days out, ask guests for 28 to 35 days out. Those two weeks are your chasing window, and you will use all of them.

The morning after the deadline, sort by Status = Pending. Anyone in that filter gets a message. Text and phone calls work; a fourth group email does not.

A script that works because it is short and gives an easy exit: "Hi Priya — doing the final numbers for the caterer this week and I have you down as a maybe. Totally fine either way, just need a yes or no by Friday so I can lock the count. Are you able to make it?"

Two rules. Ask a closed question — "are you coming?" gets an answer, "just checking in!" does not. And log the reply the moment you hang up, in the sheet, not in your head.

Meal choices and dietary requirements

Collect meal choices per guest, never per household. "The Robertsons: 2 chicken" falls apart the second one of them switches, and it tells the kitchen nothing about which plate goes to which seat.

Match the dropdown options to your caterer's menu wording exactly, character for character. Your summary is then one line per option: =COUNTIFS(Status,"Yes",Meal,"Herb chicken"). Hand over a short table — meal name, count — plus a separate dietary list with names, tables and the specific requirement.

Keep allergies distinct from preferences. A vegetarian who gets the wrong plate is disappointed; a coeliac or nut-allergic guest who does is a medical incident. Give the caterer and the venue coordinator names and table numbers, not just a total.

Building the seating chart from the same data

Add a small Tables tab with four columns: A table name, B capacity, C seated, D flag. Only two of them are formulas.

  • Seated at this table (C2): =SUMIFS(Attending,Table,$A2,Status,"Yes")
  • Over-booked flag (D2): =IF(C2>B2,"OVER",""), with conditional formatting turning the row red

Add two checks: total seated versus total confirmed (they must match), and an unassigned count, =SUMIFS(Attending,Status,"Yes",Table,"") — that blank criterion only catches genuinely empty cells, so leave unassigned Table cells empty rather than filling them with "TBC". When the gap and the unassigned count both read zero, the chart is finished — a far better test than reading it over one more time at midnight.

Don't forget seats for vendors contracted a meal, and ask whether the head or sweetheart table counts against the venue's capacity — assume it does until they tell you otherwise.

How headcount drives the rest of the budget

The guest number is not one budget line; it is the multiplier on several of the biggest. Catering, bar, rentals, favours, invitations and cake all scale with it, and venue minimums are often written against it.

Once your confirmed count settles, push it through the rest of the plan: the Wedding Budget Calculator for what the day costs at that headcount, the Wedding Alcohol Calculator for how much to buy (feed it the adults-only number from your summary block, not the total), and the Wedding Vendor Tip Calculator for the gratuities that get remembered a week out. Re-running all three after the final count is a twenty-minute job.

Last-minute changes

Late yeses, day-before flu, a delayed flight. What matters is knowing what actually moves and what doesn't.

Catering contracts are commonly written around a guaranteed number: once you confirm it, that is the figure you are billed on whether or not everyone shows up, and the clause often allows the count to rise close to the day but not fall. Yours may differ in both directions, so read the actual wording and ask the caterer to confirm the deadline and any surcharge in writing before you rely on it.

Practically, that means a drop-out three days out costs you the plate and gains you a gap in the seating chart. Leave the row in place, set the status to a distinct value like Declined-late, and let the seating formulas re-flow. Never delete the row — you want the history, and you may need to explain the empty seat to the venue.

Then watch what that does to your summary block: the live confirmed count now sits below the number you are billed for. Park the guaranteed figure in its own cell the day you submit it and stop trying to make the two agree. The guarantee is a fact about your invoice; the confirmed count is a fact about the room.

On the day, give the coordinator a printed table list and the dietary sheet, and tell them which seats are empty. Then close the laptop.

Frequently asked questions

When should the RSVP deadline be?

About two weeks earlier than the date your caterer needs final numbers. If the guarantee is due 14 days before the wedding, ask guests to reply four to five weeks out. That gap is your chasing window — you will need it, because some guests will not reply until you ask them directly.

How do I handle plus-ones?

Decide the rule before you build the list, apply it to everyone, and record the decision in a Plus-One column so you can defend it later. A common rule is that partners who are married, engaged or living together are invited by name and everyone else is not. Give the plus-one their own row with a placeholder like "Guest of Sam Patel" so headcounts, meals and seat counts all work before you know who it is.

Do kids count for catering?

Almost always yes, but often at a reduced children's rate — and every caterer draws the age line in a different place, so there is no standard cut-off to assume. Keep an Age Group column (Adult, Child, Infant) so you can produce whichever split your caterer asks for, and ask for their exact age bands and rates in writing before you budget on them.

What do I give the venue, and when?

Usually three things, on different dates: a final guaranteed headcount split by adult, child and vendor meal on the caterer's guarantee date; a meal-choice and dietary summary at the same time; and a table-by-table seating list with names as they should appear on place cards, typically a few days before. Ask each vendor for their own deadline in writing and put those dates in the tracker.

Don't want to build it from scratch?

Everything above is doable in a blank Google Sheet in an afternoon, and the free calculators handle the money side. If you would rather not wire up the formulas yourself, the Wedding Budget & Planning Toolkit ships them already built: a guest list and RSVP tracker with the dropdowns and live headcount block, a seating sheet with capacity and over-booking flags, plus the budget, payment-schedule and checklist sheets — in Excel and Google Sheets.

One-time purchase. No subscription. The article and the calculators stay free either way.