← Back to all templates

The Ultimate Wedding Checklist Template: Your Complete Wedding Planning Command Center

The Ultimate Wedding Checklist Template: Your Complete Wedding Planning Command Center

Planning a wedding isn’t just “booking a venue and picking flowers.”

That would be lovely, but it’s actually tracking deposits. Comparing vendors. Managing RSVPs. Estimating hotel rooms. Calculating drink quantities. Ranking venues. Confirming marriage license deadlines.

It’s a hundred micro-decisions, and they’re happening all at once.

That’s why we built the Room Blocks by Engine Wedding Planning Master Spreadsheet, a fully integrated, start-to-finish wedding planning system that keeps every moving part organized in one place.

No scattered notes. No forgotten deadlines. No messy spreadsheets.

Just clarity to make the most out of one of the most important and beautiful days of your life.

Free wedding checklist

The Ultimate Wedding Checklist Template

Plan smarter and skip the chaos. A complete planning command center with timeline, budget calculator, vendor tracker, guest list, and more. Try the interactive timeline below, then open the full master spreadsheet with all 13 sections.

Interactive preview

Your master wedding timeline

Track every milestone from engagement to "I do." Check tasks off as you complete them. Your progress saves automatically.

In progress
0
Upcoming
0
Progress
0%
All phases Open tasks Completed
Download as CSV Print Reset checklist
What's inside the full template

13 sections to plan every detail

The full master spreadsheet includes editable trackers for every part of your wedding. Each section is ready to use, with pro tips built in.

