← Back to all templates

Wedding Itinerary Templates: Your Master Weekend Roadmap

Wedding Itinerary Templates: Your Master Weekend Roadmap

Wedding Itinerary Templates: Your Master Weekend Roadmap

Guests have a lot to keep track of! From outfit changes to finding the hotel bar, they’re on a mission to enjoy every bit of your wedding weekend. A few clear details can be the difference between a guest who is a little lost and a guest who is having the time of their life.

That’s why the Room Blocks by Engine Wedding Itinerary Template is designed as a guest-facing roadmap, not a behind-the-scenes vendor timeline.

Download the Wedding Weekend Itinerary Template

Free wedding itinerary template

Your master weekend roadmap

A wedding is not a day, it is an experience. Give your guests a clear guide from rehearsal to brunch so nobody misses a moment. Try the timeline below, then download the kit.

Interactive preview

The complete wedding weekend

23 events from Friday rehearsal to Sunday brunch. Check off events as they happen.

Total events
23
Days covered
3
Progress
0%
All days 23 Friday 3 Saturday 18 Sunday 2
Download as CSV Print Reset itinerary
Itinerary vs timeline

Two documents, two purposes

A vendor timeline is minute-by-minute. A guest itinerary is high level and logistics-heavy. You need both, but they are not the same.

Internal

The vendor timeline

Detailed, minute-by-minute, vendor-focused. Load-in times, mic checks, soundcheck windows, plate-out times. Lives with the planner and key vendors only.

Inside the download

Three itinerary types for three audiences

The kit includes a tailored format for each group involved in the weekend.

01

Guest welcome itinerary

A beautiful, printable card for welcome bags. Locations, times, dress codes, and shuttle pickups.

02

Wedding party VIP guide

A granular, minute-by-minute schedule for bridesmaids and groomsmen. Hair times, transport, photo windows.

03

Weekend overview

A one-page summary for the wedding website covering Friday through Sunday at a glance.

Before you share

15 considerations for the perfect itinerary