(function() { 'use strict'; var STORAGE_KEY = 'rb-checklist-preview-v1'; var PHASES = [ { num: 1, title: '1. Just engaged', tasks: [ { name: 'Set a date', desc: 'Narrow down a few possible dates. Eventually pick one based on venue availability.', owner: 'Bride / Groom', status: 'done' }, { name: 'Budgeting', desc: 'Determine total contribution from all parties and establish a buffer fund (5 to 10% recommended).', owner: 'Bride / Groom', status: 'done' }, { name: 'Guest list draft', desc: 'Draft a preliminary list to determine the required venue capacity.', owner: 'Bride / Groom', status: 'progress' }, { name: 'Planner selection', desc: 'Research and select a wedding planner if your budget allows for it.', owner: 'Bride / Groom', status: 'progress' }, { name: 'Insurance', desc: 'Research wedding insurance to protect deposits.', owner: 'Bride / Groom', status: 'upcoming' } ] }, { num: 2, title: '2. Most important hires', tasks: [ { name: 'Venue selection', desc: 'Select a venue for your rehearsal dinner, ceremony, and reception.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Photography', desc: 'Book lead photographer and videographer. Schedule engagement photo session.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Catering', desc: 'Conduct tastings and finalize service style (plated, buffet, or family style).', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Wedding dress', desc: 'Order bridal gown and suit or tuxedo (allow 6+ months for shipping and alterations).', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Florist', desc: 'Select a florist for venue arrangements, bouquets, and boutonnieres.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Stationery design', desc: 'Design and order stationery. Collect physical and email addresses.', owner: 'Bride / Groom', status: 'upcoming' } ] }, { num: 3, title: '3. Details, details!', tasks: [ { name: 'Registry setup', desc: 'Create registries at 2 to 3 retailers with a mix of price points.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Room blocks', desc: 'Secure room blocks for out of town guests at various price tiers.', owner: 'Bridesmaids', status: 'upcoming' }, { name: 'Florals', desc: 'Meet with florists to define color palette and specific bloom availability.', owner: 'Bride', status: 'upcoming' }, { name: 'Wedding party', desc: 'Formally ask bridesmaids, groomsmen, and flower girls.', owner: 'Bride / Groom', status: 'upcoming' } ] }, { num: 4, title: '4. Logistics (3 to 5 months)', tasks: [ { name: 'Stationery suite', desc: 'Order invitations, RSVP cards, and envelopes.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Food and drinks', desc: 'Use the drink calculator to estimate bottle counts for wine, beer, and liquor.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Rehearsal dinner', desc: 'Book venue and send separate invitations.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Cake', desc: 'Conduct tastings and finalize design and delivery time.', owner: 'Bride / Groom', status: 'upcoming' } ] }, { num: 5, title: '5. The final countdown', tasks: [ { name: 'Marriage license', desc: 'Research local requirements and appointment lead times.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'RSVPs followup', desc: 'Follow up with non-responders to get final counts.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Seating chart', desc: 'Assign guests to tables based on final RSVPs.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Shot list', desc: 'Finalize the must-have list for the photographer.', owner: 'Photographer', status: 'upcoming' } ] }, { num: 6, title: '6. Wedding week', tasks: [ { name: 'Vendor confirmations', desc: 'Reach out to every vendor with the wedding day schedule.', owner: 'Parents', status: 'upcoming' }, { name: 'Final payments', desc: 'Prepare tip envelopes and final balance checks for vendors.', owner: 'Bride / Groom', status: 'upcoming' }, { name: 'Packing', desc: 'Pack the day of emergency kit (safety pins, stain remover, snacks).', owner: 'Bride', status: 'upcoming' } ] } ]; var SECTIONS = [ { icon: '💰', title: 'Budget calculator', desc: 'Auto calculated breakdown across 10 categories. Toggle Local vs. Destination.', tag: 'Calculator' }, { icon: '🏛', title: 'Venue comparison', desc: 'Side by side comparison of up to 15 venues with rankings.', tag: 'Tracker' }, { icon: '👰', title: 'Wedding party', desc: 'Track all roles (officiator, ushers, bridesmaids, groomsmen) with RSVPs.', tag: 'Tracker' }, { icon: '✉', title: 'Guest list', desc: 'Centralized database with contact info, RSVPs, and travel notes.', tag: 'Tracker' }, { icon: '🤝', title: 'Vendor list', desc: 'Compare alcohol, cake, DJ, florist, photographer, and more.', tag: 'Tracker' }, { icon: '👗', title: 'Wedding dress', desc: 'Compare boutiques, designers, prices, and alteration timelines.', tag: 'Tracker' }, { icon: '🏨', title: 'Hotel and room block', desc: 'Track quotes, group rates, and reservation deadlines.', tag: 'Tracker' }, { icon: '🧳', title: 'Packing list', desc: '70+ items across attire, ceremony, emergency kit, and overnight bag.', tag: 'Checklist' }, { icon: '⏰', title: 'Day-of itinerary', desc: 'Full timeline from getting ready to grand exit. Customizable times.', tag: 'Timeline' }, { icon: '💌', title: 'Thank you cards', desc: 'Tracker plus 4 wording templates for every gift scenario.', tag: 'Tracker' }, { icon: '🪑', title: 'Seating chart', desc: '10 tables with meal preference and dietary notes per seat.', tag: 'Planner' }, { icon: '✅', title: 'Quick start guide', desc: 'How to use the workbook and customize it to your wedding.', tag: 'Guide' } ]; // STATE var state = loadState(); function loadState() { try { var raw = localStorage.getItem(STORAGE_KEY); if (raw) return JSON.parse(raw); } catch (e) {} var s = { tasks: {}, collapsed: {}, filter: 'all' }; PHASES.forEach(function(p, pi) { p.tasks.forEach(function(t, ti) { s.tasks[pi + '_' + ti] = t.status; }); }); return s; } function saveState() { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); } catch (e) {} } // RENDER function statusPill(status) { var map = { 'done': { cls: 'is-done', label: 'Done' }, 'progress': { cls: 'is-progress', label: 'In progress' }, 'upcoming': { cls: 'is-upcoming', label: 'Upcoming' } }; var m = map[status] || map.upcoming; return '' + m.label + ''; } function renderPhases() { var container = document.getElementById('rb-phases'); var html = ''; PHASES.forEach(function(phase, pi) { var visibleTasks = phase.tasks.filter(function(t, ti) { var key = pi + '_' + ti; var cur = state.tasks[key] || 'upcoming'; if (state.filter === 'open') return cur !== 'done'; if (state.filter === 'done') return cur === 'done'; return true; }); if (visibleTasks.length === 0 && state.filter !== 'all') return; var collapsedCls = state.collapsed[pi] ? ' is-collapsed' : ''; var doneCount = phase.tasks.filter(function(t, ti) { return (state.tasks[pi + '_' + ti] || 'upcoming') === 'done'; }).length; html += '
'; html += '
'; html += '
' + phase.num + '' + phase.title + '
'; html += '
' + doneCount + ' of ' + phase.tasks.length + ' done'; html += ''; html += '
'; html += '
'; phase.tasks.forEach(function(t, ti) { var key = pi + '_' + ti; var cur = state.tasks[key] || 'upcoming'; if (state.filter === 'open' && cur === 'done') return; if (state.filter === 'done' && cur !== 'done') return; var doneCls = cur === 'done' ? ' is-done' : ''; html += ''; html += ''; html += '
'; html += '
' + escapeHtml(t.name) + '
'; html += '
' + escapeHtml(t.desc) + '
'; html += '
'; html += '
' + escapeHtml(t.owner) + '
'; html += '
' + statusPill(cur) + '
'; html += ''; }); html += '
'; }); container.innerHTML = html; } function renderStats() { var counts = { done: 0, progress: 0, upcoming: 0, total: 0 }; PHASES.forEach(function(p, pi) { p.tasks.forEach(function(t, ti) { var cur = state.tasks[pi + '_' + ti] || 'upcoming'; counts[cur] = (counts[cur] || 0) + 1; counts.total += 1; }); }); document.getElementById('rb-stat-done').textContent = counts.done; document.getElementById('rb-stat-progress').textContent = counts.progress; document.getElementById('rb-stat-upcoming').textContent = counts.upcoming; var pct = counts.total ? Math.round((counts.done / counts.total) * 100) : 0; document.getElementById('rb-stat-pct').textContent = pct + '%'; } function renderInside() { var container = document.getElementById('rb-inside'); var html = ''; SECTIONS.forEach(function(s) { html += '
'; html += '
' + s.icon + '
'; html += '

' + escapeHtml(s.title) + '

'; html += '

' + escapeHtml(s.desc) + '

'; html += 'Included in download'; html += '
'; }); container.innerHTML = html; } function escapeHtml(str) { if (str == null) return ''; return String(str).replace(/[&<>"']/g, function(c) { return { '&':'&','<':'<','>':'>','"':'"',"'":''' }[c]; }); } // EVENTS function attachEvents() { document.getElementById('rb-phases').addEventListener('click', function(e) { var headBtn = e.target.closest('[data-phase-head]'); if (headBtn) { var pi = headBtn.getAttribute('data-phase-head'); state.collapsed[pi] = !state.collapsed[pi]; saveState(); renderPhases(); } }); document.getElementById('rb-phases').addEventListener('change', function(e) { if (e.target.classList.contains('rb-task-check')) { var key = e.target.getAttribute('data-key'); state.tasks[key] = e.target.checked ? 'done' : 'upcoming'; saveState(); renderPhases(); renderStats(); } }); document.getElementById('rb-filters').addEventListener('click', function(e) { var btn = e.target.closest('.rb-filter'); if (!btn) return; state.filter = btn.getAttribute('data-filter'); saveState(); document.querySelectorAll('.rb-filter').forEach(function(b) { b.classList.remove('is-active'); }); btn.classList.add('is-active'); renderPhases(); }); document.getElementById('rb-download-csv').addEventListener('click', exportCSV); document.getElementById('rb-print').addEventListener('click', function() { window.print(); }); document.getElementById('rb-reset').addEventListener('click', function() { if (confirm('Reset all checklist progress?')) { try { localStorage.removeItem(STORAGE_KEY); } catch (e) {} state = loadState(); document.querySelectorAll('.rb-filter').forEach(function(b) { b.classList.remove('is-active'); }); document.querySelector('.rb-filter[data-filter="all"]').classList.add('is-active'); renderPhases(); renderStats(); } }); } function exportCSV() { var rows = [['Phase', 'Task', 'Description', 'Assigned to', 'Status']]; PHASES.forEach(function(p, pi) { p.tasks.forEach(function(t, ti) { var cur = state.tasks[pi + '_' + ti] || 'upcoming'; rows.push([p.title, t.name, t.desc, t.owner, cur]); }); }); var csv = rows.map(function(r) { return r.map(function(c) { var s = String(c == null ? '' : c); if (s.indexOf(',') !== -1 || s.indexOf('"') !== -1 || s.indexOf('\n') !== -1) { return '"' + s.replace(/"/g, '""') + '"'; } return s; }).join(','); }).join('\n'); var blob = new Blob([csv], { type: 'text/csv;charset=utf-8' }); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'wedding-checklist-timeline.csv'; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(function() { URL.revokeObjectURL(url); }, 100); } // INIT renderPhases(); renderStats(); renderInside(); attachEvents(); })();

Why this isn’t your average wedding checklist

Most wedding checklists look like this:

  • Book venue
  • Hire photographer
  • Send invitations

That’s it.

This template goes much deeper, because real wedding planning is much more detailed than that.

Instead of a basic list, you get structured, interactive tabs that mirror exactly how weddings are actually planned.

Inside the spreadsheet: Tab-by-tab breakdown

1 Start tab: How to use this checklist

This tab sets everything up.

You’ll find:

  • Instructions for Google Sheets and Excel users
  • Built-in guidance for navigating the workbook
  • A quick overview of how each tab connects

It’s designed so even someone who’s never used a planning spreadsheet before can jump in immediately.

2 Timeline tab: Stay on track from “Yes” to “I Do”

This is your master planning engine.

The Timeline is structured by stages:

  • Just Engaged
  • Essential Hires
  • Details, Details
  • Logistics (3–5 Months Out)
  • The Final Countdown
  • Wedding Week

Each task includes:

  • Assigned To (Bride, Groom, Parents, Photographer, etc.)
  • Priority level (Critical, High, Medium)
  • Start Date
  • End Date
  • Status (Not Started, In Progress, Done)
  • Notes

It turns vague to-dos into trackable action steps.

3 Budget tab: Plan smarter and avoid surprise costs

This tab is more than a list , it’s a calculator.

You input:

  • Local or destination wedding
  • Estimated guest count
  • % of guests traveling
  • Ideal budget range
  • Average hotel nightly rate
  • Average nights per guest
  • Guests per room

The sheet automatically calculates:

  • Target budget midpoint
  • Estimated traveling guests
  • Estimated rooms needed
  • Estimated guest lodging total
  • Suggested category allocations

It breaks your budget into smart percentage categories like:

  • Venue + Rentals
  • Catering + Alcohol
  • Photography + Video
  • Florals + Decor
  • Attire + Beauty
  • Music / Entertainment
  • Planning / Coordination
  • Travel / Guest Experience

You can customize your target numbers while staying aligned with realistic planning benchmarks.

4 Venues tab: Compare locations side-by-side

Once you start touring venues, details blur together.

This tab keeps everything organized:

Track for each venue:

  • Website
  • Phone number
  • Address
  • Total price
  • Deposit amount
  • Ceremony allowed?
  • In-house catering?
  • Outdoor tent option?
  • Availability status
  • Bride & Groom ranking

Instead of “I think that one had better lighting?” you’ll have structured comparisons.

5 Wedding party tab: Keep your closest people organized

Track:

  • Role (Officiant, Maid of Honor, Bridesmaids, Groomsmen, etc.)
  • Name
  • RSVP status

You can instantly see who has confirmed and who hasn’t, especially important when planning accommodations or coordinating outfits.

6 Guest list tab: Know who’s coming & where they’re staying

This tab goes beyond just names.

Track:

  • Guest name
  • Email
  • Phone number
  • Address
  • Invitation sent
  • RSVP status
  • Traveling from out of town?
  • Guest category (Family, Friends, etc.)

This is also where your hotel planning becomes strategic, because you can estimate how many guests actually need rooms.

7 Vendors tab: Centralize every contract & deposit

Weddings involve dozens of vendors.

This tab lets you track:

  • Vendor name
  • Website or social media
  • Phone number
  • Email
  • Guest count per vendor
  • Total price
  • Cost per guest
  • Deposit amount
  • Heard back?
  • Booked?
  • Bride & Groom ranking

You can compare photographers, florists, DJs, catering teams, all in one dashboard.

No more digging through emails to remember who quoted what.

8 Wedding dress tab: Track style, cost & alterations

Dress shopping gets emotional and expensive.

This tab tracks:

  • Store/Boutique
  • Consultant
  • Appointment date
  • Designer
  • Dress style code
  • Silhouette
  • Material
  • Key features
  • Color
  • Base price
  • Alteration estimate
  • Total estimated cost

It even includes a checklist of important shopping considerations like:

  • Timeline for production
  • Alteration windows
  • Comfort and mobility
  • Fabric compatibility with venue
  • Accessory coordination

It helps you make a confident decision, not just an emotional one.

9 Hotel tab: Reserve a room block without the stress

This is where wedding planning meets guest experience.

The Hotel tab tracks:

  • Hotel name
  • Contact person
  • Distance to venue
  • Amenities
  • Total rooms quoted
  • Group rate per night
  • Rack rate comparison
  • Reservation deadline
  • Cancellation policy
  • Comp room perks
  • Status (Site Visit Scheduled, Quote Received, Booked)

You can compare proposals side-by-side before making a decision.

And when you’re ready to secure your room block, Room Blocks by Engine sends your request directly to hotels, gathers proposals, and organizes them in one place.

Ready to get organized?

Download the Room Blocks by Engine Wedding Planning Master Spreadsheet now.

Start planning smarter and enjoy your engagement.

Frequently asked questions

How early should I start my wedding checklist?

Immediately after getting engaged. The earlier you organize, the more flexibility and savings you’ll have.

Can this template work for destination weddings?

Yes. Adjust the guest travel percentage and hotel planning tab to account for additional nights and higher travel needs.

Do I really need a hotel room block?

If more than 20–30% of your guests are traveling, a block ensures availability, group rates, and less confusion for your guests.

GRAB
THE FREE TEMPLATE
NOW

And when you're ready, we're here to help you find the best room block

Download now ↓ Start your trip

Booking group travel will never be the same.

Start your trip →