Cover these before you print or post. Your progress saves automatically.

    (function() { 'use strict'; var STORAGE_KEY = 'rb-iti-preview-v1'; var EVENTS = [ { day: 'fri', label: 'Friday', time: '2:00 PM', name: 'Rehearsal setup and decor drop-off', loc: 'Venue ceremony area', who: 'Wedding planner', notes: 'All centerpiece boxes dropped off', done: true }, { day: 'fri', label: 'Friday', time: '4:00 PM', name: 'Wedding ceremony rehearsal', loc: 'Venue ceremony area', who: 'Officiant and planner', notes: 'Wedding party, parents, readers', done: true }, { day: 'fri', label: 'Friday', time: '6:00 PM', name: 'Rehearsal dinner', loc: 'Restaurant: The Bistro', who: "Parents of groom", notes: 'Includes speeches prep', done: false }, { day: 'sat', label: 'Saturday', time: '8:00 AM', name: 'Hair and makeup team arrival', loc: 'Bridal suite', who: 'Bella Bridal Beauty', notes: 'Start with bridesmaids 1 and 2', done: true }, { day: 'sat', label: 'Saturday', time: '10:00 AM', name: 'Photographer and videographer arrive', loc: 'Bridal suite and groom suite', who: 'Lens and Light Photography', notes: 'Detail shots: rings, dress, invites', done: true }, { day: 'sat', label: 'Saturday', time: '11:30 AM', name: 'Lunch delivered to bridal suite', loc: 'Bridal suite', who: 'Caterer', notes: 'Light sandwiches and fruit', done: true }, { day: 'sat', label: 'Saturday', time: '1:00 PM', name: 'Groom and groomsmen photos', loc: 'Venue gardens', who: 'Lens and Light Photography', notes: 'Wear boutonnieres', done: false }, { day: 'sat', label: 'Saturday', time: '2:00 PM', name: 'Bride gets dressed', loc: 'Bridal suite', who: 'Helper or Mom', notes: 'Planner to monitor timing', done: true }, { day: 'sat', label: 'Saturday', time: '2:30 PM', name: 'First look (optional)', loc: 'Designated spot (gazebo)', who: 'Photographer and videographer', notes: 'Wedding party to remain unseen', done: false }, { day: 'sat', label: 'Saturday', time: '3:30 PM', name: 'Guests begin arriving', loc: 'Ceremony entrance', who: 'Ushers', notes: 'Welcome drinks available', done: true }, { day: 'sat', label: 'Saturday', time: '4:00 PM', name: 'Ceremony start', loc: 'Venue ceremony area', who: 'Officiant', notes: 'Music starts at 3:45 PM', done: true }, { day: 'sat', label: 'Saturday', time: '4:45 PM', name: 'Cocktail hour begins', loc: 'Venue terrace', who: 'Catering and bar staff', notes: 'Appetizers passed', done: true }, { day: 'sat', label: 'Saturday', time: '5:00 PM', name: 'Family photos', loc: 'Venue portrait studio', who: 'Photographer', notes: 'Priority list provided to assistant', done: false }, { day: 'sat', label: 'Saturday', time: '6:30 PM', name: 'Guests move to reception', loc: 'Ballroom entrance', who: 'Planner', notes: 'Announcer directs traffic', done: true }, { day: 'sat', label: 'Saturday', time: '6:45 PM', name: 'Grand entrance and first dance', loc: 'Ballroom', who: 'DJ and MC', notes: 'Song: At Last', done: true }, { day: 'sat', label: 'Saturday', time: '7:00 PM', name: 'Dinner service begins', loc: 'Ballroom', who: 'Catering', notes: 'Head table served first', done: true }, { day: 'sat', label: 'Saturday', time: '8:00 PM', name: 'Toasts and speeches', loc: 'Ballroom stage', who: 'MC, Best Man, MOH', notes: 'Limit 3 speakers, 3 minutes each', done: false }, { day: 'sat', label: 'Saturday', time: '8:30 PM', name: 'Cake cutting', loc: 'Ballroom', who: 'Baker', notes: 'Save top tier', done: true }, { day: 'sat', label: 'Saturday', time: '8:45 PM', name: 'Open dance floor', loc: 'Ballroom', who: 'DJ', notes: 'Music requests start', done: false }, { day: 'sat', label: 'Saturday', time: '10:30 PM', name: 'Late night snack service', loc: 'Bar area', who: 'Catering', notes: 'Mini pizzas and sliders', done: true }, { day: 'sat', label: 'Saturday', time: '11:45 PM', name: 'Last dance announced', loc: 'Ballroom', who: 'DJ', notes: '', done: true }, { day: 'sun', label: 'Sunday', time: '12:00 AM', name: 'Sparkler exit and grand departure', loc: 'Venue exit', who: 'Coordinator', notes: 'Designated photographer position', done: true }, { day: 'sun', label: 'Sunday', time: '10:00 AM', name: 'Post-wedding brunch', loc: 'Hotel breakfast hall', who: 'Hotel coordinator', notes: 'For out-of-town guests', done: false } ]; var CHECKS = [ 'Shuttle pickup and drop-off times listed for every hotel block location.', 'Specific dress code listed for each individual event.', 'Physical address for every venue clearly written or hyperlinked.', 'Buffer time between ceremony and cocktail hour for guest travel.', 'Recommended local coffee shops or landmarks included for downtime.', 'Invite Only events clearly identified vs. All Guest events.', 'Specific emergency Point of Contact listed so guests do not call the couple.', 'Indoor vs outdoor venues marked so guests choose appropriate footwear.', 'Specific timing for the Group Photo so all family members are present.', 'Wedding website URL or QR code included for real-time updates.', 'Different time zones accounted for if this is a destination wedding.', 'Last Call or Grand Exit time clearly marked for transportation planning.', 'Day Of instructions for the wedding party separate from guest itinerary.', 'Welcome Note included to set the tone for the festivities.', 'Font size and layout optimized for mobile viewing.' ]; var state = loadState(); function loadState() { try { var raw = localStorage.getItem(STORAGE_KEY); if (raw) return JSON.parse(raw); } catch (e) {} var s = { done: {}, filter: 'all', checks: {} }; EVENTS.forEach(function(e, i) { s.done[i] = !!e.done; }); return s; } function saveState() { try { localStorage.setItem(STORAGE_KEY, JSON.stringify(state)); } catch (e) {} } function escapeHtml(s) { if (s == null) return ''; return String(s).replace(/[&<>"']/g, function(c) { return { '&':'&','<':'<','>':'>','"':'"',"'":''' }[c]; }); } function renderTimeline() { var c = document.getElementById('rb-timeline'); var html = ''; var lastLabel = null; EVENTS.forEach(function(e, i) { if (state.filter !== 'all' && state.filter !== e.day) return; var done = !!state.done[i]; if (state.filter === 'all' && e.label !== lastLabel) { html += '
    ' + escapeHtml(e.label) + '
    '; lastLabel = e.label; } html += '
    ' + '
    ' + '
    ' + escapeHtml(e.time) + '
    ' + '
    ' + '
    ' + escapeHtml(e.name) + '
    ' + '
    ' + '' + escapeHtml(e.loc) + '' + '' + escapeHtml(e.who) + '' + '
    ' + (e.notes ? '
    ' + escapeHtml(e.notes) + '
    ' : '') + '
    ' + '' + '
    ' + '
    '; }); if (!html) html = '
    No events for this day.
    '; c.innerHTML = html; } function renderStats() { var done = 0; EVENTS.forEach(function(e, i) { if (state.done[i]) done += 1; }); var pct = Math.round((done / EVENTS.length) * 100); document.getElementById('rb-stat-done').textContent = done; document.getElementById('rb-stat-pct').textContent = pct + '%'; } function renderChecks() { var c = document.getElementById('rb-checks'); var html = ''; CHECKS.forEach(function(t, i) { var done = !!state.checks[i]; html += '
  • ' + '' + '' + escapeHtml(t) + '' + '
  • '; }); c.innerHTML = html; } function attachEvents() { document.getElementById('rb-timeline').addEventListener('change', function(e) { if (e.target.classList.contains('rb-event-check')) { var i = e.target.getAttribute('data-event'); state.done[i] = e.target.checked; saveState(); var ev = e.target.closest('.rb-event'); if (ev) ev.classList.toggle('is-done', e.target.checked); renderStats(); } }); document.getElementById('rb-day-tabs').addEventListener('click', function(e) { var btn = e.target.closest('.rb-day-tab'); if (!btn) return; state.filter = btn.getAttribute('data-day'); saveState(); document.querySelectorAll('.rb-day-tab').forEach(function(b){ b.classList.remove('is-active'); }); btn.classList.add('is-active'); renderTimeline(); }); document.getElementById('rb-checks').addEventListener('change', function(e) { var c = e.target.closest('[data-check]'); if (c) { var i = Number(c.getAttribute('data-check')); state.checks[i] = c.checked; saveState(); var li = c.closest('.rb-check-item'); if (li) li.classList.toggle('is-done', c.checked); } }); 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 itinerary to defaults?')) { try { localStorage.removeItem(STORAGE_KEY); } catch (e) {} state = loadState(); document.querySelectorAll('.rb-day-tab').forEach(function(b){ b.classList.remove('is-active'); }); document.querySelector('.rb-day-tab[data-day="all"]').classList.add('is-active'); renderTimeline(); renderStats(); renderChecks(); } }); } function exportCSV() { var rows = [['Day','Time','Event','Location','Responsible','Notes','Completed']]; EVENTS.forEach(function(e, i) { rows.push([e.label, e.time, e.name, e.loc, e.who, e.notes, state.done[i] ? 'Yes' : 'No']); }); 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-itinerary.csv'; document.body.appendChild(a); a.click(); document.body.removeChild(a); setTimeout(function() { URL.revokeObjectURL(url); }, 100); } renderTimeline(); renderStats(); renderChecks(); attachEvents(); })();

    Itinerary vs. timeline: What’s the difference?

    Couples often confuse these two, but they serve very different purposes.

    The Internal wedding timeline

    This is for vendors and planners. It’s detailed, minute-by-minute, and includes production logistics like setup times, cues, and transitions.

    The Public wedding itinerary

    This is what your guests and wedding party actually need. It focuses on:

    • Event start times
    • Locations and addresses
    • Dress codes
    • Transportation and arrival windows

    The Wedding Itinerary Template is built specifically for this second purpose, so guests aren’t texting questions or missing key moments.

    The goal

    A smooth, stress-free wedding weekend where everyone knows where to be without needing constant updates.

    15 considerations for your wedding itinerary

    1. Are the shuttle pickup and drop-off times clearly listed for every hotel block location?
    2. Have you included the specific dress code for each event, from rehearsal dinner to brunch?
    3. Is the full address for every venue clearly written for easy GPS navigation?
    4. Does the schedule allow buffer time between the ceremony and cocktail hour?
    5. Are recommended coffee shops or nearby landmarks included for downtime?
    6. Have invite-only events like the rehearsal dinner been clearly labeled?
    7. Is there a point of contact listed so guests don’t call the couple?
    8. Does the itinerary note whether events are indoors or outdoors?
    9. Have you included exact timing for group or family photos?
    10. Is your wedding website URL included for real-time updates?
    11. Have you accounted for time zone differences if it’s a destination wedding?
    12. Does the schedule clearly mark the last call or the grand exit time?
    13. Are wedding party instructions separated from guest-facing details?
    14. Have you included a short welcome note to set the tone?
    15. Is the layout easy to read on a phone?

    The template is structured to hold all of this information cleanly in one place.

    How the wedding itinerary template is structured

    It’s designed as a clean, spreadsheet-style layout that’s easy to update and easy to share.

    Each row represents a moment in your weekend and includes:

    • Date
    • Time
    • Event / Activity
    • Location
    • Vendor or Responsible Party
    • Notes / Details
    • Important Check (so nothing is missed)

    This format makes it ideal for:

    • A wedding weekend itinerary
    • A bridesmaid itinerary
    • A simplified guest itinerary
    • A clear wedding order of events

    You can keep one master version and share simplified views as needed.

    Plan once. Enjoy every moment.

    This single, editable Wedding Itinerary Template gives you one organized source of truth for your entire weekend. It helps ensure:

    • Guests arrive on time
    • The wedding party knows exactly where to be
    • No key moment is forgotten

    Whether you’re planning a one-day celebration or a full weekend wedding schedule, this template keeps everything clear, calm, and coordinated.

    Download the Wedding Itinerary Template

    Frequently asked questions

    What should be included in a wedding weekend itinerary?

    At a minimum: event times, locations, dress codes, transportation details, and a point of contact. The template includes dedicated columns for all of these.

    How do I share the itinerary with guests?

    You can share it digitally, link it on your wedding website, or use it to create a simplified guest version for welcome bags.

    When should the wedding party receive their itinerary?

    At least one week before the wedding weekend so they can plan travel, outfits, and arrival times confidently.

    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 →